Prometheus - SSL 证书过期监控 - 钉钉告警

image-20230328101307841



前言

上次博客《Prometheus - SSL 证书过期监控》已经配置了 Grafana 如何展示 SSL 过期监控面板,本次接着将告警功能加上,这才是我们的最终目的。

一、配置 Prometheus 告警规则

1、先确定好 Prometheus 的规则文件路径

image-20230330110201021

2、编写告警规则

vim /home/data/prometheus/rules/ssl_cert_alerts.yml
groups:
- name: "SSL证书过期提醒"
  rules:
  - alert: "证书过期时间<30天"
    expr: probe_ssl_earliest_cert_expiry{job="SSL证书时间"} - time() < 86400 * 30
    for: 0s
    labels:
      severity: "提示"
    annotations:
      summary: "{{ $labels.instance }} SSL 证书将在30天后过期,请注意及时续费!"
      description: "{{ $labels.instance }} SSL 证书将在30天后过期,请注意及时续费!"
  - alert: "证书过期时间<7天"
    expr: probe_ssl_earliest_cert_expiry{job="SSL证书时间"} - time() < 86400 * 7
    for: 0s
    labels:
      severity: "告警"
    annotations:
      summary: "{{ $labels.instance }} SSL 证书将在7天后过期,请注意及时续费!"
      description: "{{ $labels.instance }} SSL 证书将在7天后过期,请注意及时续费!"
  - alert: "证书过期时间<1天"
    expr: probe_ssl_earliest_cert_expiry{job="SSL证书时间"} - time() < 86400 * 1
    for: 0s
    labels:
      severity: "灾难"
    annotations:
      summary: "{{ $labels.instance }} SSL 证书将在1天后过期,请注意及时续费!"
      description: "{{ $labels.instance }} SSL 证书将在1天后过期,请注意及时续费!"

3、重启 Prometheus

docker restart prometheus

二、配置 Alertmanager

1、修改配置文件

vim /home/data/alertmanager/conf/config.yml
global:
  resolve_timeout: 5m
route:
  group_wait: 0s
  group_interval: 5s
  repeat_interval: 1m
  group_by: ['instance']
  receiver: 'web.hook.prometheusalert'

receivers:
- name: 'web.hook.prometheusalert'
  webhook_configs:
  - url: 'http://YourDingTalk_IP:8060/dingtalk/webhook1/send'

2、重启 Alertmanager

docker restart alertmanager

三、配置 DingTalk

1、配置文件

vim /home/data/dingtalk/conf/config.yml
templates:
  - /etc/prometheus-webhook-dingtalk/templates/default.tmpl
targets:
  webhook1:
    url: https://oapi.dingtalk.com/robot/send?access_token=8cf8d025f***a4537b22
    secret: SECb***95fbab
    mention:
      all: true

2、模板文件

vim /home/data/dingtalk/templates/default.tmpl

# 注意:这里的templates路径为什么与上面的templates路径不对应,那是因为我是用容器起的DingTalk,取的是容器内部路径
...
...
{{/* Firing */}}

{{ define "default.__text_alert_list" }}{{ range . }}

