prometheus基本入门

    一,各组件与其作用

  1. Prometheus Server:Prometheus Server 是核心组件,负责采集、存储和查询监控指标数据。它通过定期的抓取任务从配置的目标(如服务、节点等)中获取指标数据,并将其存储在本地时间序列数据库中。

  2. Exporters:Exporters 是用于将非 Prometheus 格式的指标数据暴露给 Prometheus Server 的中间软件。它们可以直接与被监控的应用程序或服务进行通信,并将其指标数据转换为 Prometheus 可以理解的格式。Prometheus 社区提供了许多官方和第三方的 Exporters,用来监控各种不同类型的系统和服务。

  3. Alertmanager:Alertmanager 负责处理和路由 Prometheus Server 生成的警报信息。它能够对警报进行分组、静默处理、去重、以及发送通知给相关人员或系统。Alertmanager 还支持集成各种通知渠道,如电子邮件、Slack、PagerDuty 等。

  4. Pushgateway:Pushgateway 用于支持那些无法直接被 Prometheus 服务器抓取的短期工作任务(如批处理任务)。这些任务可以通过 Pushgateway 主动将指标数据推送到 Pushgateway,然后 Prometheus 服务器轮询 Pushgateway 获取这些指标数据。

  5. Grafana:虽然不是 Prometheus 的官方组件,但 Grafana 是一个流行的开源数据可视化工具,经常与 Prometheus 结合使用。Grafana 可以通过查询 Prometheus 的指标数据,创建图表、仪表盘和警报规则,并展示监控数据的漂亮视觉效果。

    二,prometheus各配置文件详解

    1,prometheus.yml 是 Prometheus 监控系统的配置文件,它定义了 Prometheus 的各种配置选项和监控目标

global:
  scrape_interval: <duration>
  evaluation_interval: <duration>
  external_labels:
    <label_name>: <label_value>

global 部分定义了全局配置选项。

scrape_interval 指定了采集数据的时间间隔,以持续时间格式(例如:15s、1m)表示。

evaluation_interval 指定了评估规则的时间间隔,以持续时间格式表示。

external_labels 允许添加一组键值对作为外部标签,这些标签将应用于所有指标样本数据。

scrape_configs:
  - job_name: <job_name>
    scrape_interval: <duration>
    static_configs:
      - targets: ['<target1>', '<target2>', ...]

scrape_configs 定义了要监控的目标(例如服务或节点)以及相关的配置选项。

job_name 表示当前监控任务的名称。

scrape_interval 指定了该监控任务的采集时间间隔。

static_configs 是一个列表,其中可以列出一个或多个静态配置。

targets 指定了要采集数据的目标的地址,可以是 IP 地址、主机名或其他形式的标识符

其他:

rule_files:用于加载 Prometheus 规则文件的配置选项。

alerting:用于定义警报规则和警报通知配置的部分。

scrape_timeout:定义了每个监控任务的超时时间。

2,rules定义报警文件模板

模板示例:

groups:
- name: node-up
  rules:
  - alert: node-up
    expr: up == 0
    for: 10s
    labels:
      severity: warning
      team: node
    annotations:
      summary: "{{ $labels.instance }}"
​

name: node-up: 这是警报组的名称,用于标识和区分不同的警报组。

rules: 这是规则列表,表示属于该警报组的规则。

alert: node-up: 这是规则的名称,用于标识和描述该规则。

expr: up == 0: 这是规则的表达式,它定义了警报被触发的条件。在这个示例中,表达式 up == 0 表示如果指标 up 的值等于 0,即节点不可用,则触发警报。

for: 10s: 这是规则的持续时间,表示警报必须持续多长时间才会触发。在这个示例中,警报将在连续 10 秒内满足表达式条件时触发。

labels: 这是警报的标签,用于对警报进行分类和标识。在这个示例中,severity: warning 表示警报的严重程度为警告级别,team: node 表示负责处理该警报的团队是 "node"。

