Prometheus 部署 Alertmanager 发送告警

部署 Alertmanager 发送告警

Prometheus 对指标的收集、存储与告警能力分属于 Prometheus Server 和 AlertManager 两个独立的组件,前者仅负责定义告警规则生成告警通知, 具体的告警操作则由后者完成。

Alertmanager 负责处理由 Prometheus Server 发来的告警通知,Alertmanager对告警通知进行分组、去重后,根据路由规则将其路由到不同的receiver,如
Email、钉钉或企业微信等。

除了基本的告警通知能力外,Altermanager还支持对告警进行去重、分组、抑制、静默和路由等功能:
●分组(Grouping):将相似告警合并为单个告警通知的机制,在系统因大面积故障而触发告警潮时,分组机制能避免用户被大量的告警噪声淹没,进而导致关键信息的隐没

●抑制(Inhibition):系统中某个组件或服务故障而触发告警通知后,那些依赖于该组件或服务的其它组件或服务可能也会因此而触发告警,抑制便是避免类似的级联告警的一种特性,从而让用户能将精力集中于真正的故障所在

●静默(Silent):是指在一个特定的时间窗口内,即便接收到告警通知,Alertmanager也不会真正向用户发送告警信息的行为;通常,在系统例行维护期间,需要激活告警系统的静默特性

●路由(route):用于配置Alertmanager如何处理传入的特定类型的告警通知,其基本逻辑是根据路由匹配规则的匹配结果来确定处理当前告警通知的路径和行为

部署 Alertmanager,通过邮件报警

(1)上传 alertmanager-0.24.0.linux-amd64.tar.gz 到 /opt 目录中,并解压

cd /opt/
tar xf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager

(2)修改 alertmanager 配置文件,添加邮件告警路由信息

vim /usr/local/alertmanager/alertmanager.yml

#global 配置段用于定义全局配置
#templates 配置段负责自定义告警内容模板文件
#route 配置段用于指定如何处理传入的告警
#receiver 配置段则定义了告警信息的接收器,每个接收器都应该有其具体的定义

global:                       #在全局配置段设置发件人邮箱信息
  resolve_timeout: 5m             #定义持续多长时间未接收到告警通知后,就将告警状态标记为resolved
  smtp_smarthost: 'smtp.qq.com:25'
  smtp_from: 'qwe4546456@qq.com'
  smtp_auth_username: 'qwe4546456@qq.com'
  smtp_auth_password: 'zxnlltckqkrxxxcc'    #此处为授权码,登录QQ邮箱【设置】->【账户】中的【生成授权码】获取
  smtp_require_tls: false         #禁用TLS的传输方式
route:                        #设置告警的分发策略
  group_by: ['alertname']         #采用哪个标签来作为分组依据,这里使用告警名称做为规则,满足规则的告警将会被合并到一个通知中
  group_wait: 20s                 #一组告警第一次发送之前等待的时延,即产生告警20s将组内新产生的消息合并发送,通常是0s~几分钟(默认是30s)
  group_interval: 5m              #一组已发送过初始告警通知的告警,接收到新告警后,下次发送通知前等待时延,通常是5m或更久(默认是5m)
  repeat_interval: 20m            #一组已经发送过通知的告警,重复发送告警的间隔,通常设置为3h或者更久(默认是4h)
  receiver: 'my-email'    #定义告警接收人
receivers:                    #设置收件人邮箱信息
- name: 'my-email'
  email_configs:
  - to: 'qwe4546456@wo.cn'    #设置收件人邮箱地址
    send_resolved: true

(3)配置启动文件

cat > /usr/lib/systemd/system/alertmanager.service <<'EOF'
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml \
--log.level=debug

ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

启动 Alertmanager

systemctl start alertmanager
systemctl enable alertmanager

netstat -natp | grep :9093

(4)添加告警规则

mkdir /usr/local/prometheus/alter_rules
vim /usr/local/prometheus/alter_rules/instance_down.yaml

