实验环境:rhel7.6 selinux and iptables disabled
zabbix版本4.0
实验主机: server5 172.25.2.5: server mysql php agent 睿象云 都集成到一台主机
server6 172.25.2.6 agent tomcat
server7 172.25.2.7 proxy
接zabbix(上),本篇主要针对监控主体.利用网上的监控项模板对mysql数据库的监控,通过JMX对tomcat的监控,对于agent端的主被动式监控,利用zabbix-proxy实现分布式监控,结合睿象云,实现智能告警降噪,通过分派、排班、通知等功能,快速实现告警流程化管理.
一.对mysql数据库监控
cd /etc/zabbix/zabbix_agentd.d #默认的监控的mysql项目
[root@server5 zabbix_agentd.d]# grep -v ^# userparameter_mysql.conf | uniq #定义了采集项目
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -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 ping | grep -c alive
UserParameter=mysql.version,mysql -V
显然是不能直接访问的,数据库有密码认证
mysqladmin password westos #给root改密码
mkdir /var/lib/zabbix
cd /var/lib/zabbix
vim .my.cnf
[mysql]
user=root
password=westos
socket=/var/lib/mysql/mysql.sock #mysql启动接口
[mysqladmin]
user=root
password=westos
socket=/var/lib/mysql/mysql.sock
systemctl restart zabbix-agent.service
采集脚本先进入/var/lib/zabbix,获取密码,才能获取myql信息
[root@server5 zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p 10050 -k "mysql.ping"
1 #正在运行
自带的监控太少了,才十四个,因此需要自己定制
二.percona-zabbix-templates
server5
get percona-zabbix-templates-1.1.6-1.noarch.rpm
rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm #安装完后会生成两个目录
/var/lib/zabbix/percona/scripts #采集脚本
/var/lib/zabbix/percona/templates #采集项目
yum list php php-mysql #依赖性,保证安装
cd /var/lib/zabbix/percona/templates
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
cd /var/lib/zabbix/percona/scripts
vim ss_get_mysql_stats.php
30 $mysql_user = 'root';
31 $mysql_pass = 'westos';
44 $cache_dir = '/tmp'; #运行脚本通过php缓存数据库中的数据到/tmp/localhost-mysql_cacti_stats.txt,提供给server
systemctl restart zabbix-agent.service
[root@server5 scripts]# zabbix_get -s 127.0.0.1 -p 10050 -k "MySQL.log-writes" #找一个项目测一下
34384
get zbx_percona_mysql_template.xml #模板,通过模板添加监控项,方便了许多
三.监控tomcat
tomcat监控配置
当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行.Java程序(tomcat)会启动自身的一个简单的小程序端口8888向Zabbix-JavaGateway提供请求数据.
server6
get apache-tomcat-7.0.37.tar.gz
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat
yum install java-1.8.0-openjdk.x86_64 -y #
cd tomcat/bin/
vim catalina.sh
99 CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888 #开启监听端口
100 -Dcom.sun.management.jmxremote.ssl=false
101 -Dcom.sun.management.jmxremote.authenticate=false'
./startup.sh
[root@server6 bin]# netstat -antlp | grep :8888
tcp6 0 0 :::8888 :::* LISTEN 19901/java
cd /usr/local/tomcat/webapps/ROOT
ll index.jsp #默认发布文件,jsp格式,监控方式也需要JMX
server5
yum install zabbix-java-gateway.x86_64 -y #jmx方式监控
cd /etc/zabbix/
vim zabbix_java_gateway.conf
35 START_POLLERS=10
systemctl enable --now zabbix-java-gateway.service
vim zabbix_server.conf
288 JavaGateway=172.25.2.5 #指定java-gateway
304 StartJavaPollers=10
四.主被动采集
agent端 server7
vim /etc/zabbix/zabbix_agentd.conf
123 StartAgents=0 #agent被动
systemctl restart zabbix-agent.service
server端 server5
[root@server5 ~]# zabbix_get -s 172.25.2.7 -p 10050 -k "nginx.active"
zabbix_get [11300]: Get value error: cannot connect to [[172.25.2.7]:10050]: [111] Connection refused
如果agent为被动,那么server端将得不到监控数据
因此,angent端主动被动都开启,在server端选择agent主动式
五.分布式监控
zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix server 的压力.
此外,当所有agents和proxies报告给一个Zabbix server并且所有数据都集中收集时,使用proxy是实现集中式和分布式监控的最简单方法。
zabbix proxy 使用场景:
(1)监控远程区域设备
(2)监控本地网络不稳定区域
(3)当 zabbix 监控上千设备时,使用它来减轻 server 的压力
(4)简化分布式监控的维护
在实际生产中,服务器火墙都开着,如果没有代理,那么对于每一个agent端都要在火墙上加规则,降低了安全和运行速度;而zabbix proxy 仅仅需要一条 tcp 连接到 zabbix server,所以防火墙上仅仅需要加上一条规则即可。
将之前的server7 agent删掉,配置proxy
hostnamectl set-hostname proxy
所有主机的地址解析加上
172.25.2.7 server7 proxy
yum install mariadb-server.x86_64 -y #因为proxy采集数据,也需要数据库
systemctl enable --now mariadb.service
mysql
create database zabbix_proxy character set utf8 collate utf8_bin;
create user 'zabbix'@'localhost' identified by 'westos';
grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost';
cd /usr/share/doc/zabbix-proxy-mysql-4.0.27/
zcat schema.sql.gz | mysql -uzabbix -pwestos zabbix_proxy
yum install -y zabbix-proxy-mysql
cd /etc/zabbix/
vim zabbix_proxy.conf #其余的默认
Server=172.25.2.5
Hostname=proxy
DBPassword=westos
JavaGateway=172.25.2.5 #因为server6上有java应用,因此要开启jmx
StartJavaPollers=10
server5 server端
server5 server
zabbix_server -R config_cache_reload
proxy
systemctl enable --now zabbix-proxy.service
server6 anget
vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.2.7
ServerActive=172.25.2.7
systemctl restart zabbix-agent.service
六.zabbix+睿象云
睿象云提供的安装配置
睿象云帮助
(一).在zabbix server端安装CA探针
1.切换到zabbix脚本目录
server5
vim /etc/zabbix/zabbix_server.conf #查看AlertScriptsPath
tar zxf ca_zabbix_release-2.1.0.tar.gz -C /usr/lib/zabbix/alertscripts
cd cloudalert/bin/
./install.sh a09b123e-72ef-4f40-ad8f-64c88f6a0fbd
2.创建应用
执行完安装后,在zabbix_server上建立了用户 组 报警媒介 动作
3.测试
[root@server5 bin]# ping www.baidu.com #保证zabbix-server能够上网
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=53 time=33.4 ms
[root@server6 zabbix]# systemctl stop zabbix-agent.service
负责人认领后,处理问题
[root@server6 zabbix]# systemctl start zabbix-agent.service