• zabbix监控nginx


    目录

    一、实验准备

    二、监控nginx


    一、实验准备

    zabbix-sever(192.168.115.4)

    zabbix-agent(192.168.115.5)

    添加监控对象

    二、监控nginx

    安装NGINX在192.168.115.5上安装NGINX,开启status模块

    yum -y install epel-release

    yum -y install nginx

    systemctl start nginx

    nginx -V #查看模块

    编写nginx的配置文件vim /etc/nginx/nginx.conf

    1. server或者location下插入
    2. location / {
    3. }
    4. location /status { #定义运行状态页面名称,页面为status
    5. stub_status on; #开启模块
    6. access_log off; #不开启访问日志记录
    7. allow 192.168.115.0/24; #允许此网段的主机访问此网页
    8. deny all; #其余网段主机不允许访问
    9. }

    重启:systemctl restart nginx

    验证此模块:curl 192.168.115.151/status

    编写脚本、设置key并验证

    vim /etc/zabbix/nginx.sh

    1. #!/bin/bash
    2. #定义Nginx status页面
    3. ngx_status="192.168.115.5/status"
    4. #判断status页面是否存活
    5. ngx_status_code() {
    6. http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
    7. if [ ${http_code} == "200" ];then
    8. return 1
    9. else
    10. echo "Nginx status is not running."
    11. fi
    12. }
    13. #获取当前活动的客户端连接数
    14. active() {
    15. ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
    16. }
    17. #获取接收客户端连接的总数量
    18. accepts() {
    19. ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
    20. }
    21. #获取已处理的连接总数量
    22. handled() {
    23. ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
    24. }
    25. #获取客户端请求总数量
    26. requests() {
    27. ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
    28. }
    29. #获取正在读取请求标头的当前连接数量
    30. reading() {
    31. ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
    32. }
    33. #获取正在将响应写回到客户端的当前连接数量
    34. writing() {
    35. ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
    36. }
    37. #获取当前正在等待响应的客户端连接数量
    38. waiting() {
    39. ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
    40. }
    41. #使用位置变量控制脚本输出
    42. case $1 in
    43. active)
    44. active;;
    45. accepts)
    46. accepts;;
    47. handled)
    48. handled;;
    49. requests)
    50. requests;;
    51. reading)
    52. reading;;
    53. writing)
    54. writing;;
    55. waiting)
    56. waiting;;
    57. *)
    58. echo "Unknown options"
    59. esac

    配置Zabbix Agent

    vim /etc/zabbix/zabbix_agentd.conf

    将333行UnsafeUserParameters=0解开注释并改成UnsafeUserParameters=1

    在底端添加创建自定义监控项

    1. UserParameter=nginx.active,bash /etc/zabbix/nginx.sh active
    2. UserParameter=nginx.accepts,bash /etc/zabbix/nginx.sh accepts
    3. UserParameter=nginx.handled,bash /etc/zabbix/nginx.sh handled
    4. UserParameter=nginx.requests,bash /etc/zabbix/nginx.sh requests
    5. UserParameter=nginx.reading,bash /etc/zabbix/nginx.sh reading
    6. UserParameter=nginx.writing,bash /etc/zabbix/nginx.sh writing
    7. UserParameter=nginx.waiting,bash /etc/zabbix/nginx.sh waiting

    重启zabbix-agent:systemctl start zabbix-agent

    数值获取测试

    zabbix_get -s 192.168.115.5 -k nginx.active

    web端添加监控项

    图形化

  • 相关阅读:
    PHP 命名空间
    【ICCV】PointDC,基于深度聚类的无监督3D场景语义分割,FaceChain团队联合出品
    一些 Conda 的常用命令
    c++ 使用rapidjson对数据序列化和反序列化(vs2109)
    Js中clientX/Y、offsetX/Y和screenX/Y之间区别
    React报错之useNavigate() may be used only in context of Router
    SSM整合流程
    第22集丨人生的智慧:通权达变的智慧
    【Call for papers】USENIX ATC-2023(CCF-A/计算机体系结构/2023年1月12日截稿)
    [c语言]小课堂 day6
  • 原文地址:https://blog.csdn.net/entertaining_/article/details/133121980