prometheus告警配置
1. 摘要
本文主要介绍,如何通过prometheus监控服务状态,并产生告警信息,已便于运维人员快速响应。
2. 整体架构
本次设计用到prometheus服务,alertmanger服务,blackbox exporter。
以上服务都可以在官网下载:https://prometheus.io/download/
3. prometheus 部署
- 下载并解压
$ tar xvf alertmanager-$VERSION.darwin-amd64.tar.gz
$ ls prometheus-2.35.0-rc0.linux-amd64.tar.gz
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
- 启动,这里prometheus.yml不做详细解释,请参考官网文档
$ ./prometheus
ts=2022-04-12T06:20:30.952Z caller=main.go:488 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2022-04-12T06:20:30.953Z caller=main.go:525 level=info msg="Starting Prometheus" version="(version=2.35.0-rc0, branch=HEAD, revision=5b73e518260d8bab36ebb1c0d0a5826eba8fc0a0
- 浏览器访问localhost:9090端口
4. blackbox exporter 部署
Blackbox Exporter是Prometheus社区提供的官方黑盒监控解决方案,其允许用户通过:HTTP、HTTPS、DNS、TCP以及ICMP的方式对网络进行探测。
- 下载并解压:
$ tar xvf blackbox_exporter-0.20.0.linux-amd64.tar.gz
$ ls
blackbox_exporter blackbox.yml LICENSE NOTICE
- 下面是一个简化的探针配置文件blockbox.yml
modules:http_2xx:prober: httphttp_post_2xx:prober: httphttp:method: POSTtcp_connect:prober: tcppop3s_banner:prober: tcptcp:query_response:- expect: "^+OK"tls: truetls_config:insecure_skip_verify: falsegrpc:prober: grpcgrpc:tls: truepreferred_ip_protocol: "ip4"grpc_plain:prober: grpcgrpc:tls: falseservice: "service1"ssh_banner:prober: tcptcp:query_response:- expect: "^SSH-2.0-"- send: "SSH-2.0-blackbox-ssh-check"irc_banner:prober: tcptcp:query_response:- send: "NICK prober"- send: "USER prober prober prober :prober"- expect: "PING :([^ ]+)"send: "PONG ${1}"- expect: "^:[^ ]+ 001"icmp:prober: icmp
注:更多的HTTP请求方法、HTTP头信息、请求参数、auth、证书认证等,请参考官方文档。
- 通过运行以下命令,并指定使用的探针配置文件启动Blockbox Exporter实例:
blackbox_exporter --config.file=/etc/prometheus/blackbox.yml
- 与Prometheus集成,在prometheus,yml中,加入如下配置,实现对http://www.123.com 和 http://www.baidu.com 的探测
- job_name: 'blackbox'metrics_path: /probeparams:module: [http_2xx] # 模块对应 blackbox.yml static_configs:- targets:- http://www.123.com # http- http://www.baidu.com # httprelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 127.0.0.1:9115
- 重新启动prometheus,并访问prometheus页面验证
5. AlertManager部署
- 下载并解压:
$ tar xvf alertmanager-$VERSION.darwin-amd64.tar.gz
$ ls
alertmanager alertmanager.yml amtool data LICENSE NOTICE
- Alertmanager解压后会包含一个默认的alertmanager.yml配置文件,内容如下所示:
global:resolve_timeout: 5mroute:group_by: ['alertname']group_wait: 10sgroup_interval: 10srepeat_interval: 1hreceiver: 'web.hook'
receivers:
- name: 'web.hook'webhook_configs:- url: 'http://127.0.0.1:5001/' #这里配置接收告警的服务
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']
Alertmanager的配置主要包含两个部分:路由(route)以及接收器(receivers)。所有的告警信息都会从配置中的顶级路由(route)进入路由树,根据路由规则将告警信息发送给相应的接收器。
- 启动Alertmanager
./alertmanager
用户也在启动Alertmanager时使用参数修改相关配置。–config.file用于指定alertmanager配置文件路径,–storage.path用于指定数据存储路径。
- 查看运行状态
Alertmanager启动后可以通过9093端口访问,http://localhost:9093
- 关联Prometheus与Alertmanager
在Prometheus的架构中被划分成两个独立的部分。Prometheus负责产生告警,而Alertmanager负责告警产生后的后续处理。因此Alertmanager部署完成后,需要在Prometheus中设置Alertmanager相关的信息。
编辑Prometheus配置文件prometheus.yml,并添加以下内容
alerting:alertmanagers:- static_configs:- targets: ['localhost:9093']
- 告警规则配置
新建文件blackbox_rules.yml
groups:
- name: blackbox_network_statsrules:- alert: blackbox_network_statsexpr: up == 0 #这里遵循Promsql的语法 for: 1m #如1分钟内持续为0 报警labels:severity: criticalannotations:description: 'Job {{ $labels.job }} {{ $labels.instance }}.'summary: '{{ $labels.instance }} down ! ! !'
注:promsql语法请参考官方文档
- 编辑Prometheus配置文件prometheus.yml,并添加以下内容
rule_files:- "blackbox_rules.yml"
- 重新启动prometheus,配置完成。
可以通过访问http://localhost:9093/#/alerts,查看告警信息
6. 验证接收告警
为了验证接收告警,我这里写了一个简单的http服务,通过alertmanager的web hook方式验证测试
- 修改 alertmanager.yml 并重启
route:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: 'web.hook'
receivers:- name: 'web.hook'webhook_configs:- url: 'http://127.0.0.1:8981/' #这里为接收告警的服务地址
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']
- 用python写的一个简单的接收http告警的服务
#coding=utf-8
import http.client
import urllib
from http.server import HTTPServer, BaseHTTPRequestHandler
import jsondef start_server():data = {'result': 'this is a test'}host = ('localhost', 8981)class Resquest(BaseHTTPRequestHandler):def do_POST(self):length = int(self.headers['Content-Length'])post_data = urllib.parse.parse_qs(self.rfile.read(length).decode('utf-8'))# You now have a dictionary of the post datadata = {"Method:": self.command,"Path:": self.path,"Post Data":post_data}print(data)self.send_response(200)self.send_header('Content-type', 'application/json')self.end_headers()self.wfile.write(json.dumps(data).encode())server = HTTPServer(host, Resquest)print("Starting server, listen at: %s:%s" % host)server.serve_forever()if __name__ == '__main__':start_server()print("start server success...")
启动,观察接收到的告警信息
$ python server.py
Starting server, listen at: localhost:8981
{'Method:': 'POST', 'Post Data': {'{"receiver":"web\\\\.hook","status":"firing","alerts":[{"status":"firing","labels":{"alertname":"blackbox_network_stats","instance":"172.17.0.1:8001","job":"kong","severity":"critical"},"annotations":{"description":"Job kong 172.17.0.1:8001.","summary":"172.17.0.1:8001 down ! ! !"},"startsAt":"2022-04-12T06:21:45.185Z","endsAt":"0001-01-01T00:00:00Z","generatorURL":"http://ubuntu:9090/graph?g0.expr': ['up == 0\\u0026g0.tab=1","fingerprint":"5776c946d916f29c"}],"groupLabels":{"alertname":"blackbox_network_stats"},"commonLabels":{"alertname":"blackbox_network_stats","instance":"172.17.0.1:8001","job":"kong","severity":"critical"},"commonAnnotations":{"description":"Job kong 172.17.0.1:8001.","summary":"172.17.0.1:8001 down ! ! !"},"externalURL":"http://ubuntu:9093","version":"4","groupKey":"{}:{alertname=\\"blackbox_network_stats\\"}","truncatedAlerts":0}\n']}, 'Path:': '/'}
127.0.0.1 - - [12/Apr/2022 14:30:30] "POST / HTTP/1.1" 200 -
至此,prometheus 的告警服务搭建完毕
参考地址:https://prometheus.io/download/
prometheus告警配置相关推荐
- 通过Alertmanager实现Prometheus的告警告警配置(邮箱加钉钉)
通过Alertmanager实现Prometheus的告警 告警配置 Prometheus本身不支持的告警功能,主要通过插件Alertmanager来实现告警.Alertmanager用于接收Prom ...
- alertmanager监控 Prometheus 告警,alertmanage配置邮件告警
1.搭建Prometheus,node及mysql参考该链接: 配置grafana展示prometheus监控数据 2.下载安装 alert manager: https://prometheus.i ...
- 5.prometheus告警插件-alertmanager、自定义webhook案例编写
5.prometheus告警插件-alertmanager 参考文章: https://www.bookstack.cn/read/prometheus-book/alert-install-aler ...
- 开箱即用的 Prometheus 告警规则集
作者 | AddoZhang 责编 | 欧阳姝黎 在配置系统监控的时候,是不是即使绞尽脑汁监控的也还是不够全面,或者不知如何获取想要的指标. Awesome Prometheus aler ...
- prometheus告警
1. 告警概述 prometheus的告警管理分为两部分.通过在prometheus服务端设置告警规则, Prometheus服务器端产生告警向Alertmanager发送告警. 然后,Alertma ...
- prometheus告警功能
prometheus告警功能 Prometheus对指标的收集.存储同告警能力分属于Prometheus Server和AlertManager(通用的组件,可由企业自行开发)两个独立的组件,前者仅负 ...
- 玩转prometheus告警 alertmanger(一)之prometheus告警规则
目录 1. 告警系统原理概述 2. 配置prometheus规则 2.1 配置告警规则目录 2.2 告警规则 3. 查看效果 1. 告警系统原理概述 在开始之前,需要了解下prometheus和al ...
- Prometheus 告警规则
Prometheus 告警规则 Prometheus官方内置的第三方报警通知包括:邮件. 即时通讯软件(如Slack.Hipchat).移动应用消息推送(如Pushover)和自动化运维工具(例如:P ...
- 配置文件详解+AlertManager微信邮件告警配置
文章目录 前言 AlertManager告警简单部署 一.AlertManager告警简介 1.简介 2.告警规则组成 1)告警名称 2)告警规则 3.Alertmanager特性 1)分组 2)抑制 ...
最新文章
- 计算机性能指标ppt,计算机网络分类与主要性能指标.ppt
- php 编程祝新年快乐_AnyCodes:免费的在线编程神器
- SQL Server,Could not obtain exclusive lock on database 'model'
- Netbeans OpenGL使用
- 看完你就晓得正向代理和反向代理了!
- [剑指offer]面试题22:栈的压入、弹出序列
- 什么是CDI,它与@EJB和Spring有什么关系?
- linux修改su的PAM配置文件,linux pam安全认证模块su命令的安全隐患
- c 子类对象 访问父类对象受保护成员_面向对象编程(OOP)
- react使用less预编译语言和本地代理配置
- 使用alarm API实现灵活的延时操作
- 2015年7月之 装订空白
- 使用SpringCloud实现Java分布式开发【part-2】:Ribbon负载均衡的介绍及使用方式
- 简单易懂的讲解深度学习(入门系列之八)
- hive打patch流程说明
- 使用Axis2创建一个Web Service的客户端 - 子非鱼,安知鱼之乐? - CSDNBlog
- DNS:快速搭建公司内网DNS解析服务器
- 视觉SLAM——特征点法与直接法对比以及主流开源方案对比 LSD SVO ORB DSO
- STM32开发 -- GPS模块开发详解
- 二进制文件漏洞挖掘 IDA插件VulFi安装使用
热门文章
- Linux复制一个或多个文件到另一个目录下
- ssh: connect to host 192.168.1.20 port 22: No route to host解决方案
- Android事件总线(一)EventBus3.0用法全解析
- 多媒体制作技术心得体会_多媒体技术学习心得体会总结
- java map集合详解_JAVA干货:Map 集合详解
- 用最科学的方法展示最形象的图表——前端数据可视化实践
- 查看wifi连接路由器的MAC地址
- Array 属性和方法
- frl啥意思_手表日历显示frl是什么意思
- 文献关联软件connectwd papers