Loading

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"

posted @ 2020-02-17 11:06  云起时。  阅读(1313)  评论(0编辑  收藏  举报