软件环境
普米(普罗米修斯) 官方网址:Prometheus - Monitoring system & time series database
普米(普罗米修斯) 下载地址:Download | Prometheus
普米(普罗米修斯) 官方文档:Overview | Prometheus
普米(普罗米修斯) 函数文档: Query functions | Prometheus
普米(普罗米修斯)Github项目: https://github.com/prometheus
告警规则:3分钟内的平均耗时是否超过1s
指标说明:耗时,单为是毫秒
PromQL:
avg(avg_over_time(saas_metric_GXXXX[3m])) by (IDC, instance) >1000
特别说明:
上面的分组条件(by后的字段),请根据实际业务需求设置。
如果不需要根据标签分组(分类)告警,则去掉分组条件(by)
示例解读:
假设告警规则为1分钟内的平均耗时超过30ms告警,则下图的场景则会产生2条告警(表达式执行记录一条对应一条告警):

附件一:常用prometheus指标数据查询
1. 查询当前最新值
要查询某个指标的当前最新值,可以使用vector selector。例如,如果你想查询名为node_cpu_seconds_total的指标的最新值,你可以使用:
node_cpu_seconds_total
2. 查询特定时间点的值
如果你想要查询某个时间点的指标值,可以使用offset修饰符。例如,查询1小时前node_cpu_seconds_total的值:
node_cpu_seconds_total offset 1h
3. 时间范围查询
要查询一个时间范围内的指标数据,可以使用range vector selector。例如,查询过去5分钟内node_cpu_seconds_total的变化情况:
node_cpu_seconds_total[5m]
4. 聚合查询
你可以对指标数据进行聚合操作,比如求和、平均等。例如,计算所有CPU使用时间的总和:
sum(node_cpu_seconds_total) by (mode)
5. 增长率计算
计算某个指标的增长率是一个常见需求。例如,计算过去5分钟内CPU使用时间的增长率:
(node_cpu_seconds_total[5m] - node_cpu_seconds_total[10m]) / node_cpu_seconds_total[10m] * 100
6. 使用函数进行数据处理
PromQL提供了多种内置函数,如rate()、increase()等,用于处理时间序列数据。例如,使用rate()函数计算每秒的CPU使用率增长率:
rate(node_cpu_seconds_total[5m])
7. 结合标签过滤
你可以使用标签选择器来过滤特定的指标数据。例如,只查询特定实例的CPU使用时间:
node_cpu_seconds_total{instance="example.com"}
8. 使用条件表达式
PromQL支持条件表达式,允许你根据条件筛选数据。例如,只选择CPU使用率超过50%的时间点:
node_cpu_seconds_total > 50
附件二:prometheus基本操作
一、安装与部署
-
服务端安装
- 二进制部署:从 GitHub 下载最新版本压缩包,解压后运行
./prometheus启动服务,默认端口为9090。 - Docker 部署:使用官方镜像
prom/prometheus,通过docker run命令启动时挂载配置文件目录。 - Mac 用户:可通过
brew install prometheus安装,配置文件路径为/usr/local/etc/prometheus.yml。
- 二进制部署:从 GitHub 下载最新版本压缩包,解压后运行
-
Exporter 部署
- Node Exporter(采集主机指标):
- 二进制方式:下载解压后运行
./node_exporter,默认端口为9100。 - Docker 方式:使用
prom/node-exporter镜像启动容器。
- 二进制方式:下载解压后运行
- Node Exporter(采集主机指标):
二、基础配置
-
主配置文件(prometheus.yml)
- 核心配置项:
global: scrape_interval: 15s # 数据采集间隔 scrape_configs: - job_name: "prometheus" # 监控自身 static_configs: - targets: ["localhost:9090"] - job_name: "node" # 监控主机 static_configs: - targets: ["10.0.0.41:9100"] # node_exporter地址修改后需重启服务生效。
- 核心配置项:
-
认证配置
- 启用 Basic Auth:在配置文件中添加
basic_auth字段指定用户名和密码。
- 启用 Basic Auth:在配置文件中添加
三、数据采集与查询
-
采集验证
- 访问
http://<target>:<port>/metrics(如http://localhost:9100/metrics)查看原始指标数据。
- 访问
-
PromQL 查询
- 常用查询示例:
- CPU 使用率:
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) - 内存空闲量:
node_memory_MemFree_bytes
- CPU 使用率:
- Web UI 操作:通过 Prometheus 自带的
http://localhost:9090/graph输入查询语句并可视化结果。
- 常用查询示例:
四、可视化与告警
-
Grafana 集成
- 安装:
- 二进制/Docker 部署,默认端口为
3000。
- 二进制/Docker 部署,默认端口为
- 配置数据源:
- 在 Grafana 中添加 Prometheus 数据源,填写
http://<prometheus-ip>:9090。
- 在 Grafana 中添加 Prometheus 数据源,填写
- 导入 Dashboard:
- 使用官方模板(如
Node Exporter Full)快速生成监控视图。
- 使用官方模板(如
- 安装:
-
告警规则(可选)
- 在
prometheus.yml中配置rule_files路径,编写告警规则文件(如 CPU 使用率超阈值)。
- 在
五、维护操作
- 服务管理
- 重启服务:通过
kill -HUP <pid>或重启进程。
- 重启服务:通过
- 数据清理
- 时间序列数据默认存储在
data/目录,可通过调整--storage.tsdb.retention.time参数控制保留周期。
- 时间序列数据默认存储在
附:常用命令
- 启动 Prometheus:
./prometheus --config.file=prometheus.yml - 启动 Node Exporter:
./node_exporter --web.listen-address=:9100

文章讨论了如何使用PromQL定义监控告警规则,如3分钟内平均耗时超过1秒,强调了根据IDC和实例进行分组的重要性。示例中提到,针对1分钟内平均耗时30毫秒的阈值,会触发两条告警记录。

2732

被折叠的 条评论
为什么被折叠?



