Prometheus基于consul自动发现监控对象 https://www.iloxp.com/archive/11/
Prometheus 监控目标为什么要自动发现
频繁对Prometheus配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个“配置小王子”,即使是配置小王子也会存在人为失误的情况。
Prometheus支持的多种服务发现机制
Prometheus数据源的配置主要分为静态配置和动态发现, 常用的为以下几类:
- static_configs: 静态服务发现
- file_sd_configs: 文件服务发现
- dns_sd_configs: DNS 服务发现
- kubernetes_sd_configs: Kubernetes 服务发现
- consul_sd_configs: Consul 服务发现
- ...
kubernetes 频繁更新的pod,svc,等等资源配置应该是最能体现Prometheus监控目标自动发现服务的好处。
Prometheus基于consul自动发现监控对象
Consul是一个分布式k/v数据库,是当前比较流行的服务注册组件,下面对consul+prometheus自动发现监控目标大致流程做个介绍。
- 通过在consul注册服务或注销服务(监控targets)
- Prometheus 一直监视(watch)consul服务,当发现consul中符合要求的服务有新变化是更新Prometheus监控对象
Prometheus主要配置prometheus.yml中的scrape_configs以及consul_sd_configs如下:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'consul'
consul_sd_configs:
- server: 'localhost:8500'
relabel_configs:
- source_labels: [__meta_consul_tags]
regex: .*,prome,.*
action: keep
- source_labels: [__meta_consul_service]
target_label: job
- scrape_configs 配置数据源
- consul_sd_configs 基于consul服务发现的配置
- relabel_configs 重新标记
consul_sd_configs的相关relabel通过下面实例来说明。Prometheus安装这边不说明了,到prometheus目录启动即可:
./prometheus --config.file="prometheus.yml" --web.listen-address="0.0.0.0:9090" --web.enable-admin-api --web.enable-lifecycle &
--web.enable-admin-api 运行通过web方式管理prometheus(删除清空数据等操作)
--web.enable-lifecycle 运行通过web方式重新加载prometheus配置(相当于reload)
我这里懒得配置腾讯云安全组规则了,直接nginx反向代理暴露一个80端口出来,配置如下:
server {
listen 10.135.13.136:80;
server_name p.iloxp.com www.p.iloxp.com;
resolver 8.8.8.8 8.8.4.4 valid=300s;
location / {
limit_req zone=allips burst=5 nodelay;
proxy_pass http://127.0.0.1:9090;
}
include agent_deny.conf;
location ~ /\.ht {
deny all;
}
}
启动一个consul服务
consul安装比较简单,下载二进制放在/usr/local/bin/目录下即可使用consul命令启动一个agent,consul 集群需至少启动一个server agent,下面是我单机启动consul server的一个示例:
consul agent -server -bootstrap-expect 1 -data-dir=/data/consul -node=server1 -bind=127.0.0.1 -client=127.0.0.1 -ui &
consul将默认侦听TCP 8500端口,-ui表示启用web。
我这里懒得配置腾讯云安全组规则了,直接nginx反向代理暴露一个80端口出来,配置如下:
server {
listen 10.135.13.136:80;
server_name c.iloxp.com www.c.iloxp.com;
resolver 8.8.8.8 8.8.4.4 valid=300s;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8500;
}
include agent_deny.conf;
location ~ /\.ht {
deny all;
}
}
测试整个流程
向consul注册一个服务作为prometheus的监控target
curl -X PUT -d '{"id": "node-10-135-13-136_test","name": "node_exporter","address": "10.135.13.136","port": 9100,"tags": ["prod","prome","node"],"checks": [{"http": "http://10.135.13.136:9100/metrics","interval": "35s"}]}' http://localhost:8500/v1/agent/service/register
检查consul和prometheus是否已有对应target:


这是注册我本机node_exporter的示例,到grafana里面看下是否能获取,上面图片黑色部分能看到consul与prometheus relabel各个配置的对应关系。
按理说是能看到监控数据有中断的图片,由于我刚刚重新注册、注销consul服务的时间间隔太短了,所以看不出来,在grafana下的效果如下:

