使用zabbix将期中架构所有集群监控

具体内容:

一、硬件、系统、网络监控

所有集群节点(所有虚拟机)都监控上;

二、应用服务监控

1. 监控备份服务器,简单方法是监控rsync端口,如果有其他更佳方案可以说明;

2. 监控NFS服务器,使用监控NFS进程来判断NFS服务器正常,如果有其他更佳方案可以说明;

3. 监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以说明;

4. 监控2台web服务器,简单方法监控80端口,如果有其他更佳方案可以说明;

5. 监控URL地址来更精确的监控我们的网站运行正常;

6. 监控反向代理服务器,PPTP服务器等你在期中架构部署的服务;

7. 监控Nginx的7种连接状态;

8. 监控tomcat状态;

9. 监控memcached状态:get命中率。

一、         硬件、系统、网络监控

问题1:所有集群节点(所有虚拟机)都监控上;

答:

1.编写安装脚本

#!/bin/bash

function rhel6(){

#安装zabbix源、aliyu YUM源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/6/x86_64/zabbix-release-4.0-1.el6.noarch.rpm

yum clean all

yum clean all

#安装zabbix客户端

yum install zabbix-agent -y

sed -i.ori ‘s#Server=127.0.0.1#Server=172.16.1.61#’ /etc/zabbix/zabbix_agentd.conf

/etc/init.d/zabbix-agent start

#写入开机文件

chmod +x /etc/rc.d/rc.local

cat >>/etc/rc.d/rc.local<<EOF

/etc/init.d/zabbix-agent start

EOF

}

function rhel7(){

#安装zabbix源、aliyu YUM源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

yum clean all

yum clean all

#安装zabbix客户端

yum install zabbix-agent -y

sed -i.ori ‘s#Server=127.0.0.1#Server=172.16.1.61#’ /etc/zabbix/zabbix_agentd.conf

systemctl restart zabbix-agent.service

systemctl enable zabbix-agent.service

}

main(){

#提取linux内核版本

i=`awk -F ‘[ -.]’ ‘{print $3}’ /proc/version`

#Centos 6 和 Centos 7 ss命令输出格式不一样

n=`ss -lntup|grep zabbix|awk -F ‘[ :*]+’ ‘NR==1{print $5}’`

if [ $n = 10050 ];then

        echo “已经安装zabbix-agent”

else

        if [ $i = 3 ];then

                echo “===== Centos 7 安装zabbix-agent =====”

                rhel7

        elif [ $i = 2 ];then

                echo “===== Centos 6 安装zabbix-agent =====”

                rhel6

        fi

fi

}

main

2.设置自动发现

二、应用服务监控

问题1. 监控备份服务器,简单方法是监控rsync端口,如果有其他更佳方案可以说明;

答:1)监控873端口

1      创建一个监控服务端口的模板

2      添加一个应用集

3      新建一个监控项

4      添加触发器

5      关联主机

6      测试

2)监控进程

1. 创建一个监控服务端口的模板 

2. 添加一个应用集

3. 新建一个监控项

4.    添加触发器

5.    关联主机

6.    测试

问题2.    监控NFS服务器,使用监控NFS进程来判断NFS服务器正常,如果有其他更佳方案可以说明;

答:有两种方法,1)监控端口111;2)监控进程,zabbix模板创建和关联同上,在服务端进行测试如下

[root@zabbix ~]# zabbix_get -s 172.16.1.31 -p 10050 -k “proc.num[nfsd]”

8

[root@zabbix ~]# zabbix_get -s 172.16.1.31 -p 10050 -k “net.tcp.listen[111]”

1

问题3. 监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以说明;

答:有三种方法,1)监控端口111;2)监控进程;3)使用mysql自带模板,方法1和方法2同上,方法3使用mysql模板方法如下:

1.    修改/etc/my.cnf文件创建无密码登录

[root@MySQL ~]# vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[client]

user=root

password=123456

2.    关联主机

3.    测试

问题4. 监控2台web服务器,简单方法监控80端口,如果有其他更佳方案可以说明;

答:有三种方法,1)监控端口111;2)监控进程;3)监控页面是否正常,方法1和方法2同上,方法3监控页面方法如下:

1.    创建测试页面

[root@web01 ~]# vim /usr/share/nginx/html/test.html

sung welcome

2.    创建测试脚本

[root@web01 ~]# vim /server/scripts/nginx_check.sh

#!/bin/bash

char=`curl -s http://172.16.1.7/test.html`

[ “$char” == “sung welcome” ] && echo 1 ||echo 0

~                                               

3.    写模板文件

[root@web01 ~]# vim  /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

UserParameter=nginx_check,/bin/sh /server/scripts/nginx_check.sh

4.    重启程序

