Prometheus监控系统--基于文件或consul实现自动发现
一、Prometheus自动发现自动发现是指Prometheus自动对节点进行监控,不需要手动一个一个去添加,和Zabbix的自动发现、自动注册一个道理。Prometheus有多种自动发现发现,比如file_sd_configs基于文件自动发现、基于K8S自动发现、基于openstack自动发现、基于consul自动发现等。使用自动发现可以解决云环境下资源动态伸缩的监控问题。二、基于文件的自动发现
一、Prometheus自动发现
自动发现是指Prometheus自动对节点进行监控,不需要手动一个一个去添加,和Zabbix的自动发现、自动注册一个道理。Prometheus有多种自动发现发现,比如file_sd_configs基于文件自动发现、基于K8S自动发现、基于openstack自动发现、基于consul自动发现等。使用自动发现可以解决云环境下资源动态伸缩的监控问题。
二、基于文件的自动发现配置
file_sd_configs实现文件级别的自动发现,使用文件自动发现功能后,Prometheus会定期检查配置文件是否有更新,如果有更新的话就将新加入的节点接入监控,服务端无需重启服务:
1、在Prometheus主配置文件中开启文件发现
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
#自动发现配置
scrape_configs:
- job_name: 'prometheus'
file_sd_configs: #不再是static_configs了
- files: ['/usr/local/prometheus/sd_config/*.yml']
refresh_interval: 120s #加载文件的间隔时长
2、创建对应的yml文件并配置需要监控的节点信息,如果有新增节点的话可以修改或新增配置文件
vi /usr/local/prometheus/discovery.yml
- targets: ['192.168.1.100:9090','192.168.1.101:9090']
三、基于consul的自动发现配置
consul是一个服务注册中心,主要用于容器化场景的自动发现。consul支持集群化配置,由多个代理节点组成集群,代理节点分为Server和Client两种类型,所有的服务都可以注册到这些节点上。区别在于Client是客户端模式,该模式下所有注册到当前节点的服务会被转发到Server,而且不会持久化这部分服务信息。Server模式不同的是会把所有信息持久化到本地,遇到故障数据也可以保留。对于Prometheus来说,它会自动获取consul里的数据进行监控,而这些数据就是其它节点注册到consul中的了。
1、使用二进制包快捷启动consul服务端,默认监听8500端口,并开启了WEB UI
consul agent -server -bootstrap-expect 1 -data-dir=/data/consul -node=server1 -bind=127.0.0.1 -client=127.0.0.1 -ui &
2、在Prometheus主配置文件中配置基于consul自动发现
global: #这里的配置项可以单独配置在某个job中
scrape_interval: 15s #采集数据间隔,默认15秒
evaluation_interval: 15s 告警规则监测频率,比如已经设置了内存使用大于70%就告警的规则,这里就会每15秒执行一次告警规则
scrape_timeout:10s #采集超时时间
scrape_configs:
- job_name: 'prometheus-server'
metrics_path defaults to '/metrics'
scheme defaults to 'http'
static_configs:
- targets: ['localhost:9090']
- job_name: 'consul-redis'
metrics_path defaults to '/metrics'
scheme defaults to 'http'
consul_sd_configs:
- server: '192.168.1.100:8500' #指定consul服务的地址,会从这个地址拉取数据
tags:
- "redis" #拉取数据时根据不同的标签进行分组
refresh_interval: 1m
- job_name: 'consul-mysql'
metrics_path defaults to '/metrics'
scheme defaults to 'http'
consul_sd_configs:
- server: '192.168.1.100:8500'
tags:
- "mysql" #拉取数据时根据不同的标签进行分组
refresh_interval: 1m
3、被监控节点调用consul API进行服务注册
curl -v -X PUT -d '{"Meta":{"hostname":"redis-1", "exporter_type":"redis_exporter"}, "id":"redis-1","name":"redis", "address":"192.168.38.178", "port":9121, "tags":["redis-exporter"],"checks":[{"http":"http://192.168.38.178:9121", "interval":"5s"}]}' http://172.22.8.48:8500/v1/agent/service/register
4、对已监控的节点进行注销
#通过命令行注销
consul services deregister -id="node_exporter-node1"
#通过API注销
curl -v -X PUT http://172.21.9.108:8500/v1/agent/service/deregister/redis-1
更多推荐
所有评论(0)