首页 > 其他分享 >​​Prometheus监控之服务发现

​​Prometheus监控之服务发现

时间:2024-09-21 17:21:47浏览次数:12  
标签:服务 Consul 192.168 Prometheus 监控 consul

1.Prometheus服务发现

1.1 为什么需要服务发现

Prometheus 采⽤ Pull 模型来抓取⽬标主机的指标数据,这就意味着Prometheus必须事先知道每个要监控的⽬标的端点地址。然后才能从对应的Exporter或Instrumentation 进⾏数据抓取。对于规模较⼩,且监控的⽬标不会频繁的发⽣变动,直接使⽤

但是,当我们⾯对容器应⽤的场景时,会发现监控的这些⽬标端点可能会频繁的发⽣变化。因此使⽤静态配置⽅法可能不太适⽤了。那么Prometheus为了适应这种动态性,引⼊了多种类型的服务发现机制。这些机制使得Prometheus 能够动态地从“服务注册中⼼”⾃动的发现可被监控的⽬标。即使监控的⽬标端发⽣了变化,Prometheus 也能⾃动的发现这些变化并对相应的配置进⾏⾃动更新,⽽⽆需认为参与。⼤⼤的降低了维护成本。

​​Prometheus监控之服务发现_加载

1.2 服务发现的实现⽅式

Prometheus 的服务发现(Service Discovery, SD)可以与各种不同的服务发现系统集成,从⽽⾃动发现监控⽬标。以下是⼀些常⻅的服务发现机制的实现⽅式:

1、静态服务配置:可以通过配置⽂件指定固定地址和端⼝,对⽬标服务进⾏监控。

2、基于⽂件的发现机制:以配置⽂件作为发现的源头,通过监控这些⽂件的变动来动态调整监控⽬标的增加或减少。通常会配合如像Ansible这样的⼯具⼀起使⽤,对配置⽂件进⾏批量更新,只需要让Prometheus重新加载这些配置,就能⾃动适应新的监控环境。

3、基于注册中⼼的发现机制:在微服务架构中,常常会使⽤Consul等服务注册中⼼来管理所有的服务。Prometheus可以读取Consul中的服务列表,从⽽⾃动发现并开始监控所有注册的服务。

4、基于公有云API的发现机制:当你需要监控公有云上的RDS服务时,⼀条条配置⾮常麻烦,这个时候就可以使⽤Prometheus基于公有云的OpenAPI进⾏服务发现。例如,配置Prometheus⾃动拉取AWS账号下所有RDS实例的列表,从⽽实现对所有数据库实例的监控。

5、基于 Kubernetes 的发现机制:在Kubernetes环境中,Prometheus

可以通过调⽤kube-apiserver获取集群中的Node、Pod、Endpoint、

Ingress等信息。例如,如果你在Kubernetes集群中部署了⼀个新的应⽤,Prometheus可以⾃动发现并开始监控这个新的Pod。

6、基于 DNS、HTTP等等服务发现,使⽤的不多,就不⼀⼀展开

2、Prometheus基于⽂件服务发现

2.1 基于⽂件服务发现介绍

Prometheus 基于⽂件的服务发现⾮常的简单,因为它不依赖任何特定的平台或第三⽅服务。

⽤户只需在Prometheus配置⽂件中指定 file_sd_configs 选项来监视⼀个⽂件。这个⽂件包含了要监控的⽬标列表。那么Prometheus 则会周期性地检查该⽂件,⼀旦发现有任何变更,则会⽴即更新对应的监控⽬标。

​​Prometheus监控之服务发现_HTTP_02

json格式 
[
  {
    "targets": [ "<host>", ... ],
    "labels": {
      "<labelname>": "<labelvalue>", ...
    }
  },
  ...
]

YAML格式 
# - targets 是一组实例地址的列表
# - labels 是这组实例的标签,应用到列表中所有实例
- targets:
  [ - '<host>' ]
  labels:
    [ <labelname>: <labelvalue> ... ]

2.2 基于⽂件服务发现实践

将此前的node_exporter 修改为基于⽂件发现的⽅式

1、配置Prometheus

原先配置
  - job_name: "node_exporter"
    metrics_path: "/metrics"
    static_configs:
    - targets: ["192.168.137.128:9100","192.168.137.131:9100"]

修改为基于文件发现
  - job_name: "node_exporter"
    metrics_path: "/metrics"
    file_sd_configs:
    - files:
      - file_sd/node.yml

