prometheus 使用 systemctl restart之后,观察到服务进程已经存在,但是访问对应的server地址,却直接提示 Service Unavailable,这里整理排查的过程和问题所在,最后附上了利用python开发exporter监控MySQL数据库表增长的监控
可以关注公众号 全栈运维
不定期更新
数据库出现磁盘告警,数据增长有点快,之前对数据库的监控只是整体的数据盘监控,没有具体的库表的监控,通过开发独立的exporter然后通过Prometheus进行数据采集然后通过 Grafana进行数据展示来监控那个库表增长导致的磁盘告警
1、利用python开发针对MySQL数据库表的数据增长的exporter,启动exporter观察到数据获取正常
2、在 prometheus server的 prometheus.yml
配置中添加开发的exporter
# cat prometheus.yml | tail
- job_name: 'python-exporter-rds-search'
scrape_interval: 10s
static_configs:
- targets: ['192.168.3.108:8345']
3、然后重启 prometheus
systemctl restart prometheus
看到服务重启成功,ps 也看到进程有了
4、但是访问Prometheus server的页面,提示 Service Unavaliable
5、以为是刚才添加的 exporter的配置不对,回滚配置再重启还是同样的错误
6、网上查阅资料,看到有反馈说是 安装目录下 data 文件下的 lock 需要清理
但是实际上去检查这个文件,文件的时间是很早之前,所以个人觉得和这个没有关系,就没有清理。
继续排查 ~~~
1、发现配置的Prometheus没有找到有效的日志存放的地方,通过 systemctl status prometheus.service -l
看不到有效的信息
2、为了排查问题所在直接使用命令行方式开启debug日志 --log.level=debug
/opt/app/prometheus/prometheus --config.file=/opt/app/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus --storage.tsdb.retention=30d --web.enable-lifecycle --web.enable-admin-api --log.level=debug
然后发现有个 Starting prometheus
之后日志就一直卡住没有任何输出了
3、这个是时候 ps 查看进程是启动了,但是 telnet 端口是不通的,怀疑是服务还没有完全启动,等待观察,知道4分钟之后出现新的日志输出,看到正常启动,这时候检查端口也是通的了
对比了另外一个Prometheus server启动很快,两个的差别在于”出现问题“
的这个的数据量 150G
导致服务启动很慢而已。
1、python开发exporter监控数据库表增长
https://gitee.com/colin5063/prometheus_exporter/tree/master/mysql_exporter
2、systemctl 管理 prometheus.service
# /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Requires=network-online.target
After=network-online.target
[Service]
Restart=on-failure
ExecStart=/opt/app/prometheus/prometheus --config.file=/opt/app/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus --storage.tsdb.retention=30d --web.enable-lifecycle --web.enable-admin-api
[Install]
WantedBy=multi-user.target
参考
1、https://stackoverflow.com/questions/47750983/prometheus-start-but-not-opened-on-browser