本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Prometheus
  • Prometheus监控系统(5)基于文件或consul实现自动发现

Prometheus监控系统(5)基于文件或consul实现自动发现

发布:TangLu2019-7-17 15:20分类: Prometheus 标签: Prometheus 普罗米修斯

一、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: 10s


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   #采集超时时间

#alerting:
#  alertmanagers:
#  - static_configs:
#    - targets:
#      - alertmanager:9093

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: 'localhost:8500'
        service: ['redis']

  - job_name: 'consul-mysql'
    metrics_path defaults to '/metrics'
    scheme defaults to 'http' 
    consul_sd_configs:
      - server: 'localhost:8500'
        service: ['mysql']


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、解绑

curl -v -X PUT http://172.21.9.108:8500/v1/agent/service/deregister/redis-1



温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《Prometheus监控系统(5)基于文件或consul实现自动发现
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-512.html  [生成短网址]

已有 0/6920 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~