一、zabbix的安装

#1、最小化安装操作系统
#安装以下常用依赖包:
# yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel


#2、安装数据库
#使用脚本自动安装数据库:
# ln -sv /data/mysql/mysql.sock /var/lib/mysql/mysql.sock
max_connections=10000 #my.cnf配置文件更改最大链接数


#3、安装zabbix server端
#(1)安装依赖包: 
# yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel -y 

#(2)准备数据库: 
[root@zabbix-web1 ~]# mysql 
mysql> create database zabbix character set utf8 collate utf8_bin; 
Query OK, 1 row affected (0.00 sec) 
mysql>grant all privileges on zabbix.* to zabbix@"172.18.200.%" identified by '123456'; 
Query OK, 0 rows affected (0.00 sec) 

#(3)编译安装zabbix: 
[root@zabbix-server ~]# cd /usr/local/src/ 
[root@zabbix-server src]# zabbix-4.0.1.tar.gz 
[root@zabbix-server zabbix-4.0.1]# useradd zabbix -s /sbin/nologin 
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java 
# make && make install

#(4)导入数据库: 
 #先导入此文件,如果做zabbix代理服务器,则只导入此文件即可 
 mysql -uzabbix -p123456 -h192.168.15.203 zabbix < database/mysql/schema.sql 
 mysql -uzabbix -p123456 -h192.168.15.203 zabbix < database/mysql/images.sql 
 mysql -uzabbix -p123456 -h192.168.15.203 zabbix < database/mysql/data.sql 

#(5)复制启动脚本: 
 cp /usr/local/src/zabbix-4.0.1/misc/init.d/fedora/core/zabbix_server /etc/init.d/ 
 cp /usr/local/src/zabbix-4.0.1/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ 

#(6)更改启动脚本: 
 vim /etc/init.d/zabbix_server 
 vim /etc/init.d/zabbix_agent 
 21 # Zabbix-Directory 
 22 BASEDIR=/usr/local/zabbix 

#(7)编辑zabbix_server.con配置文件: 
 #mkdir /var/log/zabbix && chown zabbix.zabbix /var/log/zabbix –R 
 [root@zabbix-server ~]# grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_server.conf 
 LogFile=/var/log/zabbix/zabbix_server.log 
 DBHost=192.168.10.103 
 DBName=zabbix 
 DBUser=zabbix 
 DBPassword=123456 
 DBPort=3306 
 Timeout=30 
 
#(8)编辑Zabbix Server systemd启动脚本 
[root@s1 zabbix-4.0.6]# cat /usr/lib/systemd/system/zabbix-server.service 
 [Unit] 
 Description=Zabbix Server 
 After=syslog.target 
 After=network.target 
 [Service] 
 Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf" 
 EnvironmentFile=-/etc/sysconfig/zabbix-server 
 Type=forking 
 Restart=on-failure 
 PIDFile=/usr/local/zabbix/zabbix_server.pid 
 KillMode=control-group 
 ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE 
 ExecStop=/bin/kill -SIGTERM $MAINPID 
 RestartSec=10s 
 TimeoutSec=0 
 [Install] 
 WantedBy=multi-user.target 
# systemctl daemon-reload && systemctl start zabbix-server && systemctl enable zabbix-server 

#(9)编辑Zabbix Agent systemd启动脚本 
# cat /usr/lib/systemd/system/zabbix-agent.service 
 [Unit] 
 Description=Zabbix Agent 
 After=syslog.target 
 After=network.target 
 [Service] 
 Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf" 
 EnvironmentFile=-/etc/sysconfig/zabbix-agent 
 Type=forking 
 Restart=on-failure 
 PIDFile=/usr/local/zabbix/zabbix_agentd.pid 
 KillMode=control-group 
 ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c $CONFFILE 
 ExecStop=/bin/kill -SIGTERM $MAINPID 
 RestartSec=10s 
 [Install] 
 WantedBy=multi-user.target 


#4、配置web界面: 
#(1)安装httpd: 
  #yum install httpd -y 
  #mkdir /var/www/html/zabbix 
  #cp -a /usr/local/src/zabbix-4.0.1/frontends/php/* /var/www/html/zabbix 
  # systemctl restart httpd 
#(2)访问web

#(3)解决报错: 
 #yum install php-gettext php-session php-ctype php-xmlreader php-xmlwriter php-xml php-net-socket php
