在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
zabbix监控对象区分
SNMP监控流程
IPMI建议使用自定义item监控服务器硬件,在本地执行ipmitool命令来获取数据 可以在本地执行ipmitool命令获取数据(命令需要安装)连接远程控制卡监控 JMX(使用Zabbix Java Gateway代理)用来获取java数据,实现监控tomcat 安装zabbix-agent客户端 略Zabbix监控MySQL数据库操作需要部署一个MySQL服务和一个zabbix-agentd客户端 #部署过程略,不会看前边博文 编写监控脚本在nginx服务器(192.168.0.221)上安装一个MySQL下面是监控mysql状态的一个shell脚本,内容如下: mkdir -p /server/scripts #创建文件 vim /server/scripts/check_mysql.sh #创建脚本 #!/bin/bash MySQL_USER="root" MySQL_PWD="123456" MySQL_HOST="127.0.0.1" MySQL_PORT="3306" MySQL_CONN="/usr/local/mysql/bin/mysqladmin -u${MySQL_USER} -h${MySQL_HOST} -P${MySQL_PORT} -p${MySQL_PWD}" if [ $# -ne "1" ];then echo "arg error!" fi case $1 in Uptime) result=`${MySQL_CONN} status | cut -f2 -d":" | cut -f1 -d "T"` echo $result ;; Com_update) result=`${MySQL_CONN} extended-status | grep -w "Com_update" | cut -d"|" -f3` echo $result ;; Slow_querles) result=`${MySQL_CONN} status | cut -f5 -d":" | cut -f1 -d"O"` echo $result ;; Com_select) result=`${MySQL_CONN} extended-status | grep -w "Com_select" | cut -d "|" -f3` echo $result ;; Com_rollback) result=`${MySQL_CONN} extended-status | grep -w "Com_rollback" | cut -d"|" -f3` echo $result ;; Questions) result=`${MySQL_CONN} status | cut -f4 -d":" | cut -f1 -d"S"` Com_insert) result=`${MySQL_CONN} extended-status | grep -w "Com_insert" | cut -d"|" -f3` echo $result ;; Com_delete) result=`${MySQL_CONN} extended-status | grep -w "Com_delete" | cut -d"|" -f3` echo $result ;; Com_commit) result=`${MySQL_CONN} extended-status | grep -w "Com_commit" | cut -d"|" -f3` echo $result ;; Bytes_sent) result=`${MySQL_CONN} extended-status | grep -w "Bytes_sent" | cut -d"|" -f3` echo $result ;; Bytes_received) result=`${MySQL_CONN} extended-status | grep -w "Bytes_received" | cut -d"|" -f3` echo $result ;; Com_begin) result=`${MySQL_CONN} extended-status | grep -w "Com_begin" | cut -d"|" -f3` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_querles|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" ;; esac 在zabbix-agent端创建自定义键值配置文件#创建mysql.status的键值 chmod +x /server/scripts/check_mysql.sh chown zabbix.zabbix /server/scripts/check_mysql.sh vim /etc/zabbix/zabbix_agentd.d/mysql_status.conf UserParameter=mysql.status[*],/server/scripts/check_mysql.sh $1 #删除旧键值模版
rm -rf /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
#创建mysql.ping和mysql.version的键值 vim /etc/zabbix/zabbix_agentd.d/mysql_status.conf UserParameter=mysql.status[*],/server/scripts/check_mysql.sh $1 UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin -uroot -p123456 ping | grep -c alive #监控数据库可否能ping通 UserParameter=mysql.version,/usr/local/bin/mysql -V #监控数据库的版本(防止手欠升级的)
在zabbix-server端测试键值zabbix_get -s 192.168.50.168 -p 10050 -k "mysql.status[Uptime]" 1317 zabbix_get -s 192.168.50.168 -p 10050 -k "mysql.status[Com_commit]" 0 zabbix_get -s 192.168.50.168 -p 10050 -k "mysql.status[Bytes_sent]" 10249 zabbix_get -s 192.168.50.168 -p 10050 -k "mysql.status[Bytes_received]" 1633 zabbix_get -s 192.168.50.168 -p 10050 -k "mysql.ping" 1 zabbix_get -s 192.168.50.168 -p 10050 -k "mysql.version" /usr/local/bin/mysql Ver 14.14 Distrib 5.5.32, for linux2.6 (x86_64) using readline 5.1 在zabbix-server端Web前台引入zabbix监控MySQL的模版zabbix自带监控MySQL的模版,我们只需要将模版引入到主机即可 配置-->主机-->选择主机-->模板,然后将MySQL模版连接到此主机即 zabbix监控mha高可用监控mha原理在于监控进程是否有mha进程,因为一旦主库宕机,mha进程会自动结束 自定义键值+监控命令 vim /etc/zabbix/zabbix_agentd.d/mha.conf UserParameter=mha,/usr/bin/ps -ef |grep "masterha_manager" |grep -v "grep"|wc -l /etc/init.d/zabbix-agent restart #重启服务 #server端键值测试 zabbix_get -s 192.168.50.168 -p 10050 -k 'mha' 1 #一个高可用进程存活
在zabbix页面设置监控mha
设置报警器
如果mha不等于1报警(既后台没有mha进程) zabbix监控主从复制监控主从复制的原理在于监控主从复制状态页,我们用show slave status;查看主从复制状态页,会发现如果主从状态正常,状态页显示两个Yes,所以我们监控状态页的两个Yes即可 自定义键值+监控命令 vim /etc/zabbix/zabbix_agentd.d/zc.conf UserParameter=zcfz,/usr/local/mysql/bin/mysql -uhehe -e "show slave status\G" | grep Yes|wc -l
/etc/init.d/zabbix-agent restart #重启服务 #server端键值测试 zabbix_get -s 192.168.50.168 -p 10050 -k 'zcfz' 2 #两个yes
在zabbix页面设置监控主从复制 如果过滤出的yes不是两个则报警 Zabbix监控Nginx开启nginx状态页#在nginx的配置文件中,添加status配置 location = /nginx-status { stub_status on; access_log off; allow 192.168.50.173; allow 192.168.50.172; #设置权限只允许内网查看 deny all; } 访问设置好的nginx-status链接#在zabbix-server上通过如下方式获取nginx状态页面信息: 编写nginx状态监控脚本vim /server/nginx_status.sh #!/bin/bash # Set Variables HOST="192.168.50.173" PORT="80" #Functions to return nginx stats function active(){ /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Active" | awk '{print $NF}' } function reading(){ /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Reading" | awk '{print $2}' } function writing(){ /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | grep "Writing" | awk '{print $4}' } function accepts(){ /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | awk 'NR==3' | awk '{print $1}' } function handled(){ /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | awk 'NR==3' | awk '{print $2}' } function requests(){ /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null | awk 'NR==3' | awk '{print $3}' } function ping(){ /sbin/pidof nginx | wc -l } # Run the requested function $1 给脚本可执行权限并且授权chmod +x /server/nginx_status.sh 在zabbix-agent端配置nginx键值配置文件vim /etc/zabbix/zabbix_agentd.d/nginx.conf UserParameter=nginx.active,/usr/bin/curl -s "http://192.168.50.173:80/nginx-status" | grep "Active" | awk '{print $NF}' #监控活动连接数 UserParameter=nginx.status[*],/server/nginx_status.sh $1 #监控状态 vim /etc/zabbix/zabbix_agentd.d/nginx.conf UserParameter=nginx.active,/usr/bin/curl -s "http://192.168.50.173:80/nginx-status" | grep "Active" | awk '{print $NF}' #监控活动连接数 UserParameter=nginx.status[*],/server/nginx_status.sh $1 #监控状态 在zabbix-server端测试键值zabbix_get -s 192.168.50.173 -k "nginx.status[reading]" -p 10050 0 zabbix_get -s 192.168.50.173 -k "nginx.status[active]" -p 10050 1 zabbix_get -s 192.168.50.173 -k "nginx.status[ping]" -p 10050 1 接下来在Web端导入nginx监控模版 创建监控nginx主机 略Zabbix监控PHP-FPM启用php-fpm状态功能修改php-fpm配置文件,确保如下配置是打开状态: vim /usr/local/php/etc/php-fpm.conf pm.status_path = /status #第360行去掉注释开启状态功能 nginx配置php-fpm状态页面vim /usr/local/nginx/conf/nginx.conf location = /status { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; } #加入此项location规则 状态页浏览器访问测试#具体含义说明如下 [root@Zabbix_Server nginx]# curl 127.0.0.1/status pool: www #fpm进程池名称,大多数为www process manager: dynamic #进程管理方式(static,dynamic or nodemand.dynamic) start time: 26/Jan/2018:02:56:58 -0500 #启动日期 start since: 2972 #运行时长 accepted conn: 517 #当前FPM进程池接受的请求数 listen queue: 0 #请求等待队列,如果值不是0,那么要增加FPM的进程数 max listen queue: 4 #请求等待队列最高的数量 listen queue len: 128 #socket等待队列长度 idle processes: 2 #空闲进程数量 active processes: 1 #活跃进程数量 total processes: 3 #总进程数量 max active processes: 3 #最大的活跃进程数量(FPM启动开始算) max children reached: 0 #达到最大子进程的次数,如果值不为0,那么需要调高最大进程数 slow requests: 0 #当启用了php-fpm的slow-log功能时,如果出现php-fpm慢请求这个计数器会增加,一般不当的MySQL查询会触发这个值 修改Zabbix agent配置vim /etc/zabbix/zabbix_agentd.d/userparameter_php-fpm.conf UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<$1>" | awk -F "[>|<]" '{print $$3}' #这里需要注意在脚本里如果写成$3的话,脚本会认识是一个变量,因此我们需要用$$3 #重启动agent客户端 /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] 进行键值配置文件测试zabbix_get -s 192.168.50.173 -p 10050 -k "php-fpm.status[process-manager]" dynamic Zabbix图形界面导入我们的监控模版Zabbix的Web监测功能Zabbix的Web监测功能,没有任何依赖,不需要agent端,全部依赖于Server的主动监测
Zabbix监控Tomcatzabbix监控tomcat,需要zabbix_server开启java poller,zabbix_java开启javaGateway,端口10052,Tomcat JMX开启12345端口,提供性能数据。 配置Tomcat JMXvim /usr/local/tomcat/bin/catalina.sh 在249行加入 CATALINA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.50.166 -Dcom.sun.management.jmxremote.port=12345" #此处注意空格,配置完最好重启,特别容易报错tomcat起不来 这里需要注意,必须增加-Djava.rmi.server.hostname选项,并且后面的IP就是tomcat服务器的IP 重启Tomcat/usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh netstat -antup | grep java tcp6 0 0 :::46112 :::* LISTEN 1322/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1322/java tcp6 0 0 :::8009 :::* LISTEN 1322/java tcp6 0 0 :::8080 :::* LISTEN 1322/java tcp6 0 0 :::44820 :::* LISTEN 1322/java tcp6 0 0 :::12345 :::* LISTEN 1322/java tcp6 0 0 192.168.50.166:46112 192.168.50.172:34827 ESTABLISHED 1322/java 编译zabbix,加入java支持zabbix server服务器上需要安装JDK,并需要设置JAVA_HOME,以让系统能够识别到jdk的路径 #解压jdk tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local/ ln -s /usr/local/jdk1.8.0_60/ /usr/local/jdk #配置java环境变量 sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile #让环境变量立刻生效 source /etc/profile java -version 在zabbix server服务器上,编译安装zabbix-server,需要加上--enable-java,以支持jmx监控,如果之前的zabbix server没加此选项,那么需要重新编译安装,编译参数如下: ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --enable-java --with-libxml2 重新编译zabbix-server服务器端#重新编译zabbix-server服务器端 /etc/init.d/zabbix_server stop cd /usr/src/zabbix-3.2.4/ ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --enable-java --with-libxml2 make;make install cd /usr/local/zabbix/sbin/ cd zabbix_java/ 启动java Gateway服务/usr/local/zabbix/sbin/zabbix_java/startup.sh netstat -antup | grep 10052 tcp 0 0 :::10052 :::* LISTEN 13126/java 修改zabbix server 配置默认的情况下,zabbix server未启用javaPollers,需要修改zabbix_server.conf的如下配置 vim /usr/local/zabbix/etc/zabbix_server.conf 215 JavaGateway=192.168.50.172 #JavaGateway的地址(本机地址) 223 JavaGatewayPort=10052 231 StartJavaPollers=5 Zabbix图形界面配置新建主机选择JMX接口 然后添加主机最后导入摸板
Zabbix监控redis-cluster集群利用查看状态监控 redis-cli -p 7001 cluster nodes 原理和mha类似 有空再做
|
2022-08-18
2022-08-17
2022-11-06
2022-08-17
2022-07-30
请发表评论