Zabbix监控系统安装与使用
一、Zabbix簡(jiǎn)介:
zabbix是完全開(kāi)源的工具,整合了cacti和nagios等特性
cacti:snmp
nagios:linux 主機(jī):nrpe??? 設(shè)備:snmp
附:SNMP(udp161? udp 162)
眾多網(wǎng)絡(luò)工具都支持此協(xié)議,比如常見(jiàn)路由交換,常見(jiàn)OS
其既可以做管理端也可以做被管理端
snmp協(xié)議大致有3個(gè)版本分別是v1 v2 v3
無(wú)論是v1 和 v2 的安全性是比較差的,因?yàn)閭鬏斒敲魑牡?#xff0c;?V3的認(rèn)證密碼用MD5/SHA摘要算法加密
?
? ? ? ?很多工具支持網(wǎng)絡(luò)管理的功能,而對(duì)于非網(wǎng)絡(luò)設(shè)備(操作系統(tǒng)),可以完全拋開(kāi)snmp這種不安全的 ? ?架構(gòu)來(lái)實(shí)現(xiàn)監(jiān)控的。所以很多工具都是控制端和agent架構(gòu),他們有專(zhuān)屬的agent
?
? ?1、Zabbix的主要功能:
l? 具備常見(jiàn)的商業(yè)監(jiān)控軟件所具備的功能(主機(jī)的性能監(jiān)控、網(wǎng)絡(luò)設(shè)備性能監(jiān)控、數(shù)據(jù)庫(kù)、FTP 等通用協(xié)議監(jiān)控、多種告警方式、詳細(xì)的報(bào)表圖表繪制)
l? 支持自動(dòng)發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備和服務(wù)器(可以通過(guò)配置自動(dòng)發(fā)現(xiàn)服務(wù)器規(guī)則來(lái)實(shí)現(xiàn))
l? 支持分布式,能集中展示、管理分布式的監(jiān)控點(diǎn),擴(kuò)展性強(qiáng)
l? server 提供通用接口(api 功能),可以自己開(kāi)發(fā)完善各類(lèi)監(jiān)控(根據(jù)相關(guān)接口編寫(xiě)程序?qū)崿F(xiàn)),編寫(xiě)插件容易,可以自定義監(jiān)控項(xiàng),報(bào)警級(jí)別的設(shè)置。
l? 數(shù)據(jù)收集,支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET;
l? 自定義的檢測(cè);自定義收集數(shù)據(jù)的頻率;
l? 服務(wù)器/代理和客戶(hù)端模式;
l? 靈活的觸發(fā)器;可以定義非常靈活的問(wèn)題閾值,稱(chēng)為觸發(fā)器;
l? 高可定制的報(bào)警;發(fā)送通知,可定制的報(bào)警升級(jí),收件人,媒體類(lèi)型。
l? CPU負(fù)荷、內(nèi)存使用、磁盤(pán)使用、網(wǎng)絡(luò)狀況、端口監(jiān)視、日志監(jiān)視等等。
l? 硬件監(jiān)控:Zabbix IPMI Interface
l? 系統(tǒng)監(jiān)控:Zabbix? Agent Interface
l? Java監(jiān)控:Zabbix JMXInterface
l? 網(wǎng)絡(luò)設(shè)備監(jiān)控:Zabbix SNMPInterface
l? 應(yīng)用服務(wù)監(jiān)控:Zabbix AgentUserParameter?
l? MySQL數(shù)據(jù)庫(kù)監(jiān)控:percona-monitoring-plulgins??
l? URL監(jiān)控:Zabbix Web 監(jiān)控
? ?2、zabbix重要組件說(shuō)明:
1)zabbix server:負(fù)責(zé)接收agent發(fā)送的報(bào)告信息的核心組件,所有配置、統(tǒng)計(jì)數(shù)據(jù)及操作數(shù)據(jù)都由它組織進(jìn)行;
2)database storage:專(zhuān)用于存儲(chǔ)所有配置信息,以及由zabbix收集的數(shù)據(jù);
3)web interface:zabbix的GUI接口;
4)proxy:可選組件,常用于監(jiān)控節(jié)點(diǎn)很多的分布式環(huán)境中,代理server收集部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)到server,可以減輕server的壓力;
5)agent:部署在被監(jiān)控的主機(jī)上,負(fù)責(zé)收集主機(jī)本地?cái)?shù)據(jù)如cpu、內(nèi)存、數(shù)據(jù)庫(kù)等數(shù)據(jù)發(fā)往server端或proxy端;
另外,zabbix server、proxy、agent都有自己的配置文件以及l(fā)og文件,重要的參數(shù)需要在這里配置,后面會(huì)詳細(xì)說(shuō)明。
一個(gè)監(jiān)控系統(tǒng)運(yùn)行的大概的流程是這樣的:
agentd需要安裝到被監(jiān)控的主機(jī)上,它負(fù)責(zé)定期收集各項(xiàng)數(shù)據(jù),并發(fā)送到zabbix server端,zabbix server將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,zabbix web根據(jù)數(shù)據(jù)在前端進(jìn)行展現(xiàn)和繪圖。這里agentd收集數(shù)據(jù)分為主動(dòng)和被動(dòng)兩種模式:
主動(dòng):agent請(qǐng)求server獲取主動(dòng)的監(jiān)控項(xiàng)列表,并主動(dòng)將監(jiān)控項(xiàng)內(nèi)需要檢測(cè)的數(shù)據(jù)提交給server/proxy
被動(dòng):server向agent請(qǐng)求獲取監(jiān)控項(xiàng)的數(shù)據(jù),agent返回?cái)?shù)據(jù)。
zabbix常用的監(jiān)控架構(gòu)平臺(tái)
1、server-agentd模式:
這個(gè)是最簡(jiǎn)單的架構(gòu)了,常用于監(jiān)控主機(jī)比較少的情況下。
2、server-proxy-agentd模式:
這個(gè)常用于比較多的機(jī)器,使用proxy進(jìn)行分布式監(jiān)控,有效的減輕server端的壓力。
zabbix的系統(tǒng)架構(gòu):
Zabbix是一個(gè)基于Web界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)開(kāi)源解決方案。借助Zabbix,可以很輕松地減輕運(yùn)維人員們繁重的服務(wù)器管理任務(wù),實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)的持續(xù)運(yùn)行。下面會(huì)逐步介紹Zabbix分布式監(jiān)控系統(tǒng)的部署及使用
配置好IP、DNS 、網(wǎng)關(guān),確保使用遠(yuǎn)程連接工具能夠連接服務(wù)器
zabbix監(jiān)控服務(wù)器:192.168.130.76? #zabbix的服務(wù)端(若要監(jiān)控本機(jī),則需要配置本機(jī)的zabbix agent)
Zabbix agent被監(jiān)控主機(jī):192.168.130.78#zabbix的客戶(hù)端(被監(jiān)控端,需要配置Zabbix agent
?
二、Zabbix部署前的LNMP環(huán)境的搭建過(guò)程:
安裝編譯工具及庫(kù)文件
[root@mysqla ~]# yum -yinstall make apr* autoconf automake curl-devel gcc gcc-c++? openssl openssl-devel gd kernel keyutilspatch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-develkeyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-develzlib-devel libXpm* freetype libjpeg* libpng* libtool* libxml2 libxml2-develpatch libcurl-devel bzip2-devel freetype-devel
安裝mysql5.7.13
1、系統(tǒng)環(huán)境:centos7.2 x86_64
? ??
因?yàn)閏entos7.2默認(rèn)安裝了mariadb-libs,所以先要卸載掉
查看是否安裝mariadb
#rpm -qa | grep mariadb
卸載mariadb
rpm-e?--nodeps?mariadb-libs
2、安裝依賴(lài)包
注:?相關(guān)依賴(lài)包的作用
cmake:由于從MySQL5.5版本開(kāi)始棄用了常規(guī)的configure編譯方法,所以需要CMake編譯器,用于設(shè)置mysql的編譯參數(shù)。如:安裝目錄、數(shù)據(jù)存放目錄、字符編碼、排序規(guī)則等。
Boost? #從MySQL?5.7.5開(kāi)始Boost庫(kù)是必需的,mysql源碼中用到了C++的Boost庫(kù),要求必須安裝boost1.59.0或以上版本
GCC是Linux下的C語(yǔ)言編譯工具,mysql源碼編譯完全由C和C++編寫(xiě),要求必須安裝GCC
bison:Linux下C/C++語(yǔ)法分析器
ncurses:字符終端處理庫(kù)
1)安裝文件準(zhǔn)備
下載cmake-3.5.tar.gz???http://mysqlaNaNake.org/download/
下載ncurses-5.9.tar.gzftp://ftp.gnu.org/gnu/ncurses/
下載bison-3.0.4.tar.gzhttp://ftp.gnu.org/gnu/bison/
下載mysql-5.7.13.tar.gz
wget?http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz
下載Boost_1_59_0.tar.gz
wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
2)安裝CMAKE及必要的軟件
安裝cmake
? ?
? ?
cmake –version? ---查看cmake版本
??
安裝ncurses
??
安裝bison
??
安裝bootst
tar zxf? boost_1_59_0.tar.gz
mv boost_1_59_0/usr/local/boost
3)創(chuàng)建mysql用戶(hù)和用戶(hù)組及目錄
# groupadd -r mysql&& useradd -r -g mysql -s /bin/false -M mysql---新建msyql組和msyql用戶(hù)禁止登錄shell
#mkdir/usr/local/mysql??????? ---創(chuàng)建目錄
#mkdir/usr/local/mysql/data?? ?---數(shù)據(jù)庫(kù)目錄
3、編譯安裝mysql
解壓mysql源碼包:
??
執(zhí)行cmake命令進(jìn)行編譯前的配置:
開(kāi)始編譯、編譯安裝:
注1:配置解釋:
? -DCMAKE_INSTALL_PREFIX=/usr/local/mysql[MySQL安裝的根目錄](méi)-DMYSQL_DATADIR=/usr/local/mysql /data[MySQL數(shù)據(jù)庫(kù)文件存放目錄](méi)
? -DSYSCONFDIR=/etc[MySQL配置文件所在目錄](méi)
? -DWITH_MYISAM_STORAGE_ENGINE=1[添加MYISAM引擎支持]
? -DWITH_INNOBASE_STORAGE_ENGINE=1[添加InnoDB引擎支持]
? -DWITH_ARCHIVE_STORAGE_ENGINE=1? [添加ARCHIVE引擎支持]
? -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock[指定mysql.sock位置]
? -DWITH_PARTITION_STORAGE_ENGINE=1[安裝支持?jǐn)?shù)據(jù)庫(kù)分區(qū)]
? -DEXTRA_CHARSETS=all[使MySQL支持所有的擴(kuò)展字符]
? -DDEFAULT_CHARSET=utf8[設(shè)置MySQL的默認(rèn)字符集為utf8]-DDEFAULT_COLLATION=utf8_general_ci [設(shè)置默認(rèn)字符集校對(duì)規(guī)則]
? -DWITH-SYSTEMD=1? [可以使用systemd控制mysql服務(wù)]
? -DWITH_BOOST=/usr/local/boost? [指向boost庫(kù)所在目錄]
更多參數(shù)執(zhí)行[root@localhost mysql-5.7.13]# cmake . –LH
注2:為了加快編譯速度可以按下面的方式編譯安裝
??
make -j $(grep processor /proc/cpuinfo | wc –l)
-j參數(shù)表示根據(jù)CPU核數(shù)指定編譯時(shí)的線(xiàn)程數(shù),可以加快編譯速度。默認(rèn)為1個(gè)線(xiàn)程編譯。
注3:若要重新運(yùn)行cmake配置,需要?jiǎng)h除CMakeCache.txt文件
# make clean
#rm -f CMakeCache.txt
優(yōu)化Mysql的執(zhí)行路徑
??
4、設(shè)置權(quán)限并初始化MySQL系統(tǒng)授權(quán)表
# cd/usr/local/mysql
# chown -R mysql:mysql ?.??????---更改所有者,屬組,注意是mysql .
#bin/mysqld?--initialize--user=mysql--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ?
注1:以root初始化操作時(shí)要加--user=mysql參數(shù),生成一個(gè)隨機(jī)密碼(注意保存登錄時(shí)用)
注2:MySQL 5.7.6之前的版本執(zhí)行這個(gè)腳本初始化系統(tǒng)數(shù)據(jù)庫(kù)
/usr/local/mysql/bin/mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 5.7.6之后版本初始系統(tǒng)數(shù)據(jù)庫(kù)腳本(本文使用此方式初始化)
#/usr/local/mysql/bin/mysqld--initialize-insecure--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意:如果使用–initialize參數(shù)初始化系統(tǒng)數(shù)據(jù)庫(kù)之后,會(huì)生成root用戶(hù)的一個(gè)臨時(shí)密碼,如上圖高亮中所示。
# chown -Rmysql:mysql . ??????---改所有者,注意是root .
5、創(chuàng)建配置文件
#cd/usr/local/mysql/support-files ????---進(jìn)入MySQL安裝目錄支持文件目錄
# cp my-default.cnf/etc/my.cnf ???---復(fù)制模板為新的配置文件,
修改文件中配置選項(xiàng),如下圖所示,添加如下配置項(xiàng)
#vi? /etc/my.cnf
??
6、配置mysql自動(dòng)啟動(dòng)
??
服務(wù)啟動(dòng)失敗,查看錯(cuò)誤日志文件
??
在mysqld.service,把默認(rèn)的pid文件指定到了/var/run/mysqld/目錄,而并沒(méi)有事先建立該目錄,因此要手動(dòng)建立該目錄并把權(quán)限賦給mysql用戶(hù)。
或者修改/usr/lib/system/system/mysqld.service,修改內(nèi)容如下:
??
#systemctl? daemon-reload
再次啟動(dòng)mysql服務(wù)
??
查看端口號(hào)
??
服務(wù)啟動(dòng)成功
訪問(wèn)MySQL數(shù)據(jù)庫(kù)
# mysql -u root -h 127.0.0.1-p???? ---連接mysql,輸入初始化時(shí)生成的隨機(jī)密碼
??
設(shè)置數(shù)據(jù)庫(kù)管理員用戶(hù)root的密碼
安裝nginx:
解壓zlib
[root@mysqla ~]# tar zxfzlib-1.2.8.tar.gz
說(shuō)明:不需要編譯,只需要解壓就行。
解壓pcre
[root@mysqla ~]# tar zxf pcre-8.39.tar.gz
說(shuō)明:不需要編譯,只需要解壓就行。
[root@mysqla ~]# groupaddwww
[root@mysqla ~]# useradd -g wwwwww -s /sbin/nologin
下載nginx的源碼包:http://nginx.org/download
解壓源碼包:
[root@mysqla ~]# tar zxfnginx-1.10.2.tar.gz
[root@mysqla ~]# cdnginx-1.10.2/
[root@mysqla nginx-1.10.2]# ./configure--prefix=/usr/local/nginx1.10 --with-http_dav_module--with-http_stub_status_module --with-http_addition_module--with-http_sub_module?--with-http_flv_module --with-http_mp4_module --with-pcre=/root/pcre-8.39--with-zlib=/root/zlib-1.2.8 --with-http_ssl_module--with-http_gzip_static_module --user=www --group=www
[root@mysqla nginx-1.10.2]#make&& make install
[root@mysqla ~]# ln -s/usr/local/nginx1.10/sbin/nginx /usr/local/sbin/
[root@mysqla ~]# nginx
[root@mysqla ~]# netstat-anpt | grep nginx
tcp?? 0?????0 0.0.0.0:80????? 0.0.0.0:*????? LISTEN????? 11598/nginx: master
[root@mysqla ~]#firewall-cmd --permanent --add-port=80/tcp
success
[root@mysqla ~]#firewall-cmd --reload
success
啟動(dòng)后可以再瀏覽器中打開(kāi)頁(yè)面,會(huì)顯示nginx默認(rèn)頁(yè)面。
??
安裝php
[root@mysqla ~]# tar zxflibmcrypt-2.5.7.tar.gz
[root@mysqla ~]# cdlibmcrypt-2.5.7/
[root@mysqlalibmcrypt-2.5.7]# ./configure && make && make install
# ln -s/usr/local/mysql/lib/libmysqlclient.so.20.3.0 /usr/local/mysql/lib/libmysqlclient_r.so
[root@mysqla ~]# tar zxfphp-5.6.27.tar.gz
[root@mysqla php-5.6.27]# ./configure--prefix=/usr/local/php5.6 --with-config-file-path=/etc? --with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config--with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv--with-libxml-dir=/usr --with-mhash --with-mcrypt--with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib--with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath--enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex--enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf--with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip--enable-soap --without-pear --with-gettext --enable-session --with-mcrypt--with-curl
[root@mysqla php-5.6.27]#make&& make install
[root@mysqla php-5.6.27]# cpphp.ini-production /etc/php.ini
編輯配置文件/etc/php.ini?,修改后的內(nèi)容如下:
找到:
;date.timezone =?
修改為:
date.timezone = PRC #設(shè)置時(shí)區(qū)
找到:
expose_php = On?
修改為:
expose_php = Off #禁止顯示php版本的信息
找到:
short_open_tag = Off?
修改為:
short_open_tag = On //支持php短標(biāo)簽
找到:
post_max_size = 8M
修改為:
post_max_size = 16M? //上傳文件大小
找到:
max_execution_time = 30
修改為:
max_execution_time = 300? //php腳本最大執(zhí)行時(shí)間
找到:
max_input_time = 60
修改為:
max_input_time = 300? //以秒為單位對(duì)通過(guò)POST、GET以及PUT方式接收數(shù)據(jù)時(shí)間進(jìn)行限制
always_populate_raw_post_data= -1
mbstring.func_overload = 0
創(chuàng)建php-fpm服務(wù)啟動(dòng)腳本:
[root@mysqla php-5.6.27]# cpsapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@mysqla php-5.6.27]#chmod +x /etc/init.d/php-fpm
[root@mysqla php-5.6.27]#chkconfig --add php-fpm
[root@mysqla php-5.6.27]#chkconfig php-fpm on
提供php-fpm配置文件并編輯:
#cp/usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@mysqla php-5.6.27]# vi/usr/local/php5.6/etc/php-fpm.conf
修改內(nèi)容如下:
pid = run/php-fpm.pid
user = www
group = www
listen =127.0.0.1:9000
pm.max_children = 300
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers =50
啟動(dòng)php-fpm服務(wù):
[root@phpserver ~]#service? php-fpm start
Starting php-fpm? done
[root@mysqla php-5.6.27]#netstat -anpt | grep php-fpm
tcp?? 0?? 0127.0.0.1:9000??? 0.0.0.0:*???? LISTEN?????10937/php-fpm: mast
配置nginx支持php
[root@mysqla ~]# cat/usr/local/nginx1.10/conf/nginx.conf
user? www www;
worker_processes? 4;
#error_log? logs/error.log;
#error_log? logs/error.log? notice;
#error_log? logs/error.log? info;
#pid??????? logs/nginx.pid;
events {
use epoll;
??? ??worker_connections? 1024;
}
http {
include?????? mime.types;
??? default_type? application/octet-stream;
?? ???#log_format?main? '$remote_addr - $remote_user[$time_local] "$request" '
??? ??????????????????#'$status $body_bytes_sent"$http_referer" '
???? ?????????????????#'"$http_user_agent""$http_x_forwarded_for"';
?
??? ??#access_log? logs/access.log? main;
sendfile??????? on;
?? ???#tcp_nopush????on;
?? ???#keepalive_timeout? 0;
?? ???keepalive_timeout? 65;
??? ??#gzip? on;
server {
listen?????? 80;
?????? ???server_name?localhost;
charset utf-8;
??????? ??#access_log?logs/host.access.log? main;
location / {
root?? html;
index? index.php index.html index.htm;
??????? ??}
location ~ \.php$ {
root html;
?????????? ???fastcgi_pass 127.0.0.1:9000;
??????????? ??fastcgi_index index.php;
include fastcgi.conf;
?????? ???}
??????? ??#error_page?404????????????? /404.html;
?????? ???# redirect server error pages to the staticpage /50x.html
???? ?????#
???? ?????error_page??500 502 503 504? /50x.html;
location = /50x.html {
root?? html;
????? ????}
location /status {
stub_status on;
?????? ???}
? ?????}
}
[root@mysqla conf]# nginx -t
nginx: the configurationfile /usr/local/nginx1.10/conf/nginx.conf syntax is ok
nginx: configuration file/usr/local/nginx1.10/conf/nginx.conf test is successful
[root@mysqla conf]# killall-s HUP nginx
測(cè)試LNMP
進(jìn)入nginx默認(rèn)的網(wǎng)頁(yè)根目錄,創(chuàng)建.php的測(cè)試頁(yè)
[root@mysqla ~]# cat/usr/local/nginx1.10/html/test1.php
<?php
phpinfo()
?>
[root@mysqla ~]# cat/usr/local/nginx1.10/html/test2.php
<?php
$link=mysql_connect('localhost','root','123.abc');
if($link) echo"ok";
mysql_close();
?>
訪問(wèn)結(jié)果:
??
??
至此,LNMP部署完畢。
?
三、監(jiān)控系統(tǒng)Zabbix-3.2.1的安裝
zabbix-server端的操作
zabbix服務(wù)器端要提前安裝好LNMP環(huán)境(mysql,nginx,php5的安裝目錄均是/usr/local)
創(chuàng)建Zabbix運(yùn)行的用戶(hù):
[root@mysqla ~]#groupadd zabbix
[root@mysqla ~]#useradd -gzabbix zabbix
安裝libcurl和net-snmp:
[root@mysqla ~]#yum -yinstall net-snmp net-snmp-develcurl-develjava-1.8.0-openjdkjava-1.8.0-openjdk-develOpenIPMI-devel libssh2-devel
注:OpenIPMI-devel 和libssh2-devel軟件包使用centos在線(xiàn)yum軟件源安裝
安裝Fping:
[root@mysqla ~]# tar zxffping-3.12.tar.gz
[root@mysqla ~]# cdfping-3.12/
[root@mysqla fping-3.12]#./configure && make && make install
[root@mysqla fping-3.12]#chown root:zabbix /usr/local/sbin/fping
[root@mysqla fping-3.12]#chmod 4710 /usr/local/sbin/fping
安裝Zabbix Server:
[root@mysqla ~]# tar zxfzabbix-3.2.1.tar.gz
[root@mysqla ~]# cdzabbix-3.2.1/
[root@mysqla zabbix-3.2.1]#./configure --prefix=/usr/local/zabbix --enable-server --enable-agent--enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp--with-libcurl --with-openipmi
注意:編譯時(shí)最好帶上--enable-java這個(gè)參數(shù),方便后續(xù)監(jiān)控tomcat程序所用。
--with-ssh2 是不需要在客戶(hù)端服務(wù)器上面安裝Zabbix agent,如果需要使用ssh檢查,需要在編譯的時(shí)候加上這項(xiàng),最低需要libssh2 1.0.0版本,需要安裝ssh開(kāi)發(fā)包
--with-openipmi用戶(hù)可以利用 IPMI 監(jiān)視服務(wù)器的物理特征,如溫度、電壓、電扇工作狀態(tài)、電源供應(yīng)等。
如果添加了--enable-proxy, 那么會(huì)生成get和sender兩條命令. 如下, 用于接收agent發(fā)生過(guò)來(lái)的信息, 同時(shí)發(fā)送給server.
[root@mysqla zabbix-3.2.1]#make&& make install
添加系統(tǒng)軟連接
[root@mysqla ~]# ln -s/usr/local/zabbix/bin/* /usr/local/bin/
[root@mysqla ~]# ln -s/usr/local/zabbix/sbin/* /usr/local/sbin/
Zabbix Server配置與啟動(dòng)
創(chuàng)建Zabbix數(shù)據(jù)庫(kù)和MySQL用戶(hù):
mysql> create databasezabbix character set utf8;
Query OK, 1 row affected(0.01 sec)
?
mysql> grant allprivileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected, 1warning (0.00 sec)
導(dǎo)入Zabbix初始數(shù)據(jù):
切換到zabbix的解壓目錄下
[root@mysqla zabbix-3.2.1]#cd database/mysql/
[root@mysqla mysql]# pwd
/root/zabbix-3.2.1/database/mysql
[root@mysqla mysql]# ls
data.sql? p_w_picpaths.sql?schema.sql
進(jìn)行zabbix初始數(shù)據(jù)導(dǎo)入
[root@mysqla mysql]# mysql-uzabbix -pzabbix -hlocalhost zabbix < schema.sql
[root@mysqla mysql]# mysql-uzabbix -pzabbix -hlocalhost zabbix < p_w_picpaths.sql
[root@mysqla mysql]# mysql-uzabbix -pzabbix -hlocalhost zabbix < data.sql
編輯/usr/local/zabbix/etc/zabbix_server.conf:
root@mysqla ~]# grep -v"^#" /usr/local/zabbix/etc/zabbix_server.conf | grep -v"^$"
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
FpingLocation=/usr/local/sbin/fping
#mkdir -p /usr/local/zabbix/logs
#chown -R zabbix:zabbix /usr/local/zabbix
啟動(dòng)Zabbix Server:
#/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
/usr/local/zabbix/sbin/zabbix_server: error whileloading shared libraries: libmysqlclient.so.20: cannot open shared object file:No such file or directory
解決方法:
在ld.so.conf中加入/usr/local/mysql/lib
[root@mysqla zabbix-3.2.1]#cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/mysql/lib
/usr/local/lib
[root@mysqla zabbix-3.2.1]#ldconfig
再次執(zhí)行zabbix_server啟動(dòng)
#/usr/local/zabbix/sbin/zabbix_server -c/usr/local/zabbix/etc/zabbix_server.conf
[root@mysqla init.d]#netstat -anpt |grep zabbix_server
tcp ???0? 00.0.0.0:10051??? 0.0.0.0:*????? LISTEN????? 27199/zabbix_server
添加開(kāi)機(jī)啟動(dòng)腳本
[root@mysqla ~]# cdzabbix-3.2.1/
# cpmisc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
# cpmisc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
[root@mysqla zabbix-3.2.1]#chmod +x /etc/rc.d/init.d/zabbix_server
[root@mysqla zabbix-3.2.1]#chmod +x /etc/rc.d/init.d/zabbix_agentd
[root@mysqla zabbix-3.2.1]#chkconfig --add zabbix_server
[root@mysqla zabbix-3.2.1]#chkconfig --add zabbix_agentd
[root@mysqla zabbix-3.2.1]#chkconfig zabbix_server on
[root@mysqla zabbix-3.2.1]#chkconfig zabbix_agentd on
修改zabbix開(kāi)機(jī)啟動(dòng)腳本中的zabbix安裝目錄
vi/etc/rc.d/init.d/zabbix_server?#編輯服務(wù)端配置文件
BASEDIR=/usr/local/zabbix/?#zabbix安裝目錄
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid??? #pid文件路徑
:wq!?#保存退出
vi/etc/rc.d/init.d/zabbix_agentd?#編輯客戶(hù)端配置文件
BASEDIR=/usr/local/zabbix/?#zabbix安裝目錄
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid? #pid文件路徑
:wq!?#保存退出
[root@mysqla zabbix-3.2.1]#systemctl daemon-reload
[root@mysqla zabbix-3.2.1]#/etc/init.d/zabbix_server stop
Stopping zabbix_server (viasystemctl):??????????????????? [? OK? ]
[root@mysqla zabbix-3.2.1]#netstat -anpt | grep zabbix
[root@mysqla zabbix-3.2.1]#/etc/init.d/zabbix_server start
Starting zabbix_server (viasystemctl):??????????????????? [? OK? ]
[root@mysqla zabbix-3.2.1]#netstat -anpt | grep zabbix
tcp? 0??? 00.0.0.0:10051?? 0.0.0.0:*? LISTEN?????28106/zabbix_server
設(shè)置防火墻規(guī)則
[root@mysqla zabbix-3.2.1]#firewall-cmd --permanent --add-port=10051/tcp
success
[root@mysqla zabbix-3.2.1]#firewall-cmd --reload
success
配置zabbix web頁(yè)面
在安裝目錄將frontends拷貝到指定的web root:
[root@mysqla ~]# cd/root/zabbix-3.2.1/
[root@mysqla zabbix-3.2.1]# cp-r frontends/php/ /usr/local/nginx1.10/html/zabbix
[root@mysqla zabbix-3.2.1]#chown ?-R?www:www?/usr/local/nginx1.10/html/zabbix/
注:/usr/local/nginx/html為Nginx默認(rèn)站點(diǎn)目錄 www為Nginx運(yùn)行賬戶(hù)
注:PHP需要至少開(kāi)啟擴(kuò)展:
gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
如下,查看是否包括了上面所提到的擴(kuò)展模塊
[root@mysqla ~]# /usr/local/php5.6/bin/php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
安裝web
訪問(wèn)Web界面http://192.168.31.225/zabbix,進(jìn)行相關(guān)web配置,配置完成后使用默認(rèn)用戶(hù)admin(密碼:zabbix)登陸即可
進(jìn)入ZABBIX WEB安裝畫(huà)面
?
進(jìn)入ZABBIX檢測(cè)畫(huà)面
對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)置,這里如果數(shù)據(jù)庫(kù)在本地的話(huà)端口可以使用0
?
點(diǎn)擊Next step 一下步進(jìn)行zabbix server 細(xì)節(jié)的設(shè)置 ?這一步可以默認(rèn)
?
點(diǎn)擊安裝,安裝完成后 ?如果沒(méi)有錯(cuò)誤就會(huì)進(jìn)入完成畫(huà)面
完成畫(huà)面有設(shè)置文件放在服務(wù)器的位置,請(qǐng)記下來(lái)
?
?
點(diǎn)擊Finish 完成?
使用Admin?用默認(rèn)密碼 zabbix 登錄
?
?
登錄后畫(huà)面如下
?
? ?至此 ZABBIX的基礎(chǔ)安裝完成
注:
1.???顯示簡(jiǎn)體中文界面
在安裝數(shù)據(jù)庫(kù)時(shí)已經(jīng)將zabbix庫(kù)設(shè)置了utf-8字符
首先確定zabbix開(kāi)啟了中文支持功能:
登錄到zabbix服務(wù)器的數(shù)據(jù)目錄下(前面部署的zabbix數(shù)據(jù)目錄是/usr/local/nginx1.10/html/zabbix/),打開(kāi) locales.inc.php文件
[root@mysqla include]# pwd
/usr/local/nginx1.10/html/zabbix/include
[root@mysqla include]# vilocales.inc.php
function getLocales() {
return [
??????????????? 'en_GB' => ['name'=>_('English (en_GB)'),???? 'display'=> true],
??????????????? 'en_US' => ['name'=>_('English (en_US)'),???? 'display'=> true],
??????????????? 'bg_BG' => ['name'=>_('Bulgarian (bg_BG)'),?? 'display'=> false],
??????????????? 'zh_CN' => ['name'=>_('Chinese (zh_CN)'),???? 'display'=> true],
??????????????? 'zh_TW' => ['name'=>_('Chinese (zh_TW)'),???? 'display'=> false],
??????????????? 'cs_CZ' => ['name'=>_('Czech (cs_CZ)'),?????? 'display'=> true],
??????????????? 'nl_NL' => ['name'=>_('Dutch (nl_NL)'),?????? 'display'=> false],
登陸zabbix后,點(diǎn)擊右上角的“用戶(hù)”圖標(biāo),將語(yǔ)言設(shè)置為“中文”:
?
按照如圖選擇Chinese(zh_CN),點(diǎn)擊update:
?
解決zabbix繪圖中出現(xiàn)中文亂碼問(wèn)題:
a.從windows下控制面板->字體->選擇一種中文字庫(kù)例如“楷體”
?
b.把它拷貝到zabbix的web端的fonts目錄下例如:/usr/local/nginx1.10/html/zabbix/fonts/,并且把TTF后綴改為ttf
[root@mysqla fonts]# pwd
/usr/local/nginx1.10/html/zabbix/fonts
[root@mysqla fonts]# ls
DejaVuSans.ttf? simkai.ttf
并且將之前的字體文件DejaVuSans.ttf移動(dòng)到別處
c.然后,接著修改代碼include/defines.inc.php文件中的字體配置,將里面關(guān)于字體設(shè)置從DejaVuSans替換成simkai ?
vi替換技巧:%s/DejaVuSans/simkai
其中:simkai為字庫(kù)名字,不包含ttf后綴
#cd/usr/local/nginx1.10/html/zabbix
# vi include/defines.inc.php
在vi編輯器的末行模式下輸入%s/DejaVuSans/simkai
這樣,修改后,zabbix監(jiān)控圖形中的中文字就不會(huì)出現(xiàn)亂碼了
?
四、zabbix客戶(hù)端的安裝
既然要監(jiān)控我們就要添加要監(jiān)控的主機(jī),在添加主機(jī)之前我們首先要在被檢測(cè)主機(jī)上面安裝agent,安裝agent比較簡(jiǎn)單,我們也是按照安裝server的流程,下載軟件包,在編譯的時(shí)候,我們只選擇agent
192.168.31.250作為zabbix的被監(jiān)控端,提供web和mysql應(yīng)用
安裝Zabbix,配置Zabbix agent:
[root@server1 ~]# tar zxfzabbix-3.2.1.tar.gz
[root@server1 ~]# cdzabbix-3.2.1/
[root@server1 zabbix-3.2.1]#./configure --prefix=/usr/local/zabbix --enable-agent
[root@server1 zabbix-3.2.1]#make&& make install
[root@server1 zabbix-3.2.1]#cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@server1 zabbix-3.2.1]#mkdir -p /usr/local/zabbix/logs
[root@server1 zabbix-3.2.1]#groupadd zabbix
[root@server1 zabbix-3.2.1]#useradd -g zabbix zabbix
[root@server1 zabbix-3.2.1]#chown -R zabbix:zabbix /usr/local/zabbix/
配置開(kāi)機(jī)自動(dòng)啟動(dòng):
[root@server1 ~]# chkconfig--add zabbix_agentd
[root@server1 ~]# chkconfigzabbix_agentd? on
修改zabbix開(kāi)機(jī)啟動(dòng)腳本中的zabbix安裝目錄
vi/etc/rc.d/init.d/zabbix_agentd?#編輯客戶(hù)端配置文件
BASEDIR=/usr/local/zabbix/?#zabbix安裝目錄
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid?#pid文件路徑
:wq!?#保存退出
[root@server1 zabbix-3.2.1]#systemctl daemon-reload
編輯zabbix_agentd.conf
[root@server1 zabbix-3.2.1]#vi /usr/local/zabbix/etc/zabbix_agentd.conf
內(nèi)容如下:
[root@server1 zabbix-3.2.1]#grep -v "^#" /usr/local/zabbix/etc/zabbix_agentd.conf | grep -v"^$"
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.31.225
ListenPort=10050
ServerActive=192.168.31.225
Hostname=192.168.31.250
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
注:
其中Server和ServerActive都指定zabbixserver的IP地址,不同的是,前者是被動(dòng)后者是主動(dòng)。也就是說(shuō)Server這個(gè)配置是用來(lái)允許192.168.31.225這個(gè)ip來(lái)我這取數(shù)據(jù)。而serverActive的192.168.31.225的意思是,客戶(hù)端主動(dòng)提交數(shù)據(jù)給他。
Hostname=XXX,這個(gè)定義的名字必須和web頁(yè)面里面host的名字一樣。
啟動(dòng)zabbix_agentd:
[root@server1 ~]#/etc/init.d/zabbix_agentd start
Starting zabbix_agentd (viasystemctl):??????????????????? [? OK? ]
[root@server1 ~]# netstat-anpt | grep zabbix_agentd
tcp??????? 0?????0 0.0.0.0:10050??????????0.0.0.0:*?????????????? LISTEN????? 12926/zabbix_agentd
[root@server1 ~]#firewall-cmd --permanent --add-port=10050/tcp
success
[root@server1 ~]#firewall-cmd --reload
success
到此,zabbix3.2.1監(jiān)控系統(tǒng)的基本環(huán)境安裝完成。
實(shí)現(xiàn)zabbix添加監(jiān)測(cè)項(xiàng)
添加對(duì)Linux主機(jī)的監(jiān)控
在瀏覽器中打開(kāi):http://192.168.31.225/zabbix
登錄zabbix,先在“配置”-“主機(jī)”里添加主機(jī)監(jiān)控,監(jiān)控os資源:內(nèi)存,cpu,io,負(fù)載,帶寬等.
登錄zabbix,先在“配置”-“主機(jī)”里單擊”創(chuàng)建主機(jī)”
點(diǎn)擊”主機(jī)”標(biāo)簽,填寫(xiě)相關(guān)信息
?
?
注意:下圖中的“主機(jī)名稱(chēng)”要和zabbix_agentd.conf文件中設(shè)置的“Hostname”后面的名稱(chēng)一致!
主機(jī)名稱(chēng):192.168.31.250
群組:Linux servers
agent代理程序接口ip:192.168.31.250
已啟用:勾選
其它選項(xiàng)默認(rèn)即可
切換到模板
?
選擇
選擇:Template OS Linux
點(diǎn)添加
?
添加
?
至此,Zabbix監(jiān)控Linux主機(jī)設(shè)置完成。
?
配置過(guò)一段時(shí)間后,觀察下監(jiān)控圖效果出來(lái)了沒(méi):
?
zabbix3.0 server已自帶mysql的模板了,只需配置好agent客戶(hù)端,然后在web端給主機(jī)增加模板就行了。
Zabbix_agent客戶(hù)端操作
(1)首先在客戶(hù)端的mysql里添加權(quán)限,即本機(jī)使用zabbix賬號(hào)連接本地的mysql
mysql> grant all on *.*to zabbix@'localhost' identified by "123456”;
mysql> flush privileges;
(2)在zabbix_agent服務(wù)目錄下創(chuàng)建.my.cnf 連接文件
? ? ? ? zabbix安裝目錄是/usr/local/zabbix
[root@server1 ~]# cd /usr/local/zabbix/etc/
[root@server1 ~]# cat .my.cnf?
[client]
user=zabbix
password=123456
注意:
如果在數(shù)據(jù)庫(kù)grant授權(quán)時(shí),針對(duì)的是localhost,這個(gè).my.cnf里面就不用加host參數(shù)了【如上配置】
但如果grant授權(quán)時(shí)針對(duì)的是本機(jī)的ip(如192.168.31.250),那么在.my.cnf文件里就要加上host參數(shù)進(jìn)行指定了
即在.my.cnf文件就要加上:
host=192.168.31.250
socket= /usr/local/mysql/mysql.sock
user=zabbix
password=123456
(3)配置MySQL的key文件
? ? ?這個(gè)可以從zabbix3.2安裝時(shí)的解壓包里拷貝過(guò)來(lái)
從zabbix_server服務(wù)端安裝時(shí)解壓目錄
/root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf?拷貝到zabbix_agent客戶(hù)端上的/usr/local/zabbix/etc/zabbix_agentd.conf.d/ 目錄下的
[root@server1 ~]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@server1zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
# cp/root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf ./
[root@server1 zabbix_agentd.conf.d]# ls userparameter_mysql.conf
userparameter_mysql.conf
然后查看?userparameter_mysql.conf?文件,看到類(lèi)似?HOME=/var/lib/zabbix?的路徑設(shè)置,把路徑全都替換為?/usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目錄路徑。
另外,注意userparameter_mysql.conf?文件里的mysql命令路徑(提前做好mysql的系統(tǒng)環(huán)境變量,以防m(xù)ysql命令不被系統(tǒng)識(shí)別)
如下:
[root@server1zabbix_agentd.conf.d]# cat userparameter_mysql.conf
# For all the followingcommands HOME should be set to the directory that has .my.cnf file withpassword information.
?
# Flexible parameter to grabglobal variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax ismysql.status[variable].
UserParameter=mysql.status[*],echo"show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ mysql -N | awk '{print $$2}'
?
# Flexible parameter todetermine database or table size. On the frontend side, use keys likemysql.size[zabbix,history,data].
# Key syntax ismysql.size[<database>,<table>,<type>].
# Database may be a databasename or "all". Default is "all".
# Table may be a table nameor "all". Default is "all".
# Type may be"data", "index", "free" or "both". Bothis a sum of data and index. Default is "both".
# Database is mandatory if atable is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length orindex_length alone needed when we are getting this information for wholedatabase instead of a single table
UserParameter=mysql.size[*],bash-c 'echo "select sum($(case "$3" in both|"") echo"data_length+index_length";; data|index) echo "$3_length";;free) echo "data_free";; esac)) from information_schema.tables$([["$1" = "all" || ! "$1" ]] || echo " wheretable_schema=\"$1\"")$([[ "$2" = "all" || !"$2" ]] || echo "and table_name=\"$2\"");" |HOME=/usr/local/zabbix/etc/mysql -N'
UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql-V
(4)按照上面修改完之后檢查一下,然后重啟zabbix_agent
[root@server1 ~]# pkill -9zabbix_agent
[root@server1 ~]# netstat-anpt | grep zabbix_agent
[root@server1 ~]#/usr/local/zabbix/sbin/zabbix_agentd
[root@server1 ~]# netstat-anpt | grep zabbix_agent
tcp?? 0?????0 0.0.0.0:10050?? 0.0.0.0:*??? LISTEN?????15400/zabbix_agentd
接著在zabbix_server服務(wù)端進(jìn)行命令行測(cè)試[下面的192.168.31.250是客戶(hù)端的ip]
若下面報(bào)錯(cuò)
[root@localhost zabbix]#/usr/local/zabbix/bin/zabbix_get -s 192.168.31.250 -p 10050 -k"mysql.status[Uptime]"
sh: mysql: command not found
解決方法:
在userparameter_mysql.conf中關(guān)于mysql命令前面添加絕對(duì)路徑
[root@mysqla~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.31.250 -p 10050 -k"mysql.status[Uptime]"
12593
[root@mysqla ~]#
如果出現(xiàn)類(lèi)似這一串key的數(shù)字,就說(shuō)明配置ok,服務(wù)端能監(jiān)控到客戶(hù)端的mysql數(shù)據(jù)了!
成功啦,之后在監(jiān)控界面增加主機(jī)對(duì)應(yīng)的MySQL模板就ok了。
注:zabbix_get命令介紹
參數(shù)說(shuō)明:
-s --host:指定客戶(hù)端主機(jī)名或者IP
-p --port:客戶(hù)端端口,默認(rèn)10050
-I --source-address:指定源IP,寫(xiě)上zabbix server的ip地址即可,一般留空,服務(wù)器如果有多ip的時(shí)候,你指定一個(gè)。
-k --key:你想獲取的key
zabbix_get獲取數(shù)據(jù)
獲取負(fù)載
# zabbix_get -s192.168.31.250 -p 10050 -k "system.cpu.load[all,avg15]"
獲取主機(jī)名
# zabbix_get -s192.168.31.250 -p 10050 -k "system.hostname"
(5)登錄zabbix監(jiān)控界面,在“配置”-“模板”里可以看到自帶的mysql監(jiān)控模板
?
在相應(yīng)主機(jī)監(jiān)控配置里添加mysql的監(jiān)控模版(zabbix自帶的)即可。
?
下面是mysql監(jiān)控項(xiàng)的效果圖:
【1】監(jiān)控mysql的帶寬:在zabbix前端可以實(shí)時(shí)查看mysql發(fā)送接收的字節(jié)數(shù)。其中bytes received表示從所有客戶(hù)端接收到的字節(jié)數(shù),bytes sent表示發(fā)送給所有客戶(hù)端的字節(jié)數(shù)。
【2】監(jiān)控mysql的操作狀態(tài):在zabbix前端可以實(shí)時(shí)查看各種SQL語(yǔ)句每秒鐘的操作次數(shù)。
?
zabbix3.2.1郵件報(bào)警設(shè)置:
Zabbix監(jiān)控服務(wù)端、客戶(hù)端都已經(jīng)部署完成,被監(jiān)控主機(jī)已經(jīng)添加,Zabiix監(jiān)控運(yùn)行正常。
在Zabbix服務(wù)端設(shè)置郵件報(bào)警,當(dāng)被監(jiān)控主機(jī)宕機(jī)或者達(dá)到觸發(fā)器預(yù)設(shè)值時(shí),會(huì)自動(dòng)發(fā)送報(bào)警郵件到指定郵箱。
具體操作:
以下操作在Zabbix監(jiān)控服務(wù)端進(jìn)行
下載sendemail軟件
然后安裝那兩個(gè)依賴(lài)包,命令是:
yum install perl-Net-SSLeayperl-IO-Socket-SSL -y
解壓軟件,然后將sendemail復(fù)制到/usr/local/bin/目錄下,并加上可執(zhí)行權(quán)限,然后修改用戶(hù)和群組。
[root@mysqla ~]# tar zxfsendEmail-v1.56.tar.gz
[root@mysqla ~]# cdsendEmail-v1.56/
[root@mysqlasendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail
[root@mysqlasendEmail-v1.56]# chown zabbix:zabbix /usr/local/bin/sendEmail
[root@mysqlasendEmail-v1.56]# ll /usr/local/bin/sendEmail
-rwxr-xr-x. 1 zabbix zabbix80213 Nov 21 21:26 /usr/local/bin/sendEmail
執(zhí)行#/usr/local/bin/sendEmail -h查看sendEmail的幫助
#/usr/local/bin/sendEmail -fbpcyh1@126.com -t bpcyh1@126.com -s smtp.126.com -u "hello" -omessage-content-type=html -o message-charset=utf8 -xu bpcyh1@126.com -xp 123abc-m "abcfdd"
命令主要選項(xiàng)說(shuō)明:
/usr/local/bin/sendEmail ? ? ? ? ? ? ?? ? ??#命令主程序
-f ?from@126.com ? ? ?? ? ? ? ? ? ? ? ? ?#發(fā)件人郵箱
-t to@126.com ? ? ? ? ? ? ? ? ?? ? ? ? ? ?#收件人郵箱
-s smtp.126.com? ? ? ? ? ? ? ? ?? ? ? ? ?#發(fā)件人郵箱的smtp服務(wù)器
-u "我是郵件主題" ? ? ? ?? ? ? ? ? ? ? ? ? ???#郵件的標(biāo)題
-o message-content-type=html ? ? ? ? ?#郵件內(nèi)容的格式,html表示它是html格式
-o message-charset=utf8 ? ? ? ? ? ? ? ???#郵件內(nèi)容編碼
-xu from@126.com ? ? ? ? ? ? ? ? ?? ??#發(fā)件人郵箱的用戶(hù)名
-xp WEE78@12l$ ? ? ? ? ? ? ? ? ?? ? ? ? ??#發(fā)件人郵箱密碼
-m "我是郵件內(nèi)容" ? ? ? ?? ? ? ? ? ? ? ? ? ??#郵件的具體內(nèi)容
進(jìn)入/usr/local/zabbix/share/zabbix/alertscripts/目錄
然后在這個(gè)目錄下創(chuàng)建報(bào)警腳本sendmail.sh
[root@mysqla alertscripts]#vi mail.sh
下面是腳本內(nèi)容(涂顏色部分是你的郵箱和密碼,-f和-xu參數(shù)后面跟郵箱,-xp后面跟授權(quán)碼)
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail-o tls=auto -f bpcyh1@126.com -t "$to" -s smtp.126.com -u"$subject" -o message-content-type=html -o message-charset=utf8 -xubpcyh1@126.com -xp 123abc -m "$body"?
[root@mysqla alertscripts]#chmod +x mail.sh
執(zhí)行腳本測(cè)試發(fā)郵件
[root@mysqla alertscripts]#./mail.sh bpcyh1@126.com test 123
*******************************************************************
?Using the defaultof SSL_verify_mode of SSL_VERIFY_NONE for client
is deprecated! Please set SSL_verify_mode toSSL_VERIFY_PEER
together with SSL_ca_file|SSL_ca_path for verification.
?If you reallydon't want to verify the certificate and keep the
connection open to Man-In-The-Middle attacks please set
SSL_verify_mode explicitly to SSL_VERIFY_NONE in yourapplication.
*******************************************************************
at /usr/local/bin/sendEmail line 1906.
invalid SSL_version specified at/usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415
注:進(jìn)行發(fā)送郵件測(cè)試時(shí),出現(xiàn)了第一個(gè)報(bào)錯(cuò)
原因是sendemail軟件和perl5里面的ssl版本不兼容導(dǎo)致的,通過(guò)修改sendemail里面的內(nèi)容可以解決這個(gè)問(wèn)題。
解決方法:
在sendemail中1906行的內(nèi)容,從
if (!IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
修改為
if (! IO::Socket::SSL->start_SSL($SERVER)){
即不指定SSL的版本,讓程序來(lái)自己選擇
不管你使用的是163/126郵箱還是qq郵箱,你都必須開(kāi)通pop3服務(wù),而且126/qq郵箱還要求使用第三方客戶(hù)端發(fā)送郵件是必須使用授權(quán)碼登錄,使用賬號(hào)密碼驗(yàn)證時(shí),會(huì)出現(xiàn)下面圖片中的錯(cuò)誤。
sendEmail[5102]: ERROR =>ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.
至于郵箱的授權(quán)碼,自己登錄126郵箱去設(shè)置就好。
經(jīng)過(guò)上面兩個(gè)問(wèn)題的處理后就可以正常發(fā)送郵件如下所示顯示成功提示
[root@mysqla alertscripts]#./mail.sh bpcyh1@126.com test 123
Nov 21 22:50:47 mysqlasendEmail[5195]: Email was sent successfully!
zabbix web端配置
上面的郵件腳本配置好后,就要在web端添加報(bào)警媒介,在web頁(yè)面的管理,報(bào)警媒介類(lèi)型頁(yè)面,點(diǎn)擊右邊的創(chuàng)建媒體類(lèi)型
?
進(jìn)入創(chuàng)建頁(yè)面,然后輸入名稱(chēng)“郵件報(bào)警腳本”,類(lèi)型選擇腳本,名稱(chēng)選擇mail.sh,點(diǎn)擊添加按鈕,添加三個(gè)腳本參數(shù),分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分別對(duì)于mail.sh中的to、subject和body。添加完成后點(diǎn)下面的添加按鈕,我們的報(bào)警媒介就創(chuàng)建完成了
?
?
創(chuàng)建好報(bào)警媒介后,就需要將報(bào)警媒介關(guān)聯(lián)到我們的用戶(hù)。點(diǎn)擊管理,用戶(hù),然后選擇我們的用戶(hù)admin也可新建一個(gè)用戶(hù),點(diǎn)擊用戶(hù)名就進(jìn)入到用戶(hù)配置界面。點(diǎn)擊報(bào)警媒介,然后點(diǎn)添加,選擇我們上一步創(chuàng)建的郵件報(bào)警腳本,輸入收件人,選擇報(bào)警時(shí)間和類(lèi)型,然后點(diǎn)擊添加,就將創(chuàng)建好的報(bào)警媒介關(guān)聯(lián)到我們的用戶(hù)上面了。
?
?
現(xiàn)在需要做的是,創(chuàng)建一個(gè)觸發(fā)動(dòng)作,即系統(tǒng)出現(xiàn)故障時(shí),觸發(fā)這個(gè)動(dòng)作,然后給我們的郵箱發(fā)送報(bào)警郵件。點(diǎn)擊配置,選擇動(dòng)作,然后點(diǎn)擊右邊的創(chuàng)建動(dòng)作。
在動(dòng)作這一頁(yè)名稱(chēng)中寫(xiě)入我們定義的動(dòng)作名以及觸發(fā)條件
??
設(shè)置“操作”
?
步驟是1-3,也即是從1開(kāi)始到3結(jié)束。一旦故障發(fā)生,就是執(zhí)行Email.sh腳本發(fā)生報(bào)警郵件給zabbix用戶(hù)。?
假如故障持續(xù)了1個(gè)小時(shí),它也只發(fā)送3次,第1-3次(即前3次)郵箱發(fā)送給zabbix用戶(hù),時(shí)間間隔為0秒。
如果改成1-0,0是表示不限制.無(wú)限發(fā)送??
設(shè)置“恢復(fù)操作”
?
添加好以后就可以看到我們添加的動(dòng)作名,以及該動(dòng)作已啟用的狀態(tài)。
?
報(bào)警測(cè)試
將192.16831.250服務(wù)器的zabbix_agent進(jìn)程關(guān)閉。
發(fā)現(xiàn)可以正常收到故障報(bào)警郵件
最后,點(diǎn)擊”報(bào)表“->”動(dòng)作日志“,可以看到觸發(fā)動(dòng)作的次數(shù)(右邊還看查看到郵件發(fā)送狀態(tài)“已發(fā)送”)。
=========================================================================================
通過(guò)理論和實(shí)踐的結(jié)合能更好的提升,歡迎轉(zhuǎn)載,學(xué)習(xí)!
轉(zhuǎn)載于:https://blog.51cto.com/taoliang/1910453
總結(jié)
以上是生活随笔為你收集整理的Zabbix监控系统安装与使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ajax 原理----初级篇
- 下一篇: 面对大规模系统工程,看Facebook如