Zabbix生产案例实战

1.项目规划

主机分组:
交换机
Nginx
Tomcat
MySQL

监控对象识别:
1.使用SNMP监控交换机
2.使用IPMI监控服务器硬件
3.使用Agent监控服务器
4.使用JMX监控Java
5.监控MySQL
6.监控Web状态
7.监控Nginx状态

SNMP监控:
1.1.交换机上开启snmp。
config t
snmp-server community public ro
end

1.2.在zabbix上添加监控。

设置SNMP interfaces
3.关联监控模板

IPMI:
建议。使用自定义item,本地执行ipmitool命令来获取数据。

JMX:(使用Zabbix Java Gateway代理)

yum list | grep java
1.安装yum install -y zabbix-java-gateway java-1.8.0-openjdk
2.配置vim /etc/zabbix/zabbix_java_gateway.conf (默认不需要修改)
3.启动systemctl start zabbix-java-gateway.service
4.端口 进程
netstat -nltup | grep java
ps aux | grep java
5.vim /etc/zabbix/zabbix_server.conf
设置Java Gateway地址
StartJavaPollers=5

6.重启zabbix server

JMX三种类型:1.无密码认证 2.用户名密码认证 3.ssl

[root@linux-node2 ~]# cd /usr/local/src
[root@linux-node2 /usr/local/src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.tar.gz
[root@linux-node2 /usr/local/src]# tar zxvf apache-tomcat-8.5.53.tar.gz
[root@linux-node2 /usr/local/src]# mv apache-tomcat-8.5.53 /usr/local/
[root@linux-node2 /usr/local/src]# ln -s /usr/local/apache-tomcat-8.5.53/ /usr/local/tomcat
[root@linux-node2 /usr/local/src]# /usr/local/tomcat/bin/startup.sh

开启jmx远程监控

[root@linux-node2 ~]# vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=10.0.0.12"

[root@linux-node2 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@linux-node2 ~]# /usr/local/tomcat/bin/startup.sh

手动检测监控状态
[root@linux-node1 ~]# yum install -y zabbix-get

1.开启Nginx监控
2.编写脚本来进行数据采集。
3.设置用户自定义参数
4.重启zabbix-agent
5.添加item
6.创建图形
7.创建触发器
8.创建模板

1.脚本:zabbix_linux_plugin.sh
2.上传到/etc/zabbix/zabbix_agentd.d
3.修改agent配置Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# chmod +x zabbix_linux_plugin.sh
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# ./zabbix_linux_plugin.sh
Usage: ./zabbix_linux_plugin.sh {tcp_status key|memcached_status key|redis_status key|nginx_status key}

location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.10.3/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.10.3/conf/nginx.conf test is successful
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# /usr/local/nginx/sbin/nginx -s reload
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# ./zabbix_linux_plugin.sh nginx_status 8080 active
1
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# ./zabbix_linux_plugin.sh nginx_status 8080 reading
0

[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# cp nginx.conf linux.conf
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# cat linux.conf
UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1" "$2" "$3"
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# cd
[root@linux-node1 ~]# zabbix_get -s 10.0.0.11 -k linux_status[nginx_status,8080,active]
1


自定义告警脚本:

1.放在cd /usr/lib/zabbix/alertscripts
2.要支持三个参数 1 收件人 2.主题 3,内容
3.执行权限
4.Web界面添加
5.修改Actions

[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# cd
[root@linux-node1 /usr/lib/zabbix/alertscripts]# vim sms.sh
#!/bin/bash
ALTER_TO=$1
ALTER_TITLE=$2
ALTER_BODY=$3

echo $ALTER_TO >> /tmp/sms.log
echo $ALTER_TITLE >> /tmp/sms.log
echo $ALTER_BODY >> /tmp/sms.log

[root@linux-node1 /usr/lib/zabbix/alertscripts]# chmod +x sms.sh




使用Percona监控插件监控MySQL

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

https://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html#installation-instructions

yum install percona-zabbix-templates php php-mysql

1.php脚本用来数据采集
2.shell 调用这个php
3.zabbix配置文件
4.zabbix模板文件

创建zabbix监控专用用户。