**触发时间:** {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

**摘要:** {{ .Annotations.summary }}

**描述:** {{ .Annotations.description }}

**监控:** [grafana](http://grafana_ip:8000/grafana/d/GuJ5DHMnz/fu-wu-qi-jian-kong-tu-biao?orgId=1)

**详情:**
{{ range .Labels.SortedPairs }}{{ if and (ne (.Name) "severity") (ne (.Name) "summary") }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}{{ end }}
{{ end }}{{ end }}

{{/* Resolved */}}

{{ define "default.__text_resolved_list" }}{{ range . }}

**触发时间:** {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

**解除时间:** {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}

**摘要:** {{ .Annotations.summary }}

**监控:** [grafana](http://grafana_ip:8000/grafana/d/GuJ5DHMnz/fu-wu-qi-jian-kong-tu-biao?orgId=1)

**详情:**
{{ range .Labels.SortedPairs }}{{ if and (ne (.Name) "severity") (ne (.Name) "summary") }}> - {{ .Name }}: {{ .Value | markdown | html }}
{{ end }}{{ end }}
{{ end }}{{ end }}
...
...

3、重启 DingTalk

docker restart dingtalk

四、模拟告警与恢复

1、钉钉告警通知

image-20230330111655592

2、钉钉解除告警通知

image-20230330112013249

总结

整体来说都比较简单,重点是要理清楚整个过程链,配置过程中仔细点即可,接下来会继续剖析告警的原理/告警的时机。

<think>好的,我现在需要处理用户关于网站监控系统目录结构和配置的查询。首先,用户提到“网站监控系统目录结构配置”,我需要明确他们具体想了解的内容。可能是指监控系统本身的文件目录结构,或者监控目标的网站目录结构?根据用户提供的引用信息,例如Zabbix配置Web监控[^1]、Prometheus的配置[^4],以及Grafana监控MySQL的步骤[^3],可以推测用户关心的是监控系统的配置目录和相关结构。 接下来,我需要整理常见的监控系统如Zabbix、Prometheus、Nagios等的目录结构。比如Zabbix通常有配置文件(如zabbix_server.conf)、Web前端文件、脚本目录等。Prometheus的配置可能包括主配置文件prometheus.yml、告警规则文件、数据存储目录等。同时,用户可能还想了解如何配置这些监控系统来监控网站,例如在Zabbix中设置Web场景,或者在Prometheus中配置exporter和告警规则。 需要确保回答覆盖目录结构、关键配置文件、监控配置步骤,并引用用户提供的资料中的相关内容,比如Zabbix的Web监控功能,Prometheus的路由和接收器配置。此外,用户可能希望了解最佳实践或示例配置,比如如何组织监控规则文件,如何处理数据存储等。还要注意用户提到需要生成相关问题,可能需要包括监控系统的选择、配置优化、告警设置等。 最后,检查是否遵循了系统级指令:使用正确的中文,数学公式格式无误,引用标识正确添加,结构清晰,分步骤说明,并生成相关问题。需要确保每个引用都准确对应,例如Zabbix的Web监控配置对应引用,Prometheus的路由配置对应引用。</think>### 网站监控系统的目录结构与配置 #### 1. **典型监控系统目录结构** 以通用监控系统(如Zabbix、Prometheus)为例,其核心目录结构和配置文件如下: ```bash 监控系统根目录/ ├── conf/ # 配置文件目录 │ ├── prometheus.yml # Prometheus主配置文件 │ ├── alert_rules/ # 告警规则文件(如CPU使用率超过阈值) │ └── zabbix_server.conf # Zabbix服务端配置 ├── data/ # 数据存储目录(时序数据库、日志等) ├── scripts/ # 自定义脚本(如网站可用性检测脚本) ├── exporters/ # Prometheus exporter(如node_exporter、blackbox_exporter) └── web/ # Web界面文件(如Zabbix前端、Grafana仪表盘) ``` #### 2. **关键配置文件说明** - **Prometheus主配置** (`prometheus.yml`) 定义监控目标、告警规则路径和接收器: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'website_monitor' metrics_path: /probe params: module: [http_2xx] # 使用blackbox_exporter检测HTTP状态 static_configs: - targets: ['https://example.com'] alerting: alertmanagers: - static_configs: - targets: ['alertmanager:9093'] rule_files: - "alert_rules/*.yml" # 引用告警规则文件 ``` - **Zabbix Web场景配置** 通过Web界面配置HTTP检测: ```text Web Scenario → 创建场景 - 步骤1: GET请求首页,验证状态码200 - 步骤2: POST登录接口,验证响应时间 < 500ms ``` #### 3. **网站监控的核心配置步骤** 1. **定义监控指标** - 可用性: HTTP状态码、响应时间 - 性能: 页面加载速度(通过$t_{load} = \frac{1}{n}\sum_{i=1}^{n} t_i$计算平均响应时间) - 内容校验: 关键词匹配(如"登录成功") 2. **配置数据采集** - 使用`blackbox_exporter`检测HTTP/HTTPS服务: ```yaml modules: http_2xx: prober: http http: valid_status_codes: [200] method: GET ``` 3. **设置告警规则** Prometheus告警规则示例: ```yaml - alert: WebsiteDown expr: probe_success{job="website_monitor"} == 0 for: 2m annotations: summary: "网站不可达 (实例 {{ $labels.instance }})" ``` 4. **可视化与通知** - Grafana仪表盘展示响应时间趋势:$$ \text{响应时间} = \begin{cases} \text{正常} & t \leq 1s \\ \text{警告} & t > 1s \end{cases} $$ - 邮件/钉钉通知集成(参考Grafana报警配置) --- §§ 1. **如何选择网站监控工具(Zabbix vs Prometheus)?** 2. **如何优化大规模网站的监控数据存储?** 3. **如何实现分布式网站的跨区域监控?[^2]** 4. **网站监控SSL证书过期的自动检测方法?** 5. **如何通过API动态更新监控目标?[^4]**
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值