groups:
#若某个 Instance 的 up 指标的值转为 0 持续超过 1 分钟后,将触发告警
- name: AllInstances
  rules:
  - alert: InstanceDown                  #告警规则的名称,一个组内的告警规则名称必须惟一
    # Condition for alerting
    expr: up == 0                        #基于PromQL表达式的告警触发条件(布尔表达式)
    for: 1m                              #控制在触发告警之前,测试表达式的值必须为true的时长(掉线一分钟就报警)
                                         #表达式值为true,但其持续时间未能满足for定义的时长时,相关的告警状态为pending
                                         #满足该时长之后,相关的告警将被触发,并转为firing状态
                                         #表达式的值为false时,告警将处于inactive状态
    # Annotation - additional informational labels to store more information
    annotations:                         #附加在告警之上的注解信息
      title: 'Instance down'
      description: 'Instance has been down for more than 1 minute.'
    # Labels - additional labels to be attached to the alert
    labels:
      severity: 'critical'               #在告警上附加的自定义的标签

#CPU 使用率大于 80% 触发告警
- name: node_alert
  rules:
  - alert: cpu_alert
    expr: 100 -avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)* 100 > 80
    for: 5m
    labels:
      level: warning
    annotations:
      description: "instance: {{ $labels.instance }} ,cpu usage is too high ! value: {{$value}}"
      summary:  "cpu usage is too high"

你写过哪些Prometheus监控报警?【重要】

cpu使用率高报警

节点掉线报警

(5)修改 prometheus 配置文件,添加 Alertmanager 实例的配置

vim /usr/local/prometheus/prometheus.yml

......
alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - 192.168.80.30:9093

rule_files:
  - "/usr/local/prometheus/alert_rules/*.yaml"
systemctl reload prometheus

(6)测试告警

systemctl stop node_exporter

使用钉钉告警

上面的示例使用邮箱进行报警,接下来演示如何用钉钉进行报警(需要安装钉钉报警插件)

(1)上传 prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz 到 /opt 目录中,并解压

cd /opt/
tar xf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/dingtalk

(2)在钉钉上进行群设置
创建群 -> 群设置 -> 智能群助手 -> 添加机器人 -> 添加机器人 -> 自定义
消息推送    开启
Webhook     复制
安全设置 -> 勾选 加签 -> 复制
点击完成

(3)修改 dingtalk 告警插件配置文件

cd /usr/local/dingtalk
cp -p config.example.yml config.yml
vim config.yml

timeout: 5s

## Uncomment following line in order to write template from scratch (be careful!)
#no_builtin_template: true

## Customizable templates path
templates:
  - contrib/templates/legacy/template.tmpl

## You can also override default template using `default_message`
## The following example to use the 'legacy' template from v0.3.0
default_message:
  title: '{{ template "legacy.title" . }}'
  text: '{{ template "legacy.content" . }}'

## Targets, previously was known as "profiles"
targets:
  webhook1:
    url: <粘贴Webhook的内容>
    # secret for signature
    secret: <粘贴加签的内容>

#启动服务 

./prometheus-webhook-dingtalk

(4)修改 alertmanager 配置文件

vim /usr/local/alertmanager/alertmanager.yml

global:
  resolve_timeout: 5m

route:
  group_by: [alertname]
  group_wait: 10s
  group_interval: 15s
  repeat_interval: 20m
  receiver: 'dingding.webhook1'

receivers:
- name: 'dingding.webhook1'
  webhook_configs:
  - url: 'http://192.168.80.30:8060/dingtalk/webhook1/send'
    send_resolved: true
systemctl reload alertmanager

(5)测试告警