annotations: 这是警报的注释,用于提供关于警报的额外信息。在这个示例中,summary: "{{ $labels.instance }}" 表示警报的摘要信息,其中 {{ $labels.instance }} 会被实际的标签值替换。

通过这个规则,当节点不可用时(up == 0),持续 10 秒后将触发一条警报,且该警报的严重程度为警告级别。警报的注释中提供了关于警报的摘要信息,其中的 {{ $labels.instance }} 会根据实际的标签值进行替换。

3,Alertmanager 是 Prometheus 的一个组件,用于处理和路由警报信息。在 Alertmanager 中,使用 alertmanager.yml 配置文件来定义警报接收者和路由方式。

alertmanager.yml 的样例配置:

global:
  resolve_timeout: 5m
​
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 12h
​
  routes:
  - match:
      severity: critical
    receiver: pagerduty
​
  - match:
      severity: warning
    receiver: email-team
​
receivers:
- name: 'email-team'
  email_configs:
  - to: 'support@example.com'
    from: 'alertmanager@example.com'
    smarthost: mail.example.com:25
    auth_username: 'alertmanager'
    auth_password: 'password'
​
- name: 'pagerduty'
  pagerduty_configs:
  - service_key: <service-key>
​
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match_re:
      service: '.*'
    equal: ['alertname', 'dev', 'instance']

全局配置:global 部分定义了 Alertmanager 全局设置,包括运行参数、超时设置、邮件或 PagerDuty 等通知渠道的默认配置等。这些配置选项将适用于所有警报规则及路由策略。

邮件设置: receivers 部分定义了警报接收者的信息,包括接收者的名称、邮件地址、邮件主题等。可以为每个接收者指定不同的通知方式,如电子邮件、Slack 等。

路由策略:route 部分定义了警报路由策略。可以根据警报标签和值的匹配情况,选择特定的接收者或群组,或通过 webhook 将警报发送到其他系统。路由策略支持多级匹配。

其中,警报将根据其 severity 标签的值匹配不同的路由策略,发送到 pagerduty 或 邮件团队(email-team)。Alertmanager 还支持对短时间内连续触发的警报进行抑制(inhibit),以避免过多的警报信息干扰用户。

4,Node Exporter 是一个用于监控主机硬件和操作系统指标的 Prometheus Exporter。它可以在被监控的主机上运行,并提供了一组默认的监控指标,如 CPU 使用率、内存使用情况、磁盘空间、网络流量等。(非必要组件)

Node Exporter 可以通过以下步骤进行安装和配置:

  • 下载 Node Exporter:可以从 Prometheus 的官方网站或 GitHub 上下载适用于你的操作系统的 Node Exporter 安装包。根据操作系统的不同,可选择 tarball 归档文件、二进制可执行文件或软件包进行安装。

  • 安装和启动 Node Exporter:将下载的 Node Exporter 安装包解压缩并将其拷贝到目标主机上。然后使用提供的脚本或命令以特定的方式启动 Node Exporter。通常,Node Exporter 会监听在默认的端口 9100 上。

  • 配置 Prometheus:在 Prometheus 的配置文件 prometheus.yml 中添加一个新的 scrape_config 部分,以告知 Prometheus 去抓取 Node Exporter 的指标。示例如下:

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['<node-exporter-ip>:9100']

在上面的示例中,我们创建了一个名为 "node" 的作业,并指定了 Node Exporter 的 IP 地址和端口作为抓取目标。

  • 重启 Prometheus:在完成配置后,重新启动 Prometheus 以使其加载新的配置文件。

  • 访问指标:现在可以通过 Prometheus 的 Web UI 或通过 PromQL 查询语言访问 Node Exporter 提供的指标。默认情况下,Prometheus Web UI 位于 http://<prometheus-ip>:9090

Node Exporter 提供了丰富的主机监控指标,你可以使用这些指标来了解主机的性能和健康状况。你还可以自定义和扩展 Node Exporter,以收集额外的指标,满足特定需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值