搭建zabbix监控系统详解

一、相关概念简介:

1、JMX:Java Management Extensions,Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

2、JVM:Java Virtual Machine,Java虚拟机,是一种用于计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。

3、jconsole:Java Monitoring and Management Console,是一种基于JMX之上的JVM可视化监控、管理工具,主要监控JVM的概览、内存、线程、类、VM概要和MBean等内容,以图表化的形式显示各种数据。

 

二、准备工作:

1、演示环境:

IP

OS

部署软件

192.168.0.100

Windows 10

jdk-8u241-windows-x64.exe

192.168.0.120

CentOS 7.7

jdk-8u241-linux-x64.tar.gz

apache-tomcat-8.5.51.tar.gz

Zabbix Server、Zabbix Database

Zabbix Web、Zabbix Java Gateway

2、Zabbix版本选择:https://www.zabbix.com/life_cycle_and_release_policy

image.png

备注:建议选择LTSLong Term Support,长期支持)版本

3、相关网址:

(1)Zabbix下载地址:https://www.zabbix.com/download/

(2)Zabbix 4.0 LTS中文产品手册:https://www.zabbix.com/documentation/4.0/zh/manual

4、修改hosts配置文件:

# vim /etc/hosts,新增代码:192.168.0.120  centos7

备注:centos7为主机名

5、配置epel源:

# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm 或 # yum -y install epel-release

6、配置Zabbix的yum源:

# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

# rpm -ql zabbix-release

# cat /dev/null > /etc/yum.repos.d/zabbix.repo

# vim /etc/yum.repos.d/zabbix.repo

[aliyun-zabbix]

name=Aliyun Zabbix Repository - $basearch

baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

 

[aliyun-zabbix-non-supported]

name=Aliyun Zabbix Repository non-supported - $basearch

baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

7、搭建LAMP环境:

说明:Zabbix Web依赖于LAMP环境,安装zabbix-web-mysql4.0.17)软件包时默认会自动安装httpd2.4.6)、zabbix-web4.0.17)等相关软件包,此处使用yum方式安装PHP 7.2版本。CentOS 7.7MariaDB的版本为5.5.64,版本较低,升级为MariaDB 10.4版本后在导入create.sql文件时会提示“ERROR 1118 (42000) at line 1278: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.”,所以Zabbix Database使用MySQL 5.7。此处不单独安装httpd,并将Zabbix DatabaseZabbix ServerZabbix Web都部署在同一个节点上,实际生产环境中可以分开部署。

(1)安装配置MySQL 5.7:

a、查看系统中是否已经存在MariaDB:

# rpm -qa | grep -i mariadb --> mariadb-libs-5.5.64-1.el7.x86_64

# yum -y remove mariadb-libs

b、安装mysql57-community-release-el7.rpm:

# rpm -ivh http://repo.mysql.com/mysql57-community-release-el7.rpm

备注:安装后会在/etc/yum.repos.d目录中生成mysql-community-source.repomysql-community.repo

c、安装MySQL 5.7相关软件包:

# yum list all | grep mysql-community

# yum -y install mysql-community-client mysql-community-common mysql-community-devel mysql-community-libs mysql-community-libs-compat mysql-community-server mysql-community-test

d、初始化MySQL 5.7:# mysqld --initialize --user=mysql --datadir=/var/lib/mysql

备注:初始化之前确保/var/lib/mysql目录为空

e、修改my.cnf配置文件:

# mv /etc/my.cnf /etc/my.cnf.bak

# vim /etc/my.cnf

[mysqld]

port=3306

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

datadir=/var/lib/mysql

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

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

lower_case_table_names=1

character_set_server=utf8mb4

collation_server=utf8mb4_general_ci

innodb_file_per_table=1

skip_name_resolve=1

slow_query_log=1

slow_query_log_file=mysql-slow.log

symbolic-links=0

explicit_defaults_for_timestamp=1

server_id=1

sync_binlog=1

innodb_flush_log_at_trx_commit=1

log_bin=mysql-bin

log_bin_index=mysql-bin.index

binlog_format=row

f、启动MySQL:

# systemctl start mysqld

# systemctl status mysqld

# ps aux | grep mysqld

# ss -tunlp | grep -w :3306

# tail -100 /var/log/mysqld.log

g、配置开机自启:# systemctl enable mysqld

h、查看root@localhost用户的初始密码:# grep password /var/log/mysqld.log

i、配置安全向导:# mysql_secure_installation

