https://prometheus.io/docs/prometheus/latest/querying/basics/
sum by(countryCode, appName, url) (increase(app_invoke_cost_time_seconds{env="prod", countryCode="$countryCode", appName="$appName", url =~"($url)" }[1m]))
sum by (application,instance) (jvm_memory_used_bytes{area="heap",job=~"env-prod.+"}) *100/sum by (application,instance) (jvm_memory_max_bytes{area="heap",job=~"env-prod.+"})
Prometheus 使用一种非常简单的查询语言,被称为 PromQL(Prometheus Query Language)。以下是一些基本的 PromQL 查询语法示例:
- 查询过去1分钟内的所有数据:
http_requests_total{job="api-server"}[1m] - 查询特定 metric 的总和:
sum(http_requests_total{job="api-server"}) - 查询过去5分钟内每秒的平均请求数,并对结果进行整数向上取整:
irate(http_requests_total{job="api-server"}[5m]) - 查询过去1小时内,每个用户的平均请求数,并根据用户进行分组:
sum(rate(http_requests_total[1h])) by (user) - 查询过去1小时内,每个用户的HTTP GET请求数:
sum(rate(http_requests_total{method="get"}[1h])) by (user) - 查询过去1小时内,所有服务器的5xx错误率:
sum(rate(http_requests_total{status="5xx"}[1h])) / sum(rate(http_requests_total[1h])) - 查询过去1小时内,所有服务器的平均响应时间:
avg(http_request_duration_seconds{job="api-server"}[1h]) - 查询过去1小时内,每个服务的平均查询数/秒,并按服务排序:
topk(10, sum(rate(http_requests_total[1h])) by (service))
Prometheus 的查询语言非常强大,可以执行复杂的查询以分析时间序列数据。开发者可以使用这些查询来创建仪表板、警报和其他复杂的监控系统。