[TOC]
一、zabbix的规划及部署 1.1、部署环境 主机类型 IP地址 zabbix server 10.0.0.150 zabbix 主动代理 10.0.0.151 zabbix 被动代理 10.0.0.152 mysql master 10.0.0.153 mysql slave 10.0.0.154 web server1 10.0.0.155 web server2 10.0.0.156
1.2、yum安装zabbix 产品手册:
1 https://www.zabbix.com/documentation/4.0/zh/manual
1.2.1、安装zabbix-server 官方网站:
1 https://www.zabbix.com/cn/download
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [root@server ~] ********************************************************************************** [root@server ~] /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 /etc/yum.repos.d/zabbix.repo /usr/share/doc/zabbix-release /usr/share/doc/zabbix-release/GPL [root@server ~] [zabbix] name=Zabbix Official Repository - $basearch baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/8/$basearch / [zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=http://repo.zabbix.com/non-supported/rhel/8/$basearch / [root@server ~] [root@server ~] [zabbix] name=Zabbix Official Repository - $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/$basearch / [zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/$basearch / ************************************************************************************ [root@server ~] [root@server ~] [root@server ~]
1.2.2、准备数据库 在mysql maser安装数据库并授权zabbix使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [root@mysql_master ~] [root@mysql_master ~] [root@mysql_master ~] mysql> create database zabbixtest character set utf8 collate utf8_bin; mysql> create user zabbix@'10.0.0.%' identified by '123456' ; mysql> grant all privileges on zabbixtest.* to zabbix@'10.0.0.%' ; [root@server ~] create database zabbixtest character set utf8 collate utf8_bin; create user zabbix@'10.0.0.%' identified by '123456' ; grant all privileges on zabbixtest.* to zabbix@'10.0.0.%' ; EOF [root@proxy_active ~] mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | zabbix | +--------------------+
1.2.3、zabbix连接mysql服务器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@proxy_active ~] DBHost=10.0.0.153 DBName=zabbixtest DBUser=zabbix DBPassword=123456 :wq [root@proxy_active ~] mysql:[Warning] Using a password on the command line interface can be insecure [root@server ~] /etc/httpd/conf.d/zabbix.conf /etc/php-fpm.d/zabbix.conf [root@server ~] php_value[date.timezone] = Asia/Shanghai 启动Zabbix server和agent进程 [root@server ~]
#此时输入网址:10.0.0.150/zabbix即可进入设置页面
下一步,如果全部显示OK即可进行下一步
下一步输入数据库的信息
下一步设置zabbix
下一步显示输入的所有信息
下一步显示创建完成,并提示信息放在的目录,如果更改可以去此路径下修改
登录界面:初始账号:Admin 初始密码:zabbix
二、安装zabbix5.0(server、agent2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 [root@Rocky ~] rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/yum.repos.d/zabbix.repo dnf clean all dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent2 yum -y install mysql-server systemctl enable --now mysqldcat << EOF | mysql create database zabbix character set utf8 collate utf8_bin; create user zabbix@localhost identified by '123456'; grant all privileges on zabbix.* to zabbix@localhost; EOF zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix sed -i.bak '/# DBPassword/a DBPassword=123456' /etc/zabbix/zabbix_server.conf systemctl start nginx sed -i.bak '/^server/a\ listen 80;\n server_name zabbix.magedu.org; ' /etc/nginx/conf.d/zabbix.conf sed -i.bak '/date.timezone/c php_value[date.timezone] = Asia/Shanghai' /etc/php-fpm.d/zabbix.conf systemctl restart zabbix-server zabbix-agent2 nginx php-fpm systemctl enable zabbix-server zabbix-agent2 nginx php-fpm :wq [root@Rocky ~] [root@Rocky ~] [root@Rocky fonts] total 0 lrwxrwxrwx 1 root root 33 Dec 9 09:17 graphfont.ttf -> /etc/alternatives/zabbix-web-font [root@Rocky fonts] [root@Rocky fonts] graphfont.ttf.bak [root@Rocky fonts] rz waiting to receive. [root@Rocky fonts] graphfont.ttf.bak simsun.ttc [root@Rocky fonts] [root@Rocky fonts] graphfont.ttf graphfont.ttf.bak simsun.ttc ********************************************************************************** [root@Rocky ~] rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/yum.repos.d/zabbix.repo dnf clean all dnf -y install zabbix-agent2 sed -i.bak '/^Server=/c Server=10.0.0.190' /etc/zabbix/zabbix_agent2.conf systemctl start zabbix-agent2 systemctl enable zabbix-agent2 :wq **********************************************************************************
创建主机
添加完成后(红框里面的是上面设置的可见名称)
此时需要设置检测agent2哪些参数
创建监控项,更快捷的方法是使用模板
模板选择(系统提供的制式监控参数选项)
#注意此时是被动模式(server问一个参数,agent2回复一个参数),被动模式是默认模式(后期可以更改为主动模式)
三、Windows安装zabbix
点击下载的包进行安装
其他默认下一步进行安装
安装完成后,可以查看10050端口是否启动
另外可以在服务里查看运行的程序
zabbix的配置文件路径:C:\Program Files\Zabbix Agent 2
下一步需要在zabbix-server创建主机
下一步添加模板
四、迁移mysql到独立服务器 1 2 3 4 5 0 将zabbix-server服务停止(最好在无人访问的时候停止)1 将mysql上的所有数据备份出来,但如果不先停止服务,则一直在采集数据到mysql2 恢复到独立同一版本同一配置的mysql服务器3 修改zabbix server指向新的mysql服务器地址4 修改PHP指向新的mysql服务器地址
4.1、备份数据到独立mysql服务器上 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [root@mysql-server ~] [root@mysql-server ~] [root@zabbix_server ~] [root@zabbix_server ~] [root@zabbix_server ~] total 10260 -rw-r--r-- 1 root root 10496967 Dec 9 15:51 all.sql -rw-------. 1 root root 1264 Aug 25 16:39 anaconda-ks.cfg -rw-r--r-- 1 root root 1077 Dec 9 09:40 install_zabbix5.0_for_nginx_mysql.sh [root@zabbix_server ~] [root@mysql-server ~] [root@mysql-server ~] mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | zabbix | +--------------------+ mysql> select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | zabbix | localhost | +------------------+-----------+ mysql> show create database zabbix; +----------+---------------------------------------------------------------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------------------------------------------------------------+ | zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ /*!80016 DEFAULT ENCRYPTION='N' */ | +----------+---------------------------------------------------------------------------------------------------------------------+ mysql> create user zabbix@'10.0.0.%' identified by '123456' ; mysql> grant all privileges on zabbix.* to zabbix@'10.0.0.%' ;
4.2、修改zabbix server和PHP配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@zabbix_server ~] DBHost=10.0.0.188 :wq [root@zabbix_server ~] [root@zabbix_server ~] [root@zabbix_server ~] [root@zabbix_server ~]$DB ['SERVER' ] = '10.0.0.188' ; :wq
五、创建自定义监控项
5.1、在agent主机上创建监控项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@Rocky ~] [root@Rocky zabbix_agent2.d] [root@Rocky zabbix_agent2.d] UserParameter=user_login_count,who |wc -l :wq [root@Rocky zabbix_agent2.d] user_login_count [s|3] [root@zabbix_server ~] ZBX_NOTSUPPORTED: Unknown metric user_login_count [root@Rocky zabbix_agent2.d] [root@zabbix_server ~] 4
5.2、在zabbix-server增加监控项 5.2.1、单独添加监控项 内容填写完后,先进行测试,如果测试出结果来,则说明设置正确,然后再点添加
5.2.2、创建新模版,在模板里添加监控项 先创建模板
添加监控项
六、设置为主动模式 Zabbix 有两种工作模式: 主动和被动模式
无论是模式还是被动模式,都是站在zabbix agent 角度来说的工作模式
主动模式和被动模式都是相对zabbix agent而言的
Zabbix默认是被动模式,如果有100个监控项,被动模式需要 Zabbix Server找 Zabbix Agent要100次
主动模式是Zabbix Server给 Zabbix Agent发送一个包括100个监控项的任务清单,Zabbix Agent根据任务清单,采集好100个监控项的值,主动汇报给 Zabbix Server这100个监控项,Zabbix Agent主动模式只需要发送一次数据,大大提高了传输效率。
被动模式: Server 向 Agent 请求获取监控项的数据,Agent返回数据。此为默认模式,如果有100个监控项,则需要100次交互
主动模式: Agent 请求 Server 获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,如有100个监控项,只需要1次交互即可
注意: 两种模式可以在Zabbix Server上同时存在,可以将一部分监控项设为主动,其它设为被动模式
被动监测通信过程如下 :
1 2 3 4 5 6 7 Server打开一个TCP连接 Server发送请求agent.ping Agent接收到请求并且响应<HEADER><DATALEN> Server处理接收到的数据 关闭TCP连接 被动模式每获取一个监控项都需要打开一个tcp连接,这样当监控项越来越多时,Zabbix Server会打开很 多端口,就会出现server端性能瓶颈问题。
主动模式监测通信过程如下 :
1 2 3 4 5 zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数 据值给server或者proxy。 zabbix多久获取一次active items? 它会根据agent的配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后 重试。
6.1、主动模式介绍 主动模式是由每个zabbix agent 打开本机的随机端口, 主动向 Zabbix Server (或者Zabbix Proxy)的10051端口发起tcp连接请求
主动模式下必须在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地 址),在连接到zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在一定程度就减轻了zabbix server的压力。经过优化后可以轻松监控2000台,甚至5000以上的主机
以下场景下生产推荐使用主动模式
6.2、zabbix agent2实现主动模式 在Zabbix Agent实现主动模式流程
注意:基于原被动模板克隆生成的主动模式模板,不是所有监控项都能改为主动模,比如agent.ping监控项如果改为主动模式, ZBX 提示将无法变绿
6.2.1、在zabbix agent2配置主动模式 Zabbix Server 主动和被动模式无需配置即可支持,还可以支持多个主动和被动模式的Zabbix Agent 同时存在
Zabbix Agent 默认是被动模式,需要修改配置才能支持主动模式
Zabbix Agent 的关健配置有下面三项
1 2 3 Server=<Zabbix Server> ServerActive=<Zabbix Server> Hostname=<当前主机IP>
1 2 3 4 5 6 [root@zabbix_agent2 ~] ServerActive=10.0.0.190 Hostname=10.0.0.189 Timeout=30 :wq [root@zabbix_agent2 ~]
6.2.2、基于现有模板将包含的监控项修改为主动模式的监控项 注意 : Zabbix 5.0 内置了主动模式的模板 Template OS Linux by Zabbix agent active 无需修改
Zabbix4.0 之前没有主动模式的模板,需要自行修改
如果自己创建的模板是被动模式,也可以改成主动模式
模板—>选中监控项—>点击批量更新—>选中类型(主动式)
七、监控java程序
7.1、部署tomcat服务并开启JMX功能 1 2 3 4 5 6 7 8 9 10 [root@tomcat ~] rz waiting to receive. [root@tomcat ~] rz waiting to receive. [root@tomcat ~] rz waiting to receive. [root@tomcat ~] install_tomcat.sh apache-tomcat-9.0.59.tar.gz jdk-11.0.14_linux-x64_bin.tar.gz [root@tomcat ~]
tomcat 开启远程 JMX 环境配置
1 2 3 4 5 6 7 vim /usr/local/tomcat/bin/catalina.sh CATALINA_OPTS="$CATALINA__OPTS -Dcom.sun.management.jmxremote #启用远程监控JMX -Djava.rmi.server.hostname=<JAVA主机IP> #是tomcat主机自己的IP地址,不是zabbix服务器的地址 -Dcom.sun.management.jmxremote.port=XXXXX #默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可 -Dcom.sun.management.jmxremote.authenticate=false #不使用用户名密码 -Dcom.sun.management.jmxremote.ssl=false"
1 2 3 4 5 6 7 [root@tomcat ~] 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=10.0.0.218" :wq [root@tomcat ~]
7.2、部署Java gateway服务器 Java gateway 是一个独立于zabbix server和 zabbix agent的组件,默认使用端口10052/tcp, 所以java gateway可以是单独的一台服务器,但是也可以和zabbix server或者zabbix agent 共用一台服务器
1 2 3 4 5 6 7 8 9 10 [root@zabbix_server ~] [root@zabbix_server ~] [root@zabbix_server ~] State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 50 *:10052 *:*
7.3、配置Zabbix Server支持Java gateway 7.3.1、Zabbix Server开启Java gateway功能 默认有关java的监控项是不支持的
配置下面后,相关监控项会支持
1 2 3 4 5 6 [root@zabbix_server ~] JavaGateway=10.0.0.190 JavaGatewayPort=10052 StartJavaPollers=1 :wq [root@zabbix_server ~]
7.3.2、添加主机和模板 添加主机
添加模板
八、Zabbix分布式实现Proxy
zabbix作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控
数据,然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替zabbix server
收集监控数据,然后把数据汇报给zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix
server的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。
Zabbix Proxy只执行数据收集,不运行触发器,无处理事件,也不发送告警,无Web管理界面所以最终导致告警延时可能会比较长
8.1、Zabbix Proxy安装和配置 Zabbix Proxy 也分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样
Zabbix Proxy的模式 是从Zabbix Proxy 角度来说的
zabbix proxy在主动模式下要主动地向zabbix server周期性的申请获取zabbix agent的监控项信息,此模式可以大副降低Zabbix Server的压力,生产推荐使用
zabbix Proxy在被动模式下要被动地等待zabbix server的连接,并接受zabbix server发送的监控项指令,然后再由zabbix proxy向zabbix agent发起请求获取数据。
注意 : Zabbix Proxy的大版本必须要和zabbix server版本相同,否则很可能会导致出现 zabbi server与zabbix proxy不兼容问题
8.1.1、Zabbix Proxy和mysql安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [root@zabbix_proxy ~] rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#' /etc/yum.repos.d/zabbix.repo dnf clean all dnf -y install zabbix-proxy-mysql mysql-server zabbix-agent2 systemctl enable --now mysqldcat << EOF | mysql create database zabbix_proxy character set utf8 collate utf8_bin; create user zabbix@'10.0.0.%' identified by '123456'; grant all privileges on zabbix_proxy.* to zabbix@'10.0.0.%'; set global log_bin_trust_function_creators = 1; EOF zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p123456 -h10.0.0.186 zabbix_proxycat << EOF | mysql set global log_bin_trust_function_creators = 0; EOF sed -i.bak '/# DBPassword/a DBPassword=123456' /etc/zabbix/zabbix_server.conf systemctl restart zabbix-proxy zabbix-agent2 systemctl enable zabbix-proxy zabbix-agent2 [root@zabbix_proxy ~]
8.1.2、主动模式配置 8.1.2.1、修改proxy配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [root@zabbix_proxy ~] ProxyMode=0 Server=10.0.0.190 Hostname=Zabbix_proxy_10.0.0.186 ListenPort=10051 LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=0 EnableRemoteCommands=1 PidFile=/var/run/zabbix/zabbix_proxy.pid SocketDir=/var/run/zabbix DBHost=10.0.0.186 DBName=zabbix_proxy DBUser=zabbix DBPassword=123456 ProxyOfflineBuffer=720 HeartbeatFrequency=60 ConfigFrequency=60 DataSenderFrequency=60 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log CacheSize=8M StartDBSyncers=4 HistoryCacheSize=16M HistoryIndexCacheSize=4M Timeout=30 ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000 StatsAllowedIP=127.0.0.1 [root@zabbix_proxy ~]
8.1.2.2、在Zabbix Server上添加代理Proxies 管理– agent 代理程序(英文环境为Proxies,汉化翻译不准确)
注意:agent代理程序名称要和proxy 配置文件中Hostname指定的名称相同,否则会现 proxy “zabbixproxy-active” not found的日志提示
8.1.2.3、在Zabbix Server上配置Zabbix Agent使用主动代理 添加zabbix agent2主机10.0.0.220
8.1.2.4、修改Zabbix Agent配置文件为主动模式的 Zabbix Proxy 1 2 3 4 5 6 [root@zabbix_agent2_centos ~] Server=10.0.0.190,10.0.0.186 ServerActive=10.0.0.186 Hostname=10.0.0.22 :wq [root@zabbix_agent2_centos ~]