监控系统之Prometheus

Prometheus 是一个开源的系统监控和报警工具包,由 SoundCloud 开发并于 2012 年发布。现已成为云原生计算基金会(CNCF)的一部分。Prometheus 通过抓取(scraping)指标(metrics)来收集和存储数据,以实现高效的监控和报警。以下是对 Prometheus 的详细介绍:

核心概念

1. 指标(Metrics)

Prometheus 主要收集四种类型的指标:

  • Counter:单调递增的计数器,只增不减,用于统计请求数、错误数等。
  • Gauge:可以增减的指标,反映当前状态,例如温度、内存使用等。
  • Histogram:直方图,用于统计请求的分布,例如请求延迟。
  • Summary:汇总,用于统计请求的分布和百分位数。

2. 抓取(Scraping)

Prometheus 通过 HTTP 请求定期抓取目标(target)上的指标数据,目标通常暴露在特定的 URL(即 /metrics 端点)上。

3. 时间序列(Time Series)

Prometheus 将每个指标存储为一个时间序列数据,包含时间戳、指标名称、标签和值。

4. 标签(Labels)

每个时间序列都可以有多个标签(键值对),用于区分相同指标的不同维度,例如 instancejob 等。

5. PromQL

Prometheus 提供了一种强大的查询语言 PromQL,用于对时间序列数据进行查询和聚合。

6. Alertmanager

Prometheus 集成了 Alertmanager,用于处理由 Prometheus 发送的报警,支持报警分组、路由、抑制和通知。

7. Exporter

Prometheus 通过 Exporter 从不同的系统和服务中收集指标数据,常见的 Exporter 有 Node Exporter、MySQL Exporter、Kafka Exporter 等。

架构

Prometheus 由多个组件组成,包括:

  • Prometheus Server:核心组件,负责抓取和存储时间序列数据,处理查询。
  • Alertmanager:处理报警通知。
  • Pushgateway:用于临时任务将指标推送到 Prometheus。
  • Exporters:用于暴露指标数据的代理。
  • Prometheus Web UI:用于查看指标和查询结果。
  • Prometheus Console Templates:自定义的仪表盘和图表模板。

主要功能

1. 数据抓取

Prometheus 定期从配置的目标抓取指标数据。目标可以是静态配置的,也可以通过服务发现动态发现。

2. 数据存储

Prometheus 使用基于时间序列的存储引擎,以高效地存储和压缩指标数据,支持高写入和读取性能。

3. 查询与聚合

通过 PromQL,用户可以对存储的时间序列数据进行复杂的查询和聚合,生成图表和报警条件。

4. 报警

Prometheus 支持定义报警规则,并将报警发送到 Alertmanager,Alertmanager 进一步处理报警通知和路由。

5. 可视化

Prometheus 自带的 Web UI 和第三方工具(如 Grafana)可以用来可视化指标数据,创建丰富的仪表盘和图表。

使用示例

安装 Prometheus

首先,下载并解压 Prometheus:

wget https://github.com/prometheus/prometheus/releases/download/v2.41.0/prometheus-2.41.0.linux-amd64.tar.gz
tar xvfz prometheus-2.41.0.linux-amd64.tar.gz
cd prometheus-2.41.0.linux-amd64

配置 Prometheus

编辑 prometheus.yml 配置文件,添加监控目标:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

启动 Prometheus

./prometheus --config.file=prometheus.yml

查看指标

访问 Prometheus Web UI(默认端口 9090),在浏览器中输入 http://localhost:9090

添加 Exporter

以 Node Exporter 为例,用于监控主机系统指标:

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.5.0.linux-amd64.tar.gz
cd node_exporter-1.5.0.linux-amd64
./node_exporter

prometheus.yml 中添加 Node Exporter 的配置:

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

创建报警规则

prometheus.yml 中添加报警规则文件:

rule_files:
  - "alert.rules"

编辑 alert.rules 文件,添加报警规则:

groups:
  - name: example
    rules:
      - alert: InstanceDown
        expr: up == 0
        for: 1m
        labels:
          severity: 'critical'
        annotations:
          summary: "Instance {{ $labels.instance }} down"
          description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute."

配置 Alertmanager

编辑 alertmanager.yml 配置文件:

global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 3h
  receiver: 'email-notifications'

receivers:
  - name: 'email-notifications'
    email_configs:
      - to: 'you@example.com'
        from: 'alertmanager@example.com'
        smarthost: 'smtp.example.com:587'
        auth_username: 'yourusername'
        auth_password: 'yourpassword'

启动 Alertmanager:

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

prometheus.yml 中添加 Alertmanager 配置:

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093

总结

Prometheus 是一个强大的监控和报警工具,具有高效的指标收集、存储和查询能力。它的灵活性和可扩展性使其成为现代云原生环境中广泛使用的监控解决方案。通过结合 PromQL、Alertmanager 和各种 Exporter,用户可以实现全面的系统监控和报警通知。

【SCI复现】基于纳什博弈的多微网主体电热双层共享策略研究(Matlab代码实现)内容概要:本文围绕“基于纳什博弈的多微网主体电热双层共享策略研究”展开,结合Matlab代码实现,复现了SCI级别的科研成果。研究聚焦于多个微网主体之间的能源共享问题,引入纳什博弈理论构建双层优化模型,上层为各微网间的非合作博弈策略,下层为各微网内部电热联合优化调度,实现能源高效利用与经济性目标的平衡。文中详细阐述了模型构建、博弈均衡求解、约束处理及算法实现过程,并通过Matlab编程进行仿真验证,展示了多微网在电热耦合条件下的运行特性和共享效益。; 适合人群:具备一定电力系统、优化理论和博弈论基础知识的研究生、科研人员及从事能源互联网、微电网优化等相关领域的工程师。; 使用场景及目标:① 学习如何将纳什博弈应用于多主体能源系统优化;② 掌握双层优化模型的建模与求解方法;③ 复现SCI论文中的仿真案例,提升科研实践能力;④ 为微电网集群协同调度、能源共享机制设计提供技术参考。; 阅读建议:建议读者结合Matlab代码逐行理解模型实现细节,重点关注博弈均衡的求解过程与双层结构的迭代逻辑,同时可尝试修改参数或扩展模型以适应不同应用场景,深化对多主体协同优化机制的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值