結(jié)合腳本監(jiān)控和郵件報警等實現(xiàn)zabbix監(jiān)控tomcat和nginx

一、環(huán)境描述

部署拓撲圖

按照上圖部署搭建環(huán)境,要求實現(xiàn)下述目標:
1、zabbix 通過jmx接口監(jiān)控tomcat;
2、在zabbix server上添加自動郵件報警;
3、接著結(jié)合腳本監(jiān)控對應(yīng)agent的服務(wù)進程及端口;
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>                    *
***********************************************************
#如無編譯無報錯,則應(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選項指定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
#創(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  #啟動多少個進程輪訓(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ù)的錯誤,需要在/etc/hosts添加指定的未知域名的解析來解決該報錯

配置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  #啟動多少個進程去輪訓(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  #啟動遠程監(jiān)控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環(huá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的啟動進程到/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)控主機

登錄zabbix server的web管理頁面,添加相應(yīng)的nginx和tomcat hosts,添加完成后其配置狀態(tài)應(yīng)如下圖所示:


監(jiān)控主機的狀態(tài)

其中tomcat主機因配置了jmx監(jiān)控,所以調(diào)用了jmx模板后,其JMX的連接性會顯示為綠色。

2、編輯創(chuàng)建腳本監(jiān)控指定的服務(wù)進程和端口

首先對應(yīng)的agent主機的/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  ]

因為zabbix_agent進程的運行用戶是zabbix,而zabbix用戶本身是沒有執(zhí)行相關(guān)系統(tǒng)管理命令的權(quán)限的,為了能夠讓zabbix用戶能夠運行我們編輯的監(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)限進行細化定義

接著在zabbix server創(chuàng)建對應(yīng)的監(jiān)控模板:


nginx進程端口監(jiān)控模板

然后創(chuàng)建對應(yīng)的監(jiān)控項:


nginx進程監(jiān)控項

這里設(shè)置的key值,就用于傳遞參數(shù)給剛才在zabbix_agent創(chuàng)建的process_port_check.sh腳本。port和80分別對應(yīng)$1,$2。
nginx端口和進程的監(jiān)控項

接著創(chuàng)建相關(guān)監(jiān)控項的對應(yīng)圖表

nginx監(jiān)控圖表

這里可以把兩個監(jiān)控項做成一個圖表進行輸出顯示, 也可以分開兩個圖表來進行輸出顯示。


圖表狀態(tài)

還可以設(shè)置相應(yīng)的觸發(fā)器進行報警操作:


設(shè)置nginx進程和端口的報警觸發(fā)器

最后在對應(yīng)的host主機上調(diào)用相應(yīng)的監(jiān)控模板即可:


配置主機調(diào)用指定的監(jiān)控模板

等待一段時間后,就會有相關(guān)的數(shù)據(jù)顯示。

相關(guān)進程和端口檢測正常
3、設(shè)置web監(jiān)測

另外zabbix本身支持web監(jiān)測,能監(jiān)控指定URL的狀態(tài),包括訪問速度、響應(yīng)時間等等。這里我們就來嘗試監(jiān)控nginx的test.html頁面。
首先點擊進入相應(yīng)的web監(jiān)測創(chuàng)建頁面:


web監(jiān)測配置1

接著點擊右上角的創(chuàng)建:


web監(jiān)測配置2

在web監(jiān)測配置頁面,配置好相應(yīng)的名字及應(yīng)用集之后,點擊steps:
web監(jiān)測配置3

在steps添加一個新步驟:
web監(jiān)測配置4

添加該步驟的名字、需要監(jiān)測的URL、監(jiān)測超時時長以及要求返回的狀態(tài)碼,最后點擊Add保存退出。


web監(jiān)測配置5

最后在監(jiān)控菜單即可查看到指定的URL的監(jiān)測狀態(tài):


URL監(jiān)測狀態(tài)
4、設(shè)置郵件報警

在給相應(yīng)的監(jiān)控項設(shè)置郵件報警前,我們要在zabbix server上添加相應(yīng)的郵件媒介:


QQ郵箱郵件媒介

此處我使用QQ郵件服務(wù)器來測試。

添加完郵件媒介后,還需要在對應(yīng)的管理員賬號中調(diào)用此郵件媒介:


調(diào)用QQmail發(fā)送報警郵件到指定的管理員郵箱地址
為指定的User添加郵件媒體

添加完用戶的郵件媒介后,還需要在配置的動作Actions中配置添加郵件報警的動作:


設(shè)置報警郵件及恢復(fù)郵件

設(shè)置動作的觸發(fā)條件
設(shè)置觸發(fā)的動作為發(fā)送郵件

接著我們可以手動關(guān)閉nginx服務(wù)器的nginx服務(wù),來觸發(fā)相應(yīng)的報警器,然后看看能否收到相應(yīng)的報警郵件。

[root@nginx zabbix_agentd.conf.d]# systemctl stop nginx
監(jiān)控界面能看到已經(jīng)觸發(fā)了相應(yīng)的報警
成功收到相應(yīng)的報警郵件

此時重新恢復(fù)nginx服務(wù),也能收到一個恢復(fù)通知郵件。


恢復(fù)通知郵件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.寫在前面 本文主要介紹的是zabbix的編譯安裝過程,包含它的基礎(chǔ)環(huán)境LNMP,雖然zabbix官方一般推薦的...
    天之藍色閱讀 2,655評論 0 16
  • Zabbix簡介 Zabbix官方網(wǎng)站Zabbix中文文檔 本文系統(tǒng)環(huán)境是CentOS7x86_64, Zabbi...
    Zhang21閱讀 8,293評論 0 37
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,511評論 19 139
  • 文/小慧 要想做好企業(yè)文化的活動層面,物質(zhì)層面,各大節(jié)日是不可避免的要搞點事。今兒個是女王節(jié),通過刷朋友圈,...
    我叫小慧閱讀 844評論 0 2
  • 大數(shù)據(jù)時代的到來逐漸將數(shù)據(jù)批量化。少量的數(shù)據(jù)可以通過控制它的精確度以保證最終結(jié)果的可靠性與一致性,因為“任意一個數(shù)...
    XJasmine閱讀 514評論 0 2

友情鏈接更多精彩內(nèi)容