1.寫在前面
本文主要介紹的是zabbix的編譯安裝過程,包含它的基礎(chǔ)環(huán)境LNMP,雖然zabbix官方一般推薦的環(huán)境是LAMP。以及實(shí)現(xiàn)簡單的監(jiān)控任務(wù),在發(fā)現(xiàn)問題時能夠發(fā)送通知郵件。
2.系統(tǒng)環(huán)境
| 軟件包 | 版本 |
|---|---|
| OS | CentOS6.8-2.6.32-642.el6.x86_64 |
| nginx | nginx-1.10.3.tar.gz |
| mysql | mysql-5.5.53-linux2.6-x86_64.tar.gz |
| php | php-5.5.38.tar.gz |
| zabbix | zabbix-3.2.4.tar.gz |
提前安裝好如下兩個包組:yum groupinstall "Development Tools" "Server Platform Development"。
3.搭建web服務(wù)
zabbix作為監(jiān)控系統(tǒng)需要有圖形化的頁面呈現(xiàn)給運(yùn)維人員,它使用web+php的方式來實(shí)現(xiàn)。這里首先搭建其需要的web服務(wù)。我使用的是nginx-1.10.3的源碼包編譯安裝的方式。相應(yīng)步驟如下:
- 添加nginx用戶
useradd nginx -s /sbin/nologin -M #不讓此用戶通過shell登錄系統(tǒng)
#-M不在home下創(chuàng)建此用戶名同名的文件夾
-
編譯安裝nginx
將前面提到的nginx-1.10.3.tar.gz包解壓以后,cd到nginx-1.10.3目錄中,然后使用如下參數(shù)進(jìn)行configure:
./configure --prefix=/usr/local/nginx-1.10.3 --with-http_ssl_module
--with-http_stub_status_module --with-pcre --with-user=nginx
#提前yum安裝好pcre,pcre-devel,openssl,openssl-devl
make
make install
-
創(chuàng)建軟鏈接至nginx
默認(rèn)情況下nginx編譯安裝的路徑(prefix) 是在/usr/local/nginx,所以創(chuàng)建一個軟鏈接,使用起來更方便:
ln -s /usr/local/nginx-1.10.3/ /usr/local/nginx
- 將源碼安裝的nginx執(zhí)行程序放到PATH環(huán)境變量中
vim /etc/profile.d/nginx.sh
export PATH=/usr/local/nginx/sbin:$PATH
source /etc/profile.d/nginx.sh #加載文件中的參數(shù)到當(dāng)前的shell環(huán)境中
在Linux中,通過源碼安裝的各類軟件包的執(zhí)行程序都可以都通過這種方式放入PATH環(huán)境變量中方便使用,且相應(yīng)的文件不需要賦予執(zhí)行權(quán)限。
- 更改nginx文件夾屬主為nginx
chown -R nginx.nginx /usr/local/nginx-1.10.3
- 驗(yàn)證web service
[root@monitor-server2 ~]# nginx -t
nginx: the configuration file /usr/local/nginx-1.10.3/conf/nginx.conf syntax
is ok
nginx: configuration file /usr/local/nginx-1.10.3/conf/nginx.conf test is
successful
[root@monitor-server2 ~]# nginx #啟動nginx程序
[root@monitor-server2 ~]# pidof nginx #檢查nginx啟動的進(jìn)程,默認(rèn)
#nginx一個master進(jìn)程,4個worker進(jìn)程,此處共5個進(jìn)程ID,正常
1642 1641 1640 1639 1634
[root@monitor-server2 ~]# curl -I 127.0.0.1 #進(jìn)一步驗(yàn)證web service是
#否已正常
HTTP/1.1 200 OK #此處結(jié)果為正常
Server: nginx/1.10.3
Date: Sat, 22 Apr 2017 10:52:45 GMT
Content-Type: text/html
Connection: keep-alive
-
設(shè)置nginx開機(jī)自啟
這里我選擇的是直接將nginx執(zhí)行程序添加到rc.local腳本中:
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
tail /etc/rc.local #驗(yàn)證下是否正常添加上去
至此web service的搭建工作完成。下面繼續(xù)mysql的搭建。
4. 搭建mysql服務(wù)
zabbix的server和proxy是需要連接數(shù)據(jù)庫的,zabbix支持多種類型的數(shù)據(jù)庫,本文只涉及到mysql。
- 添加mysql用戶
useradd -s /sbin/nologin -M mysql
-
解壓mysql 二進(jìn)制包到目標(biāo)文件夾
因?yàn)槲沂褂玫氖敲麨?code>mysql-5.5.53-linux2.6-x86_64.tar.gz的壓縮包,此包實(shí)際是一個mysql的二進(jìn)制包,相當(dāng)于從相應(yīng)平臺安裝編譯好后打包出來的,直接解壓以后可以使用,而無需再configure和make&&make install了。操作指令:
tar xf mysql-5.5.53-linux2.6-x86_64.tar.gz -C /usr/local
#解壓出來的文件會自動放置于/usr/local/mysql-5.5.53-linux2.6-x86_64中
-
創(chuàng)建軟鏈接
為后續(xù)使用方便,如在腳本中引用路徑時更方便,這里還是給它設(shè)置一個軟鏈接:
ln -s /usr/local/mysql-5.5.53-linux2.6-x86_64/ /usr/local/mysql
- 更改mysql文件夾屬主為mysql
chown -R mysql.mysql /usr/local/mysql/
-
初始化mysql數(shù)據(jù)庫
在解壓后的mysql目錄中有一個scripts目錄其中有一個mysql_install_db的文件,執(zhí)行它,并指定用戶為mysql,數(shù)據(jù)目錄使用其默認(rèn)的路徑/usr/local/mysql/data,操作如下:
scripts/mysql_install_db --user=mysql -datadir =/usr/local/mysql/data
#執(zhí)行此語句后出現(xiàn)兩個ok,并有一些安全方面和配置mysql自啟服務(wù)的提示則為正常
tree /usr/local/mysql/data #檢查一下是否生成了相關(guān)的數(shù)據(jù)庫文件,初始狀態(tài)下為空
-
設(shè)置mysql開機(jī)自啟
mysql目錄中有一個support-files目錄,其中有一個mysql.server文件,將其復(fù)制到/etc/init.d/下,并更名為mysqld:
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
-
提供mysql的配置文件
同樣是在support-files目錄中有多種不同類型的mysql配置文件,本文我使用的是my-small.cnf,將其復(fù)制到/etc目錄下,因?yàn)槲覜]有設(shè)置非常規(guī)的basedir和datadir,所以這里可以不用對其進(jìn)行修改:
cp support-files/my-small.cnf /etc/my.cnf #更名為my.ncf
- 啟動mysql服務(wù)
service mysqld start
lsof -i :3306 #檢查mysql是否啟動成功
- 設(shè)置mysql root賬戶密碼
mysqladmin -uroot -p<password>
然后在使用root用戶登錄。
5.搭建php-fpm環(huán)境
-
configure php
在將前面提到的php-5.5.38.tar.gz包解壓以后,cd到php-5.5.38目錄中,執(zhí)行以下configure指令:
./configure --prefix=/usr/local/php-5.5.38 --with-config-file-path=/usr/local \
/php-5.5.38/etc --with-bz2 --with-curl --enable-ftp --enable-sockets \
--disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local \
--with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr \
/local --enable-mbstring --enable-calendar --with-gettext --with-libxml- \
dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd \
--with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with- \
libdir=lib64 --enable-bcmath --enable-ctype --without-pear --disable-phar
configure完成以后,會提示進(jìn)行make test,這是一個非常耗時間的過程,最后的結(jié)果有可能有一些警告,但不一定會有很大的影響,可以忽略。我在操作過程中遇到如下提示,沒有去深究它,后面編譯安裝正常完成,沒有錯誤提示,使用也還未發(fā)現(xiàn)問題。
FAILED TEST SUMMARY
\---------------------------------------------------------------------
Bug #64267 (CURLOPT_INFILE doesn't allow reset) [ext/curl/tests/bug64267.phpt]
\#66265: gettext doesn't switch locales within the same script [ext/gettext/tests/bug66267.phpt]
Bug #32001 (xml_parse*() goes into infinite loop when autodetection in effect), using UTF-* [ext/xml/tests/bug32001.phpt]
WARNED TEST SUMMARY
zend multibyte (2) [ext/mbstring/tests/zend_multibyte-02.phpt] (warn: XFAIL section but test passes)
zend multibyte (6) [ext/mbstring/tests/zend_multibyte-06.phpt] (warn: XFAIL section but test passes)
zend multibyte (8) [ext/mbstring/tests/zend_multibyte-08.phpt] (warn: XFAIL section but test passes)
Bug #70172 - Use After Free Vulnerability in unserialize() [ext/standard/tests/serialize/bug70172.phpt] (warn: XFAIL section but test passes)
在configure過程中如果碰到的有錯誤提示,請根據(jù)提示信息予以解決,查看是否上述指定的包并未安裝所致。
- 安裝php-fpm
make
make install
- 設(shè)置php的軟鏈接
ln -s /usr/local/php-5.5.38/ /usr/local/php
- 將php的執(zhí)行程序放入PATH變量中
echo "export PATH=/usr/local/php/sbin:/usr/local/php/bin:$PATH
" > /etc/profile.d/php.sh
source /etc/profile.d/php.sh
-
提供php的配置文件
在php的源碼包中提供的有php的配置文件,在解壓后的目錄中將其復(fù)制到我們在configure時指定的位置并更名為php.ini,如:--with-config-file-path=/usr/local/php-5.5.38/etc。
cp php.ini-production /usr/local/php-5.5.38/etc/php.ini
#在解壓后的源碼包中實(shí)際有兩個配置文件,但我們使用這個適用生產(chǎn)環(huán)境的這個即可
-
提供php-fpm的配置文件
php-fpm的配置文件在執(zhí)行make install時已安裝好了,只需要將其改名即可:
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
- 啟動php-fpm
php-fpm #因?yàn)橐褜hp執(zhí)行程序路徑放入PATH變量中,所以此處可以直接使用php-fpm指令
lsof -i :9000 #查看9000端口是否被php-fpm占用,是則表明php-fpm啟動成功
-
設(shè)置php-fpm開機(jī)自啟
在編譯后的php源碼包中其實(shí)就提供了php-fpm服務(wù)腳本:./sapi/fpm/init.d.php-fpm,我們只需要將其復(fù)制到/etc/init.d/目錄下,并更名即可。操作如下:
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #當(dāng)前的工作目錄為編譯
#安裝后的php源碼目錄php-5.5.38
chmod +x /etc/init.d/php-fpm #賦予服務(wù)腳本可執(zhí)行權(quán)限
chkconfig --add php-fpm
chkconfig php-fpm on #設(shè)置php-fpm服務(wù)開機(jī)自啟動
service php-fpm start #啟動php-fpm服務(wù)
service php-fpm status #檢查php-fpm服務(wù)狀態(tài),或者使用之前的lsof -i :9000查看
-
將php-fpm與nginx結(jié)合
在php-fpm可以正常啟動以后,需要配置web service可以訪問php-fpm服務(wù),因?yàn)槲疫@里使用的nginx提供web service,所以修改其配置 文件/etc/usr/local/nginx/conf/nginx.conf如下:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
可以直接將原nginx.conf文件中與php-fpm相關(guān)的部分的注釋直接去掉,并修改成如上所示內(nèi)容。
- 測試nginx是否可正常使用php-fpm
- 要進(jìn)行此測試,還需要修改
nginx.conf中的根location,在其首頁中添加index.php,內(nèi)容如下:
location / {
root html;
index index.php index.html index.htm;
}
- 在
nginx的html文件夾中使用如下指令,建立index.php文件:
echo "<?php phpinfo(); ?>" > index.php
- 重啟nginx程序和php-fpm服務(wù)
nginx -t
nginx -s reload
service php-fpm restart
-
瀏覽器中輸入這臺server的ip后回車
正常情況下,可以顯示phpinfo的詳細(xì)信息了,如下所示:
6.搭建zabbix server
- 創(chuàng)建zabbix用戶
useradd -s /sbin/nologin -M zabbix
-
configure zabbix
將前面提到的zabbix-3.2.4.tar.gz包解壓以后,cd到解壓后的目錄(zabbix-3.2.4)后執(zhí)行如下指令:
./configure --prefix=/usr/local/zabbix-3.2.4 --enable-server \
--enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
因?yàn)閦abbix server也需要被監(jiān)控,所以其也需要agent。
configure時使用了--with-net-snmp --with-libcurl --with-libxml2所以需要先在系統(tǒng)中使用yum安裝net-snmp-devel、libcurl-devel、libxml2-devel包,使用yum安裝會自動解決依賴關(guān)系將net-snmp、libcurl、libxml2一并安裝上。
正常完成configure后,會顯示如下匯總信息:
Configuration:
Detected OS: linux-gnu
Install path: /usr/local
Compilation arch: linux
Compiler: gcc
Compiler flags: -g -O2
Library-specific flags:
database: -I/usr/local/mysql/include -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1
libXML2: -I/usr/include/libxml2
Net-SNMP: -I/usr/include/rpm -I/usr/local/include -I/usr/lib64/perl5/CORE -I. -I/usr/include
Enable server: yes
Server details:
With database: MySQL
WEB Monitoring: cURL
Native Jabber: no
SNMP: yes
IPMI: no
SSH: no
TLS: no
ODBC: no
Linker flags: -L/usr/local/mysql/lib -L/usr/lib64 -rdynamic
Libraries: -lmysqlclient -lxml2 -lnetsnmp -lcurl -lm -ldl -lrt -lresolv
Enable proxy: no
Enable agent: yes
Agent details:
TLS: no
Linker flags: -rdynamic
Libraries: -lcurl -lm -ldl -lrt -lresolv
Enable Java gateway: no
LDAP support: no
IPv6 support: yes
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
-
安裝zabbix
根據(jù)configure完成后的提示執(zhí)行make install即可,無需執(zhí)行make然后再make install。
7.建立給zabbix使用的數(shù)據(jù)庫
zabbix要實(shí)現(xiàn)將其相關(guān)的配置信息,監(jiān)控的信息都存儲于后臺的數(shù)據(jù)庫中,自然需要建立相應(yīng)的數(shù)據(jù)庫,并配置相應(yīng)的賬號。zabbix支持多種類型的數(shù)據(jù)庫,這里只以mysql為例,且是在zabbix server上的mysql上需要做的。
- 創(chuàng)建給zabbix使用的數(shù)據(jù)庫zabbix
mysql -uroot -p<password> #登錄mysql后繼續(xù)以下操作
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<password>';
mysql> quit;
-
初始化zabbix數(shù)據(jù)庫
在zabbix的源碼解壓目錄中有一個database目錄,其中有針對不同類型數(shù)據(jù)庫要使用的初始化sql語句,在這里需要選擇mysql目錄中的語句:
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# 如果是在zabbix proxy服務(wù)器上初始化mysql數(shù)據(jù)庫,則只導(dǎo)入上面一條sql語句即可,切記!
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> zabbix < data.sql
#在zabbix server上將三條語句全部導(dǎo)入
-
修改zabbix server配置文件
源碼安裝的zabbix,其配置文件默認(rèn)位于其安裝目錄的etc目錄中,即:/usr/local/zabbix/etc下,server的為zabbix_server.conf,此時修改其連接數(shù)據(jù)庫的相關(guān)信息即可,默認(rèn)連接的數(shù)據(jù)庫即為本機(jī)的數(shù)據(jù)庫,數(shù)據(jù)庫即為zabbix,密碼為空,所以將密碼設(shè)置為前面創(chuàng)建的密碼即可。
DBPassword=<password>
-
修改zabbix agent的配置文件
文件位置和server的一樣,需要修改的地方有如下幾處:
Server=127.0.0.1 #設(shè)置允許哪些zabbix server連接此agent
ServerActive=127.0.0.1 #設(shè)置為zabbix server地址,用于agent主動發(fā)送監(jiān)控?cái)?shù)據(jù)給server端
Hostname=Zabbix server #這個地方設(shè)置要和configuration-->host設(shè)置的host名稱一致
-
設(shè)置zabbix server和agent開機(jī)自啟動
zabbix原生也提供了用于實(shí)現(xiàn)開機(jī)自啟動的服務(wù)腳本,它們在3.2.4版本中位于解壓后的目錄/root/softwares/zabbix-3.2.4/misc/init.d,這個目錄下有針對不同類型系統(tǒng)的腳本,這里我選擇的是fedora這一目錄中的腳本,腳本位置及名稱如下:
[root@monitor-server2 core]# pwd
/root/softwares/zabbix-3.2.4/misc/init.d/fedora/core
[root@monitor-server2 core]# ll
total 8
-rwxr-xr-x 1 1000 1000 2170 Feb 27 17:22 zabbix_agentd
-rwxr-xr-x 1 1000 1000 2181 Feb 27 17:22 zabbix_server
很明顯分別有針對server和agent的腳本,把它們復(fù)制到/etc/init.d/目錄下:
cp zabbix_agentd /etc/init.d
cp zabbix_server /etc/init.d
打開這兩個文件(zabbix_agentd和zabbix_server)查看其內(nèi)容,根據(jù)實(shí)際情況進(jìn)行修改,一般需要更改的只是如下內(nèi)容:
# Zabbix-Directory
BASEDIR=/usr/local #將此處改為/usr/local/zabbix即可
#congifure如果不指定zabbix的prefix,它默認(rèn)直接安裝到/usr/local目錄下
將這兩個服務(wù)安裝添加到自啟動中:
chkconfig --add zabbix_agentd
chkconfig --add zabbix_server
chkconfig zabbix_agentd on
chkconfig zabbix_server on
- 啟動zabbix server和agent程序
service zabbix_server start
service zabbix_anentd start
[root@monitor-server2 ~]# ss -tnl | grep -E "10050|10051"
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
#zabbix server和agent啟動成功
8.安裝zabbix web程序
zabbix對于監(jiān)控的結(jié)果可以通過web頁面來進(jìn)行展示和查看,它需要安裝一個使用php程序來運(yùn)行的web站點(diǎn),根據(jù)zabbix的官方要求,還有如下php的參數(shù)需要提前修改:
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai #建議設(shè)成國內(nèi)標(biāo)準(zhǔn)時區(qū)
上述修改都在php.ini文件中完成。在本文的環(huán)境中它位于/usr/local/php/etc/php.ini。另外需要補(bǔ)充一下,zabbix3.2.4它要求的php版本最低為5.4。 修改完php.ini文件后,重啟php-fpm服務(wù)service php-fpm restart。
安裝zabbix web程序操作步驟如下:
-
創(chuàng)建web站點(diǎn)
在web service的根目錄下給zabbix單獨(dú)創(chuàng)建一個根目錄,用于存放zabbix的php程序文件,然后再將源碼解壓目錄中名為frontends/php目錄中的全部內(nèi)容復(fù)制過來。
mkidr /usr/local/nginx/html/zabbix #nginx默認(rèn)的站點(diǎn)根目錄為其安裝路徑下的html
cd frontends/php
cp -a . /usr/local/nginx/html/zabbix
-
打開zabbix web完成配置過程
在瀏覽器中輸入http://server_ip/zabbix打開zabbix的web界面,初次打開會顯示歡迎界面,此時web程序的安裝還沒有完成,并不需要登錄web站點(diǎn)的用戶名和密碼,然后點(diǎn)擊Next step可以看到它會進(jìn)行一個php環(huán)境參數(shù)的檢測,需要它們?nèi)匡@示為OK在繼續(xù)進(jìn)行下一步,從此步也可以看到很多之前php configure時所enable和with的選項(xiàng)參數(shù),它們都是運(yùn)行zabbix web程序所要求的。
**zabbix 3.2.4 web需求php的環(huán)境如下: **
| Pre-requisite | Minimum value | Description |
|---|---|---|
| PHP version | 5.4.0 | |
| PHP memory_limit option | 128MB | In php.ini:memory_limit = 128M |
| PHP post_max_size option | 16MB | In php.ini:post_max_size = 16M |
| PHP upload_max_filesize option | 2MB | In php.ini:upload_max_filesize = 2M |
| PHP max_execution_time option | 300 seconds (values 0 and -1 are allowed) | In php.ini:max_execution_time = 300 |
| PHP max_input_time option | 300 seconds (values 0 and -1 are allowed) | In php.ini:max_input_time = 300 |
| PHP session.auto_start option | must be disabled | In php.ini:session.auto_start = 0 |
| Database support | One of: IBM DB2, MySQL, Oracle, PostgreSQL, SQLite | One of the following modules must be installed:ibm_db2, mysql, oci8, pgsql, sqlite3 |
| bcmath | php-bcmath | |
| mbstring | php-mbstring | |
| PHP mbstring.func_overload option | must be disabled | In php.ini:mbstring.func_overload = 0 |
| PHP always_populate_raw_post_data option | must be disabled | Required only for PHP versions 5.6.0 or newer.In php.ini:always_populate_raw_post_data = -1 |
| sockets | php-net-socket. Required for user script support. | |
| gd | 2.0 or higher | php-gd. PHP GD extension must support PNG images (--with-png-dir), JPEG (--with-jpeg-dir) images and FreeType 2 (--with-freetype-dir). |
| libxml | 2.6.15 | php-xml or php5-dom |
| xmlwriter | php-xmlwriter | |
| xmlreader | php-xmlreader | |
| ctype | php-ctype | |
| session | php-session | |
| gettext | php-gettext,Since Zabbix 2.2.1, the PHP gettext extension is not a mandatory requirement for installing Zabbix. If gettext is not installed, the frontend will work as usual, however, the translations will not be available. |
php環(huán)境檢測通過的結(jié)果如下圖所示:


