CentOS 7.7 Zabbix 4.0 LTS基於密碼認證的JMX自定義監控JVM參數

1、相關概念簡介:php

一、JMXJava Management ExtensionsJava管理擴展,是一個爲應用程序、設備、系統等植入管理功能的框架。JMX能夠跨越一系列異構操做系統平臺、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用。前端

二、JVMJava Virtual MachineJava虛擬機,是一種用於計算設備的規範,是一個虛構出來的計算機,經過在實際的計算機上仿真模擬各類計算機功能來實現的。java

三、jconsoleJava Monitoring and Management Console,是一種基於JMX之上的JVM可視化監控、管理工具,主要監控JVM的概覽、內存、線程、類、VM概要和MBean等內容,以圖表化的形式顯示各類數據。mysql


2、準備工做:linux

一、演示環境:web

IPsql

OS數據庫

部署軟件apache

192.168.0.100vim

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

二、Zabbix版本選擇:https://www.zabbix.com/life_cycle_and_release_policy

image.png

備註:建議選擇LTSLong Term Support,長期支持)版本

三、相關網址:

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

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

四、修hosts配置文件:

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

備註:centos7爲主機名

五、配置epel源:

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

六、配置Zabbixyum源:

# 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

七、搭建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


3、部署Zabbix ServerZabbix Web

一、部署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

二、部署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

三、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


4、部署Tomcat

一、安裝JDK

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

# cd /usr/local

# ln -sv jdk1.8.0_241/ jdk

二、配置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

三、解壓Tomcat

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

# cd /usr/local

# ln -sv apache-tomcat-8.5.51/ tomcat

四、配置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

五、啓動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

六、配置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

七、瀏覽器訪問http://192.168.0.120:8080

image.png


5、經過JMX監控JVM

一、修改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.120Tomcat的內網IP,而非Zabbix ServerIP,若是須要外網訪問,此處應該填寫Tomcat的公網IP或域名

(3)-Dcom.sun.management.jmxremote.port=12345JMX默認對外端口號,是Zabbix Server監控時填寫的端口號,也是jconsole使用時的端口號

(4)-Dcom.sun.management.jmxremote.rmi.port=12345RMI端口號,配置成和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應用程序使用

二、準備jmxremote.passwordjmxremote.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

三、重啓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

四、配置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

五、Windows 10安裝JDK,並配置環境變量

六、Windows 10打開jconsole,鏈接遠程JVM

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png


6、安裝配置Zabbix Java GatewayZabbix Server

一、安裝Zabbix Java Gateway# yum -y install zabbix-java-gateway

二、修改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

三、啓動Zabbix Java Gateway,並配置開機自啓:

# systemctl start zabbix-java-gateway

# systemctl status zabbix-java-gateway

# ss -tunlp | grep -w :10052

# systemctl enable zabbix-java-gateway

四、修改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的值


7、配置Zabbix Web,自定義監控JVM參數:

一、Zabbix Web添加JMX監控接口:

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

image.png

image.png

說明:IPZabbix Java Gateway所部署服務器的IP,端口爲Tomcat中配置的JMX遠程端口

二、自定義監控項:

Items --> Create item --> Add

(1)Keyjmx["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)Keyjmx["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)Keyjmx["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

三、查看最新監控數據:

Monitoring --> Latest data --> Apply

image.png

相關文章
相關標籤/搜索