1.Prometheus Server:负责数据采集、存储和查询
数据采集 (Pull):定期从配置好的目标(Targets)上拉取指标数据。
数据存储 (Store):将采集到的数据以时间序列(Time-Series)的形式存储在本地磁盘。
数据查询 (Query):提供一个 HTTP API 接口,允许你使用 PromQL 语言查询存储的数据。
- Client Libraries (客户端库)
如果你想监控自己写的应用程序,就需要使用客户端库。
库会在你的应用程序中启动一个 HTTP 服务,并在 /metrics 路径下暴露所有定义好的指标。 - Exporters (导出器)
对于无法直接集成客户端库的现成软件(如数据库、消息队列、操作系统),Exporters 是最佳选择。
一个独立运行的进程,它会去查询目标软件的状态(比如通过 SSH、API 或读取日志),然后将这些状态转换为 Prometheus 能理解的格式,
并在 /metrics 路径下暴露出来。 - Pushgateway (推送网关)
标准的 “拉取” 模式对长时间运行的服务很友好,但对于一些短生命周期的任务就不适用了,因为任务结束后,
Prometheus 可能还没来得及去拉取数据。
提供一个中间网关。短任务可以主动将自己的指标 “推” 到 Pushgateway,然后由 Prometheus Server 从
Pushgateway 拉取数据。 - Alertmanager (告警管理器)
光有数据和图表还不够,关键是能在异常时及时通知到人。
接收告警:从 Prometheus Server 接收告警信息。
处理告警:
对告警进行分组(如将同一服务的多个告警合并)、
抑制(如一个高级别告警触发后,抑制其引发的低级别告警)、
路由(根据告警级别或标签发送到不同的通知渠道)。
发送通知:通过 Email、PagerDuty、Slack、Webhook(可对接钉钉、企业微信)等方式发送告警通知。 - PromQL (查询语言)
这是 Prometheus 的灵魂,让你能从海量数据中挖掘价值。
avg without(cpu,mode) (rate(node_cpu_seconds_total {mode="idle"} [1m]))
node_cpu_seconds_total {mode="idle"}
选择指标 node_cpu_seconds_total(节点 CPU 累计使用时间)
筛选条件 mode="idle" 表示只关注 CPU 的空闲状态rate(... [1m])
计算 1 分钟时间窗口内的每秒平均增长率
这里实际上是计算 CPU 处于空闲状态的每秒平均时间
avg without(cpu,mode)
对结果进行平均值计算
without(cpu,mode) 表示在计算平均值时,排除 cpu(CPU 核心编号)和 mode(这里固定为 idle)这两个标签
这意味着会将同一节点的所有 CPU 核心的空闲率进行平均,得到整个节点的平均 CPU 空闲率
指标类型
Counter计数器:只增不减
Gauge仪表盘:可增可减
Histogram直方图:可以分别求出各个数据段的分布
Summary摘要:可以相较于直方图增加一个频率分布
部署时需要注意的问题
- Prometheus前台启动以后,后面改为systemd管理,需要将前台启动的进程关闭,否则你后面启动的并没有真正运行
如果你在web页面不能够看到对应的endpoint,那么就是你修改的配置文件没有生效
node_exporter、mysqld_exporter没有使用systemd管理 - mysqld_exporter部署以后大家要检查指标是否正常
评论 (0)