从consul中注销刚刚注册的node_exporter prometheus 监控目标:
curl -X PUT http://127.0.0.1:8500/v1/agent/service/deregister/node-10-135-13-136
Prometheus基于consul自动发现监控对象 https://www.iloxp.com/archive/11/的更多相关文章
- zabbix使用自动发现监控esxi的磁盘存储storage
zabbix使用自动发现监控esxi的磁盘存储storage 在任意一台可以访问vcenter的zabbix-agent服务器上添加exsi的磁盘监控模板即可 创建模板过程: custom.esxi. ...
- zabbix自动发现监控url
1.在监控客户机上 web_site_code_status.sh: #!/bin/bash UrlFile="/opt/scripts/WEB.txt" IFS=$'\n' we ...
- zabbix自动发现监控mysql
一. 数据库给只读权限 1.1 grant usage on *.* to 'zabbix'@'127.0.0.1' identified by 'zabbix'; flush privileges; ...
- Prometheus + Consul 自动发现服务监控
一.Prometheus支持的多种服务发现机制(常用如下) static_configs: 静态服务发现 file_sd_configs: 文件服务发现 dns_sd_configs: DNS 服务发 ...
- 使用lld自动发现监控多实例redis
zabbix 可以通过常见的手段监控到各种服务,通过编写脚本来获取返回值并将获取到的值通过图形来展现出来,包括(系统.服务.业务)层面.可是有些时候在一些不固定的场合监控一些不固定的服务就比较麻烦.例 ...
- 使用 zabbix 自动发现监控 MySQL
介绍 使用 zabbix 的 low-level 自动发现功能完成单主机多端口的监控, 详见low_level_discovery, 整体上监控类似 percona 的 zabbix 监控插件, 不过 ...
- zabbix监控自动发现监控tomcat(V1)
背景说明: 由于zabbix监控使用自带的模版,只能监控主机上只有1个tomcat的场景适合,虽然网上很多朋友都是在每个监控项上面添加一个空格来解决问题.但是个人感觉这种方法还是蛮麻烦的,所以写一篇使 ...
- Zabbix自动发现监控Tomcat进程
1.编辑自动发现脚本 自动发现脚本只支持JSON格式 #!/usr/bin/env python # -*- coding:utf-8 -*- import commands import psuti ...
- Sping Cloud hystrix.stream 自动发现-监控
相关组件安装脚本 [root@java_gateway4 java_tps]# cat cront_install.sh #!/bin/bashyum install jq -ymkdir /home ...
随机推荐
- Yarn Nodemanager启动不了报YarnRuntimeException: Failed to initialize container executor error=13 权限不够
1.现象:有一个节点的NodeManager启动不了. 后台报错日志如下: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed ...
- 安装配置KVM虚拟化
安装KVM虚拟化 KVM需要硬件⽀持, 所以需要开启虚拟化⽀持 硬件设备直接在BIOS设置开启CPU虚拟化 个⼈电脑同样进⼊BIOS开启虚拟化⽀持 VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技 ...
- Web前端面试图
文章:记一次腾讯微信面试 先是看简历上写的项目经验,问一上些项目上的问题,比如如何编写 js-sdk, 如何去修改 weui 库,遇到最大的难题是什么及如何去解决的. 数组去重的方法有哪些? 如何判断 ...
- CentOS 7 修改时区例如上海时区
Linux 系统(我特指发行版, 没说内核) 下大部分软件的风格就是不会仔细去考虑向后 的兼容性, 比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了. 比如 sysvinit ...
- Integer Inquiry UVA-424(大整数)
题意分析: 将字符串倒着存入int数组中,每次加完后再取余除去大于10的部分 关键:倒着存入,这样会明显缩短代码量. #include<iostream> #include<cstd ...
- 安装k8s,使用root帐号的初始化脚本
现在稳定性差不多了.可以总结一下了. 真正使用时,有几个地方,还是确认一下,再正式运行吧. #!/bin/bash # Version V0. ---: ;fi K8S_VERSION="1 ...
- djangCrm
---恢复内容开始--- 一> 在数据库进行循环取多对多 def get_classlist(self): l=[] for cls in self.class_list.all(): l.ap ...
- ArcMap 制图出图
在这里用的数据是:台湾2018年6月人口统计数据来做展示数据. ArcMap 里面主要用到的是:符号系统使用.布局视图等 一.属性中设置元素符号 ArcMap 初次加载数据,默认的是“单一符号”,就是 ...
- spring+mybatis通用dao层、service层的实现
个人理解: 1.mybatis-spring.jar 提供了SqlSessionTemplate类该类可以对数据库进行CRUD操作(底层其实还是SqlSession) 2.我们可以集成SqlSessi ...
- drf框架 - 解析模块 | 异常模块 | 响应模块
解析模块 为什么要配置解析模块 1)drf给我们提供了多种解析数据包方式的解析类 2)我们可以通过配置,来控制前台提交的哪些格式的数据后台在解析,哪些数据不解析 3)全局配置就是针对每一个视图类,局部 ...