j、登录MySQL:# mysql -uroot -p

image.png

(2)安装配置PHP 7.2:

a、安装webtatic-release.rpm:# rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

b、安装PHP 7.2相关软件包:

# yum list all | grep php

# yum -y install mod_php72w php72w-cli php72w-common php72w-devel php72w-fpm php72w-gd php72w-ldap php72w-mbstring php72w-mysqlnd php72w-opcache php72w-xml

c、查看PHP版本:# php -version

image.png

 

三、部署Zabbix Server和Zabbix Web:

1、部署Zabbix Server:

(1)安装zabbix-server-mysql软件包:# yum -y install zabbix-server-mysql

(2)查看Zabbix Server版本:# zabbix_server -V

image.png

(3)创建数据库和用户:

# mysql -uroot -p

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> create user 'zbxuser'@'localhost' identified by '123456';

mysql> grant all on zabbix.* to 'zbxuser'@'localhost';

mysql> flush privileges;

(4)导入create.sql文件,初始化zabbix数据库:

# zcat /usr/share/doc/zabbix-server-mysql-4.0.17/create.sql.gz | mysql -uzbxuser -p zabbix

(5)检查zabbix数据库中是否创建了表:

# mysql -uzbxuser -p -e 'use zabbix; show tables;' 2> /dev/null | wc -l

(6)修改zabbix_server.conf配置文件:

# rpm -ql zabbix-server-mysql

# cd /etc/zabbix

# cp zabbix_server.conf{,.bak}

# vim zabbix_server.conf

修改前

修改后

# ListenPort=10051

ListenPort=10051

# LogType=file

LogType=file

LogFile=/var/log/zabbix/zabbix_server.log

保持默认

LogFileSize=0

保持默认

PidFile=/var/run/zabbix/zabbix_server.pid

保持默认

# DBHost=localhost

DBHost=localhost

DBName=zabbix

保持默认

DBUser=zabbix

DBUser=zbxuser

# DBPassword=

DBPassword=123456

# DBSocket=

DBSocket=/var/lib/mysql/mysql.sock

# DBPort=

DBPort=3306

# ListenIP=127.0.0.1

ListenIP=127.0.0.1

AlertScriptsPath=/usr/lib/zabbix/alertscripts

保持默认

ExternalScripts=/usr/lib/zabbix/externalscripts

保持默认

# FpingLocation=/usr/sbin/fping

FpingLocation=/usr/sbin/fping

# AllowRoot=0

AllowRoot=0

# User=zabbix

User=zabbix

 (7)启动Zabbix Server:

# systemctl start zabbix-server

# systemctl status zabbix-server

# ps aux | grep zabbix_server

# ss -tunlp | grep -w 10051

# tail -100 /var/log/zabbix/zabbix_server.log

(8)配置开机自启:# systemctl enable zabbix-server

2、部署Zabbix Web:

(1)安装zabbix-web-mysql软件包:# yum -y install zabbix-web-mysql

(2)修改httpd.conf配置文件:

# vim /etc/httpd/conf/httpd.conf

修改前

修改后

#ServerName   www.example.com:80

ServerName   192.168.0.120:80

 (3)启动httpd:

# systemctl start httpd

# systemctl status httpd

# ps aux | grep httpd

# ss -tunlp | grep -w :80

(4)配置开机自启:# systemctl enable httpd

(5)配置CentOS 7.7 Firewall防火墙:

a、查看防火墙状态:# systemctl status firewalld  # firewall-cmd --state

b、查看防火墙规则:# firewall-cmd --list-all

c、查看防火墙开放端口:# firewall-cmd --list-ports

d、查看80端口是否开放:# firewall-cmd --query-port=80/tcp

e、开放80端口:# firewall-cmd --permanent --add-port=80/tcp

f、重载防火墙规则:# firewall-cmd --reload

备注:

Ø   关闭防火墙:# systemctl stop firewalld

Ø   关闭80端口:# firewall-cmd --permanent --remove-port=80/tcp

(6)浏览器访问http://192.168.0.120/zabbix

image.png

image.png

说明:/etc/httpd/conf.d/zabbix.conf配置文件中已针对PHP 5.4优化,但目前安装的是PHP 7.2,需要修改/etc/php.ini配置文件,Zabbix相关PHP网页全存放在/usr/share/zabbix目录下

image.png

# 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 = Asia/Shanghai

重启httpd:# systemctl restart httpd