2、定义发现规则⽂件(将128主机添加⼀个group=dev的标签,将131主机添加group=test的标签,这样后期就可以基于不同的环境做分析。

mkdir file_sd

vim file_sd/node.yml
- targets:
  - 192.168.137.128:9100
  labels:
    group: dev
- targets:
  - 192.168.137.131:9100
  labels:
    group: test

3、检测配置文件语法

/app/module/prometheus/promtool check config /app/module/prometheus/prometheus.yml

4、重新加载Prometheus配置⽂件

curl -X POST http://192.168.137.131:9090/-/reload

2.3 基于⽂件服务发现验证

1、检查Prometheus的Status->Targets⻚⾯,验证 node_exporter 是否已经成功纳⼊监控

​​Prometheus监控之服务发现_服务发现_03

2、基于⾃定义标签进⾏过滤

​​Prometheus监控之服务发现_加载_04

3、Prometheus基于Consul服务发现

3.1 Consul基本介绍

Consul是⼀个开源的服务发现和配置管理系统,任何服务都可以向Consul注册⾃⼰的实例信息(例如Web服务器、数据库、各种内部API等),并且其他服务可以通过Consul查询这些已注册的服务信息。

​​Prometheus监控之服务发现_HTTP_05

Prometheus基于Consul的服务发现流程如下:

1、当运⾏⼀个服务时,他会将⾃⼰服务的信息(如服务名称、地址、端⼝等。)注册到consul中,当服务不再可⽤时,它会从Consul中注销。

2、 Prometheus配置基于consul的服务发现,那么它会定期向Consul查询当前可⽤的服务列表和元数据。

3、Prometheus使⽤从Consul获取的服务信息,来构建⽬标URL,然后对这些URL进⾏数据采集,以监控服务的运⾏状况。

4、如果某个服务在Consul中被标记为不健康或被注销,Prometheus会⾃动将这个服务从监控⽬标列表中移除,确保监控⽬标的准确性。

3.2 安装Consul服务

1、访问consul官⽅下载地址https://www.consul.io/downloads/,下载consul
wget https://releases.hashicorp.com/consul/1.17.1/consul_1.17.1_linux_amd64.zip 

2、解压consul
mkdir /app/module/consul
unzip consul_1.17.1_linux_amd64.zip -d /app/module/consul

3、准备consul启动⽂件
vim /usr/lib/systemd/system/consul.service
[Unit]
Description=Consul Service Discovery Agent
Documentation=https://www.consul.io/
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/app/module/consul/consul agent -server -ui \
  -node=consul-server \
  -bootstrap-expect=1 \
  -data-dir=/app/module/consul/data \
  -bind=192.168.137.131 \
  -client=0.0.0.0
Restart=on-failure
[Install]
WantedBy=multi-user.target


agent:执⾏的命令,各参数含义:
-server :表示节点是server类型 
-ui :启⽤consul的web⻚⾯管理 
-node :节点名称
-bootstrap-expect :表示集群中有⼏个server节点进⾏Leader选举,单节点集群,就为1 
-data-dir :数据⽬录
-bind :集群内部通信地址,默认是0.0.0.0 
-client :客户端地址,默认是127.0.0.1 

4 启动consul
systemctl daemon-reload
systemctl start consul.service

访问consul的UI⻚⾯,通过 http://IP:8500

​​Prometheus监控之服务发现_加载_06

3.3 注册实例⾄Consul

1、注册节点信息⾄Consul

# 128启动状态
curl -X PUT --data '{
  "Name": "node_exporter",
  "ID": "node01",
  "Address": "192.168.137.128",
  "Port": 9100,
  "Tags": ["shanghai","prod"],
  "Checks": [{
    "HTTP": "http://192.168.137.128:9100/metrics",
    "Interval": "5s"
  }]
}' http://192.168.137.131:8500/v1/agent/service/register

# 131启动状态
curl -X PUT --data '{
  "Name": "node_exporter",
  "ID": "node02",
  "Address": "192.168.137.131",
  "Port": 9100,
  "Tags": ["shanghai","prod"],
  "Checks": [{
    "HTTP": "http://192.168.137.131:9100/metrics",
    "Interval": "5s"
  }]
}' http://192.168.137.131:8500/v1/agent/service/register

# 132宕机状态
curl -X PUT --data '{
  "Name": "node_exporter",
  "ID": "node03",
  "Address": "192.168.137.132",
  "Port": 9100,
  "Tags": ["beijing","test"],
  "Checks": [{
    "HTTP": "http://192.168.137.132:9100/metrics",
    "Interval": "5s"
  }]
}' http://192.168.137.131:8500/v1/agent/service/register

2、检查注册的节点信息

​​Prometheus监控之服务发现_加载_07

3、如何注销对应实例的注册信息

curl --request PUT http://192.168.137.131:8500/v1/agent/service/deregister/node03

3.4 配置Prometheus

1、配置Prometheus,添加⼀个名为 consul_nodes 的Job,并使⽤

Consul进⾏服务发现,步骤如下