gd php-mysql 
#如下更改vim /etc/php.ini: 
 post_max_size = 8M 改为 post_max_size = 16M 
 max_execution_time = 30 改为 max_execution_time = 300 
 max_input_time = 60 改为 max_input_time = 300 
 date.timezone =  改为 date.timezone = date.timezone = Asia/Shanghai 
#(4)重启http再次访问web 


#5、配置:
#(1)配置数据库:
database type:mysql
database host:192.168.15.203
database port:3306
database name:zabbix
user:zabbix
password:自行设置

#(2)配置zabbix server:
host:127.0.0.1
port:10051
name:zabbix server

#(3)完成其他页面设置
#确认配置、上传配置、刷新文件
username:Admin
password:zabbix
#(4)登录


#6、支持中文显示
 #复制字体文件上传到服务器: 
– /var/www/html/zabbix/fonts/ 
 #编辑配置文件使用新字体: 
– vim /var/www/html/zabbix/include/defines.inc.php


#7、测试获取zabbix agent数据:
# yum install zabbix-get-4.0.1-1.el7.x86_64.rpm -y
# zabbix_get -s 192.168.15.204 -p 10050 -k "system.cpu.load[all,avg1]"

Yum 安装zabbix

# yum install https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
# yum install zabbix-web-mysql
# yum install zabbix-server-mysql
# yum install zabbix-agent
# mysql
mysql> create database zabbix1 character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix1.* to zabbix1@"172.18.200.%" identified by '123456';
Query OK, 0 rows affected (0.00 sec)
#导入数据库
# zcat /usr/share/doc/zabbix-server-mysql-4.0.6/create.sql.gz | mysql -uzabbix1 -p123456 -h172.18.200.104 zabbix1

二、主机监控与tomcat监控

#1、安装配置java gateway 
#yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb-devel java-1.8.0-openjdk-devel -y 
#./configure --prefix=/usr/local/zabbix --enable-java --with-net-snmp --with-mysql --with-ssh2 
#make install 
#配置文件:
# vim /usr/local/zabbix/sbin/zabbix_java/settings.sh 
– LISTEN_IP="0.0.0.0" 
– LISTEN_PORT=10052 
– PID_FILE="/tmp/zabbix_java.pid" 
– START_POLLERS=20 #启动多少个进程轮训java,要和java 应用保持一定关系 
– TIMEOUT=30 
#/usr/local/zabbix/sbin/zabbix_java/startup.sh #启动 

#2、配置zabbix server调用java gateway: 
vim /usr/local/zabbix/etc/zabbix_server.conf 
– JavaGateway=192.168.15.203 #指定java gateway的地址 
– JavaGatewayPort=10052 #指定java gateway的服务器监听端口,如果是默认端口可以不写 
– StartJavaPollers=20 #启动多少个进程去轮训 java gateway,要和java gateway的配置一致 
– Timeout=30

#3、配置tomcat 监控参数: 
#(1)
# vim /apps/tomcat/bin/catalina.sh 
– CATALINA_OPTS= "$CATALINA_OPTS 
– Dcom.sun.management.jmxremote #启用远程监控JMX 
– Dcom.sun.management.jmxremote.port=12345 #默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可 
– Dcom.sun.management.jmxremote.authenticate=false #不使用用户名密码 
– Dcom.sun.management.jmxremote.ssl=false #不使用ssl认证 
– Djava.rmi.server.hostname=x.x.x.x" #tomcat主机自己的IP地址,不要写zabbix服务器的地址
 
#(2)配置JDK 环境: 
# tar xvf jdk-7u79-linux-x64.tar.gz 
# ln -sv /usr/local/src/jdk1.7.0_79/ /usr/local/jdk 
# vim /etc/profile 
– export JAVA_HOME=/usr/local/jdk 
– export TOMCAT_HOME=/apps/tomcat 
– export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH 
– export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar 
# source /etc/profile 

#(3) 重启tomcat并在windows 验证: 
#/apps/tomcat/bin/catalina.sh stop 
#/apps/tomcat/bin/catalina.sh start 
C:\Program Files\Java\jdk1.8.0_191\bin\jconsole.exe

