监控利器之Prometheus问题处理

新公司报到,首要接触到的依然是监控,看来是要和监控杠上了…

现象

grafana面板上出现“Only queries that return single…”异常
在这里插入图片描述

原因分析

由于我要监控阿里云的RDS数据库,于是在Prometheus server上部署了mysql_exporter,同时启动了多个监控实例的进程,所以为了便于在grafana上展示效果,进行对不同的环境不同数据库实例进行关联,所以修改了grafana上的mysql面板,而且又同时修正了数据库实例的label标签值,这就导致了在Prometheus server中存在相同实例不同的数据,进而导致通过语法无法确定唯一的数据出现报错。

分析结论

singlestat只能显示一个结果,而查询语句查到了两个结果。

处理方法

step1:修改prometheus服务的启动参数

在prometheus的启动脚本中传入–web.enable-admin-api参数

systemctl deamon-reload   #加载到内核
systemctl restart prometheus  #重启服务

参考链接:https://www.shellhacks.com/prometheus-delete-time-series-metrics/

说人话就是:通过我们需要清空某个metric或者释放磁盘空间,那么可以通过配置–web.enable-admin-api参数来达到目的。在这里插入图片描述

step2:命令行删除metric的数据

删除所有匹配的序列数据

curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={foo="bar"}'

删除job或instance的数据

curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={job="node_exporter"}'
curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={instance="192.168.0.1:9100"}'

删除所有(这个可以用于不重启清空所有的操作,但推荐使用通过保留数据的时间周期参数来控制)

curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={__name__=~".+"}'

我是清理的job的操作:

curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={job="mysql_service"}'

在这里插入图片描述
重新刷新grafana即可。

猜你喜欢

转载自blog.csdn.net/weixin_44729138/article/details/116503087