Prometheus监控系统--基于文件或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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值