Zabbix快速部署及自定义Item监控Nginx状态原理
2016-09-05 12:23
866 查看
监控软件的选择1)Nagios 优点:监控协议多、完善的告警机制、服务抖动检测 缺点:只能在终端配置、基于文件的配置方式、不方便扩展、易读性差、管理耗时2)Cacti 优点:多样的图形化数据、历史数据存储、趋势对比 缺点:报警机制不完善、只支持集中式数据监控3)Zabbix
优点:集合了Nagios和Cacti大部分优点,功能强大;特别是在针对集群机器较多、业务环境复杂和跨机房监控方面有优势(proxy收集功能)
缺点:部署稍微复杂,不支持服务抖动检测等... Zabbix特点· 多种数据收集方式(SNMP、IPMI、JMX)(SERVER、PROXY、AGENTS)· 高级告警配置(自定义告警升级、告警信息支持使用宏macro变量、远程命令实现自动化动作)· 实时绘图(自定义创建多监控项视图、网络拓扑、自定义面板screen,并允许在dashboard页面显示)
· 历史数据存储(数据存储在数据库中,可配置、内置数据清理机制)· 多模板使用(模板中可以添加组监控、模板允许继承)· 网络自动发现(自动发现网络设备、自动agent注册)· ZabbixAPI接口(提供程序级别的访问接口、第三方程序可很快接入)
Zabbix进程构成
· zabbix_agentd(客户端守护进程,手机客户端数据,如cpu负载、内存、磁盘使用等...)
· zabbix_get(zabbix工具,单独使用,常用于在server或者proxy端执行,用户获取监控数据,通常用于排错)· zabbix_sender(用于向server端主动发送数据,常用于再执行耗时比较长的check时,导致zabbix超时,使用sender主动提交一次数据)
· zabbix_proxy(代理守护进程,数据中转站,最后还要将获取到的数据提交到server里,一般跨机房、地区的环境需要使用到proxy)· zabbix_java_gateway(监控java时候使用到代理网关,类似于agent,最后数据还要提交给server)
· zabbix_server(server端守护进程,server可以被动去搜集数据,也可以让客户端主动提交数据) Zabbix部署1)系统环境
自定义监控项Item
以监控Nginx实时连接状态为例,在zabbix中添加对应的主机和监控项(也是大部分监控项实现的原理)server端:172.16.2.150agent端:172.16.2.151 (Nginx应用环境)1)安装agent客户端
6)创建监控项
7)创建图形
过一段时间,就能看到我们添加的自定义项的数据和图形了。 多监控项制作模板上图中,多出来的三项监控也是同样的原理添加进来的:
优点:集合了Nagios和Cacti大部分优点,功能强大;特别是在针对集群机器较多、业务环境复杂和跨机房监控方面有优势(proxy收集功能)
缺点:部署稍微复杂,不支持服务抖动检测等... Zabbix特点· 多种数据收集方式(SNMP、IPMI、JMX)(SERVER、PROXY、AGENTS)· 高级告警配置(自定义告警升级、告警信息支持使用宏macro变量、远程命令实现自动化动作)· 实时绘图(自定义创建多监控项视图、网络拓扑、自定义面板screen,并允许在dashboard页面显示)
· 历史数据存储(数据存储在数据库中,可配置、内置数据清理机制)· 多模板使用(模板中可以添加组监控、模板允许继承)· 网络自动发现(自动发现网络设备、自动agent注册)· ZabbixAPI接口(提供程序级别的访问接口、第三方程序可很快接入)
Zabbix进程构成
· zabbix_agentd(客户端守护进程,手机客户端数据,如cpu负载、内存、磁盘使用等...)
· zabbix_get(zabbix工具,单独使用,常用于在server或者proxy端执行,用户获取监控数据,通常用于排错)· zabbix_sender(用于向server端主动发送数据,常用于再执行耗时比较长的check时,导致zabbix超时,使用sender主动提交一次数据)
· zabbix_proxy(代理守护进程,数据中转站,最后还要将获取到的数据提交到server里,一般跨机房、地区的环境需要使用到proxy)· zabbix_java_gateway(监控java时候使用到代理网关,类似于agent,最后数据还要提交给server)
· zabbix_server(server端守护进程,server可以被动去搜集数据,也可以让客户端主动提交数据) Zabbix部署1)系统环境
[root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@linux-node1 ~]# uname -r 3.10.0-327.el7.x86_642)yum源配置
[root@linux-node1 ~]# rpm -ivh [root@linux-node1' target='_blank'>http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm3)软件安装
[root@linux-node1 ~]# yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb -y4)修改PHP时区
[root@linux-node1 ~]# sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf.d/zabbix.conf5)数据库设置(Centos 7 下yum默认安装数据库变成了mariadb)
[root@linux-node1 ~]# systemctl start mariadb mysql create database zabbix character set utf8 collate utf8_bin; grant all on zabbix.* to zabbix@'localhost' identified by '123456'; exit cd /usr/share/doc/zabbix-server-mysql-3.0.3 zcat create.sql.gz |mysql -uzabbix -p123456 zabbix6)zabbix_server配置文件
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf DBHost=localhost #数据库所在主机 DBName=zabbix #数据库名 DBUser=zabbix #数据库用户 DBPassword=123456 #数据库密码7)开启zabbix_server和http
systemctl start zabbix-server systemctl start httpd8)web配置导航,访问http://10.0.0.150/zabbix/
自定义监控项Item
以监控Nginx实时连接状态为例,在zabbix中添加对应的主机和监控项(也是大部分监控项实现的原理)server端:172.16.2.150agent端:172.16.2.151 (Nginx应用环境)1)安装agent客户端
[root@linux-node1 tools]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm [root@linux-node1 tools]# yum install -y zabbix-agent2)Nginx编译中添加http_stub_status_module状态模块
[root@linux-node1 tools]# cd /usr/local/src/nginx-1.10.1/ #nginx安装源码文件夹 ./configure --prefix=/usr/local/nginx-1.10.1 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module #编译参数 [root@linux-node1 nginx-1.10.1]# vim /application/nginx/conf/nginx.conf location /nginx_status { #在server便签中添加location模块 stub_status on; #开启状态模块 access_log off; allow 172.16.2.0/24; allow 10.0.0.0/24; deny all; } [root@linux-node1 nginx]# /application/nginx/sbin/nginx -s reloadweb查看nginx状态
Active connetction:nginx #正在处理的连接数 server: #表示Nginx共计处理了多少个链接 accepts: #成功创建了多少次握手 (请求丢失数 = 握手数 - 链接数) handled request: #共计处理了多少请求 reading:Nginx #读取到客户端的Header信息数 writing:Nginx #返回给客户端的Header信息数 waiting: #已经处理完,正在等待下一次请求连接3)agent端添加用户自定义参数
[root@linux-node1 nginx]# curl -s http://10.0.0.150/nginx-status|awk 'NR==1{print $NF}' 2 #测试curl命令能够成功返回活动连接数 [root@linux-node1 nginx]# vim /etc/zabbix/zabbix_agentd.conf #编辑agent配置文件 Server=172.16.2.150 #zabbix_server地址 Include=/etc/zabbix/zabbix_agentd.d/ #配置此文件夹为agent配置文件存放位置 [root@linux-node1 zabbix]# mkdir /etc/zabbix/zabbix_agentd.d #创建出上面的文件夹 [root@linux-node1 zabbix]# vim /etc/zabbix/zabbix_agentd.d/nginx.conf #创建自定义的监控项文件 UserParameter=nginx.active, /usr/bin/curl -s "http://10.0.0.150/nginx-status"|awk 'NR==1{print $NF}' #nginx.active key值,为zabbix识别监控项的唯一标识,可以随意取名(a-Z0-9_) #逗号后面是取值得具体命令,当zabbix_server过来询问agent的nginx.active这个key值时,agent会执行这个命令并且将得到的数字返回给zabbix_server [root@linux-node1 zabbix]# systemctl restart zabbix-agent #重启agent服务4)在server端测试添加的自定义参数
[root@linux-node1 zabbix]# yum install -y zabbix-get #安装zabbix-get工具 [root@linux-node1 zabbix]# zabbix_get -s 172.16.2.150 -p 10050 -k "nginx.active" 2 #成功返回参数5)在zabbix web界面中添加主机
6)创建监控项
7)创建图形
过一段时间,就能看到我们添加的自定义项的数据和图形了。 多监控项制作模板上图中,多出来的三项监控也是同样的原理添加进来的:
[root@linux-node1 nginx-1.10.1]# cd /etc/zabbix/zabbix_agentd.d/ [root@linux-node1 zabbix_agentd.d]# ll total 40 -rw-r--r-- 1 root root 96 Aug 31 16:30 linux.conf -rw-r--r-- 1 root root 102 Aug 31 17:08 nginx.conf -rw-r--r-- 1 root root 1531 Jul 24 15:05 userparameter_mysql.conf -rw-r--r-- 1 root root 18866 Sep 1 01:56 userparameter_percona_mysql.conf -rwxr-xr-x 1 root root 2803 Aug 31 20:09 zabbix_linux_plugin.sh -rwxr-xr-x 1 root root 2776 Aug 31 17:15 zabbix_linux_plugin.sh.ori [root@linux-node1 zabbix_agentd.d]# cat linux.conf UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1" "$2" "$3" #其中key值用[*]表示接受任意参数,调用zabbix_linux_plugin.sh这个脚本 $1\$2\$3为具体参数 [root@linux-node1 zabbix_agentd.d]# cat zabbix_linux_plugin.sh #脚本 nginx_status_fun(){ NGINX_PORT=$1 NGINX_COMMAND=$2 nginx_active(){ /usr/bin/curl "http://172.16.2.150:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } nginx_reading(){ /usr/bin/curl "http://172.16.2.150:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } nginx_writing(){ /usr/bin/curl "http://172.16.2.150:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } nginx_waiting(){ /usr/bin/curl "http://172.16.2.150:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } nginx_accepts(){ /usr/bin/curl "http://172.16.2.150:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } nginx_handled(){ /usr/bin/curl "http://172.16.2.150:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } nginx_requests(){ /usr/bin/curl "http://172.16.2.150:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } case $NGINX_COMMAND in active) nginx_active; ;; reading) nginx_reading; ;; writing) nginx_writing; ;; waiting) nginx_waiting; ;; accepts) nginx_accepts; ;; handled) nginx_handled; ;; requests) nginx_requests; esac } UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1" "$2" "$3" main(){ case $1 in tcp_status) tcp_status_fun $2; ;; nginx_status) nginx_status_fun $2 $3; ;; memcached_status) memcached_status_fun $2 $3; ;; redis_status) redis_status_fun $2 $3; ;; *) echo $"Usage: $0 {tcp_status key|memcached_status key|redis_status key|nginx_status key}" esac } main $1 $2 $3然后在zabbix添加一个模板,模板中添加这几个监控项,以后新加主机直接添加模板就可以自动加自定义监控项了
相关文章推荐
- zabbix专题:第九章 自定义key(案例:监控内存,监控nginx状态)
- zabbix用户自定义key检测内存信息和监控nginx的状态页
- 按照zabbix客户端及自定义监控nginx连接状态
- Zabbix之监控Nginx状态信息
- zabbix监控nginx、php-fpm的状态
- nginx的zabbix自定义监控
- Zabbix添加自定义监控项之(监控mysql状态)
- zabbix监控nginx状态
- Zabbix监控Nginx状态,zabbix获取监控项graph图,zabbix监控磁盘I/O ,一键自动化安装zabbix
- Zabbix 监控Nginx连接的状态
- zabbix 监控nginx状态
- zabbix监控nginx 状态
- zabbix 监控nginx状态
- zabbix监控nginx状态
- zabbix监控nginx连接状态(转)
- 企业级监控软件zabbix搭建部署之Zabbix自定义端口阈值配置以及应用 推荐
- Zabbix服务器监控系统部署之自定义监控项的添加及配置(二)
- zabbix监控nginx,Mysqld,Php状态,MySQL主从复制状态
- zabbix 监控nginx状态:
- 监控工具Zabbix之原理及部署