-
配置zabbix web連接的數(shù)據(jù)庫
數(shù)據(jù)庫為本機(jī)名為zabbix的mysql數(shù)據(jù)庫,賬戶名和密碼輸入此前創(chuàng)建zabbix數(shù)據(jù)庫時配置授權(quán)的賬戶和密碼。

-
配置zabbix server信息
這里在Name處可以填上本機(jī)的主機(jī)名,其它保持默認(rèn)即可。

- zabbix web安裝信息匯總

-
生成zabbix web的配置文件并導(dǎo)入站點(diǎn)配置目錄中
zabbix web安裝程序會自動生成一個名為zabbix.conf.php的配置文件,并嘗試自動將其放入zabbix站點(diǎn)配置目錄中,但由于權(quán)限問題,會創(chuàng)建失敗,此時只需要通過瀏覽器下載,然后手動入到指定目錄即可,web安裝程序會有相關(guān)提示,如下圖所示:

文件導(dǎo)入完成后,點(diǎn)擊
Finish,會出現(xiàn)以下信息,即表示zabbix web安裝成功。

-
登錄zabbix web界面
在瀏覽器中輸入http://server_ip/zabbix即可打開zabbix的登錄界面,輸入如下默認(rèn)賬戶和密碼即可登錄:
user name:Admin
password:zabbix
此用戶為zabbix web系統(tǒng)中super user,擁有最高權(quán)限,用戶名注意字母大小寫。
初始情況下,只配置了讓zabbix server監(jiān)控它自己,下面繼續(xù)配置一臺Linux server,讓zabbix server可以監(jiān)控它,并可以發(fā)送監(jiān)控通知郵件。
9.被監(jiān)控端安裝zabbix agent
安裝過程還是使用源碼編譯安裝的方式,先創(chuàng)建zabbix用戶。
useradd -s /sbin/nologin -M zabbix
在被監(jiān)控的Linunx server上,只需要安裝zabbix agent,在configure時使用如下參數(shù)即可:
./configure --prefix=/usr/local/zabbix-3.2.4 --enable-agent
configure完成以后,注意觀察匯總信息是否有錯誤提示,是否只啟用了agent,有問題根據(jù)實(shí)際情況去排查并解決。如果沒有錯誤,則根據(jù)提示信息執(zhí)行make install完成安裝過程。
被監(jiān)控端設(shè)置軟鏈接,添加zabbix執(zhí)行程序路徑至PATH變量,修改zabbix_agentd.conf文件以及zabbix_agentd服務(wù)開機(jī)自啟的過程參考前文相關(guān)內(nèi)容即可,此處不在贅述。
最后啟動被監(jiān)控端的zabbix_agentd服務(wù)。
service zabbix_agentd start
10.zabbix server上配置監(jiān)控內(nèi)容
在zabbix server上配置剛安裝了zabbix agent的主機(jī),并設(shè)置要監(jiān)控的內(nèi)容。
-
添加要監(jiān)控的主機(jī)
在zabbix web上添加要監(jiān)控的主機(jī),選擇Configuration---->Hosts--->Create host,在如下界面中填寫相應(yīng)信息:

