- 运维监控系列文章入口:【运维监控】系列文章汇总索引
文章目录
-
本示例通过blackbox_exporter收集http/https(业务接口)、tcp、ping、dns的监控指标,然后将数据收集到prometheus中,配置预警规则,出现警告信息时通过邮件通知相关人员,同时也通过grafana的dashboard导入模板进行可视化。
-
本示例分为六个部分,即prometheus、grafana、blackbox_exporter部署,prometheus与blackbox_exporter集成,prometheus、blackbox_exporter与grafana集成,prometheus、blackbox_exporter与alertmanager集成。
-
说明:
1、本示例中的部署环境没有要求,即应用部署的机器根据实际情况而定,只要网络连通即可。
2、prometheus与alertmanager可直接集成,与blackbox_exporter无关,其只是在本示例中使用其进行一些信息的收集。
该文章分为2个部分,即:
- 【运维监控】Prometheus+grafana+blackbox_exporter+alertmanager监控业务接口异常预警(1)
- 【运维监控】Prometheus+grafana+blackbox_exporter+alertmanager监控业务接口异常预警(1)
- 【运维监控】Prometheus+grafana+blackbox_exporter+alertmanager监控业务接口异常预警(完整版)
五、prometheus、grfana和blackbox_exporter集成
在完成前四步操作后,我们基本上已经完成了主要监控功能,如果我们想更加直观的展示更多的信息,我们可以将grafana集成进来。
集成grafana需要先添加数据源、导入模板,本示例导入的模板ID是13659(blackbox-exporter-http-prober),导入成功后,数据展示图如下。
以上五步完成后,我们完成了监控信息的预警、展示,基本上能满足使用需要了。一般可能需要增加出现了警告信息能通知到具体的人,如此则需要使用prometheus的警告服务了。
六、alertmanager部署与集成
该服务是prometheus的警告服务,出现警告信息后可给相关人员发送邮件等告知信息。下面就在上面五步的基础上进行alertmanager的集成。当然,也可以不集成grafana直接在前四步的基础上进行集成,也可以直接在grafana的系统中完成警告信息的邮件发送等功能。
本服务部署在server2上。
1、下载
可以在prometheus下载页面直接找到alertmanager下载链接。
下载版本:alertmanager-0.27.0.linux-amd64.tar.gz
2、解压
[alanchan@server2 ~]$ cd /usr/local/bigdata
[alanchan@server2 bigdata]$ tar xf alertmanager-0.27.0.linux-amd64.tar.gz -C /usr/local/bigdata
[alanchan@server2 bigdata]$ cd alertmanager-0.27.0.linux-amd64
[alanchan@server2 alertmanager-0.27.0.linux-amd64]$ ll
total 65916
-rwxr-xr-x 1 alanchan root 37345962 Feb 28 2024 alertmanager
-rw-r--r-- 1 alanchan root 356 Feb 28 2024 alertmanager.yml
-rwxr-xr-x 1 alanchan root 30130103 Feb 28 2024 amtool
-rw-r--r-- 1 alanchan root 11357 Feb 28 2024 LICENSE
-rw-r--r-- 1 alanchan root 457 Feb 28 2024 NOTICE
3、启动
解压完成后,alertmanager的默认配置文件alertmanager.yml内容如下
[alanchan@server2 alertmanager-0.27.0.linux-amd64]$ cat alertmanager.yml
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: '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.yml改成如下内容。
global:
resolve_timeout: 5m
smtp_from: '[email protected]' # 发送者邮箱
smtp_smarthost: 'smtp.163.com:465' #需要登录邮箱系统,设置开启 POP3/SMTP 服务
smtp_auth_username: '[email protected]'
smtp_auth_password: 'CXFZQSXTYTxxxxxFU'# 这个是在开启stmp服务的时候由邮箱服务器自动生成的授权码
smtp_require_tls: false # 是否使用 tls,视环境情况来选择开启和关闭。报错 email.loginAuth failed: 530 Must issue a STARTTLS command first,就需要设置为 true。如果开启了 tls报错 starttls failed: x509: certificate signed by unknown authority,需要在 email_configs 下配置 insecure_skip_verify: true 来跳过 tls 验证。
smtp_hello: '163.com'
route:
group_by: ['alertname']
group_wait: 5s
group_interval: 5s
repeat_interval: 6m #repeat_inerval配置项,用于降低告警收敛,减少报警,发送关键报警,对于email来说,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: '[email protected]'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
然后启动alertmanager服务,启动信息如下。
[alanchan@server2 alertmanager-0.27.0.linux-amd64]$ alertmanager
ts=2024-09-11T08:05:24.114Z caller=main.go:181 level=info msg="Starting Alertmanager" version="(version=0.27.0, branch=HEAD, revision=0aa3c2aad14cff039931923ab16b26b7481783b5)"
ts=2024-09-11T08:05:24.114Z caller=main.go:182 level=info build_context="(go=go1.21.7, platform=linux/amd64, user=root@22cd11f671e9, date=20240228-11:51:20, tags=netgo)"
ts=2024-09-11T08:05:24.115Z caller=cluster.go:186 level=info component=cluster msg="setting advertise address explicitly" addr=192.168.10.42 port=9094
ts=2024-09-11T08:05:24.116Z caller=cluster.go:683 level=info component=cluster msg="Waiting for gossip to settle..." interval=2s
ts=2024-09-11T08:05:24.146Z caller=coordinator.go:113 level=info component=configuration msg="Loading configuration file" file=alertmanager.yml
ts=2024-09-11T08:05:24.147Z caller=coordinator.go:126 level=info component=configuration msg="Completed loading of configuration file" file=alertmanager.yml
ts=2024-09-11T08:05:24.150Z caller=tls_config.go:313 level=info msg="Listening on" address=[::]:9093
ts=2024-09-11T08:05:24.150Z caller=tls_config.go:316 level=info msg="TLS is disabled." http2=false address=[::]:9093
ts=2024-09-11T08:05:26.116Z caller=cluster.go:708 level=info component=cluster msg="gossip not settled" polls=0 before=0 now=1 elapsed=2.000435063s
ts=2024-09-11T08:05:34.118Z caller=cluster.go:700 level=info component=cluster msg="gossip settled; proceeding" elapsed=10.001893362s
^Cts=2024-09-11T08:36:32.702Z caller=main.go:542 level=info msg="Received SIGTERM, exiting gracefully..."
4、添加prometheus的预警配置
修改prometheus.yml配置增加,取消注释,并修改target为alertmanager服务所在的地址,示例如下。
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- server2:9093
重启prometheus服务。启动成功后,可通过以下示例页面(页面最下方)查看配置的alertmanager服务。
5、验证
alertmanager服务的默认端口是9093,通过浏览器访问server2:9093,可见如下界面,则表示成功。
如果有告警信息后,则该界面显示告警信息,如下
有预警信息的同时,如果你的有邮箱配置正的话,应该会收到预警信息的邮件,如下图所示。
如果我们将自己创建的接口服务关闭,报警信息如下。
我们将接口服务中的一个接口延迟60秒,看看邮件预警信息如下。
grafana的dashboard显示内容如下。
以上,简单的完成了Prometheus+grafana+blackbox_exporter监控业务接口异常预警示例。其中关于规则配置以及预警配置有很多的内容需要参考官方介绍。