刷新网页,必须所有的检查项都为“OK”才能继续:

image.png

image.png

image.png

image.png

image.png

安装后生成的配置文件:/etc/zabbix/web/zabbix.conf.php

image.png

登录Zabbix Web,用户名Admin,密码zabbix

image.png

image.png

3、Zabbix Web简单配置:

(1)修改Admin用户默认密码:

Administration --> Users --> Admin --> Change password --> 输入2次新密码root@1234 --> Update

image.png

image.png

新密码:root@1234

image.png

退出重新登录

(2)禁用Guests用户组:

Administration --> User groups --> 勾选Guests --> Disable

image.png

image.png

(3)修改刷新不支持项的时间间隔:

Administration --> General --> Other --> Refresh unsupported items默认10m修改为30s --> Update

image.png

(4)调整每页显示的行数,默认为50行:

右上角Adminimage.png--> User --> Rows per page --> Update

image.png

(5)开启前端消息声音:

右上角Adminimage.png--> Messaging --> Frontend messaging --> Update

image.png

 

四、部署Tomcat:

1、安装JDK:

# tar -xf jdk-8u241-linux-x64.tar.gz -C /usr/local

# cd /usr/local

# ln -sv jdk1.8.0_241/ jdk

2、配置JDK环境变量:

# vim /etc/profile.d/jdk.sh

export JAVA_HOME=/usr/local/jdk

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

# . /etc/profile.d/jdk.sh

# echo $JAVA_HOME

image.png

# java -version

image.png

3、解压Tomcat:

# tar -xf apache-tomcat-8.5.51.tar.gz -C /usr/local

# cd /usr/local

# ln -sv apache-tomcat-8.5.51/ tomcat

4、配置Tomcat环境变量:

# vim /etc/profile.d/tomcat.sh

export CATALINA_HOME=/usr/local/tomcat

export PATH=$CATALINA_HOME/bin:$PATH

export JAVA_HOME=/usr/local/jdk

export JRE_HOME=$JAVA_HOME/jre

# . /etc/profile.d/tomcat.sh

# echo $CATALINA_HOME

image.png

# catalina.sh version

image.png

5、启动Tomcat:

# useradd tomcat

# chown -R tomcat.tomcat /usr/local/apache-tomcat-8.5.51

# su - tomcat -c "startup.sh"

# ss -tunlp | grep 8080

# ps -ef | grep tomcat

6、配置CentOS 7.7 Firewall防火墙:

(1)查看8080端口是否开放:# firewall-cmd --query-port=8080/tcp

(2)开放8080端口:# firewall-cmd --permanent --add-port=8080/tcp

(3)重载防火墙规则:# firewall-cmd --reload

(4)查看防火墙开放端口:# firewall-cmd --list-ports

7、浏览器访问http://192.168.0.120:8080

image.png

 

五、通过JMX监控JVM:

1、修改catalina.sh脚本文件:

# vim /usr/local/tomcat/bin/catalina.sh,在首行#!/bin/sh下方新增如下代码:

CATALINA_OPTS="$CATALINA_OPTS -server -Xms2048m -Xmx2048m \

-Dcom.sun.management.jmxremote \

-Djava.rmi.server.hostname=192.168.0.120 \

-Dcom.sun.management.jmxremote.port=12345 \

-Dcom.sun.management.jmxremote.rmi.port=12345 \

-Dcom.sun.management.jmxremote.ssl=false \

-Dcom.sun.management.jmxremote.authenticate=true \

-Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat/conf/jmxremote.password \

-Dcom.sun.management.jmxremote.access.file=/usr/local/tomcat/conf/jmxremote.access"

说明:

(1)-Dcom.sun.management.jmxremote:启用远程监控JVM

(2)-Djava.rmi.server.hostname=192.168.0.120:Tomcat的内网IP,而非Zabbix Server的IP,如果需要外网访问,此处应该填写Tomcat的公网IP或域名

(3)-Dcom.sun.management.jmxremote.port=12345:JMX默认对外端口号,是Zabbix Server监控时填写的端口号,也是jconsole使用时的端口号

(4)-Dcom.sun.management.jmxremote.rmi.port=12345:RMI端口号,配置成和JMX相同的端口号,这样只需要在防火墙中开放JMX一个端口号即可,否则每次重启Tomcat,都会随机分配RMI端口号,对于配置防火墙非常不便

(5)-Dcom.sun.management.jmxremote.ssl=false:不使用SSL认证

