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


    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']
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、然后重启 prometheus

    systemctl restart prometheus
    
    • 1

    看到服务重启成功,ps 也看到进程有了

    4、但是访问Prometheus server的页面,提示 Service Unavaliable

    5、以为是刚才添加的 exporter的配置不对,回滚配置再重启还是同样的错误

    6、网上查阅资料,看到有反馈说是 安装目录下 data 文件下的 lock 需要清理

    但是实际上去检查这个文件,文件的时间是很早之前,所以个人觉得和这个没有关系,就没有清理。
    
    • 1

    继续排查 ~~~

    问题关键

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

    然后发现有个 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    参考
    1、https://stackoverflow.com/questions/47750983/prometheus-start-but-not-opened-on-browser

  • 相关阅读:
    Bi-Modal Progressive Mask Attention for Fine-Grained Recognition
    十几张高清世界地图
    facebook审核流程
    vue.nextTick核心原理
    SpringBoot整合Hive(开启Kerberos认证)作三方数据源
    猫吃什么罐头好?2023质量口碑好的猫罐头推荐!
    详细说说机器学习在交通领域的应用
    本地Chatglm2-6b模型训练,deepspeed依赖安装报错。
    软件开发人员的三条职业路径
    威胁情报思考
  • 原文地址:https://blog.csdn.net/eaglecolin/article/details/125499993