服务发现

所谓的服务发现指的是Prometheus server发现监控目标的一种方式。
服务发现可以分为静态配置和动态配置两种发现策略。
静态配置:
每次修改Prometheus的配置文件都需要热加载或重启Prometheus服务。
动态配置:
一次配置后,可以基于该动态配置实现自动发现监控目标,在这个过程中无需重启或热加载Prometheus服务。

1 静态发现

scrape_configs:
  - job_name: 'static_targets'
    static_configs:
      - targets: ['host1:9090', 'host2:9090']

2 动态发现

2.1 基于文件的服务发现

参考链接:
	https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config
	
	1.修改配置文件 
[root@prometheus-server31 ~]# vim /cmy/softwares/prometheus-2.53.4.linux-amd64/prometheus.yml 
...
  - job_name: "cmy-file-sd"
    file_sd_configs:
      - files:
          - /tmp/xixi.json
          - /tmp/haha.yaml


	2.热记载配置文件
[root@prometheus-server31 ~]# curl -X POST 10.168.10.31:9090/-/reload
[root@prometheus-server31 ~]# 


	3.修改json格式文件
[root@prometheus-server31 ~]# cat > /tmp/xixi.json <<EOF
[
  {
    "targets": [ "10.168.10.41:9100" ],
    "labels": {
      "school": "cmy", 
      "class": "linux97"
    }
  }
]
[root@prometheus-server31 ~]# 


	4.验证是否自动监控目标
http://10.168.10.31:9090/targets?search=

	5.再次编写yaml文件
[root@prometheus-server31 ~]# cat  > /tmp/haha.yaml <<EOF
- targets:
  - '10.168.10.42:9100' 
  - '10.168.10.43:9100' 
  labels:
    address: ShaHe
    ClassRoom: JiaoShi05
[root@prometheus-server31 ~]# 

	 
	6.验证是否自动监控目标
http://10.168.10.31:9090/targets?search=

2.2 基于consul的服务发现

2.2.1 部署consul集群

- 基于consul的服务发现案例
官方文档:
	https://www.consul.io/
	https://developer.hashicorp.com/consul/install#linux

	1 部署consul集群
		1.1 下载consul
wget https://releases.hashicorp.com/consul/1.21.0/consul_1.21.0_linux_amd64.zip

svip:
	wget http://192.168.17.253/Resources/Prometheus/softwares/Consul/consul_1.21.0_linux_amd64.zip
	

		1.2 解压consul
unzip consul_1.21.0_linux_amd64.zip -d /usr/local/bin/


		1.3 运行consul 集群
服务端43:
consul agent -server -bootstrap -bind=10.168.10.43 -data-dir=/cmy/softwares/consul -client=10.168.10.43 -ui


客户端42:
consul agent  -bind=10.168.10.42 -data-dir=/cmy/softwares/consul -client=10.168.10.42 -ui -retry-join=10.168.10.43


客户端41:
consul agent -server -bind=10.168.10.41 -data-dir=/cmy/softwares/consul -client=10.168.10.41 -ui -retry-join=10.168.10.43

	
	
		1.4 查看各节点的监听端口
ss -ntl | grep 8500

		1.5 访问console服务的WebUI
http://10.168.10.43:8500/ui/dc1/nodes

2.2.2 修改prometheus的配置文件





	2.使用consul实现自动发现
		2.1 修改prometheus的配置文件
[root@prometheus-server31 ~]# vim /cmy/softwares/prometheus-2.53.4.linux-amd64/prometheus.yml 
  ...
  - job_name: "cmy-consul-seriver-discovery"
    # 配置基于consul的服务发现
    consul_sd_configs:
        # 指定consul的服务器地址,若不指定,则默认值为"localhost:8500".
      - server: 10.168.10.43:8500
      - server: 10.168.10.42:8500
      - server: 10.168.10.41:8500
    relabel_configs:
        # 匹配consul的源标签字段,表示服务名称
      - source_labels: [__meta_consul_service]
        # 指定源标签的正则表达式,若不定义,默认值为"(.*)"
        regex: consul
        # 执行动作为删除,默认值为"replace",有效值有多种
        #   https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_action
        action: drop


		2.2 检查配置文件是否正确
[root@prometheus-server31 ~]# cd /cmy/softwares/prometheus-2.53.4.linux-amd64/
[root@prometheus-server31 prometheus-2.53.4.linux-amd64]# 
[root@prometheus-server31 prometheus-2.53.4.linux-amd64]# ./promtool check config ./prometheus.yml 
Checking ./prometheus.yml
 SUCCESS: ./prometheus.yml is valid prometheus config file syntax

[root@prometheus-server31 prometheus-2.53.4.linux-amd64]# 


		2.3 重新加载配置
[root@prometheus-server31 ~]# curl -X POST http://10.168.10.31:9090/-/reload
[root@prometheus-server31 ~]# 




2.2.3 注册服务到consul集群

		2.4.被监控节点注册到console集群
			2.4.1 注册节点
[root@grafana71 ~]# curl -X PUT -d '{"id":"prometheus-node42","name":"cmy-prometheus-node42","address":"10.168.10.42","port":9100,"tags":["node-exporter"],"checks": [{"http":"http://10.168.10.42:9100","interval":"5m"}]}' http://10.168.10.43:8500/v1/agent/service/register
[root@grafana71 ~]# 

 
			2.4.2 注销节点
[root@grafana71 ~]# curl -X PUT http://10.168.10.43:8500/v1/agent/service/deregister/prometheus-node42

 

TODO---> 目前有个坑
	你注册时找得哪个节点,那么注销时也要找这个节点注销,待解决...
上一篇
下一篇