一、環境描述
按照上圖部署搭建環境,要求實現下述目標:
1、zabbix 通過jmx接口監控tomcat;
2、在zabbix server上添加自動郵件報警;
3、接著結合腳本監控對應agent的服務進程及端口;
4、在zabbix server上添加相應的web監測;
二、環境部署
1、搭建zabbix server服務器
- 編譯安裝zabbix server服務
獲取zabbix server的源碼包并復制保存到/usr/local/src目錄下后解壓縮創建相應的軟鏈接:
[root@zabbix-server ~]# tar xf /usr/local/src/zabbix-3.0.18.tar.gz -C /usr/local/src/
安裝依賴包:
[root@zabbix-server ~]# yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel -y
安裝數據庫:
[root@zabbix-server ~]# yum install -y mariadb-server
[root@zabbix-server ~]# systemctl restart mariadb
[root@zabbix-server ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@"192.168.0.%" identified by '123456';
Query OK, 0 rows affected (0.00 sec)
安裝jdk包:
#事先獲取jdk源碼包并放在在/usr/local/src目錄下
[root@zabbix-server ~]# cd /usr/local/src/
[root@zabbix-server src]# tar xf jdk-10.0.1_linux-x64_bin.tar.gz
[root@zabbix-server src]# ln -sv /usr/local/src/jdk-10.0.1 /usr/local/jdk
"/usr/local/jdk" -> "/usr/local/src/jdk-10.0.1"
#在/etc/profile文件中添加環境變量:
[root@zabbix-server src]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@zabbix-server src]# source /etc/profile
[root@zabbix-server src]# java -version #命令若執行成功,說明jdk已成功安裝
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
編譯安裝zabbix-server:
[root@zabbix-server ~]# cd /usr/local/src/zabbix-3.0.18
[root@zabbix-server zabbix-3.0.18]# useradd zabbix -s /sbin/nologin
[root@zabbix-server zabbix-3.0.18]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java --with-ssh2
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
#如無編譯無報錯,則應出現上述提示
[root@zabbix-server zabbix-3.0.18]# make install
將zabbix的數據庫模板按順序導入數據庫:
[root@zabbix-server zabbix-3.0.18]# mysql -uzabbix -p123456 -h192.168.0.81 zabbix < /usr/local/src/zabbix-3.0.18/database/mysql/schema.sql
[root@zabbix-server zabbix-3.0.18]# mysql -uzabbix -p123456 -h192.168.0.81 zabbix < /usr/local/src/zabbix-3.0.18/database/mysql/images.sql
[root@zabbix-server zabbix-3.0.18]# mysql -uzabbix -p123456 -h192.168.0.81 zabbix < /usr/local/src/zabbix-3.0.18/database/mysql/data.sql
復制啟動腳本到/etc/init.d/目錄下并更改相應的配置:
[root@zabbix-server zabbix-3.0.18]# cp /usr/local/src/zabbix-3.0.18/misc/init.d/fedora/core/zabbix_server /etc/init.d/
[root@zabbix-server zabbix-3.0.18]# vim /etc/init.d/zabbix_server
# Zabbix-Directory
BASEDIR=/usr/local/zabbix
......
start() {
if [ $RUNNING -eq 1 ]
then
echo "$0 $ARG: $BINARY_NAME (pid $PID) already running"
else
action $"Starting $BINARY_NAME: " $FULLPATH -c /usr/local/zabbix/etc/zabbix_server.conf #另外可以在此處用-c選項指定zabbix_server的配置文件路徑,默認為/usr/local/zabbix/etc/zabbix_server.conf
touch /var/lock/subsys/$BINARY_NAME
fi
}
......
配置zabbix_server的配置文件:
[root@zabbix-server zabbix-3.0.18]# mkdir /var/log/zabbix
[root@zabbix-server zabbix-3.0.18]# chown zabbix:zabbix /var/log/zabbix/ -R
[root@zabbix-server ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
#修改新增以下配置
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=192.168.0.81
DBName=zabbix
DBUser=zabbix
DBPassword=123456
Timeout=30
LogSlowQueries=3000
#最后啟動zabbix_server
[root@zabbix-server ~]# /etc/init.d/zabbix_server start
安裝httpd:
[root@zabbix-server ~]# yum install -y httpd
#創建zabbix目錄
[root@zabbix-server ~]# mkdir /var/www/html/zabbix
#復制zabbix相關的php文件到指定目錄
[root@zabbix-server ~]# cp -a /usr/local/src/zabbix-3.0.18/frontends/php/* /var/www/html/zabbix/
安裝httpd的相關依賴包:
[root@zabbix-server ~]# yum install php-gettext php-session php-ctype php-xmlreader php-xmlwriter php-xml php-net-socket php-gd php-mysql -y
修改/etc/php.ini文件的配置:
[root@zabbix-server ~]# vim /etc/php.ini
#找到相關配置并修改配置為如下
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
啟動httpd服務:
[root@zabbix-server ~]# systemctl start httpd
[root@zabbix-server ~]# systemctl stop firewalld
[root@zabbix-server ~]# setenforce 0
最后在訪問http://192.168.0.81/zabbix完成zabbix安裝即可。
- 安裝java gateway配置
編輯配置zabbix_java的配置腳本:
[root@zabbix-server ~]# 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=5 #啟動多少個進程輪訓java, 要和java 應用保持一定關系
TIMEOUT=30
啟動zabbix_java服務:
[root@zabbix-server ~]# /usr/local/zabbix/sbin/zabbix_java/startup.sh
#此處有可能會未知的名稱或服務的錯誤,需要在/etc/hosts添加指定的未知域名的解析來解決該報錯
配置zabbix_server調用zabbix_java作為java gateway:
[root@zabbix-server ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
JavaGateway=192.168.0.81 #配置java gateway的Ip地址
JavaGatewayPort=10052
StartJavaPollers=5 #啟動多少個進程去輪訓 java gateway, 要和java gateway的配置一致
重啟zabbix_server服務:
[root@zabbix-server ~]# /etc/init.d/zabbix_server restart
Restarting zabbix_server (via systemctl): [ 確定 ]
2、搭建tomcat服務器
安裝tomcat服務:
#事先主備好相應的tomcat包,存放在/usr/local/src目錄下
[root@tomcat src]# tar xf apache-tomcat-7.0.88.tar.gz
[root@tomcat src]# ln -sv /usr/local/src/apache-tomcat-7.0.88 /usr/local/tomcat
‘/usr/local/tomcat’ -> ‘/usr/local/src/apache-tomcat-7.0.88’
#編輯tomcat的啟動腳本
[root@tomcat src]# vim /usr/local/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=192.168.0.84" #tomcat主機自己的IP地址
安裝jdk環境:
#事先準備好相應的jdk包,存放在/usr/local/src/目錄下
[root@tomcat src]# tar xf jdk-10.0.1_linux-x64_bin.tar.gz
[root@tomcat src]# ln -sv /usr/local/src/jdk-10.0.1 /usr/local/jdk
‘/usr/local/jdk’ -> ‘/usr/local/src/jdk-10.0.1’
#添加環境變量
[root@tomcat src]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/usr/local/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
[root@tomcat src]# source /etc/profile
啟動tomcat服務:
[root@tomcat src]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat src]# systemctl stop firewalld
[root@tomcat src]# setenforce 0
安裝zabbix_agent:
[root@tomcat src]# cd zabbix-3.0.18
[root@tomcat zabbix-3.0.18]# useradd zabbix -s /sbin/nologin
[root@tomcat zabbix-3.0.18]# yum install -y gcc
[root@tomcat zabbix-3.0.18]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@tomcat zabbix-3.0.18]# make install
編輯zabbix_agent配置文件:
[root@tomcat zabbix-3.0.18]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.0.81
ServerActive=127.0.0.1
Hostname=192.168.0.84
Timeout=30
UnsafeUserParameters=1
復制zabbix_agent的啟動程序到/etc/init.d目錄下編輯其配置:
[root@tomcat zabbix-3.0.18]# cp /usr/local/src/zabbix-3.0.18/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@tomcat zabbix-3.0.18]# vim /etc/init.d/zabbix_agentd
# Zabbix-Directory
BASEDIR=/usr/local/zabbix
啟動zabbix_agent服務:
[root@tomcat zabbix-3.0.18]# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl): [ OK ]
3、搭建nginx服務器
安裝nginx服務:
[root@nginx ~]# yum install -y epel-release
[root@nginx ~]# yum install -y nginx
創建test頁面:
[root@nginx ~]# vim /usr/share/nginx/html/test.html
<h1>This is a test page</h1>
啟動nginx服務:
[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl stop firewalld
[root@nginx ~]# setenforce 0
安裝zabbix_agent:
[root@nginx src]# tar xf zabbix-3.0.18.tar.gz
[root@nginx src]# cd zabbix-3.0.18
[root@nginx zabbix-3.0.18]# yum install -y gcc
[root@nginx zabbix-3.0.18]# useradd zabbix -s /sbin/nologin
[root@nginx zabbix-3.0.18]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@nginx zabbix-3.0.18]# make install
編輯zabbix_agent配置文件:
[root@nginx zabbix-3.0.18]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.0.81
ServerActive=127.0.0.1
Hostname=192.168.0.83
Timeout=30
復制zabbix_agent的啟動進程到/etc/init.d/目錄下并修改啟動:
[root@nginx zabbix-3.0.18]# cp /usr/local/src/zabbix-3.0.18/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@nginx zabbix-3.0.18]# vim /etc/init.d/zabbix_agentd
# Zabbix-Directory
BASEDIR=/usr/local/zabbix
[root@nginx zabbix-3.0.18]# /etc/init.d/zabbix_agentd start
Reloading systemd: [ OK ]
Starting zabbix_agentd (via systemctl): [ OK ]
三、監控設置
1、添加監控主機
登錄zabbix server的web管理頁面,添加相應的nginx和tomcat hosts,添加完成后其配置狀態應如下圖所示:
其中tomcat主機因配置了jmx監控,所以調用了jmx模板后,其JMX的連接性會顯示為綠色。
2、編輯創建腳本監控指定的服務進程和端口
首先對應的agent主機的/usr/local/zabbix/etc/zabbix_agentd.conf.d目錄下編輯創建如下腳本:
[root@nginx zabbix_agentd.conf.d]# vim process_port_check.sh
#!/bin/bash
check_process() {
NUM=`ps -ef | grep ${NAME} | grep -v grep | wc -l`
if [ $NUM -eq 0 ]; then
echo 60
else
echo 10
fi
}
check_port() {
ss -tnl | grep -v grep | grep ${PORT} &>/dev/null
if [ $? -eq 0 ] ;then
echo 20
else
echo 70
fi
}
main() {
case $1 in
process)
NAME=$2
check_process;
;;
port)
PORT=$2
check_port;
;;
esac
}
main $1 $2
[root@nginx zabbix_agentd.conf.d]# chmod +x process_port_check.sh
然后在此目錄下創建zabbix agent的監控配置模板文件:
[root@nginx zabbix_agentd.conf.d]# vim process_port.conf
UserParameter=process_port[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/process_port_check.sh "$1" "$2"
然后編輯zabbix_agent的配置文件:
[root@nginx zabbix_agentd.conf.d]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #調用自定義的監控配置模板文件
重啟zabbix_agent服務
[root@nginx zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd restart
Restarting zabbix_agentd (via systemctl): [ OK ]
因為zabbix_agent進程的運行用戶是zabbix,而zabbix用戶本身是沒有執行相關系統管理命令的權限的,為了能夠讓zabbix用戶能夠運行我們編輯的監控腳本,我們需要修改其相關的執行權限:
[root@nginx zabbix_agentd.conf.d]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD:ALL #此處的執行權限不一定為ALL,管理員可對用戶的命令執行權限進行細化定義
接著在zabbix server創建對應的監控模板:
然后創建對應的監控項:
這里設置的key值,就用于傳遞參數給剛才在zabbix_agent創建的process_port_check.sh腳本。port和80分別對應$1,$2。
接著創建相關監控項的對應圖表
這里可以把兩個監控項做成一個圖表進行輸出顯示, 也可以分開兩個圖表來進行輸出顯示。
還可以設置相應的觸發器進行報警操作:
最后在對應的host主機上調用相應的監控模板即可:
等待一段時間后,就會有相關的數據顯示。
3、設置web監測
另外zabbix本身支持web監測,能監控指定URL的狀態,包括訪問速度、響應時間等等。這里我們就來嘗試監控nginx的test.html頁面。
首先點擊進入相應的web監測創建頁面:
接著點擊右上角的創建:
在web監測配置頁面,配置好相應的名字及應用集之后,點擊steps:
在steps添加一個新步驟:
添加該步驟的名字、需要監測的URL、監測超時時長以及要求返回的狀態碼,最后點擊Add保存退出。
最后在監控菜單即可查看到指定的URL的監測狀態:
4、設置郵件報警
在給相應的監控項設置郵件報警前,我們要在zabbix server上添加相應的郵件媒介:
此處我使用QQ郵件服務器來測試。
添加完郵件媒介后,還需要在對應的管理員賬號中調用此郵件媒介:
添加完用戶的郵件媒介后,還需要在配置的動作Actions中配置添加郵件報警的動作:
接著我們可以手動關閉nginx服務器的nginx服務,來觸發相應的報警器,然后看看能否收到相應的報警郵件。
[root@nginx zabbix_agentd.conf.d]# systemctl stop nginx
此時重新恢復nginx服務,也能收到一個恢復通知郵件。