运维监控系统之Prometheus consul服务自动发现

运维 系统运维
prometheus支持从consul发现监控目标。prometheus使用consul作为服务配置发现比较灵活,可以跨机器进行部署,也发便cmdb下发配置。

[[409656]]

简介

prometheus支持从consul发现监控目标。

安装consul

  1. sudo yum install -y yum-utils 
  2. sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo 
  3. sudo yum -y install consul 

配置consul

  1. vim /etc/consul.d/consul.hcl 

可以根据自己的需要进行配置,如果只是本地访问的话,只需要监听127.0.0.1就可以了。然后就可以启动服务了

  1. systemctl enable consul 
  2. systemctl start consul 

consul测试导入数据

  1. package main 
  2.  
  3. import ( 
  4.     "log" 
  5.     "strconv" 
  6.  
  7.     "github.com/hashicorp/consul/api" 
  8.  
  9. type Server struct { 
  10.     ID       int 
  11.     IP       string 
  12.     MetaTags map[string]string 
  13.  
  14. func main() { 
  15.     config := api.DefaultConfig() 
  16.     config.Address = "127.0.0.1:8500" 
  17.     config.Token = "" 
  18.     client, err := api.NewClient(config) 
  19.     if err != nil { 
  20.         return 
  21.     } 
  22.     servers := []Server{ 
  23.         {ID: 1, IP: "192.168.122.100", MetaTags: map[string]string{"idc""idc1""use_for""testing1"}}, 
  24.         {ID: 2, IP: "192.168.122.101", MetaTags: map[string]string{"idc""idc1""use_for""testing2"}}, 
  25.         {ID: 3, IP: "192.168.122.102", MetaTags: map[string]string{"idc""idc1""use_for""testing3"}}, 
  26.     } 
  27.     for i := range servers { 
  28.         err = client.Agent().ServiceRegister(&api.AgentServiceRegistration{ 
  29.             ID:      strconv.Itoa(servers[i].ID), 
  30.             Name:    servers[i].IP, 
  31.             Port:    9100, 
  32.             Address: servers[i].IP, 
  33.             Meta:    servers[i].MetaTags, 
  34.             Check:   nil, 
  35.             Checks:  nil, 
  36.         }) 
  37.         if err != nil { 
  38.             log.Println(err) 
  39.         } 
  40.     } 
  41.     log.Println("End..."

prometheus配置添加配置

在重新标记标签的时候,提供以下数据元标签:

  • __meta_consul_address:目标地址
  • __meta_consul_dc:目标的数据中心名称
  • __meta_consul_health:服务的健康状况
  • __meta_consul_metadata_:目标的每个节点数据元的key
  • __meta_consul_node:为consul的节点名称
  • __meta_consul_service_address:目标的服务地址
  • __meta_consul_service_id:目标的服务ID
  • __meta_consul_service_metadata_:目标的每个服务数据元的key
  • __meta_consul_service_port:目标的服务端口
  • __meta_consul_service:目标所属的服务名称
  • __meta_consul_tagged_address_:每个节点标记目标的关键值
  • __meta_consul_tags:标签根据分隔符拼接的结果,默认分隔符是,
  1. ... 
  2. - job_name: 'node_exporter' 
  3.     consul_sd_configs: 
  4.     # consule 地址 
  5.     - server: '127.0.0.1:8500' 
  6.       services: [] 
  7.     relabel_configs: 
  8.       # 通过元数据标签过滤需要的数据 
  9.       - source_labels: [__meta_consul_service_metadata_IDC] 
  10.         # 如果匹配 
  11.         regex: idc1 
  12.         # 执行动作,keep表示如果不匹配就丢弃数据 
  13.         action: keep 
  14.       # 通过元数据贴标签 
  15.       - regex: __meta_consul_service_metadata_(.+) 
  16.         action: labelmap 
  17. ... 

添加配置之后,就可以reload一下prometheus服务,就可以在target页面获取到我们需要的监控目标了。

总结

prometheus使用consul作为服务配置发现比较灵活,可以跨机器进行部署,也发便cmdb下发配置。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2020-12-30 08:09:46

运维Prometheus 监控

2020-12-29 10:45:22

运维Prometheus-监控

2020-12-28 10:13:32

运维Prometheus监控

2020-12-17 09:25:46

运维Prometheus监控

2021-09-30 08:54:58

prometheus监控远端服务

2022-07-11 13:43:51

Prometheus监控

2020-12-30 05:34:25

监控PrometheusGrafana

2022-12-13 08:01:06

监控黑盒集成

2015-09-23 16:46:54

架构监控运维自动化

2022-01-26 09:36:53

Consul语言微服务

2011-03-25 13:54:00

Nagios

2015-09-21 13:41:47

高可用监控系统运维自动化

2014-08-04 10:10:35

IT运维自动化运维

2023-10-11 09:58:07

2020-10-14 15:37:04

Goconsul接口

2011-09-01 10:22:03

Cobbler运维自动化

2015-09-18 11:26:29

可扩展性监控运维自动化

2023-06-02 08:33:43

微服务架构服务注册

2013-04-17 15:48:51

2013-04-12 13:30:47

点赞
收藏

51CTO技术栈公众号