根據(jù)實(shí)際情況填寫主機(jī)名,選擇主機(jī)分組,主機(jī)ip,對于主機(jī)分組此處我選擇
Linux servers作為示例。然后可以選擇
Host旁的Templates,zabbix內(nèi)置了很多種不同的模板,它包含的有監(jiān)控條目item,告警觸發(fā)器trigger,圖形展示Graphs,屏幕Screens等。以下為給主機(jī)應(yīng)用模板的操作過程:



示例中的
server3上我啟用的有web服務(wù),所以這里選擇了zabbix內(nèi)置的Template App HTTP Serivice這一模板對http服務(wù)進(jìn)行監(jiān)控。 等待片刻,ZBX會顯示成綠色即表示zabbix server能和server3上的zabbix agent正常通信了,如下所示:

11.配置zabbix server發(fā)送通知郵件
zabbix server默認(rèn)支持多種發(fā)送通知的方式,其中就包含的有名為Email的方式,但經(jīng)過多次嘗試都未能實(shí)現(xiàn)讓zabbix server發(fā)送通知郵件,所以這里使用zabbix調(diào)用外部腳本且借助公網(wǎng)smtp服務(wù)器的方式來發(fā)送通知郵件。詳細(xì)過程如下:
-
配置Media Type
zabbix支持自定義Media Type,這里我創(chuàng)建一個名為user mail的Media Type,并指定它是需要使用Scripts的方式。在Administration下選擇Media Types,然后選擇Create media type,創(chuàng)建內(nèi)容如下:

