一、環(huán)境描述
按照上圖部署搭建環(huán)境,要求實(shí)現(xiàn)下述目標(biāo):
1旺隙、zabbix 通過jmx接口監(jiān)控tomcat绒极;
2、在zabbix server上添加自動郵件報(bào)警蔬捷;
3垄提、接著結(jié)合腳本監(jiān)控對應(yīng)agent的服務(wù)進(jìn)程及端口;
4周拐、在zabbix server上添加相應(yīng)的web監(jiān)測铡俐;
二、環(huán)境部署
1妥粟、搭建zabbix server服務(wù)器
- 編譯安裝zabbix server服務(wù)
獲取zabbix server的源碼包并復(fù)制保存到/usr/local/src目錄下后解壓縮創(chuàng)建相應(yīng)的軟鏈接:
[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
安裝數(shù)據(jù)庫:
[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文件中添加環(huán)境變量:
[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 #命令若執(zhí)行成功审丘,說明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> *
***********************************************************
#如無編譯無報(bào)錯(cuò),則應(yīng)出現(xiàn)上述提示
[root@zabbix-server zabbix-3.0.18]# make install
將zabbix的數(shù)據(jù)庫模板按順序?qū)霐?shù)據(jù)庫:
[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
復(fù)制啟動腳本到/etc/init.d/目錄下并更改相應(yīng)的配置:
[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選項(xiàng)指定zabbix_server的配置文件路徑勾给,默認(rèn)為/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
#創(chuàng)建zabbix目錄
[root@zabbix-server ~]# mkdir /var/www/html/zabbix
#復(fù)制zabbix相關(guān)的php文件到指定目錄
[root@zabbix-server ~]# cp -a /usr/local/src/zabbix-3.0.18/frontends/php/* /var/www/html/zabbix/
安裝httpd的相關(guān)依賴包:
[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
#找到相關(guān)配置并修改配置為如下
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
啟動httpd服務(wù):
[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 #啟動多少個(gè)進(jìn)程輪訓(xùn)java, 要和java 應(yīng)用保持一定關(guān)系
TIMEOUT=30
啟動zabbix_java服務(wù):
[root@zabbix-server ~]# /usr/local/zabbix/sbin/zabbix_java/startup.sh
#此處有可能會未知的名稱或服務(wù)的錯(cuò)誤播急,需要在/etc/hosts添加指定的未知域名的解析來解決該報(bào)錯(cuò)
配置zabbix_server調(diào)用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 #啟動多少個(gè)進(jìn)程去輪訓(xùn) java gateway脓钾, 要和java gateway的配置一致
重啟zabbix_server服務(wù):
[root@zabbix-server ~]# /etc/init.d/zabbix_server restart
Restarting zabbix_server (via systemctl): [ 確定 ]
2、搭建tomcat服務(wù)器
安裝tomcat服務(wù):
#事先主備好相應(yīng)的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 #啟動遠(yuǎn)程監(jiān)控JMX
-Dcom.sun.management.jmxremote.port=12345 #默認(rèn)啟動的JMX端口號可训, 要和zabbix添加主機(jī)
時(shí)候的端口一致即可
-Dcom.sun.management.jmxremote.authenticate=false #不使用用戶名密碼
-Dcom.sun.management.jmxremote.ssl=false #不使用ssl認(rèn)證
-Djava.rmi.server.hostname=192.168.0.84" #tomcat主機(jī)自己的IP地址
安裝jdk環(huán)境:
#事先準(zhǔn)備好相應(yīng)的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’
#添加環(huán)境變量
[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服務(wù):
[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
復(fù)制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服務(wù):
[root@tomcat zabbix-3.0.18]# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl): [ OK ]
3、搭建nginx服務(wù)器
安裝nginx服務(wù):
[root@nginx ~]# yum install -y epel-release
[root@nginx ~]# yum install -y nginx
創(chuàng)建test頁面:
[root@nginx ~]# vim /usr/share/nginx/html/test.html
<h1>This is a test page</h1>
啟動nginx服務(wù):
[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
復(fù)制zabbix_agent的啟動進(jìn)程到/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 ]
三握截、監(jiān)控設(shè)置
1飞崖、添加監(jiān)控主機(jī)
登錄zabbix server的web管理頁面,添加相應(yīng)的nginx和tomcat hosts川蒙,添加完成后其配置狀態(tài)應(yīng)如下圖所示:
其中tomcat主機(jī)因配置了jmx監(jiān)控蚜厉,所以調(diào)用了jmx模板后,其JMX的連接性會顯示為綠色畜眨。
2昼牛、編輯創(chuàng)建腳本監(jiān)控指定的服務(wù)進(jìn)程和端口
首先對應(yīng)的agent主機(jī)的/usr/local/zabbix/etc/zabbix_agentd.conf.d目錄下編輯創(chuàng)建如下腳本:
[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
然后在此目錄下創(chuàng)建zabbix agent的監(jiān)控配置模板文件:
[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 #調(diào)用自定義的監(jiān)控配置模板文件
重啟zabbix_agent服務(wù)
[root@nginx zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd restart
Restarting zabbix_agentd (via systemctl): [ OK ]
因?yàn)閦abbix_agent進(jìn)程的運(yùn)行用戶是zabbix,而zabbix用戶本身是沒有執(zhí)行相關(guān)系統(tǒng)管理命令的權(quán)限的康聂,為了能夠讓zabbix用戶能夠運(yùn)行我們編輯的監(jiān)控腳本贰健,我們需要修改其相關(guān)的執(zhí)行權(quán)限:
[root@nginx zabbix_agentd.conf.d]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD:ALL #此處的執(zhí)行權(quán)限不一定為ALL,管理員可對用戶的命令執(zhí)行權(quán)限進(jìn)行細(xì)化定義
接著在zabbix server創(chuàng)建對應(yīng)的監(jiān)控模板:
然后創(chuàng)建對應(yīng)的監(jiān)控項(xiàng):
這里設(shè)置的key值恬汁,就用于傳遞參數(shù)給剛才在zabbix_agent創(chuàng)建的process_port_check.sh腳本伶椿。port和80分別對應(yīng)$1,$2。
接著創(chuàng)建相關(guān)監(jiān)控項(xiàng)的對應(yīng)圖表
這里可以把兩個(gè)監(jiān)控項(xiàng)做成一個(gè)圖表進(jìn)行輸出顯示氓侧, 也可以分開兩個(gè)圖表來進(jìn)行輸出顯示脊另。
還可以設(shè)置相應(yīng)的觸發(fā)器進(jìn)行報(bào)警操作:
最后在對應(yīng)的host主機(jī)上調(diào)用相應(yīng)的監(jiān)控模板即可:
等待一段時(shí)間后,就會有相關(guān)的數(shù)據(jù)顯示约巷。
3偎痛、設(shè)置web監(jiān)測
另外zabbix本身支持web監(jiān)測,能監(jiān)控指定URL的狀態(tài)独郎,包括訪問速度踩麦、響應(yīng)時(shí)間等等。這里我們就來嘗試監(jiān)控nginx的test.html頁面氓癌。
首先點(diǎn)擊進(jìn)入相應(yīng)的web監(jiān)測創(chuàng)建頁面:
接著點(diǎn)擊右上角的創(chuàng)建:
在web監(jiān)測配置頁面谓谦,配置好相應(yīng)的名字及應(yīng)用集之后,點(diǎn)擊steps:
在steps添加一個(gè)新步驟:
添加該步驟的名字贪婉、需要監(jiān)測的URL反粥、監(jiān)測超時(shí)時(shí)長以及要求返回的狀態(tài)碼,最后點(diǎn)擊Add保存退出疲迂。
最后在監(jiān)控菜單即可查看到指定的URL的監(jiān)測狀態(tài):
4星压、設(shè)置郵件報(bào)警
在給相應(yīng)的監(jiān)控項(xiàng)設(shè)置郵件報(bào)警前,我們要在zabbix server上添加相應(yīng)的郵件媒介:
此處我使用QQ郵件服務(wù)器來測試鬼譬。
添加完郵件媒介后娜膘,還需要在對應(yīng)的管理員賬號中調(diào)用此郵件媒介:
添加完用戶的郵件媒介后,還需要在配置的動作Actions中配置添加郵件報(bào)警的動作:
接著我們可以手動關(guān)閉nginx服務(wù)器的nginx服務(wù)优质,來觸發(fā)相應(yīng)的報(bào)警器竣贪,然后看看能否收到相應(yīng)的報(bào)警郵件军洼。
[root@nginx zabbix_agentd.conf.d]# systemctl stop nginx
此時(shí)重新恢復(fù)nginx服務(wù),也能收到一個(gè)恢復(fù)通知郵件演怎。