Prometheus监控PHP-FPM

发布时间:2020-05-26 13:13:43编辑:admin阅读(3243)

    一、概述

    启用php-fpm状态功能

    php-fpmnginx一样内建了一个状态页,对于想了解php-fpm的状态以及监控php-fpm非常有帮助。为了后续的Prometheus监控,我们需要先了解php-fpm状态页是怎么回事。

    在上一篇文章中,已经开启了php-fpm状态,链接 如下:

    https://www.cnblogs.com/xiao987334176/p/12918413.html

    pm.status_path = /fpm_status

     

    nginx配置

    上篇文章中,也对nginx默认主机添加了配置

        location ~ ^/(fpm_status|health)$ {
            fastcgi_pass 192.168.31.34:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

     

    访问php-fpm状态页面

    http://192.168.31.34/fpm_status

    效果如下:

    1.png

     

    php-fpm status详解

    • pool-fpm 池子名称,大多数为www

    • process manager – 进程管理方式,值:static, dynamic or ondemand. dynamic

    • start time – 启动日期,如果reload了php-fpm,时间会更新

    • start since – 运行时长

    • accepted conn – 当前池子接受的请求数

    • listen queue –请求等待队列,如果这个值不为0,那么要增加FPM的进程数量

    • max listen queue – 请求等待队列最高的数量

    • listen queue len – socket等待队列长度

    • idle processes – 空闲进程数量

    • active processes –活跃进程数量

    • total processes – 总进程数量

    • max active processes –最大的活跃进程数量(FPM启动开始算)

    • max children reached -大道进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,请改大一点。

    • slow requests –启用了php-fpm slow-log,缓慢请求的数量

     

    二、安装php-fpm-exporter

    封装docker

    由于在dockerhub里面找的一些php-fpm-exporter都不好使,docker如何使用都没有说明。

    所以我决定自己封装一个docker

     

    下载php-fpm-exporter

    https://github.com/bakins/php-fpm-exporter/releases

    下载二进制文件

    1.png

     

    注意:不要下载zip文件,需要自己手动用go环境编译。对于go语言不熟悉的人,会编译失败。

    所以,下载已经编译好的文件,是比较稳妥的办法。

     

    创建目录/opt/php-fpm-exporter,结构如下:

    ./
    ├── dockerfile
    ├── php-fpm-exporter.linux.amd64
    └── run.sh

    说明:

    php-fpm-exporter.linux.amd64 就是我们下载的二进制文件

    run.sh 就是php-fpm-exporter的启动命令。

     

    dockerfile

    FROM alpine:3.10
    ADD php-fpm-exporter.linux.amd64 /php-fpm-exporter
    ADD run.sh /
    RUN chmod 755 /php-fpm-exporter /run.sh
    EXPOSE 9190
    ENTRYPOINT [ "/run.sh" ]

     

    run.sh

    #!/bin/sh
    
    /php-fpm-exporter --addr 0.0.0.0:9190 --endpoint $endpoint

    生成镜像

    docker build -t php-fpm-exporter:v1 .

    运行镜像

    说明:这里只需要传入一个环境变量即可。确保url可以正常访问。

    docker run -d -it --restart=always --name php-fpm-exporter -e endpoint=http://192.168.31.34/fpm_status -p 9190:9190 php-fpm-exporter:v1

    访问metrics

    http://192.168.31.34:9191/metrics

    三、配置Prometheus

    修改你的Prometheus配置文件,最后一行增加

      - job_name: PHP-FPM
        static_configs:      - targets: ['192.168.31.34:9190']
            labels:
              instance: localhost

     

    访问targets

    1.png

     

     确保状态为UP

     

    四、grafana导入dashboards

    模板地址如下:

    https://grafana.com/dashboards/3901

     

    等待一段时候后,效果如下:

    1.png

     

     

     

    本文参考链接:

    https://blog.csdn.net/u012599988/article/details/103179946


关键字