-
建立通知郵件腳本
默認(rèn)情況下通知郵件腳本應(yīng)該存放在/usr/local/zabbix/share/zabbix/alertscripts,直接在這個路徑下建立相應(yīng)的腳本即可,如果腳本不是存放在此處,需要修改zabbix_server.conf文件中此處# AlertScriptsPath=${datadir}/zabbix/alertscripts取消掉注釋并寫上腳本完整的存放路徑。mail.sh的內(nèi)容如下:
#!/bin/bash
#
file=/tmp/mailtmp.txt
echo "$3" > $file #$3為上一步中定義的{ALERT.MESSAGE},即告警詳細(xì)信息
dos2unix -k $file #實(shí)際使用中發(fā)現(xiàn)zabbix所發(fā)郵件的正文會以一
#個.dat結(jié)尾的文件作為附件來進(jìn)行發(fā)送,使用dos2unix將郵件正文進(jìn)行格
#式轉(zhuǎn)換,這樣在收到郵件后正文直接顯示通知的正文,-k是保持文件的時
#間戳不變。
/bin/mail -s "$2" $1 < $file #$2為上一步中定義的{ALERT.SUBJECT},即
#郵件主題,$1為上一步中定義的{ALERT.SENDTO}即收件人。
-
定義收件人郵件地址
在zabbix中每個用戶可以關(guān)聯(lián)多個Media type,在這里我給Admin這一用戶關(guān)聯(lián)上前面已經(jīng)定義好的名為user mail的Media type,并填上其郵件地址,即zabbix發(fā)送郵件通知時的收件人郵件地址。在zabbix web上依次選擇Administration,Users,Admin,Media標(biāo)簽,然后點(diǎn)擊Add,給這一用戶定義一個media,此處選擇user mail,如下所示:



