Prometheus的服务发现 service discovery
文章目录
- Prometheus的服务发现 service discovery
- 前言
- 一、静态配置
-
- 1.直接修改prometheus.yml的config-file
- 2.修改完需要重启Prometheus
- 3.通过查看prometheus图形界面产看node状态
- 4.静态、动态的优劣
- 二、基于文件的服务发现
-
- 1.配置
- 2.查看Prometheus的node点的status
- 三、基于consul的服务发现
-
- 1.consul简介
- 2.consul下载
- 3.启动consul
- 4.修改consul配置文件
- 5.配置prometheus的配置文件
- 总结
前言
prometheus支持多种服务发现的模式:静态配置(static_configs)、基于文件的服务发现、微软的azure服务发现、consul服务发现、DNS服务发现、Google的GCE服务发现、kubernetes服务发现等;一、静态配置
一个 static_config 允许指定目标列表, 以及附带的通用标签。 在获取配置中指定静态目标是规范的方法
1.直接修改prometheus.yml的config-file
在Prometheus.yml后面增加下面job_name代码段(示例):
- job_name: 'nodes'static_configs: #静态配置- targets:- 172.16.78.12:9100 #node_exporter启动端口- 172.16.78.18:9100- 172.16.78.13:9100
2.修改完需要重启Prometheus
[root@localhost prometheus]# systemctl restart prometheus.service #重启服务并查看服务状态
[root@localhost prometheus]# systemctl status prometheus.service
● prometheus.serviceLoaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2021-03-31 10:56:27 CST; 23h ago
3.通过查看prometheus图形界面产看node状态
4.静态、动态的优劣
静态配置的优势是可以直接修改需要增删的node,不过劣势也很明显随着环境变得复杂而变更越复杂;prometheus专门设计了一组服务发现机制,以便于能够基于服务注册中心自动发现、检测、分类可被监控的各target。
**静态修改配置文件需要重新启动服务加载,动态配置只需指定refresh_interval设置刷新间隔;**
基于动态sd遵循以下过程:
不同场景中,服务注册中心应用也不同:
1、公有、私有IaaS有自有的平台所有资源信息:azure、ec2、digitalocean、gce、hetzner;
2、基于第三方的开源服务发现工具:consul、eureka zookpeer serverset、airbnb nerve;
3、基于DNS和文件动态发现机制;
4、基于kubernetes平台;
二、基于文件的服务发现
1.配置
基于文件的发现服务略优于静态配置,它不依赖于任何平台或第三方服务,也是最简单和通用的动态实现方式;
prometheus server定期从文件中加载target信息:
文件可以使用json和yaml格式,它定义target和label信息;
1、配置prometheus.yml文件指定更新文件路径和时间。
- job_name: 'nodes'file_sd_configs: #文件发现服务配置;- files:- targets/node.yml #指定node点的配置文件位置;refresh_interval: 1m #配置刷新间隔时间;- job_name: 'mysqls'file_sd_configs:- files:- targets/mysql.ymlrefresh_interval: 1m
2、配置node.yml和mysql.yml
[root@localhost targets]# cat mysql.yml
- targets:- 172.16.78.12:9104labels:app: mysql-exporterjob: mysql
[root@localhost targets]# cat node.yml
- targets:- 172.16.78.12:9100- 172.16.78.13:9100- 172.16.78.18:9100labels:app: node-exporterjob: nodes
[root@localhost targets]#
2.查看Prometheus的node点的status
三、基于consul的服务发现
1.consul简介
一款基于golang开发的分布式开源工具,服务化的系统提供服务注册、服务发现和配置管理的功能;
consul的特色:服务发现、服务的健康检查、key-value 存储、安全通讯、multi datacenter;
consul官网: consul.
2.consul下载
在官网下载适应的版本consul。
解压至相应目录
[root@localhost tmp]#unzip consul_1.9.4_linux_amd64.zip -d /usr/local/bin/
3.启动consul
consul agent -dev -ui -client=0.0.0.0 -config-dir=/tmp/consul-test/ -data-dir=/consul/data/
-dev development模式
-ui 开启web界面
-config-dir 指定配置文件目录
-client 指定客户端访问地址范围
4.修改consul配置文件
consul的配置文件需要使用json或者hcl格式文件。
[root@localhost consul-test]# cat node01.json
{
"services": [ #多个服务需要使用services,单个使用service{
"id": "node_exporter-node01","name": "node01","address": "172.16.78.12","port": 9100,"tags": ["nodes"],"check": [{
"http": "http://172.16.78.12:9100","interval": "5s"}]}, #多个服务需要用逗号隔开。{
"id": "node_exporter-node02","name": "node02","address": "172.16.78.13","port": 9100,"tags": ["nodes"],"check": [{
"http": "http://172.16.78.13:9100","interval": "5s"}]}
]
}[root@localhost consul-test]# consul reload #重新加载服务
consul新增新的mysql注册服务
5.配置prometheus的配置文件
global:
alerting:alertmanagers:- static_configs:- targets:
rule_files:
scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['172.16.78.18:9090']- job_name: 'nodes'consul_sd_configs:- server: '172.16.78.18:8500'tags: - "nodes" #此处的tag需要与consul的一致,否则不会匹配refresh_interval: 2m- job_name: 'mysql'consul_sd_configs:- server: '172.16.78.18:8500'tags: - "mysql"refresh_interval: 2m
prometheus从consul发现的endpoint服务