#4、Tomcat端安装zabbix agent: 
#(1)编译安装zabbix 客户端: 
# tar xvf zabbix-4.0.1.tar.gz 
# cd zabbix-4.0.1/ 
# ./configure --enable-agent --prefix=/usr/local/zabbix 
# make && make install 
# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ 
# vim /etc/init.d/zabbix_agentd 
22 BASEDIR=/usr/local/zabbix 
# useradd zabbix -s /sbin/nologin 
#(2)更改zabbix agentd配置文件: 
[root@zabbix-web1 ~]# grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_agentd.conf 
LogFile=/tmp/zabbix_agentd.log 
DebugLevel=4 
Server=192.168.10.101 
Hostname=192.168.10.103 #server端添加此服务器的时候必须写次名称 
#(3)重启zabbix agentd服务: 
# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf 
# /etc/init.d/zabbix_agentd restart #脚本问题 
– 22 BASEDIR=/usr/local/zabbix 
– 72 action $"Starting $BINARY_NAME: " $FULLPATH -c /usr/local/zabbix/etc/zabbix_agentd.conf

#5、添加监控tomcat 
#在zabbix 添加主机并关联模板:

#6、监控java排错方法: 
#测试能否获取到java 当前已经分配的线程数 
# java -jar cmdline-jmxclient-0.10.3.jar - 172.18.200.104:12345 'Catalina:name="http-bio-8080",type=ThreadPool' 
currentThreadCount 
# java -jar cmdline-jmxclient-0.10.3.jar - 172.18.200.104:12345 'Catalina:name="http-bio-8080",type=ThreadPool' 
maxThreads

三、Zabbix proxy 的安装和配置

#1、安装Zabbix proxy 
#(1)安装依赖包: 
[root@zabbix-proxy ~]# yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel 
php php-bcmath php-mbstring mariadb mariadb-devel java-1.8.0-openjdk-devel -y 
#(2)准备zabbix proxy数据库: 
# mysql 
mysql> create database zabbix_proxy character set utf8 collate utf8_bin; 
grant all privileges on zabbix_proxy.* to proxy@'%' identified by '123456'; 
#(3)编译安装: 
useradd zabbix -s /sbin/nologin 
./configure --prefix=/usr/local/zabbix --enable-proxy --enable-agent --with-mysql --with-net
snmp --with-libcurl --with-libxml2 --enable-java 
make install 
#(4)导入数据库: 
[root@zabbix-proxy zabbix-4.0.1]# mysql -uproxy -p123456 -h192.168.15.203 zabbix_proxy < database/mysql/schema.sqlProxy 

#2、配置zabbix proxy: 
# grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_proxy.conf 
ProxyMode=1 #0为主动,1为被动 
Server=192.168.15.201 #zabbix server服务器的地址或主机名 
Hostname=proxy1-mage-passive #代理服务器名称,需要与zabbix server添加代理时候的proxy name是一致的! 
LogFile=/tmp/zabbix_proxy.log 
DBHost=192.168.15.203 #数据库服务器地址 
DBName=zabbix_proxy #使用的数据库名称 
DBUser=proxy #连接数据库的用户名称 
DBPassword=123456 #数据库用户密码 
DBPort=3306 #数据库端口 
ProxyLocalBuffer=3 #已经提交到zabbix server的数据保留时间 
ProxyOfflineBuffer=24 #未提交到zabbix server的时间保留时间 
HeartbeatFrequency=60 #心跳间隔检测时间,默认60秒,范围0-3600秒,被动模式不使用 
ConfigFrequency=5 #间隔多久从zabbix server 获取监控信息 
DataSenderFrequency=5 #数据发送时间间隔,默认为1秒,范围为1-3600秒,被动模式不使用 
StartPollers=20 #启动的数据采集器数量 
JavaGateway=192.168.15.202 #java gateway服务器地址,当需要监控java的时候必须配置否则监控不到数据 
JavaGatewayPort=10052 #Javagatewa服务端口 
StartJavaPollers=20 #启动多少个线程采集数据 
CacheSize=2G #保存监控项而占用的最大内存 
HistoryCacheSize=2G #保存监控历史数据占用的最大内存 
Timeout=30 #监控项超时时间,单位为秒 
LogSlowQueries=3000 #

#3、添加被动代理:

