每个 Prometheus 作业都作为 Grafana 中的数据源
Posted
技术标签:
【中文标题】每个 Prometheus 作业都作为 Grafana 中的数据源【英文标题】:Every Prometheus job as a data source in Grafana 【发布时间】:2021-07-07 11:32:51 【问题描述】:我们有一个 Prometheus、一个 Grafana 服务和多个出口商。这是prometheus.yaml
配置:
scrape_configs:
- job_name: app1
scrape_interval: 30s
scheme: http
static_configs:
- targets: ['x.y.z.10:7380']
- job_name: app2
scrape_interval: 30s
scheme: http
static_configs:
- targets: ['x.y.z.11:7380']
- job_name: app3
scrape_interval: 30s
scheme: http
static_configs:
- targets: ['x.y.z.12:7380']
从 Grafana 的角度来看,这些抓取将作为单个数据源进行访问。但是,为了为每个应用程序(app1、app2 和 app3)制作不同的仪表板,我们通过将作业过滤器 job="appX"
附加到查询/指标来分隔它们。
这产生了两个问题,第一个是,我们必须在每个度量后添加job="appX"
。第二个是,指标列表由来自其他工作的不相关项填充。
Prometheus 或 Grafana 中是否有任何方法可以将每个作业作为数据源分开?我们不必将job="appX"
添加到指标中。假设我们无权访问特定仪表板中其他作业的指标。
【问题讨论】:
所以问题是每次要查看应用程序时都必须添加特定的job="appX"?我的意思是,如果您想检查 app3 指标,然后在 app2 之后,您需要对查询进行更改? @rcarba:实际上,问题是当有人想写一个查询时,他应该把它放在每个指标之后,应用程序的指标也混合在一起,很难确定哪个属于一个应用程序 【参考方案1】:不,没有简单的方法可以将作业分成不同的数据源。 imo您可以处理它的正确方法是为可以动态抓取的job_name创建一个仪表板变量,并拥有1个仪表板,您可以通过添加 job="$variable" 过滤器来选择显示任一作业的指标。
如果您不想在所有指标之后添加标签过滤器,您可以使用
【讨论】:
【参考方案2】:一个好的做法是将应用程序名称作为“命名空间”作为指标名称的前缀。例如:
appx_mycounter
appy_mycounter
appz_mycounter
这将使您能够完全忽略工作标签,并且 Grafana 中的预输入会更好地工作。
【讨论】:
以上是关于每个 Prometheus 作业都作为 Grafana 中的数据源的主要内容,如果未能解决你的问题,请参考以下文章
MySQL: 9 为数据库部署Prometheus+Grafana监控系统