Prometheus Grafana IT 监控和告警最佳实践 6

小夏 科技 更新 2024-01-31

大家看到的,我是小飞,前面已经讲过了 Prometheus 的基本构造和数据采集今天,我们将详细解释获取数据、优化查询和优化数据展示的细节。

当主机通过自动文件发现方式获取数据时,数据将被简单处理和标记。 如下图所示:

308 host up,表示数据已经通过文件自动发现方式获取,但是我们可以通过promql和数据格式查询数据。

因为数据需要在大屏上展示,所以需要将数据合并到Grafana的图纸中,才能在大屏幕上展示数据,其中308台主机都是Linux节点,所以可以直接在每台主机上安装节点导出器。 并且 grafana 已经安装好了,打开 grafana 界面,在官方模板库中找到符合你需求的模板,这里我用的是模板 ID:16098。

打开 grafana 面板:

1. 配置数据源

填写你的 Prometheus 数据源,即 Prometheus 服务的地址和端口。

输入模板ID,点击加载,即可,如下图所示

以上是 Grafana 的模板数据,Grafana 查询变量也完整,数据已经过重新处理。

未处理的实例示例如下图所示: IP+端口,例如:192168.10.1:9100

通过 promql 查询数据:node uname info

查询显示 localhost 实例下有一个主机,实例为 17217.40.25:9100,并且有 300 多个主机像这样显示实例内置标签,而在 grafana 中,查询变量是以实例作为查询变量,但总是后面跟着端口,强迫症不喜欢,我只需要在 grafana 中显示 ip 地址即可。

您需要重写标签,并使用 Prometheus 的 relabel 配置来重写标签。

relabel_configs: -source_labels: -"__address__" regex: "(.*9100" target_label: "instance" action: replace replacement: "$1"
将上述覆盖配置写入 prometheus 配置文件中对应的作业,例如:

- job_name: "vmware-host" metrics_path: /metrics scheme: http scrape_interval: 5s file_sd_configs: -files: -/root/monitor/prometheus/targets/node-*.yml refresh_interval: 2m relabel_configs: -source_labels: -"__address__" regex: "(.*9100" target_label: "instance" action: replace replacement: "$1"

如上图所示,重写实例的所有标签值,删除9100端口,并显示所有IP地址。

标签的操作是google,主要是看重新标签配置。

Grafana 的变量查询也应遵循相应的语法。 如果选择 Prometheus 的数据源,那么就需要按照 PromQL 的语法自己 Google 一下,因为模板都是官方库中其他人共享的。

Prometheus 可以通过 HTTP API 接口对 TSDB 进行数据操作,以下是删除数据的几种方式

启用 HTTP API:

prometheus 的 tsdb admin api 默认关闭,需要添加启动参数 --web。enable-admin-api 将启动。

启动参数如下: 示例 --webenable-admin-api

[unit]description=prometheus serverwants=network-online.targetafter=network.target[service]type=***user=rootexecstart=/root/monitor/prometheus/current/prometheus --config.file=/root/monitor/prometheus/conf/prometheus.yml --web.listen-address=:9090 --storage.tsdb.path=/root/monitor/prometheus/data/ --storage.tsdb.retention=90d --web.enable-lifecycle --web.enable-admin-apiexecreload=/bin/kill -hup $mainpidkillmode=processrestart=on-failure[install]wantedby=multi-user.target
开启TSDB admin API后,您可以使用以下接口删除指标数据:

删除数据接口:

curl -x put -g ''
按时间删除:

curl -x put -g 'up&start=2022-11-07t00:00:00.000z'
此接口具有以下三个 URL 查询参数:

match=:metricsstart=:开始结束的时间戳=:Google更多api操作结束的时间戳。

相似文章