Zabbix监控nginx性能(113)

凉白开 zabbix4090,74761字数 2180阅读7分16秒阅读模式

需要使用zabbix监控nginx,首先nginx需要配置ngx_status,如果开启请看凉白开之前的文章《启用nginx status状态详解

nginx status信息

# curl http://127.0.0.1/ngx_status
Active connections: 11921 
server accepts handled requests
 11989 11989 11991 
Reading: 0 Writing: 7 Waiting: 42

以上为nginx性能计数,我们除了监控以上数据,还需要监控nginx进程状态,并且配置触发器!文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

zabbix客户端配置

编写客户端脚本ngx_status.sh文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

#!/bin/bash
# DateTime: 2015-10-25
# AUTHOR:凉白开
# WEBSITE: https://www.ttlsa.com
# Description:zabbix监控nginx性能以及进程状态
# Note:此脚本需要配置在被监控端,否则ping检测将会得到不符合预期的结果
# 文章地址:https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/ ‎

HOST="127.0.0.1"
PORT="80"

# 检测nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l 
}
# 检测nginx性能
function active {
    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
$1

zabbix客户端配置文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

将自定义的UserParameter加入配置文件,然后重启agentd,如下:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

#cat /usr/local/zabbix-3.0.0/etc/zabbix_agentd.conf | grep nginx
UserParameter=nginx.status[*],/usr/local/zabbix-3.0.0/scripts/ngx-status.sh $1
# killall zabbix_agentd
# /usr/local/zabbix-3.0.0/sbin/zabbix_agentd 

zabbix_get获取数据

此步骤可以跳过,但是最好是测试一下,因为通过此命令我们可以检测配置是否正确文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

# /usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[accepts]'
9570756
# /usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[ping]'
1

在zabbix server服务器上执行如上命令, 10.10.1.121为agentd机器文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

zabbix web端配置

导入Template App NGINX模板文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

模板我已经写好了,将会放到附件中。具体导入方式请看前面的文章《zabbix链接及解除模板链接(76)文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

Link NGINX模板文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

到了最后一个阶段,登陆zabbix管理端,link模板到nginx服务器:configuration->hosts->点击nginx所在服务器->点击template->Link new templates输入"Template App NGINX"->Add->最后点击update。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

监控效果

nginx

zabbix-nginx-status

模板附件下载:zabbix_monitor_nginx_template_ttlsa_com文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/ 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 26/10/2015 01:00:40
  • 转载请务必保留本文链接:https://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/
  • nginx
  • zabbix
  • 性能
  • 监控
评论  40  访客  40
    • 空山新雨
      空山新雨 0

      配置文件中
      UserParameter=nginx.status[*],/usr/local/zabbix-3.0.0/scripts/ngx-status.sh $1
      应该是ngx_status.sh,是下划线而不是横杆

      • 匿名
        匿名 9

        最后那一张图里为什么我的显示没有数据(no data)?

          • 匿名
            匿名 9

            @ 匿名 先执行脚本,看看能否获取到数据

            • 肥嘟嘟
              肥嘟嘟 0

              @ 匿名 你好,我也碰到了你的问题,accepts handled requests三个监控项也显示为0,但是我在zabbix_server端和zabbix_agent端使用脚本和zabbix_get都能取到上面那三个项目的值。但是在zabbix web页面上都不显示值。

                • 请输入您的QQ号
                  请输入您的QQ号 9

                  @ 肥嘟嘟 我也遇到一摸一样的问题,请问如何解决?

              • 一个人住
                一个人住 1

                关于requests这个监控项,好像没什么意义啊。因为我测试的时候,nginx服务器并没有其他用户请求,而我执行一次脚本,requests就加1,请求全部来自于监控脚本。也就是说zabbix每通过脚本获取一次数据,就会请求一次,requests就会加1,这样获取的requests怎么知道是用户请求发起的还是脚本监控发起的?

                • 一个人住
                  一个人住 1

                  @凉白开,你好,zabbix版本为3.2.1,模板能正常导入,zabbix_get能获取到数据,比如request为两万多,但是web界面的最新数据里面,数据却为0,其他几个监控项也是如此,不知道是什么原因

                    • ccorz
                      ccorz 0

                      @ 一个人住 这个问题我也碰到了,请问是如何解决的

                    • homu
                      homu 4

                      这个工具监控 nginx 比 zabbix 简单
                      http://www.oneapm.com/ci/zabbix.html

                        • 菊花侠
                          菊花侠 1

                          @ homu 要钱的

                        • 凯
                          0

                          nginx status server 这个graph下的数据显示为0,但graph type 是normal,另一个模板是有的
                          nginx status server accepts
                          nginx status server handled
                          nginx status server requests

                            • 一样
                              一样 0

                              @ 你有解决么

                            • lucas
                              lucas 1

                              [root@blog bin]# cat /var/log/audit/audit.log
                              type=AVC msg=audit(1460173064.477:2379): avc: denied { name_connect } for pid=14688 comm=”curl” dest=80 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket
                              type=SYSCALL msg=audit(1460173064.477:2379): arch=c000003e syscall=42 success=no exit=-13 a0=3 a1=7ffe55e21bf0 a2=10 a3=7ffe55e21810 items=0 ppid=14687 pid=14688 auid=4294967295 uid=996 gid=994 euid=996 suid=996 fsuid=996 egid=994 sgid=994 fsgid=994 tty=(none) ses=4294967295 comm=”curl” exe=”/usr/bin/curl” subj=system_u:system_r:zabbix_agent_t:s0 key=(null)

                              [root@blog bin]# setsebool -P nis_enabled 1

                              如果是这个问题,可以这样解决

                              • lucas
                                lucas 1

                                没有值 可能是setenforce的问题

                                • 匿名
                                  匿名 9

                                  下载模板后 将3.0改为2.0 可以导入 ,但是在主机关联这个模板,保存的时候报了下面的错,
                                  Error in query [INSERT INTO applications (name,hostid,applicationid) VALUES (‘nginx’,’10107′,’468′)] [Duplicate entry ‘10105-nginx’ for key ‘applications_2’]
                                  SQL陈述式执行已失败: “INSERT INTO applications (name,hostid,applicationid) VALUES (‘nginx’,’10107′,’468′)”.

                                  • 85757916
                                    85757916 3

                                    谢谢分享..

                                    • huningfei
                                      huningfei 2

                                      导入模板的时候报错 ERROR: Import failed 是版本原因吗?

                                        • 管理员
                                          管理员 5

                                          @ huningfei 打开xml文件,把里面的3.0改成2.0

                                            • huningfei
                                              huningfei 2

                                              @ 管理员 你好,改了之后,还是报错
                                              Created: Application “nginx” on “Template App NGINX”.
                                              Created: Item “nginx status connections active” on “Template App NGINX”.
                                              Created: Item “nginx status connections reading” on “Template App NGINX”.
                                              Created: Item “nginx status connections waiting” on “Template App NGINX”.
                                              Created: Item “nginx status connections writing” on “Template App NGINX”.
                                              Created: Item “nginx status PING” on “Template App NGINX”.
                                              Created: Item “nginx status server accepts” on “Template App NGINX”.
                                              Created: Item “nginx status server handled” on “Template App NGINX”.
                                              Created: Item “nginx status server requests” on “Template App NGINX”.
                                              Cannot implode expression “{Template App NGINX:nginx.status[ping].last()}=0”. Incorrect trigger function “last” provided in expression. Parameter sec or #num or user macro expected, “” given.

                                              Import

                                          • 风吻过的伤口
                                            风吻过的伤口 9

                                            请教个问题 centos 7 安装zabbix-agentd
                                            /usr/local/zabbix/bin/zabbix_get -s 10.0.0.11 -p 10050 -k ‘system.uptime’

                                            值为空

                                            • 错误
                                              错误 9

                                              Starting Zabbix agent: zabbix_agentd [2646]: unknown parameter [HOST] in config file [/etc/zabbix/zabbix_agentd.d/ngx_status.sh], line 3

                                              • qzuser
                                                qzuser 9

                                                下载模板后 将3.0改为2.0 可以导入 ,但是在主机关联这个模板,保存的时候报了下面的错,
                                                Error in query [INSERT INTO applications (name,hostid,applicationid) VALUES (‘nginx’,’10105′,’525′)] [Duplicate entry ‘10105-nginx’ for key ‘applications_2’]
                                                SQL陈述式执行已失败: “INSERT INTO applications (name,hostid,applicationid) VALUES (‘nginx’,’10105′,’525′)”.

                                                  • qzuser
                                                    qzuser 9

                                                    @ qzuser 已经解决了 3q

                                                      • riyuedm
                                                        riyuedm 0

                                                        @ qzuser 我也遇到这个问题额 请问你是怎么解决的呢

                                                        • 匿名
                                                          匿名 9

                                                          @ qzuser 我也遇到这个问题了,请问你是如何解决的呢

                                                          • 匿名
                                                            匿名 9

                                                            @ qzuser 你好,我也遇到关联模版报这个错,你是怎么解决的呢

                                                        • 龙
                                                          4

                                                          我的zabbix是2.4 的,导入到时候报错。说不支持。求教版主

                                                            • 多看zabbix官方手册
                                                              多看zabbix官方手册 9

                                                              @ 找什么鸡巴module 自己写监控脚本就行了 无非就是采集一些阈值 然后传递给zabbix server 然后zabbix server收集 设置item action 出图

                                                            • Roach
                                                              Roach 9

                                                              我貌似也遇到同样的问题了,部署了两台一台有数据获取到,另外一台没有获取到,你们是怎么解决的

                                                              • longdechuanren517
                                                                longdechuanren517 4

                                                                我想请问下nginx的模版怎么创建。主要监控nginx的什么版本

                                                                • 戴俊杰
                                                                  戴俊杰 9

                                                                  我试了下,模板导入失败,我用的是zabbix 2.4,是不是这个模板只支持其他版本的,求2.4版本的模板

                                                                    • 凉白开
                                                                      凉白开 9

                                                                      @ 戴俊杰 编辑xml文件,把3.0改为2.0试试

                                                                        • 戴俊杰
                                                                          戴俊杰 9

                                                                          @ 凉白开 模板导进去了,谢谢。

                                                                          但是我碰到其他奇怪问题了,请教下。
                                                                          是这样我按照你教程步骤配置好了agent,然后在agent本机使用
                                                                          zabbix_get -s 127.0.0.1 -k ‘nginx.status[accepts]’,不管获取什么都是空,也不报任何错误。
                                                                          检查脚本,有执行权限,试着执行脚本里curl语句有数据
                                                                          检查http://x.x.x.x/ngx_status,也没问题有数据

                                                                          不知道还有哪里不对了

                                                                            • 运维生存时间
                                                                              运维生存时间 7

                                                                              @ 戴俊杰 需要在zabbix server上执行get命令

                                                                                • 戴俊杰
                                                                                  戴俊杰 9

                                                                                  @ 运维生存时间 ok,明白了,多谢

                                                                                  • 王增辉
                                                                                    王增辉 9

                                                                                    @ 运维生存时间 我这也是没有数据 , zabbix server 端执行zabbix_get -s 10.15.117.83 -k ‘nginx.status[accepts]’ 也是空的 不知道是啥原因 谢谢 (zabbix版本为2.4 已将3.0 改为2.0,模板能够正常导入)

                                                                                  • 龙
                                                                                    4

                                                                                    @ 戴俊杰 看下的值有没有设置对

                                                                                  • 123321
                                                                                    123321 9

                                                                                    @ 凉白开 您好,我已经通过zabbix自带的jvm generic模板监控了jvm,但是为什么gc和memory的部分指标监控不到,我对java的语言不了解,请问是否需要在java上进行配置?

                                                                              评论已关闭!