9.4、安装zabbix(3)
(10)监控mysql:
1)安装mariadb-server:
[root@slave-node1 ~]# yum install mariadb-server
[root@slave-node1 ~]# systemctl start mariadb
[root@slave-node1 ~]# systemctl enable mariadb
[root@slave-node1 ~]# mysql_secure_installation
2)创建监控使用的用户:
[root@slave-node1 ~]# mysql -uroot -p123456
MariaDB [(none)]> grant select on *.* to zabbix@"localhost" identified by "123456";
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit;
Bye
3)修改监控脚本:
[root@slave-node1 ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$3';" | HOME=/var/lib/zabbix mysql -u$1 -p$2 -N | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'
UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -u$1 -p$2 ping | grep -c alive
UserParameter=mysql.version[*],mysql -u$1 -p$2 -V
4)重启zabbix-agent服务:
[root@slave-node1 ~]# systemctl restart zabbix-agent.service
5)本地测试:
[root@slave-node1 ~]# zabbix_get -s 172.16.1.91 -k mysql.status[zabbix,123456,Uptime]
1931
6)在zabbix-web中修改mysql监控模板:
A、
B、修改宏:
说明:该模板代表的是默认值,即传入监控脚本中$1、$2的值,在主机监控中可以被覆盖;
C、修改监控项:
7)在装有mysql的监控主机中添加mysql监控模板:
8)查看mysql检测是否已经启用:
9)查看mysql最新监测数据:
(11)创建tcp监控模板:
1)tcp的十一种状态:
[root@slave-node1 ~]# man netstat
stat
ESTABLISHED
套接字已建立连接。
SYN_SENT
套接字正在主动尝试建立连接。
SYN_RECV
已从网络接收连接请求。
FIN_WAIT1
插座已关闭,连接正在关闭。
FIN_WAIT2
连接已关闭,套接字正在等待远程端关闭。
TIME_WAIT
套接字在关闭后等待处理仍在网络中的数据包。
CLOSE
未使用套接字。
CLOSE_WAIT
远程端已关闭,等待套接字关闭。
LAST_ACK
远程端已关闭,插座已关闭。等待确认。
LISTEN
套接字正在侦听传入连接。除非指定--listening(-l)或--all(-a)选项,否则此类套接字不包含在输出中。
CLOSING
两个套接字都关闭了,但我们仍然没有发送所有数据。
UNKNOWN
套接字的状态未知。
说明:netstat -n -p|grep SYN_REC | wc -l
这个命令可以查找出当前服务器有多少个活动的 SYNC_REC 连接。正常来说这个值很小,最好小于5;
2)编写监控脚本:
[root@slave-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/tcp_status.conf
UserParameter=tcp_status[*],netstat -ant | grep -c $1
3)重启zabbix-agent:
[root@slave-node1 ~]# systemctl restart zabbix-agent.service
4)本地测试:
[root@slave-node1 ~]# zabbix_get -s 172.16.1.91 -k tcp_status[ESTABLISHED]
3
5)在zabbix-web中创建tcp监控模板:
A、
B、
C、创建item监控项:
a、
b、
c、
说明:在创建监控项的时候可以使用克隆实现监控项的快速增加;
6)将模板加入到监控的主机中:
7)查看tcp_status监控模板的监控项的启用状态:
8)查看监控主机最新的tcp状态数据:
(12)监控nginx:
1)安装nginx:
[root@slave-node1 ~]# yum install nginx -y
2)停止httpd服务释放出80端口:
[root@slave-node1 ~]# systemctl stop httpd
3)修改nginx的配置文件:
[root@slave-node1 ~]# vim /etc/nginx/nginx.conf
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
4)检查配置:
[root@slave-node1 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5)启动nginx并加入到开机自启动中:
[root@slave-node1 ~]# systemctl start nginx
[root@slave-node1 ~]# systemctl enable nginx
6)测试:
[root@slave-node1 ~]# curl -I http://127.0.0.1/nginx_status
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Thu, 04 Jul 2019 07:38:04 GMT
Content-Type: text/plain
Connection: keep-alive
7)编写监控脚本:
[root@slave-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@slave-node1 ~]# systemctl restart zabbix-agent.service
[root@slave-node1 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.sh
#!/bin/sh
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
status_number=`curl -I http://127.0.0.1/nginx_status 2>/dev/null | grep 200 | wc -l`
if [ $status_number -eq 1 ]; then
echo "1"
else
echo "0"
fi
[root@slave-node1 ~]# chmod +x /etc/zabbix/zabbix_agentd.d/nginx_status.sh
[root@slave-node1 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status,/etc/zabbix/zabbix_agentd.d/nginx_status.sh
[root@controller-node1 ~]# zabbix_get -s 172.16.1.91 -k nginx_status
1
8)添加监控项:
9)查看监控项的状态:
(13)jmx(java管理扩展)监控:
1)下载tomcat和jdk:
[root@slave-node1 ~]# mkdir -p /tools/
[root@slave-node1 ~]# cd /tools/
JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Tomcat下载:https://tomcat.apache.org/download-80.cgi
2)安装jdk:
[root@slave-node1 tools]# rpm -ivh jdk-8u202-linux-x64.rpm
[root@slave-node1 tools]# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
3)安装tomcat:
[root@slave-node1 tools]# tar -xzf apache-tomcat-8.5.37.tar.gz
[root@slave-node1 tools]# mkdir -p /application/
[root@slave-node1 tools]# cp -a apache-tomcat-8.5.37/ /application/
[root@slave-node1 tools]# ln -s /application/apache-tomcat-8.5.37/ /application/tomcat
[root@slave-node1 tools]# /application/tomcat/bin/startup.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
#访问:http://172.16.1.91:8080/
4)安装zabbix-gateway:
#说明:
因为zabbix-server是用c语言写的,tomcat是用java写的,所以监控的时候,zabbix-server会去连zabbix-gateway,然后
zabbix-gateway再去连接jmx;zabbix-gateway可以装在任何一台服务器上,但是需要有jdk环境;
#下载zabbix-gateway:
[root@slave-node1 tools]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
#安装:
[root@slave-node1 tools]# yum localinstall zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm -y
[root@slave-node1 tools]# rpm -qa | grep zabbix-java-gateway
zabbix-java-gateway-4.0.0-2.el7.x86_64
#配置zabbix-gateway参数(部分修改):
[root@slave-node1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="172.16.1.91"
LISTEN_PORT=10052
#启动zabbix-java-gateway并加入到开机自启动:
[root@slave-node1 ~]# systemctl start zabbix-java-gateway.service
[root@slave-node1 ~]# systemctl enable zabbix-java-gateway.service
[root@slave-node1 ~]# netstat -tunlp | grep 10052
tcp6 0 0 172.16.1.91:10052 :::* LISTEN 72819/java
#在zabbix-server中配置连接zabbix-java-gateway(部分修改):
[root@controller-node1 ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=172.16.1.91
JavaGatewayPort=10052
StartJavaPollers=5
#重启zabbix-server:
[root@controller-node1 ~]# systemctl restart zabbix-server.service
5)修改tomcat配置参数(部分修改):
[root@slave-node1 tools]# vim /application/tomcat/bin/catalina.sh
# OS specific support. $var _must_ be set to either true or false.
CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.16.1.91"
#修改主机解析:
[root@slave-node1 tools]# vim /etc/hosts
172.16.1.91 slave-node1
#参数说明:
启用远程监控JMX;
默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可;
不使用用户名密码;
不使用ssl认证;
主机名,tomcat主机自己的IP地址,不要写zabbix服务器的地址;
6)重启tomcat:
[root@slave-node1 tools]# /application/tomcat/bin/shutdown.sh
[root@slave-node1 tools]# /application/tomcat/bin/startup.sh
[root@slave-node1 tools]# netstat -tunlp | egrep "12345|8080"
tcp6 0 0 :::8080 :::* LISTEN 39359/java
tcp6 0 0 :::12345 :::* LISTEN 39359/java
7)在windows中通过JConsole进行调试:
#在windows 中安装jdk;
#启动JConsole:
#连接:
#连接后会提示不安全的连接,直接点击;
8)监控测试:
#下载测试所需jar包:
[root@slave-node1 tools]# wget https://cucc.file.qiansw.com:1443/2017/06/cmdline-jmxclient-0.10.3.jar
#内存监控测试:
[root@slave-node1 tools]# java -jar cmdline-jmxclient-0.10.3.jar - 172.16.1.91:12345 java.lang:type=Memory
Attributes:
ObjectPendingFinalizationCount: ObjectPendingFinalizationCount (type=int)
HeapMemoryUsage: HeapMemoryUsage (type=javax.management.openmbean.CompositeData)
NonHeapMemoryUsage: NonHeapMemoryUsage (type=javax.management.openmbean.CompositeData)
Verbose: Verbose (type=boolean)
ObjectName: ObjectName (type=javax.management.ObjectName)
Operations:
gc: gc
Parameters 0, return type=void
[root@slave-node1 tools]# java -jar cmdline-jmxclient-0.10.3.jar - 172.16.1.91:12345 java.lang:type=Memory HeapMemoryUsage
07/09/2019 23:51:15 +0800 org.archive.jmx.Client HeapMemoryUsage:
committed: 158334976
init: 132120576
max: 1857028096
used: 18561368
[root@slave-node1 tools]# java -jar cmdline-jmxclient-0.10.3.jar - 172.16.1.91:12345 Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\" requestCount
07/10/2019 14:27:48 +0800 org.archive.jmx.Client requestCount: 0
9)通过zabbix进行监控:
A、创建监控主机:
a、
b、
c、
B、修改监控项:
因为添加的tomcat监控模板中的监控项中有和现有tomcat监控项不匹配的,所以需要修改监控项;
(14)监控windows:
1)创建一个windows虚拟机,虚拟机的ip地址为172.16.1.201/24,为了方便这里关闭该windows虚拟机的防火墙
如果不关闭的防火墙的话需要修改防火墙配置并开启相应的端口号,zabbix-agent的tcp端口号是10050,snmp的udp端口号是161;
2)使用zabbix-agent监控windows:
A、下载zabbix的源码包:
https://www.zabbix.com/downloads/4.0.7/zabbix_agents-4.0.7-win-i386.zip
B、将包上传到windows系统中,并改成如下形式进行存放:
C、修改zabbix_agentd.conf配置文件内容如下(部分修改):
LogFile=C:\zabbix\zabbix_agentd.log
Server=172.16.1.90
ListenPort=10050
ListenIP=172.16.1.201
StartAgents=3
Timeout=30
D、安装zabbix-agent:
#以管理员的身份运行cmd命令:
#安装:
C:\Windows\system32>cd c:\zabbix
c:\zabbix>zabbix_agentd.exe -c zabbix_agentd.conf -i
zabbix_agentd.exe [1196]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [1196]: event source [Zabbix Agent] installed successfully
#启动服务:
c:\zabbix>zabbix_agentd.exe -c zabbix_agentd.conf -s
zabbix_agentd.exe [2324]: service [Zabbix Agent] started successfully
#查看端口号:
c:\zabbix>netstat -an
TCP 172.16.1.201:10050 0.0.0.0:0 LISTENING
#查看服务:
E、测试:
[root@controller-node1 ~]# zabbix_get -s 172.16.1.201 -k agent.ping
1
[root@controller-node1 ~]# zabbix_get -s 172.16.1.201 -k system.hostname
WIN-64NVQJTN0V1
F、在zabbix-web中将创建windows主机:
a、
b、
c、
d、
3)使用snmp监控windows:
A、在windows中开启snmp功能:
B、查看snmp服务端口号:
C:\Users\lc>netstat -an
UDP 0.0.0.0:161 *:*
C、配置snmp安全陷阱:
说明:如果snmp server的属性中没有"安全选项卡"可以重启windows;
D、验证:
#安装net-snmp-utils软件:
[root@controller-node1 ~]# yum -y install net-snmp-utils
补充:下载net-snmp-utils离线包的地址:
http://mirror.centos.org/centos/7/os/x86_64/Packages/net-snmp-utils-5.7.2-37.el7.x86_64.rpm
#连接验证:
[root@controller-node1 ~]# snmpwalk -c liuchang -v 2c 172.16.1.201
[root@controller-node1 ~]# snmpwalk -c liuchang -v 2c 172.16.1.201 hrMemory
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 4193784 KBytes
E、在zabbix-web中添加windows主机:
a、
b、
c、
d、
e、
(15)使用percona监控mysql数据库:
略:
(16)监控交换机:
1)在交换机上创建ip地址和团体名:
system config
interface fastEthernet 0/0
ip address 172.16.1.201 255.255.255.0
snmp-server community liuchang ro
2)在控制主机上进行验证:
yum install net-snmp-utils.x86_64
snmpwalk -c liuchang -v 2c 172.16.1.90
说明:该测试命令在任意的主机上都可以进行测试,但只有zabbix_server才能够处理;
2)在zabbix-web界面中配置交换机snmp监控主机;
9、小结:
(1)相对于zabbix-agent来说,zabbix-agent 默认是被动的模式,由 zabbix-server 询问 zabbix-agent,本章使用的是zabbix-agent的被动模式;
(2)清空zabbix-server缓存的命令:
zabbix_server -R config_cache_reload
此命令在实际的生产环境中最好不要使用;
(3)使用特殊符号:
UnsafeUserParameters=1(默认为0表示不开启);
(4)zabbix-server连接超时,修改超时参数Timeout(默认Timeout=4);
(5)设置触发器依赖以防止某个服务挂掉后,依赖其的服务全部报警;
(6)zabbix升级:
1)
从网上下载的zabbix模板,因为模板的版本比较旧,当在比较新的zabbix版本上导入后可能会导致
模板不能够使用,所以需要在虚拟机上安装2.2版本的zabbix后打上快照(以备后期升级模板时使用),将模
板导入到2.2版本的zabbix上;
2)停止zabbix-server:
systemctl stop zabbix-server.service
3)备份数据库:
4)停止数据库:
systemctl stop mariadb.service
5)更换最新的zabbix yum 源仓库:
6)安装zabbix服务:
yum install zabbix-server-mysql zabbix-web-mysql -y
7)启动数据库:
systemctl start mariadb.service
8)启动zabbix-server:
systemctl start zabbix-server.service -y
9)导出模板并导入到线上的模板;
(8)zabbix忘记登陆密码的解决办法:
use zabbix
update users set passwd='5fce1b3e34b520afeffb37ce08c7cd66' where userid='1';
"zabbix"对应的MD5是"5fce1b3e34b520afeffb37ce08c7cd66",所以修改后zabbix Admin用户的登录密码为"zabbix"