Prometheus 指标和告警规则

一、Prometheus 指标收集

下图是 Prometheus WebUI 界面,里面展示了 Targets 和 Endpoint,说明了当前哪些目标服务是可以被 Prometheus 抓取的。

  • Endpoint:端点,可以抓取的指标来源。

  • Target:目标,包含了端点地址,端口的状态等信息

 下面是 Prometheus 抓取目标的配置:

- job_name: mysqld
    static_configs:
      - targets: ['192.168.0.100:9104']
        labels:
          instance: mysql-exporter
  • Job:代表了一组相同角色或功能的目标。

  • Instance:在当前主机上运行的 exporter 监控程序被称为一个实例。

抓取到目标的指标数据后,会生成时间序列数据,然后存储在 Prometheus 服务器本地,也可以设置从服务器发送数据到外部存储器或其他时间序列数据库。

二、 Prometheus定义告警规则

groups:
- name: mysql_exporter
  rules:
  - alert: MySQL Down
    expr: mysql_up==0
    for: 1m
    labels:
      job: "{
   
   {$labels.job}}"
      group: "{
   
   {$labels.group}}"
      project: "{
   
   {$labels.project}}"
      env: "{
   
   {$labels.env}}"
      instance: "{
   
   {$labels.instance}}"
      hostIp: "{
   
   {$labels.hostIp}}"
      target: "{
   
   {$labels.target}}"
      level: 4
      threshold_duration: "1分钟"
    annotations:
      role: "{
   
   {$labels.role}}"


  - alert: MySQL服务已重启
    expr: mysql_global_status_uptime < 60
    labels:
      job: "{
   
   {$labels.job}}"
      group: "{
   
   {$labels.group}}"
      project: "{
   
   {$labels.project}}"
      env: "{
   
   {$labels.env}}"
      instance: "{
   
   {$labels.instance}}"
      hostIp: "{
   
   {$labels.hostIp}}"
      target: "{
   
   {$labels.target}}"
      level: 3
    annotations:
      role: "{
   
   {$labels.role}}"

在告警规则文件中,我们可以将一组相关的规则设置定义在一个group下。在每一个group中我们可以定义多个告警规则(rule)。一条告警规则主要由以下几部分组成:

  • alert:告警规则的名称。
  • expr:基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
  • for:评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生告警的状态为pending。
  • labels:自定义标签,允许用户指定要附加到告警上的一组附加标签。
  • annotations:用于指定一组附加信息,比如用于描述告警详细信息的文字等,annotations的内容在告警产生时会一同作为参数发送到Alertmanager。

猜你喜欢

转载自blog.csdn.net/summer_fish/article/details/129407691