简介prometheus支持从consul发现监控目标。安装consuldoyuminstall-yyum-utilssudoyum-config-manager--add-repohttps://rpm.releases.hashicorp.com/RHEL/hashicorp.reposudoyum-yinstallconsul根据你的需要配置consulvim/etc/consul.d/consul.hclFor配置,如果只是本地访问,只需要监听127.0.0.1即可。然后就可以启动服务了systemctlenableconsulsystemctlstartconsulconsul测试导入数据packagemainimport("log""strconv""github.com/hashicorp/consul/api")typeServerstruct{IDintIPstringMetaTagsmap[string]string}funcmain(){config:=api.DefaultConfig()config.Address="127.0.0.1:8500"config.Token=""client,err:=api.NewClient(config)iferr!=nil{return}servers:=[]Server{{ID:1,IP:"192.168.122.100",MetaTags:map[string]string{"idc":"idc1","use_for":"testing1"}},{ID:2,IP:"192.168.122.101",MetaTags:map[string]string{"idc":"idc1","use_for":"testing2"}},{ID:3,IP:"192.168.122.102",MetaTags:map[string]string{"idc":"idc1","use_for":"testing3"}},}fori:=rangeservers{err=client.Agent().ServiceRegister(&api.AgentServiceRegistration{ID:strconv.Itoa(servers[i].ID),Name:servers[i].IP,端口:9100,添加ress:servers[i].IP,Meta:servers[i].MetaTags,Check:nil,Checks:nil,})iferr!=nil{log.Println(err)}}log.Println("结束...")}prometheusconfigurationaddconfiguration重新标记标签时,提供以下元数据标签:__meta_consul_address:target地址__meta_consul_dc:target的数据中心名称__meta_consul_health:服务健康状态__meta_consul_metadata_:target的每个节点key的数据元素__meta_consul_node:consul的节点名称__meta_consul_service_address:目标的服务地址__meta_consul_service_id:目标的服务ID__meta_consul_service_metadata_:目标的每个服务数据元素的键__meta_consul_service_port:目标的服务端口__meta_consul_service:目标所属的服务名称__meta_consul_tagged_address_:键值标记目标的每个节点__meta_consul_tags:标签根据分隔符拼接的结果,默认分隔符是,...-job_name:'node_exporter'consul_sd_configs:#consuleaddress-server:'127.0.0.1:8500'services:[]relabel_configs:#通过metadata标签过滤需要的数据-source_labels:[__meta_consul_service_metadata_IDC]#如果匹配regex:idc1#执行动作,keep表示不匹配则丢弃数据action:keep#Labelthroughmetadata-regex:__meta_consul_service_metadata_(.+)action:labelmap...添加配置后,重新加载prometheus服务,即可获取我的我们需要的监控目标总结一下prometheus使用consul作为服务配置,发现它比较灵活,可以跨机器部署,也可以发送到cmdb进行配置。
