白日依山尽,黄河入海流。欲穷千里目,更上一层楼。 -- 唐·王之涣

Prometheus启动成功访问页面显示Service Unavailable

背景

数据库出现磁盘告警,数据增长有点快,之前对数据库的监控只是整体的数据盘监控,没有具体的库表的监控,通过开发独立的exporter然后通过Prometheus进行数据采集然后通过 Grafana进行数据展示来监控那个库表增长导致的磁盘告警

问题过程

1、利用python开发针对MySQL数据库表的数据增长的exporter,启动exporter观察到数据获取正常

2、在 prometheus server的 prometheus.yml 配置中添加开发的exporter

1
2
3
4
5
# cat prometheus.yml | tail 
- job_name: 'python-exporter-rds-search'
scrape_interval: 10s
static_configs:
- targets: ['192.168.3.108:8345']

3、然后重启 prometheus

1
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

1
/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

1
2
3
4
5
6
7
8
9
10
11
12
# /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

Prometheus启动成功访问页面显示Service Unavailable

http://blog.colinspace.com/2022/06/22/20220627-prometheus-service-unavaliable/

作者

Colin

发布于

2022-06-22

许可协议