Prometheus基于文件的服务发现

而对于Prometheus这一类基于Pull模式的监控系统,显然也无法继续使用的static_configs的方式静态的定义监控目标。而对于Prometheus而言其解决方案就是引入一个中间的代理人(服务注册中心),这个代理人掌握着当前所有监控目标的访问信息,Prometheus只需要向这个代理人询问有哪些监控目标控即可, 这种模式被称为服务发现。

assets%2F-LBdoxo9EmQ0bJP2BuUi%2F-LVSqkQub5oDFvoLr1P2%2F-LVSr9O9L372kPUgr25X%2Fprometheus-sd.png?generation=1546689227531157&alt=media

在不同的场景下,会有不同的东西扮演者代理人(服务发现与注册中心)这一角色。比如在AWS公有云平台或者OpenStack的私有云平台中,由于这些平台自身掌握着所有资源的信息,此时这些云平台自身就扮演了代理人的角色。Prometheus通过使用平台提供的API就可以找到所有需要监控的云主机。在Kubernetes这类容器管理平台中,Kubernetes掌握并管理着所有的容器以及服务信息,那此时Prometheus只需要与Kubernetes打交道就可以找到所有需要监控的容器以及服务对象。Prometheus还可以直接与一些开源的服务发现工具进行集成,例如在微服务架构的应用程序中,经常会使用到例如Consul这样的服务发现注册软件,Promethues也可以与其集成从而动态的发现需要监控的应用服务实例。除了与这些平台级的公有云、私有云、容器云以及专门的服务发现注册中心集成以外,Prometheus还支持基于DNS以及文件的方式动态发现监控目标,从而大大的减少了在云原生,微服务以及云模式下监控实施难度。

assets%2F-LBdoxo9EmQ0bJP2BuUi%2F-LVSqkQub5oDFvoLr1P2%2F-LVSr9OBfdB5B9NTCAdi%2Fpulls_vs_push.png?generation=1546689227475761&alt=media

基于文件的服务发现

用户可以通过JSON或者YAML格式的文件,定义所有的监控目标。

基于JSON文件服务发现注册示例:

1) 创建存放json文件夹

cd /usr/local/prometheus
mkdir conf.d
touch conf.d/alinode.json

2)配置主配置文件

vim prometheus.yml

  - job_name: 'aliyun'
    file_sd_configs:
    - files: ['/usr/local/prometheus/conf.d/alinode.json']  json文件位置
      refresh_interval: 5s                                  文件刷新

3)编辑JSON文件

[root@node1 conf.d]# cat conf.d/alinode.json 
[
  {
    "targets": [
      "192.168.184.129:9100"
    ],
    "labels": {
      "hostname": "test1"
    }
  },
  {
    "targets": [
      "192.168.184.128:9100"
    ],
    "labels": {
      "hostname": "test2"
    }
  }
]

4) 重启服务

systemctl start  prometheus

5)查看是否注册

18eb824827142223b00f471af85de6b933d.jpg

 

转载于:https://my.oschina.net/54188zz/blog/3071454

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值