一、Zabbix簡介:
zabbix是完全開源的工具,整合了cacti和nagios等特性
cacti:snmp
nagios:linux 主機:nrpe 設備:snmp
附:SNMP(udp161 udp 162)
衆多網絡工具都支持此協議,比如常見路由交換,常見OS
其既可以做管理端也可以做被管理端
snmp協議大致有3個版本分別是v1 v2 v3
無論是v1 和 v2 的安全性是比較差的,因爲傳輸是明文的, V3的認證密碼用MD5/SHA摘要算法加密
很多工具支持網絡管理的功能,而對於非網絡設備(操作系統),可以完全拋開snmp這種不安全的 架構來實現監控的。所以很多工具都是控制端和agent架構,他們有專屬的agent
1、Zabbix的主要功能:
l 具備常見的商業監控軟件所具備的功能(主機的性能監控、網絡設備性能監控、數據庫、FTP 等通用協議監控、多種告警方式、詳細的報表圖表繪製)
l 支持自動發現網絡設備和服務器(可以通過配置自動發現服務器規則來實現)
l 支持分佈式,能集中展示、管理分佈式的監控點,擴展性強
l server 提供通用接口(api 功能),可以自己開發完善各類監控(根據相關接口編寫程序實現),編寫插件容易,可以自定義監控項,報警級別的設置。
l 數據收集,支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET;
l 自定義的檢測;自定義收集數據的頻率;
l 服務器/代理和客戶端模式;
l 靈活的觸發器;可以定義非常靈活的問題閾值,稱爲觸發器;
l 高可定製的報警;發送通知,可定製的報警升級,收件人,媒體類型。
l CPU負荷、內存使用、磁盤使用、網絡狀況、端口監視、日誌監視等等。
l 硬件監控:Zabbix IPMI Interface
l 系統監控:Zabbix Agent Interface
l Java監控:Zabbix JMXInterface
l 網絡設備監控:Zabbix SNMPInterface
l 應用服務監控:Zabbix AgentUserParameter
l MySQL數據庫監控:percona-monitoring-plulgins
l URL監控:Zabbix Web 監控
2、zabbix重要組件說明:
1)zabbix server:負責接收agent發送的報告信息的核心組件,所有配置、統計數據及操作數據都由它組織進行;
2)database storage:專用於存儲所有配置信息,以及由zabbix收集的數據;
3)web interface:zabbix的GUI接口;
4)proxy:可選組件,常用於監控節點很多的分佈式環境中,代理server收集部分數據轉發到server,可以減輕server的壓力;
5)agent:部署在被監控的主機上,負責收集主機本地數據如cpu、內存、數據庫等數據發往server端或proxy端;
另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的參數需要在這裏配置,後面會詳細說明。
一個監控系統運行的大概的流程是這樣的:
agentd需要安裝到被監控的主機上,它負責定期收集各項數據,併發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展現和繪圖。這裏agentd收集數據分爲主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。
zabbix常用的監控架構平臺
1、server-agentd模式:
這個是最簡單的架構了,常用於監控主機比較少的情況下。
2、server-proxy-agentd模式:
這個常用於比較多的機器,使用proxy進行分佈式監控,有效的減輕server端的壓力。
zabbix的系統架構:
Zabbix是一個基於Web界面的提供分佈式系統監視以及網絡監視功能的企業級開源解決方案。藉助Zabbix,可以很輕鬆地減輕運維人員們繁重的服務器管理任務,實現業務系統的持續運行。下面會逐步介紹Zabbix分佈式監控系統的部署及使用
配置好IP、DNS 、網關,確保使用遠程連接工具能夠連接服務器
zabbix監控服務器:192.168.130.76 #zabbix的服務端(若要監控本機,則需要配置本機的zabbix agent)
Zabbix agent被監控主機:192.168.130.78#zabbix的客戶端(被監控端,需要配置Zabbix agent
二、Zabbix部署前的LNMP環境的搭建過程:
安裝編譯工具及庫文件
[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、系統環境:centos7.2 x86_64
因爲centos7.2默認安裝了mariadb-libs,所以先要卸載掉
查看是否安裝mariadb
#rpm -qa | grep mariadb
卸載mariadb
rpm-e --nodeps mariadb-libs
2、安裝依賴包
注: 相關依賴包的作用
cmake:由於從MySQL5.5版本開始棄用了常規的configure編譯方法,所以需要CMake編譯器,用於設置mysql的編譯參數。如:安裝目錄、數據存放目錄、字符編碼、排序規則等。
Boost #從MySQL 5.7.5開始Boost庫是必需的,mysql源碼中用到了C++的Boost庫,要求必須安裝boost1.59.0或以上版本
GCC是Linux下的C語言編譯工具,mysql源碼編譯完全由C和C++編寫,要求必須安裝GCC
bison:Linux下C/C++語法分析器
ncurses:字符終端處理庫
1)安裝文件準備
下載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)創建mysql用戶和用戶組及目錄
# groupadd -r mysql&& useradd -r -g mysql -s /bin/false -M mysql---新建msyql組和msyql用戶禁止登錄shell
#mkdir/usr/local/mysql ---創建目錄
#mkdir/usr/local/mysql/data ---數據庫目錄
3、編譯安裝mysql
解壓mysql源碼包:
執行cmake命令進行編譯前的配置:
開始編譯、編譯安裝:
注1:配置解釋:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql[MySQL安裝的根目錄]-DMYSQL_DATADIR=/usr/local/mysql /data[MySQL數據庫文件存放目錄]
-DSYSCONFDIR=/etc[MySQL配置文件所在目錄]
-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[安裝支持數據庫分區]
-DEXTRA_CHARSETS=all[使MySQL支持所有的擴展字符]
-DDEFAULT_CHARSET=utf8[設置MySQL的默認字符集爲utf8]-DDEFAULT_COLLATION=utf8_general_ci [設置默認字符集校對規則]
-DWITH-SYSTEMD=1 [可以使用systemd控制mysql服務]
-DWITH_BOOST=/usr/local/boost [指向boost庫所在目錄]
更多參數執行[root@localhost mysql-5.7.13]# cmake . –LH
注2:爲了加快編譯速度可以按下面的方式編譯安裝
make -j $(grep processor /proc/cpuinfo | wc –l)
-j參數表示根據CPU核數指定編譯時的線程數,可以加快編譯速度。默認爲1個線程編譯。
注3:若要重新運行cmake配置,需要刪除CMakeCache.txt文件
# make clean
#rm -f CMakeCache.txt
優化Mysql的執行路徑
4、設置權限並初始化MySQL系統授權表
# 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初始化操作時要加--user=mysql參數,生成一個隨機密碼(注意保存登錄時用)
注2:MySQL 5.7.6之前的版本執行這個腳本初始化系統數據庫
/usr/local/mysql/bin/mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 5.7.6之後版本初始系統數據庫腳本(本文使用此方式初始化)
#/usr/local/mysql/bin/mysqld--initialize-insecure--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意:如果使用–initialize參數初始化系統數據庫之後,會生成root用戶的一個臨時密碼,如上圖高亮中所示。
# chown -Rmysql:mysql . ---改所有者,注意是root .
5、創建配置文件
#cd/usr/local/mysql/support-files ---進入MySQL安裝目錄支持文件目錄
# cp my-default.cnf/etc/my.cnf ---複製模板爲新的配置文件,
修改文件中配置選項,如下圖所示,添加如下配置項
#vi /etc/my.cnf
6、配置mysql自動啓動
服務啓動失敗,查看錯誤日誌文件
在mysqld.service,把默認的pid文件指定到了/var/run/mysqld/目錄,而並沒有事先建立該目錄,因此要手動建立該目錄並把權限賦給mysql用戶。
或者修改/usr/lib/system/system/mysqld.service,修改內容如下:
#systemctl daemon-reload
再次啓動mysql服務
查看端口號
服務啓動成功
訪問MySQL數據庫
# mysql -u root -h 127.0.0.1-p ---連接mysql,輸入初始化時生成的隨機密碼
設置數據庫管理員用戶root的密碼
安裝nginx:
解壓zlib
[root@mysqla ~]# tar zxfzlib-1.2.8.tar.gz
說明:不需要編譯,只需要解壓就行。
解壓pcre
[root@mysqla ~]# tar zxf pcre-8.39.tar.gz
說明:不需要編譯,只需要解壓就行。
[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
啓動後可以再瀏覽器中打開頁面,會顯示nginx默認頁面。
安裝php
[root@mysqla ~]# tar zxflibmcrypt-2.5.7.tar.gz
[root@mysqla ~]# cdlibmcrypt-2.5.7/
[[email protected]]# ./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 ,修改後的內容如下:
找到:
;date.timezone =
修改爲:
date.timezone = PRC #設置時區
找到:
expose_php = On
修改爲:
expose_php = Off #禁止顯示php版本的信息
找到:
short_open_tag = Off
修改爲:
short_open_tag = On //支持php短標籤
找到:
post_max_size = 8M
修改爲:
post_max_size = 16M //上傳文件大小
找到:
max_execution_time = 30
修改爲:
max_execution_time = 300 //php腳本最大執行時間
找到:
max_input_time = 60
修改爲:
max_input_time = 300 //以秒爲單位對通過POST、GET以及PUT方式接收數據時間進行限制
always_populate_raw_post_data= -1
mbstring.func_overload = 0
創建php-fpm服務啓動腳本:
[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
修改內容如下:
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
啓動php-fpm服務:
[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
測試LNMP
進入nginx默認的網頁根目錄,創建.php的測試頁
[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();
?>
訪問結果:
至此,LNMP部署完畢。
三、監控系統Zabbix-3.2.1的安裝
zabbix-server端的操作
zabbix服務器端要提前安裝好LNMP環境(mysql,nginx,php5的安裝目錄均是/usr/local)
創建Zabbix運行的用戶:
[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在線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
注意:編譯時最好帶上--enable-java這個參數,方便後續監控tomcat程序所用。
--with-ssh2 是不需要在客戶端服務器上面安裝Zabbix agent,如果需要使用ssh檢查,需要在編譯的時候加上這項,最低需要libssh2 1.0.0版本,需要安裝ssh開發包
--with-openipmi用戶可以利用 IPMI 監視服務器的物理特徵,如溫度、電壓、電扇工作狀態、電源供應等。
如果添加了--enable-proxy, 那麼會生成get和sender兩條命令. 如下, 用於接收agent發生過來的信息, 同時發送給server.
[root@mysqla zabbix-3.2.1]#make&& make install
添加系統軟連接
[root@mysqla ~]# ln -s/usr/local/zabbix/bin/* /usr/local/bin/
[root@mysqla ~]# ln -s/usr/local/zabbix/sbin/* /usr/local/sbin/
Zabbix Server配置與啓動
創建Zabbix數據庫和MySQL用戶:
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)
導入Zabbix初始數據:
切換到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 images.sql schema.sql
進行zabbix初始數據導入
[root@mysqla mysql]# mysql-uzabbix -pzabbix -hlocalhost zabbix < schema.sql
[root@mysqla mysql]# mysql-uzabbix -pzabbix -hlocalhost zabbix < images.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
啓動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
再次執行zabbix_server啓動
#/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
添加開機啓動腳本
[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開機啓動腳本中的zabbix安裝目錄
vi/etc/rc.d/init.d/zabbix_server #編輯服務端配置文件
BASEDIR=/usr/local/zabbix/ #zabbix安裝目錄
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid #pid文件路徑
:wq! #保存退出
vi/etc/rc.d/init.d/zabbix_agentd #編輯客戶端配置文件
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
設置防火牆規則
[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頁面
在安裝目錄將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默認站點目錄 www爲Nginx運行賬戶
注:PHP需要至少開啓擴展:
gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
如下,查看是否包括了上面所提到的擴展模塊
[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
訪問Web界面http://192.168.31.225/zabbix,進行相關web配置,配置完成後使用默認用戶admin(密碼:zabbix)登陸即可
進入ZABBIX WEB安裝畫面
進入ZABBIX檢測畫面
對數據庫進行設置,這裏如果數據庫在本地的話端口可以使用0
點擊Next step 一下步進行zabbix server 細節的設置 這一步可以默認
點擊安裝,安裝完成後 如果沒有錯誤就會進入完成畫面
完成畫面有設置文件放在服務器的位置,請記下來
點擊Finish 完成
使用Admin 用默認密碼 zabbix 登錄
登錄後畫面如下
至此 ZABBIX的基礎安裝完成
注:
1. 顯示簡體中文界面
在安裝數據庫時已經將zabbix庫設置了utf-8字符
首先確定zabbix開啓了中文支持功能:
登錄到zabbix服務器的數據目錄下(前面部署的zabbix數據目錄是/usr/local/nginx1.10/html/zabbix/),打開 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後,點擊右上角的“用戶”圖標,將語言設置爲“中文”:
按照如圖選擇Chinese(zh_CN),點擊update:
解決zabbix繪圖中出現中文亂碼問題:
a.從windows下控制面板->字體->選擇一種中文字庫例如“楷體”
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移動到別處
c.然後,接着修改代碼include/defines.inc.php文件中的字體配置,將裏面關於字體設置從DejaVuSans替換成simkai
vi替換技巧:%s/DejaVuSans/simkai
其中:simkai爲字庫名字,不包含ttf後綴
#cd/usr/local/nginx1.10/html/zabbix
# vi include/defines.inc.php
在vi編輯器的末行模式下輸入%s/DejaVuSans/simkai
這樣,修改後,zabbix監控圖形中的中文字就不會出現亂碼了
四、zabbix客戶端的安裝
既然要監控我們就要添加要監控的主機,在添加主機之前我們首先要在被檢測主機上面安裝agent,安裝agent比較簡單,我們也是按照安裝server的流程,下載軟件包,在編譯的時候,我們只選擇agent
192.168.31.250作爲zabbix的被監控端,提供web和mysql應用
安裝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/
配置開機自動啓動:
[root@server1 ~]# chkconfig--add zabbix_agentd
[root@server1 ~]# chkconfigzabbix_agentd on
修改zabbix開機啓動腳本中的zabbix安裝目錄
vi/etc/rc.d/init.d/zabbix_agentd #編輯客戶端配置文件
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
內容如下:
[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地址,不同的是,前者是被動後者是主動。也就是說Server這個配置是用來允許192.168.31.225這個ip來我這取數據。而serverActive的192.168.31.225的意思是,客戶端主動提交數據給他。
Hostname=XXX,這個定義的名字必須和web頁面裏面host的名字一樣。
啓動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監控系統的基本環境安裝完成。
實現zabbix添加監測項
添加對Linux主機的監控
在瀏覽器中打開:http://192.168.31.225/zabbix
登錄zabbix,先在“配置”-“主機”裏添加主機監控,監控os資源:內存,cpu,io,負載,帶寬等.
登錄zabbix,先在“配置”-“主機”裏單擊”創建主機”
點擊”主機”標籤,填寫相關信息
注意:下圖中的“主機名稱”要和zabbix_agentd.conf文件中設置的“Hostname”後面的名稱一致!
主機名稱:192.168.31.250
羣組:Linux servers
agent代理程序接口ip:192.168.31.250
已啓用:勾選
其它選項默認即可
切換到模板
選擇
選擇:Template OS Linux
點添加
添加
至此,Zabbix監控Linux主機設置完成。
配置過一段時間後,觀察下監控圖效果出來了沒:
zabbix3.0 server已自帶mysql的模板了,只需配置好agent客戶端,然後在web端給主機增加模板就行了。
Zabbix_agent客戶端操作
(1)首先在客戶端的mysql裏添加權限,即本機使用zabbix賬號連接本地的mysql
mysql> grant all on *.*to zabbix@'localhost' identified by "123456”;
mysql> flush privileges;
(2)在zabbix_agent服務目錄下創建.my.cnf 連接文件
zabbix安裝目錄是/usr/local/zabbix
[root@server1 ~]# cd /usr/local/zabbix/etc/
[root@server1 ~]# cat .my.cnf
[client]
user=zabbix
password=123456
注意:
如果在數據庫grant授權時,針對的是localhost,這個.my.cnf裏面就不用加host參數了【如上配置】
但如果grant授權時針對的是本機的ip(如192.168.31.250),那麼在.my.cnf文件裏就要加上host參數進行指定了
即在.my.cnf文件就要加上:
host=192.168.31.250
socket= /usr/local/mysql/mysql.sock
user=zabbix
password=123456
(3)配置MySQL的key文件
這個可以從zabbix3.2安裝時的解壓包裏拷貝過來
從zabbix_server服務端安裝時解壓目錄
/root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf 拷貝到zabbix_agent客戶端上的/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 文件,看到類似 HOME=/var/lib/zabbix 的路徑設置,把路徑全都替換爲 /usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目錄路徑。
另外,注意userparameter_mysql.conf 文件裏的mysql命令路徑(提前做好mysql的系統環境變量,以防mysql命令不被系統識別)
如下:
[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服務端進行命令行測試[下面的192.168.31.250是客戶端的ip]
若下面報錯
[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中關於mysql命令前面添加絕對路徑
[root@mysqla~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.31.250 -p 10050 -k"mysql.status[Uptime]"
12593
[root@mysqla ~]#
如果出現類似這一串key的數字,就說明配置ok,服務端能監控到客戶端的mysql數據了!
成功啦,之後在監控界面增加主機對應的MySQL模板就ok了。
注:zabbix_get命令介紹
參數說明:
-s --host:指定客戶端主機名或者IP
-p --port:客戶端端口,默認10050
-I --source-address:指定源IP,寫上zabbix server的ip地址即可,一般留空,服務器如果有多ip的時候,你指定一個。
-k --key:你想獲取的key
zabbix_get獲取數據
獲取負載
# zabbix_get -s192.168.31.250 -p 10050 -k "system.cpu.load[all,avg15]"
獲取主機名
# zabbix_get -s192.168.31.250 -p 10050 -k "system.hostname"
(5)登錄zabbix監控界面,在“配置”-“模板”裏可以看到自帶的mysql監控模板
在相應主機監控配置裏添加mysql的監控模版(zabbix自帶的)即可。
下面是mysql監控項的效果圖:
【1】監控mysql的帶寬:在zabbix前端可以實時查看mysql發送接收的字節數。其中bytes received表示從所有客戶端接收到的字節數,bytes sent表示發送給所有客戶端的字節數。
【2】監控mysql的操作狀態:在zabbix前端可以實時查看各種SQL語句每秒鐘的操作次數。
zabbix3.2.1郵件報警設置:
Zabbix監控服務端、客戶端都已經部署完成,被監控主機已經添加,Zabiix監控運行正常。
在Zabbix服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送報警郵件到指定郵箱。
具體操作:
以下操作在Zabbix監控服務端進行
下載sendemail軟件
然後安裝那兩個依賴包,命令是:
yum install perl-Net-SSLeayperl-IO-Socket-SSL -y
解壓軟件,然後將sendemail複製到/usr/local/bin/目錄下,並加上可執行權限,然後修改用戶和羣組。
[root@mysqla ~]# tar zxfsendEmail-v1.56.tar.gz
[root@mysqla ~]# cdsendEmail-v1.56/
[[email protected]]# cp sendEmail /usr/local/bin/sendEmail
[[email protected]]# chown zabbix:zabbix /usr/local/bin/sendEmail
[[email protected]]# ll /usr/local/bin/sendEmail
-rwxr-xr-x. 1 zabbix zabbix80213 Nov 21 21:26 /usr/local/bin/sendEmail
執行#/usr/local/bin/sendEmail -h查看sendEmail的幫助
#/usr/local/bin/sendEmail [email protected] -t [email protected] -s smtp.126.com -u "hello" -omessage-content-type=html -o message-charset=utf8 -xu [email protected] -xp 123abc-m "abcfdd"
命令主要選項說明:
/usr/local/bin/sendEmail #命令主程序
-f [email protected] #發件人郵箱
-t [email protected] #收件人郵箱
-s smtp.126.com #發件人郵箱的smtp服務器
-u "我是郵件主題" #郵件的標題
-o message-content-type=html #郵件內容的格式,html表示它是html格式
-o message-charset=utf8 #郵件內容編碼
-xu [email protected] #發件人郵箱的用戶名
-xp WEE78@12l$ #發件人郵箱密碼
-m "我是郵件內容" #郵件的具體內容
進入/usr/local/zabbix/share/zabbix/alertscripts/目錄
然後在這個目錄下創建報警腳本sendmail.sh
[root@mysqla alertscripts]#vi mail.sh
下面是腳本內容(塗顏色部分是你的郵箱和密碼,-f和-xu參數後面跟郵箱,-xp後面跟授權碼)
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail-o tls=auto -f [email protected] -t "$to" -s smtp.126.com -u"$subject" -o message-content-type=html -o message-charset=utf8 [email protected] -xp 123abc -m "$body"
[root@mysqla alertscripts]#chmod +x mail.sh
執行腳本測試發郵件
[root@mysqla alertscripts]#./mail.sh [email protected] 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
注:進行發送郵件測試時,出現了第一個報錯
原因是sendemail軟件和perl5裏面的ssl版本不兼容導致的,通過修改sendemail裏面的內容可以解決這個問題。
解決方法:
在sendemail中1906行的內容,從
if (!IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
修改爲
if (! IO::Socket::SSL->start_SSL($SERVER)){
即不指定SSL的版本,讓程序來自己選擇
不管你使用的是163/126郵箱還是qq郵箱,你都必須開通pop3服務,而且126/qq郵箱還要求使用第三方客戶端發送郵件是必須使用授權碼登錄,使用賬號密碼驗證時,會出現下面圖片中的錯誤。
sendEmail[5102]: ERROR =>ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.
至於郵箱的授權碼,自己登錄126郵箱去設置就好。
經過上面兩個問題的處理後就可以正常發送郵件如下所示顯示成功提示
[root@mysqla alertscripts]#./mail.sh [email protected] test 123
Nov 21 22:50:47 mysqlasendEmail[5195]: Email was sent successfully!
zabbix web端配置
上面的郵件腳本配置好後,就要在web端添加報警媒介,在web頁面的管理,報警媒介類型頁面,點擊右邊的創建媒體類型
進入創建頁面,然後輸入名稱“郵件報警腳本”,類型選擇腳本,名稱選擇mail.sh,點擊添加按鈕,添加三個腳本參數,分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分別對於mail.sh中的to、subject和body。添加完成後點下面的添加按鈕,我們的報警媒介就創建完成了
創建好報警媒介後,就需要將報警媒介關聯到我們的用戶。點擊管理,用戶,然後選擇我們的用戶admin也可新建一個用戶,點擊用戶名就進入到用戶配置界面。點擊報警媒介,然後點添加,選擇我們上一步創建的郵件報警腳本,輸入收件人,選擇報警時間和類型,然後點擊添加,就將創建好的報警媒介關聯到我們的用戶上面了。
現在需要做的是,創建一個觸發動作,即系統出現故障時,觸發這個動作,然後給我們的郵箱發送報警郵件。點擊配置,選擇動作,然後點擊右邊的創建動作。
在動作這一頁名稱中寫入我們定義的動作名以及觸發條件
設置“操作”
步驟是1-3,也即是從1開始到3結束。一旦故障發生,就是執行Email.sh腳本發生報警郵件給zabbix用戶。
假如故障持續了1個小時,它也只發送3次,第1-3次(即前3次)郵箱發送給zabbix用戶,時間間隔爲0秒。
如果改成1-0,0是表示不限制.無限發送
設置“恢復操作”
添加好以後就可以看到我們添加的動作名,以及該動作已啓用的狀態。
報警測試
將192.16831.250服務器的zabbix_agent進程關閉。
發現可以正常收到故障報警郵件
最後,點擊”報表“->”動作日誌“,可以看到觸發動作的次數(右邊還看查看到郵件發送狀態“已發送”)。
=========================================================================================
通過理論和實踐的結合能更好的提升,歡迎轉載,學習!