PromQL
约 2 分钟阅读
- PromQL链接prometheus.io/docs/prometheus/latest/querying/basicsQUERY EXAMPLES · PromQL tutorial for beginners and humans · 支持 PromQL 的应用 · VictoriaMetrics · long-term remote storage for Prometheus笔记:PromQL
- QUERY EXAMPLES
- PromQL tutorial for beginners and humans链接medium.com/@valyala/9ab455142085QUERY EXAMPLES · PromQL tutorial for beginners and humans · 支持 PromQL 的应用 · VictoriaMetrics · long-term remote storage for Prometheus笔记:PromQL
- 支持 PromQL 的应用
- VictoriaMetricsGitHubVictoriaMetrics/VictoriaMetricsVictoriaMetrics/VictoriaMetrics 是什么? · Apache-2.0, Golang · 时序数据库 · 高性能、低成本、大规模 · 支持集群 · 默认推荐单节点 - 小于 百万/s 的指标速率推荐单节点版本 - 通过垂直扩容/增加 CPU 内存来提升性能笔记:VictoriaMetrics
- long-term remote storage for Prometheus
- VictoriaMetricsGitHubVictoriaMetrics/VictoriaMetricsVictoriaMetrics/VictoriaMetrics 是什么? · Apache-2.0, Golang · 时序数据库 · 高性能、低成本、大规模 · 支持集群 · 默认推荐单节点 - 小于 百万/s 的指标速率推荐单节点版本 - 通过垂直扩容/增加 CPU 内存来提升性能笔记:VictoriaMetrics
- 参考
# 指标
node_cpu_seconds_total
# 标签过滤,支持操作符号 = != 匹配 =~ 不匹配 !~
node_cpu_seconds_total{mode="user"}
# 5 分钟均值
rate(node_cpu_seconds_total{mode="user"}[5m])
# 聚合结果
sum(rate(node_cpu_seconds_total{mode="user"}[5m]))
# 按照 mode 分组
sum(rate(node_cpu_seconds_total[5m])) by (mode)
# 不看 idle 和 nice
sum(rate(node_cpu_seconds_total{mode!~"idle|nice"}[5m])) by (mode)
# 只看 user 和 system
sum(rate(node_cpu_seconds_total{mode=~"user|system"}[5m])) by (mode)
# 分别返回
# by (mode) 是必须的,如果丢失了 label,则会认为是同样的指标,会被丢弃
sum(rate(node_cpu_seconds_total{mode="user"}[5m])) by (mode) or sum(rate(node_cpu_seconds_total{mode="system"}[5m])) by (mode)
# 结果加上另外一个指标
sum(rate(node_cpu_seconds_total{mode=~"user|system"}[5m])) by (mode) or node_load15
# unifiVapNumStations 结果 join unifiVapEssId label
sum(unifiVapNumStations * on(unifiVapIndex,instance) group_left(unifiVapEssId) unifiVapEssId{}) by (unifiVapEssId)
# 替换标签
# grafana 里能让一列出现两次
# 但 grafana 不能全文匹配 https://github.com/grafana/grafana/issues/11418
label_replace(unifiIfMac, "unifiLabel", "$0", "unifiIfMac", ".+")-- Histogram
-- =========
-- Heatmap
-- increase 让 value 变为整数, rate 则是比例
-- legend {{le}}
sum(increase(body_size_bucket[5m])) by (le)
--
histogram_quantile(0.50, sum(rate(body_size_bucket[$__rate_interval])) by (le))
histogram_quantile(0.90, sum(rate(body_size_bucket[$__rate_interval])) by (le))
histogram_quantile(0.95, sum(rate(body_size_bucket[$__rate_interval])) by (le))
histogram_quantile(0.99, sum(rate(body_size_bucket[$__rate_interval])) by (le))常用
# 查询在线节点
{__name__=~"probe_success|up"}
# 成功率
sum({__name__=~"probe_success|up"})/count({__name__=~"probe_success|up"})*100
# 全节点信息
label_replace({__name__=~"probe_success|up"}, "instance_ip", "$2", "instance", "(192[.]168[.]|http?://)?([0-9.+]+|.*).*")
# 排除 kube 内置组件
{job!~"apiserver|kubelet"}| metric | | ------------------- | ------------------------------------------------- | | node_uname_info | Linux 节点信息 | | windows_os_info | Windows 节点信息 | | windows_cs_hostname | ComputerSystem.DNSHostName, ComputerSystem.Domain |
FAQ
irate vs rate
- 只用于 counter - 增长值
- 尽量使用 rate - irate 不比 rate 快,无法捕获峰值
- irate
- 只使用范围内最近两个时间点数据
- rate
- 所有间隔进行求平均每秒
- Why irate from Prometheus doesn't capture spikes
关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub1 条
- VictoriaMetrics/VictoriaMetricsgithub.com/VictoriaMetrics/VictoriaMetrics
其他外链5 条
- medium.com/@valyala/9ab455142085medium.com/@valyala/9ab455142085
- medium.com/@valyala/why-irate-from-prometheus-doesnt-capture-spikes-45f9896d7832medium.com/@valyala/why-irate-from-prometheus-doesnt-capture-spikes-45f9896d7832
- prometheus.io/docs/prometheus/latest/querying/basicsprometheus.io/docs/prometheus/latest/querying/basics
- prometheus.io/docs/prometheus/latest/querying/examplesprometheus.io/docs/prometheus/latest/querying/examples
- www.robustperception.io/rate-then-sum-never-sum-then-ratewww.robustperception.io/rate-then-sum-never-sum-then-rate