- job_name: "consul_nodes"
    consul_sd_configs:
    - server: "192.168.137.131:8500"
    #services: ["node_exporter"] # 限定仅从Consul的node_exporter这个Service发现实例信息(可不配置)

2、重新加载Prometheus配置⽂件

curl -X POST http://192.168.137.131:9090/-/reload

3、检查Prometheus的Status->Targets⻚⾯,验证 consul_nodes 是否已经成功纳⼊监控

​​Prometheus监控之服务发现_服务发现_08

4、验证,添加和删除consul中的实例,检查Prometheus是否会⾃动完成更新。

标签:服务,Consul,192.168,Prometheus,监控,consul
From: https://blog.51cto.com/u_13236892/12074978

相关文章

  • 视频监控平台AS-V1000的部门管理功能,实现对部门所属的监控视频摄像头资源的添加、删除
    目录一、部门资源二、视频监控资源管理平台介绍1、AS-V1000介绍2、平台服务器配置说明三、部门资源管理功能介绍1、部门资源结构树2、添加和删除部门的资源(1)手动添加(2)删除资源3、查询资源(1)按部门查询(2)按资源查询4、导出部门资源及其结构(1)导出整个部门资源树(2)导......
  • 服务API接口:解锁API接口参数的奥秘
    在软件开发中,API接口参数是构建有效通信的核心。它们定义了API调用的方式和数据交换的规则,对于确保API的功能性和可用性至关重要。本文将深入探讨服务API接口中的参数,揭示如何通过精心设计的参数提升API的性能和用户体验。什么是API接口参数?API接口参数是在调用API时传递给API的数......
  • 使用 Nginx 搭建 Webdav 服务
    使用Nginx搭建Webdav服务一、自签名根证书1.生成根证书密钥opensslgenrsa-out./root.key20482.生成根证书opensslreq-x509-new-key./root.key-out./root.pem-days365交互信息CountryName(2lettercode)[]:CNStateorProvinceName(fullname)......
  • 学校食堂明厨亮灶监控系统
    学校食堂明厨亮灶监控系统通过卷积神经网络学习与图像识别技术,学校食堂明厨亮灶监控系统将对现场监控画面进行24小时实时分析,如:厨房出现老鼠狗猫、厨师未戴口罩、厨师未戴厨师帽、厨师服穿戴识别、抽烟识别、玩手机识别,同时实时抓拍相关情况,全程记录留痕,提升监管效率,落实工作责任......
  • springboot交通管理在线服务系统的开发
    文章目录目录文章目录论文目录项目介绍开发环境系统实现论文参考论文目录第1章 绪论1.1选题动因1.2目的和意义1.3论文结构安排第2章 开发环境与技术2.1MYSQL数据库2.2 Tomcat介绍2.3 vue技术2.4 SpringBoot框架第3章 系统分析3.1可行性......
  • 数据库连接错误:您在wp-config.php文件中提供的数据库用户名和密码可能不正确,或者无法
    为了解决“数据库连接错误”的问题,可以按照以下步骤进行操作:备份现有配置:在修改任何文件之前,请确保备份现有的wp-config.php文件,以防修改出错时能够恢复。重命名配置文件:将根目录下的wp-config-sample.php文件重命名为wp-config.php。这通常可以通过FTP客户端或通过服务器上......
  • 如何查看linux上对应的dhcp服务器IP是多少
    如何查看linux上对应的dhcp服务器IP是多少要查看Linux系统上对应的DHCP服务器IP地址,可以通过以下几种方法:1.检查DHCP客户端日志在DHCP客户端获取IP地址的过程中,DHCP服务器的IP地址通常会记录在系统日志中。可以使用grep命令查找包含"DHCPOFFER"的日志条......
  • 基于大数据技术的智慧居家养老服务平台
    项目介绍大数据分析是现下比较热门的词汇,通过分析之后可以得到更多深入且有价值的信息。现实的科技手段中,越来越多的应用都会涉及到大数据随着大数据时代的到来,数据挖掘、分析与应用成为多个行业的关键,本课题首先介绍了网络爬虫的基本概念以及技术实现方法,重点关注爬虫的......
  • 在 Ubuntu 20.04 服务器上安装 Python 3 并设置编程环境的方法
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介Python编程语言越来越受到初学者和经验丰富的开发人员的青睐。Python灵活多变,在脚本编写、自动化、数据分析、机器学习和后端开发等方面具有优势。Python首次发布于......
  • 帝国cms数据库在哪_CMS发布服务配置说明
    1.数据库配置文件路径帝国7.0之前的版本:路径:e/class/config.php该文件包含数据库连接的所有必要设置,如服务器地址、用户名、密码等。帝国7.0及以后的版本:路径:e/config/config.php更改路径的目的在于简化文件结构,便于后续升级和维护。2.重要性与功能配置正确性:......