(6)-Dcom.sun.management.jmxremote.authenticate=true:使用用户名密码认证

(7)-Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat/conf/jmxremote.password:用于远程监控JVM的密码文件

(8)-Dcom.sun.management.jmxremote.access.file=/usr/local/tomcat/conf/jmxremote.access:用于远程监控JVM的默认访问控制文件

(9)CATALINA_OPTSJAVA_OPTS的区别:

a、CATALINA_OPTS:只被Tomcat使用

b、JAVA_OPTS:被所有Java应用程序使用

2、准备jmxremote.password和jmxremote.access配置文件:

# cd /usr/local/jdk/jre/lib/management

# cp -a jmxremote.access /usr/local/tomcat/conf

# cp -a jmxremote.password.template /usr/local/tomcat/conf/jmxremote.password

# chown -R tomcat.tomcat /usr/local/apache-tomcat-8.5.51

# cd /usr/local/tomcat/conf

# chmod 0600 jmxremote.access jmxremote.password

# vim jmxremote.access

修改前

修改后

controlRole   readwrite \

root   readwrite \

image.png

备注:

(1)readonly:只读

(2)readwrite:可读可写

# vim jmxremote.password,在末尾# controlRole   R&D下方新增代码:root   root@1234

3、重启Tomcat:

# shutdown.sh

# configtest.sh

# chown -R tomcat.tomcat /usr/local/apache-tomcat-8.5.51

# su - tomcat -c "startup.sh"

# ss -tunlp | grep -w :12345

4、配置CentOS 7.7 Firewall防火墙:

(1)查看12345端口是否开放:# firewall-cmd --query-port=12345/tcp

(2)开放12345端口:# firewall-cmd --permanent --add-port=12345/tcp

(3)重载防火墙规则:# firewall-cmd --reload

(4)查看防火墙开放端口:# firewall-cmd --list-ports

5、Windows 10安装JDK,并配置环境变量

6、Windows 10打开jconsole,连接远程JVM:

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

 

六、安装配置Zabbix Java Gateway和Zabbix Server:

1、安装Zabbix Java Gateway:# yum -y install zabbix-java-gateway

2、修改zabbix_java_gateway.conf配置文件:

# cd /etc/zabbix

# cp zabbix_java_gateway.conf{,.bak}

# vim zabbix_java_gateway.conf

修改前

修改后

# LISTEN_IP="0.0.0.0"

LISTEN_IP="127.0.0.1"

# LISTEN_PORT=10052

LISTEN_PORT=10052

# START_POLLERS=5

START_POLLERS=5

# TIMEOUT=3

TIMEOUT=10

3、启动Zabbix Java Gateway,并配置开机自启:

# systemctl start zabbix-java-gateway

# systemctl status zabbix-java-gateway

# ss -tunlp | grep -w :10052

# systemctl enable zabbix-java-gateway

4、修改zabbix_server.conf配置文件,并重启Zabbix Server:

# vim /etc/zabbix/zabbix_server.conf

修改前

修改后

# JavaGateway=

JavaGateway=127.0.0.1

# JavaGatewayPort=10052

JavaGatewayPort=10052

# StartJavaPollers=0

StartJavaPollers=5

# systemctl restart zabbix-server

备注:StartJavaPollers的值要小于等于START_POLLERS的值

 

七、配置Zabbix Web,自定义监控JVM参数:

1、Zabbix Web添加JMX监控接口:

Configuration --> Hosts --> Zabbix server --> 新增JMX监控接口 --> Update

image.png

image.png

说明:IPZabbix Java Gateway所部署服务器的IP,端口为Tomcat中配置的JMX远程端口

2、自定义监控项:

Items --> Create item --> Add

(1)Key:jmx["Catalina:type=Connector,port=8080",maxThreads]

image.png

image.png

备注:

a、只有添加了监控模板或监控项,JMX监控状态才会变绿

b、Key的格式:jmx["object_name",attribute_name]

object_nameCatalina:type=Connector,port=8080

image.png

attribute_namemaxThreads

image.png

(2)Key:jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",maxConnections]

image.png

object_nameCatalina:type=ThreadPool,name="http-nio-8080"

image.png

attribute_namemaxConnections

image.png

(3)Key:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Type]

image.png

object_namejava.lang:type=MemoryPool,name=PS Eden Space

image.png

attribute_nameType

image.png

3、查看最新监控数据:

Monitoring --> Latest data --> Apply

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值