#4、编译安装zabbix agent: 
[root@web-server zabbix-4.0.1]# ./configure --enable-agent --prefix=/usr/local/zabbix 
[root@web-server zabbix-4.0.1]# make install 
[root@web-server zabbix-4.0.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ 
[root@web-server zabbix-4.0.1]# vim /usr/local/zabbix/etc/zabbix_agentd.conf 
[root@web-server zabbix-4.0.1]# grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_agentd.conf 
LogFile=/tmp/zabbix_agentd.log 
DebugLevel=4 
Server=192.168.15.202,192.168.15.201 
ListenPort=10050 
ListenIP=0.0.0.0 
StartAgents=3 
ServerActive=192.168.15.202 
Hostname=192.168.15.203 
Timeout=30 
UnsafeUserParameters=1 

#5、添加被动模式主机: 
#注意关联到默认的被动模式模板

#6、验证被动模式监控数据:
#此过程需要一段时间,在zabbix server、zabbix proxy以及zabbix agent没有报错的情况下,需要耐心等待

#7、Zabbix proxy 日志:

#8、Proxy 主动模式配置文件: 
#配置zabbix proxy: 
# grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_proxy.conf 
ProxyMode=0 #0为主动,1为被动 
Server=192.168.15.201 #zabbix server服务器的地址或主机名 
Hostname=mage_proxy #代理服务器名称,需要与zabbix server添加代理时候的proxy name是一致的! 
LogFile=/tmp/zabbix_proxy.log 
DBHost=192.168.15.203 #数据库服务器地址 
DBName=zabbix_proxy 
DBUser=zabbix 
DBPassword=123456 
DBPort=3306 
ProxyLocalBuffer=3 #已经提交到zabbix server的数据保留时间 
ProxyOfflineBuffer=24 #未提交到zabbix server的时间保留时间 
HeartbeatFrequency=60 #心跳间隔检测时间,默认60秒,范围0-3600秒,被动模式不使用 
ConfigFrequency=5 #间隔多久从zabbix server 获取监控信息 
DataSenderFrequency=5 #数据发送时间间隔,默认为1秒,范围为1-3600秒,被动模式不使用 
StartPollers=20 #启动的数据采集器数量 
JavaGateway=192.168.15.202 #java gateway服务器地址 
JavaGatewayPort=10052 
StartJavaPollers=20 #启动多少个线程采集数据 
CacheSize=2G #保存监控项而占用的最大内存 
HistoryCacheSize=2G #保存监控历史数据占用的最大内存 
Timeout=30 
LogSlowQueries=3000

#9、Proxy 主动数据库配置: 
#创建数据库: 
[root@s4 src]# mysql 
mysql> create database zabbix_proxy_active character set utf8 collate utf8_bin; 
Query OK, 1 row affected (0.00 sec) 
[root@mysql-server zabbix-proxy-mysql-4.0.1]# pwd 
/usr/share/doc/zabbix-proxy-mysql-4.0.1 
#zcat schema.sql.gz | mysql -uzabbix_active -p123456 -h192.168.15.203 zabbix_proxy_active 
# systemctl restart zabbix-proxy.service 

#10、添加主动代理:

#11、客户端安装agent 
#(1)Web 客户端安装zabbix agent: 
# yum install gcc -y 
# useradd zabbix -s /sbin/nologin 
# tar xvf zabbix-4.0.1.tar.gz 
# cd zabbix-4.0.1 
# ./configure --prefix=/usr/local/zabbix --enable-agent 
# make install 
# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ 
# vim /etc/init.d/zabbix_agentd 
– 22 BASEDIR=/usr/local/zabbix 
#(2)更改配置文件: 
[root@web-server apps]# grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_agentd.conf 
LogFile=/tmp/zabbix_agentd.log 
DebugLevel=4 
Server=192.168.15.203 
ListenPort=10050 
ListenIP=0.0.0.0 
StartAgents=3 
ServerActive=192.168.15.203 
Hostname=192.168.15.204 
Timeout=30 
UnsafeUserParameters=1Server端添加监控:

#12、Server端添加监控: 
#关联模板
#添加完成之后,确认状态如下: 
#Zabbix server 可以同时配置主动模式和被动模式的代理服务器

#13、监控结果:

#14、主动模式监控tomcat 
#在zabbix 控制台指定主机添加jmx监控 
#部署tomcat服务 
#关联模板:
#验证tomcat 监控数据

#15、导入自定义模板 
#验证tomcat 监控数据
java \ 
-Dcom.sun.management.jmxremote \ 
-Dcom.sun.management.jmxremote.port=12345 \ 
-Dcom.sun.management.jmxremote.authenticate=false \ 
-Dcom.sun.management.jmxremote.ssl=false