新公司报到,首要接触到的依然是监控,看来是要和监控杠上了…
现象
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即可。
都到这儿了,更多文章,详见个人微信公众号ALL In Linux,来扫一扫吧!