prometheus使用alertmanager实现报警功能

前言

在运维工作中,最重要的事情就是监控,监控中最重要的就是报警功能,这样可以使我们收到告警之后及时处理,以免事态发展到无可挽回的地步,下面就给大家分享一下prometheus中的告警如何实现吧。

一、安装altermanager

1、解压安装包

tar zxf alertmanager-0.21.0.linux-amd64.tar.gz -C /data/

#查看是否安装成功
cd /data/alertmanager-0.21.0.linux-amd64/
./alertmanager --version

2、修改配置文件

#配置邮件告警
cd /data/alertmanager-0.21.0.linux-amd64/
vim alertmanager.yml
global:
  smtp_smarthost: 'smtp.163.com:25'
  smtp_from: '[email protected]'
  smtp_auth_username: '[email protected]'
  smtp_auth_password: 'xxxxxxxx'

templates:
  - 'template/*.tmpl'

route:
  receiver: 'mail'
  group_wait: 1s
  group_interval: 5s
  repeat_interval: 1h
  group_by: ['alertname']
receivers:
- name: 'mail'
  email_configs:
  - to: '[email protected]'
send_resolved: true
html: '{
   
   { template "test.html" . }}'

#配置邮件发送模板
{
   
   { define "email.html" }}
{
   
   { range .Alerts }}
告警实例: {
   
   { .Labels.instance }} <br>
告警状态:{
   
   {   .Status }} <br>
告警级别: {
   
   { .Labels.severity }} 级 <br>
告警类型: {
   
   { .Labels.alertname }} <br>
触发阀值:{
   
   { .Annotations.value }} <br>
告警详情: {
   
   { .Annotations.description }} <br>
告警时间:{
   
   { .StartsAt.Format "2006-01-02 15:04:05" }} <br>
{
   
   { end }}{
   
   { end }}

3、配置prometheus

cd /data/prometheus-2.19.1.linux-amd64/
vim prometheus.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets: ["192.168.84.128:9093"]

#指定报警规则文件
rule_files:
   - rule.yml

#配置报警条件
vim rule.yml
groups:
- name: port_status
  rules:
  - alert: "端口状态监测"
    expr: probe_success{job="port_status"} == 0
    for: 1s
    labels:
      severity: "High"
    annotations:
      description: "Instance {
   
   { $labels.instance }} 端口down掉"
      value: "{
   
   { $value }}"

- name: web_status
  rules:
  - alert: "网站状态监测"
    expr: probe_http_status_code  == 0
    for: 1s
    labels:
      severity: "High"
    annotations:
      description:  "Instance {
   
   { $labels.instance }} 网站无法访问"
      value: "{
   
   { $value }}"

- name: process
  rules:
  - alert: "进程状态监测"
    expr: namedprocess_namegroup_num_procs  == 0
    for: 1s
    labels:
      severity: "High"
    annotations:
      description: "Instance {
   
   { $labels.instance }} 服务进程死亡!"
      value: "{
   
   { $value }}"

4、重启prometheus

nohup ./alertmanager --config.file=alertmanager.yml &

5、测试告警

手动关闭服务,就可以收到报警了。

二、配置钉钉告警

1、配置钉钉机器人

在钉钉上创建一个群,点击群设置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ip填写Prometheus服务端的出口ip
在这里插入图片描述
保存api地址,下面会用到。

2、安装webhook-dingtalk

tar zxf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz -C /data/

3、配置

cd /data/prometheus-webhook-dingtalk-1.4.0.linux-amd64
mv config.example.yml config.yml
vim config.yml

在这里插入图片描述
修改这两处即可。

#编写告警模板
vim contrib/templates/legacy/template.tmpl
{
   
   { define "__subject" }}[Prometheus监控告警:{
   
   { .Alerts.Firing | len }}] {
   
   { end }}
{
   
   { define "__text_list" }}{
   
   { range . }}
 
告警实例: {
   
   { (.Labels.instance) }}

实例群组: {
   
   { (.Labels.job) }}

告警级别:{
   
   { (.Labels.severity) }}

告警类型:{
   
   { (.Labels.alertname) }}

触发阈值: {
   
   { (.Annotations.value) }}

告警详情: {
   
   { (.Annotations.description) }}

告警时间: {
   
   { dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{
   
   { end }}
{
   
   { end }}


{
   
   { define "__text_resolve_list" }}{
   
   { range . }}

告警实例: {
   
   { (.Labels.instance) }}

实例群组: {
   
   { (.Labels.job) }}

告警类型:{
   
   { (.Labels.alertname) }}

告警详情: {
   
   { (.Annotations.description) }}

告警时间: {
   
   { dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

恢复时间: {
   
   { dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{
   
   { end }}
{
   
   { end }}


{
   
   { define "ding.link.title" }}{
   
   { template "__subject" . }}{
   
   { end }}
{
   
   { define "ding.link.content" }}

{
   
   { if gt (len .Alerts.Firing) 0 }}#### 监控平台发现报警信息!
--------------------------
{
   
   { template "__text_list" .Alerts.Firing }}
{
   
   { end }}
{
   
   { if gt (len .Alerts.Resolved) 0 }}#### 警报解除!
---------------------------
{
   
   { template "__text_resolve_list" .Alerts.Resolved }}
{
   
   { end }}
{
   
   { end }}

4、启动

nohup ./prometheus-webhook-dingtalk &

5、配置alertmanager

cd /data/alertmanager-0.21.0.linux-amd64/
vim alertmanager.yml
global:
  resolve_timeout: 5m

route:
  receiver: 'dingding'
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
receivers:
- name: 'dingding'
  webhook_configs:
  - url: 'http://192.168.3.158:8060/dingtalk/webhook1/send'
    send_resolved: true

6、手动触发告警测试即可。

おすすめ

転載: blog.csdn.net/qq_37837432/article/details/121864868