-
設(shè)置發(fā)送通知的action
zabbix中只有設(shè)置 了action,它才知道應(yīng)該如何發(fā)送通知,如在什么條件下發(fā)送,通知通過哪個media type發(fā)送,發(fā)送給哪些人,發(fā)送的頻率是怎么樣的,發(fā)送的通知主題和正文是怎樣的,當(dāng)故障恢復(fù)以后如何發(fā)送通知等。 這些必須在action中定義好。以下為配置示例,當(dāng)被監(jiān)控端不是在工程態(tài)(維護(hù)狀態(tài))中,發(fā)生了Problem事件,即將相關(guān)信息發(fā)送給zabbix administraotrs組內(nèi)的所有用戶且通過上面自定義的user mail這一media發(fā)送。
大致過程如下:依次選擇Configuration,Actions,Create action,然后按照下圖所示過程進(jìn)行操作:





從上述過程也可以看到其實(shí)這些action定義的是由Trigger來觸發(fā)的,因?yàn)榍懊嫖沂侵苯咏o主機(jī)應(yīng)用了zabbix內(nèi)置的http service的模板,它里面已經(jīng)關(guān)聯(lián)的有相應(yīng)的trigger了,所以當(dāng)http service發(fā)生變化,會自動觸發(fā)相應(yīng)的trigger,而后又觸發(fā)zabbix 執(zhí)行相應(yīng)的action。這是zabbix發(fā)送通知的一個大致的過程。
-
定義zabbix發(fā)送通知郵件使用的賬戶
zabbix server本機(jī)非合法的smtp服務(wù)器,由它直接發(fā)送郵件給公網(wǎng)郵箱,會有很多問題,不一定成功。所以這里依然選擇使用公網(wǎng)的163 smtp服務(wù)器來發(fā)送zabbix的通知郵件。因?yàn)椴恍枰玫奖緳C(jī)的smtp服務(wù),所以可以選擇將smtp服務(wù)停止,并確保本機(jī)有mail程序可用,它由mailx軟件包提供。在上面定義通知郵件腳本時就已經(jīng)用到了mail指令。
本機(jī)服務(wù)賬戶配置方法,在/etc/mail.rc中增加如下內(nèi)容:
set from=zabbix@163.com #提供一個可用的163郵箱
set smtp=smtp.163.com
set smtp-auth-user=zabbix
set smtp-auth-password=xxxxxx #163郵箱的授權(quán)碼,在郵箱網(wǎng)頁中去設(shè)置
set smtp-auth=login
-
制造告警測試是否正常收到通知郵件
將server3的web service停掉,將近3分鐘查看郵件客戶端,收到了zabbix發(fā)送的通知郵件。這個從故障發(fā)生到zabbix發(fā)送通知消息的時長,取決于監(jiān)控的item配置的檢測時長和trigger判斷條件,默認(rèn)的http service的檢測時長為1分鐘,其判斷條件為最大連續(xù)檢測到3次失敗即認(rèn)為http service down,觸發(fā)相應(yīng)的trigger,并與相應(yīng)的action聯(lián)動,從而發(fā)送通知郵件。zabbix發(fā)送的通知郵件內(nèi)容大致如下:

12.小結(jié)
以上即為zabbix實(shí)現(xiàn)監(jiān)控Linux服務(wù)器并發(fā)送通知郵件的實(shí)現(xiàn)過程小記。只是zabbix的基礎(chǔ)入門,還有很多內(nèi)容需要在不斷的使用中熟悉,也可以參考官網(wǎng)手冊,會有很多收獲。