[root@web02 ~]# /etc/init.d/zabbix-agent restart

Shutting down Zabbix agent:                                [  OK  ]

Starting Zabbix agent:

5.    测试

[root@zabbix ~]#  zabbix_get -s 172.16.1.7 -p 10050 -k “nginx_check”

1

[root@zabbix ~]#  zabbix_get -s 172.16.1.8 -p 10050 -k “nginx_check”

1

问题5. 监控URL地址来更精确的监控我们的网站运行正常;

1.    配置-主机-web监测

2.    创建web场景

3.    测试

问题6. 监控反向代理服务器,PPTP服务器等你在期中架构部署的服务;

答:有三种方法,1)监控端口;2)监控进程;监控反向代理服务器还可以监控VIP是否正常,方法1和方法2同上,监控VIP方法如下:

1.    创建自定义key

[root@lb01 ~]# cat  /etc/zabbix/zabbix_agentd.d/userparameter_nk.conf

UserParameter=keep-ip,ip a |grep 192.168.179.3|wc -l

2.    在服务端测试

[root@zabbix ~]# zabbix_get -s 172.16.1.5  -p 10050 -k “keep-ip”

1

[root@zabbix ~]# zabbix_get -s 172.16.1.6  -p 10050 -k “keep-ip”

0

问题7. 监控Nginx的7种连接状态;

答:

1.    添加location /status

2.    服务端测试

[root@zabbix fonts]# for ip in 7 8  ;do curl 172.16.1.$ip/status ;done

Active connections: 1

server accepts handled requests

 21 21 21

Reading: 0 Writing: 1 Waiting: 0

Active connections: 1

server accepts handled requests

 24 24 25

Reading: 0 Writing: 1 Waiting: 0

3.    在nginx服务器上添加key

cat >/etc/zabbix/zabbix_agentd.d/userparameter_nginx_status.conf <<‘EOF’

UserParameter=nginx_active,curl -s  127.0.0.1/status|awk ‘/Active/ {print $NF}’

UserParameter=nginx_accepts,curl -s  127.0.0.1/status|awk ‘NR==3 {print $1}’

UserParameter=nginx_handled,curl -s  127.0.0.1/status|awk ‘NR==3 {print $2}’

UserParameter=nginx_requests,curl -s  127.0.0.1/status|awk ‘NR==3 {print $3}’

UserParameter=nginx_reading,curl -s  127.0.0.1/status|awk ‘NR==4 {print $2}’

UserParameter=nginx_writing,curl -s  127.0.0.1/status|awk ‘NR==4 {print $4}’

UserParameter=nginx_waiting,curl -s  127.0.0.1/status|awk ‘NR==4 {print $6}’

EOF

4.    服务端测试

[root@zabbix ~]# zabbix_get -s 172.16.1.7  -p 10050 -k “nginx_waiting”

0

[root@zabbix ~]# zabbix_get -s 172.16.1.8  -p 10050 -k “nginx_waiting”

0

5.    创建监控项

6.    测试

问题8. 监控tomcat状态;

答:有三种方法,1)监控端口;2)监控进程;3)使用JMX模板,方法 3如下:

1.    Tomcat开启远程监控功能

vim /application/tomcat/bin/catalina.sh

CATALINA_OPTS=”$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.9″

2.   重启Tomcat

[root@web03 ~]# pkill java

[root@web03 ~]# /application/tomcat/bin/startup.sh

3.    在zabbix-server 操作,编辑/etc/zabbix/zabbix_server.conf 

# JavaGateway的服务器IP地址

JavaGateway=127.0.0.1

# JavaGateway的服务端口

JavaGatewayPort=10052

# 从javaGateway采集数据的进程数

StartJavaPollers=5

4.    在zabbix-server 操做,yum  -y install zabbix-java-gateway

5.    在zabbix-server 操做,systemctl restart zabbix-server.service zabbix-java-gateway.service

6.    在web 操做

问题9. 监控memcached状态:get命中率。

1.    创建自定义key

cat > /etc/zabbix/zabbix_agentd.d/userparameter_memcached.conf <<‘EOF’

UserParameter=memcached_stats,(echo stats; sleep 1) | telnet 172.16.1.21 11211 2>&1 | awk ‘/STAT accepting_conns / {print$NF}’

UserParameter=memcached_get,(echo stats; sleep 1) | telnet 172.16.1.21 11211 2>&1 | awk ‘/STAT get_hits / {print$NF}’

EOF

2.    服务端测试

[root@zabbix ~]# zabbix_get -s 172.16.1.21 -p 10050 -k ‘memcached_stats’

1

[root@zabbix ~]# zabbix_get -s 172.16.1.21 -p 10050 -k ‘memcached_get’

9

3.    创建监控项

4.    测试