systemctl stop node_exporter

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Kubernetes 1.26上部署Prometheus和钉钉告警,可以遵循以下步骤: 1. 首先,您需要创建一个Prometheus的配置文件,其中包含Prometheus服务器的相关配置信息。您可以通过使用Prometheus Operator或手动创建一个配置文件。 2. 在该配置文件中,您需要定义钉钉告警的接收者。您可以添加一个名为"dingtalk"的接收者,并提供钉钉机器人的Webhook地址。这将允许Prometheus发送告警通知到钉钉机器人。 3. 接下来,您需要将该配置文件应用到Kubernetes集群中。您可以使用kubectl命令应用一个YAML文件,其中定义了Prometheus服务器的Deployment和Service。 4. 在Prometheus服务器运行后,您可以使用kubectl port-forward命令将Prometheus的端口映射到本地,以便可以访问Prometheus的Web界面。 5. 在Prometheus的Web界面中,您可以配置和监控各种指标,并设置相应的报警规则。您可以通过PromQL查询语言定义报警规则,并指定钉钉接收者。 6. 当报警规则触发时,Prometheus发送告警通知到钉钉机器人。您可以在钉钉中收到告警通知,并进行相应的处理。 总结:以上是在Kubernetes 1.26上部署Prometheus和钉钉告警的大致步骤。具体的实施方式可能会根据您的环境和需求而有所不同。需要注意的是,配置和使用Prometheus和钉钉告警需要一定的技术知识和经验。 ### 回答2: 部署k8s 1.26版本中的Prometheus并配置钉钉告警需要以下步骤: 1. 安装Prometheus:根据k8s版本选择适当的Prometheus版本,并将其部署到kubernetes集群中。可以使用Helm进行安装:`helm install prometheus stable/prometheus` 2. 配置告警规则:在Prometheus中创建告警规则,以定义要监控的指标和阈值。可以通过编辑Prometheus配置文件或使用Prometheus的API来创建规则。 3. 设置钉钉告警:首先,需要在钉钉开发者平台上创建一个机器人,并获取其Webhook地址。然后,在Prometheus的配置文件中添加相应的钉钉告警配置,包括Webhook地址和其他相关参数。 4. 测试告警:修改某些指标或触发条件,以便使Prometheus触发告警规则。可以使用下面的命令手动触发告警:`kubectl -n <prometheus-namespace> delete po -l <label-selector>` 5. 验证告警:检查钉钉群组中是否收到Prometheus告警通知。如果一切配置正确,钉钉机器人将发送告警消息到指定的群组中。 需要注意的是,部署Prometheus和配置钉钉告警可能会因k8s版本和Prometheus版本的不同而有所差异。以上步骤仅提供了一个大致的实现方案,在实际操作中可能需要根据具体版本和需求进行一些调整和修改。 ### 回答3: 在k8s 1.26版本中部署Prometheus并配置钉钉告警的过程如下: 1. 在k8s集群中创建一个命名空间,用于部署和管理Prometheus及相关组件。 2. 在k8s集群中创建一个ConfigMap,用于存储Prometheus的配置文件。配置文件包含了需要监控的目标(例如,Pod、Service等)和具体的告警规则。 3. 创建一个ServiceAccount,并为其授权访问钉钉的权限。这是为了Prometheus能够发送告警通知到钉钉。 4. 部署Prometheus Operator。Prometheus Operator是一个用于管理Prometheus实例的部署程序。 5. 创建Prometheus资源。使用Prometheus Operator创建一个Prometheus资源,并关联之前创建的ConfigMap。 6. 配置Prometheus的钉钉告警规则。在ConfigMap内部,添加相应的告警规则配置,用于定义在何种情况下触发告警,并发送通知到钉钉。 7. 部署AlertmanagerAlertmanagerPrometheus的一个组件,用于接收来自Prometheus告警通知,并将其发送到相应的接收者。 8. 配置Alertmanager的钉钉通知方式。在Alertmanager的配置文件中,添加钉钉的通知方式,并填写相应的钉钉机器人Webhook地址。 9. 部署钉钉机器人。在钉钉中创建一个机器人,并获取其Webhook地址。 10. 部署完成后,Prometheus会开始监控集群中的目标,并根据配置的告警规则发送告警通知到AlertmanagerAlertmanager会将告警通知通过钉钉机器人的Webhook地址发送到钉钉。 通过以上步骤,我们成功在k8s 1.26版本中部署Prometheus,并配置了钉钉告警。这样就能及时获取到集群中的异常情况,并通过钉钉进行告警通知,便于及时处理和监控运维。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值