分布式監控系統Zabbix-3.0.3-完整安裝記錄(0)


 

一、Linux下開源監控系統簡單介紹
1)cacti:存儲數據能力強,報警性能差
2)nagios:報警性能差,存儲數據僅有簡單的一段可以判斷是否在合理范圍內的數據長度,儲存在內存中。比如,連續采樣數據存儲,有連續三次不在合理范圍內的數據就報警
3)zabbix:結合上面兩種工具的優點,又可以存儲數據,又可以報警。

Zabbix是一個基於Web界面提供分布式系統監視及網絡監視功能的企業級開源解決方案。借助Zabbix可很輕松地減輕運維人員們繁重的服務器管理任務,實現業務系統持續運行。
下面會逐步介紹Zabbix分布式監控系統的部署及使用記錄

二、zabbix特性
1)數據采樣:通過snmp、ssh、telnet、agent、ipmi、jmx等通道采集被監控主機的數據。可以自定義檢測機制和自定義時間間隔
2)實時繪圖:展示,讀取數據繪圖,支持graph,map,screen,幻燈片(slide show)
3)告警:(升級告警,規定時間內內解決不了的事情往上傳)
4)數據存儲:數據庫有mysql,pgsql,時間序列數據庫等等

三、程序構成
1)zabbix_server:服務端守護進程
2)zabbix_agented:agent端守護進程
3)zabbix_proxy:代理服務器(可選,分布式才用到)
4)zabbix_get:命令行工具,手動測試數據采集
5)zabbix_sender:命令行工具,運行於agent端,手動向server端發送數據
6)zabbixjavagateway:java網關

Zabbix的監控流程可以簡單描述為:
數據采集-->數據存儲-->數據分析-->數據展示-->監控報警

其中:
數據采集:Zabbix通過SNMP、Agent、ICMP、SSH、IPMI等進行數據采集
數據存儲:Zabbix存儲在MySQL上,也可以存儲在其他數據庫
數據展示:web界面展示、(移動APP、java_php開發一個web界面也可以)
數據報警:郵件報警、微信報警、短信報警、報警升級機制

Zabbix的監控配置流程可以簡單描述為:
告警是由一系列的流程組成,首先是觸發器達到閥值,產生一個事件,接下來由Action對事件信息進行處理,其中包括兩部分:
第一部分是發送消息,即將告警信息發送給用戶。
第二部分是執行命令,即將事件用命令進行處理,達到對事件故障自動嘗試恢復的效果。

Host groups(主機組)-->Hosts(主機)-->template(模板)-->Applications(監控項組)-->Items(監控項)-->graph(圖形) -->screen (圖形分組)-->Triggers(觸發器)-->Event(事件)-->Actions(處理動作)-->Media types(告警升級|1.執行遠程命令2.發送告警郵件)-->User groups(用戶組)-->Users(用戶)-->Medias(告警郵件)

在實際生產使用的時候,Items、Trigger、Graph采用模板來進行監控,模板特點就是可以重復的事情一次完成,修改了模板等於修改了所有調用此模板的主機,這樣可解放運維的雙手.
Graph不是必需的,因為沒有配置圖形,數據獲取並不影響,獲取數據是Items的功能。但是對於使用ZabbixWeb界面用戶來說,沒有圖形等於沒有數據,因此重要的Items必須添加必要的圖形以做可視化展示。如果想集中查看圖形,可以通過screen功能。

四、zabbix主動模式和被動模式

zabbix使用proxy代理插件的好處:
一方面可以監控不可達的遠程區域;
另一方面當監控項目數以萬計的時候使用代理可以有效分擔zabbix server壓力,也簡化分布式監控的維護。

說明:
主動、被動模式都是相對於proxy來說的。
proxy主動發送數據就是主動模式;
proxy等待server的請求,再發送數據就是被動模式。
因為主動模式可以有效減輕zabbix server壓力,需要監控的東西很多時一定要把監控模式更改為主動監控

被動模式流程,被動模式一定要記得設置Server = ServerIP
被動模式工作流程:
Server 打開一個TCP連接
Server發送一個key 為agent.ping
Agent接受這個請求,然后響應< HEADER >< DATALEN >
Server對接受到的數據進行處理
TCP連接關閉

主動模式流程,主動模式一定要記得設置ServerActive=ServerIP
Agent向Server建立一個TCP連接
Agent請求需要檢測的數據列表
Server響應Agent,發送一個Items列表
Agent允許響應
TCP連接完成本次會話關閉
Agent開始周期性地收集數據

總結:
- 主動或者被動是相對客戶端來講的。
- 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端,服務端請求以后,客戶端接受到請求以后,才把相應的數據匯報給服務中心。
- 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。
   - 定義完策略之后,到達定義的時間以后,就會主動匯報數據給服務中心,比如系統的負載,網絡的網卡流量等。
- 當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。
- 服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式。

Server=192.168.1.30         #被動模式下的zabbix server IP地址(如果設置為純被動模式,則應該注釋掉這一條指令)
ServerActive=192.168.1.30          #主動模式下的zabbix server IP地址
注:純主動模式下的zabbix agent,只能支持Zabbix Agent (Active)類型的監控項。
一般情況下,主動和被動這兩種模式都用,兩行內容都配置上。

五、基礎環境LNMP部署
1)配置好IP、DNS 、網關,確保使用遠程連接工具能夠連接服務器

2)配置防火牆,開啟80端口、3306端口
[root@Zabbix-server ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT           
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT      
特別提示:很多網友把這兩條規則添加到防火牆配置的最后一行,導致防火牆啟動失敗,正確的應該是添加到默認的22端口這條規則的下面
添加好之后防火牆規則如下所示:
---------------------------------------------------------------------------------------------------
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
---------------------------------------------------------------------------------------------------
[root@Zabbix-server ~]# /etc/init.d/iptables restart                    

3)關閉SELINUX
[root@Zabbix-server ~]# vim /etc/selinux/config
#SELINUX=enforcing             
#SELINUXTYPE=targeted      
SELINUX=disabled               
[root@Zabbix-server ~]# reboot      //重啟后永久生效,或者使用setenforce 0臨時生效

4)系統約定
軟件源代碼包存放位置:/usr/local/src
源碼包編譯安裝位置:/usr/local/軟件名字

5)下載軟件包
所需軟件包下載地址:http://pan.baidu.com/s/1bDDLr4
提取密碼:rx4i
軟件均上傳到/usr/local/src目錄

6)安裝編譯工具及庫文件(使用CentOS yum命令安裝)
[root@Zabbix-server ~]# yum install make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch cmake

7)下面開始正式安裝
a)安裝mysql
[root@Zabbix-server ~]# groupadd mysql                               
[root@Zabbix-server ~]# useradd -g mysql mysql -s /bin/false                        
[root@Zabbix-server ~]# mkdir -p /data/mysql                   
[root@Zabbix-server ~]# chown -R mysql:mysql /data/mysql                
[root@Zabbix-server ~]# mkdir -p /usr/local/mysql                    
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# tar zxvf mysql-5.5.25a.tar.gz              
[root@Zabbix-server src]# cd mysql-5.5.25 && cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc         
[root@Zabbix-server src]# make          
[root@Zabbix-server src]# make install  
[root@Zabbix-server src]# cd /usr/local/mysql
[root@Zabbix-server mysql]# cp ./support-files/my-huge.cnf /etc/my.cnf      //拷貝配置文件(注意:如果/etc目錄下面默認有一個my.cnf,直接覆蓋即可)
[root@Zabbix-server mysql]# vim /etc/my.cnf 
datadir = /data/mysql                       //添加MySQL數據庫路徑
[root@Zabbix-server mysql]# ./scripts/mysql_install_db --user=mysql 
[root@Zabbix-server mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld 
[root@Zabbix-server mysql]# chmod 755 /etc/init.d/mysqld 
[root@Zabbix-server mysql]# chkconfig mysqld on 
[root@Zabbix-server mysql]# vim /etc/rc.d/init.d/mysqld  
basedir = /usr/local/mysql 
datadir = /data/mysql 
[root@Zabbix-server mysql]# service mysqld start  
[root@Zabbix-server mysql]# vim /etc/profile 
export PATH=$PATH:/usr/local/mysql/bin

下面這兩行把myslq的庫文件鏈接到系統默認的位置,這樣你在編譯類似PHP等軟件時可以不用指定mysql的庫文件地址。
[root@Zabbix-server mysql]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
[root@Zabbix-server mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
[root@Zabbix-server mysql]# /usr/local/mysql/bin/mysqladmin -u root password "123456" 
[root@Zabbix-server mysql]# service mysqld restart 

b)安裝nginx
先編譯安裝pcre
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# mkdir /usr/local/pcre 
[root@Zabbix-server src]# tar zxvf pcre-8.31.tar.gz
[root@Zabbix-server src]# cd pcre-8.31
[root@Zabbix-server pcre-8.31]# ./configure --prefix=/usr/local/pcre 
[root@Zabbix-server pcre-8.31]# make
[root@Zabbix-server pcre-8.31]# make install

接着編譯安裝nginx
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# groupadd www 
[root@Zabbix-server src]# useradd -g www www -s /bin/false                 //創建nginx運行賬戶www並加入到www組,不允許www用戶直接登錄系統
[root@Zabbix-server src]# tar zxvf nginx-1.2.2.tar.gz
[root@Zabbix-server src]# cd nginx-1.2.2
[root@Zabbix-server nginx-1.2.2]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.31
注意:--with-pcre=/usr/local/src/pcre-8.31指向的是源碼包解壓的路徑,而不是安裝的路徑,否則會報錯
[root@Zabbix-server nginx-1.2.2]# make
[root@Zabbix-server nginx-1.2.2]# make install
[root@Zabbix-server nginx-1.2.2]# /usr/local/nginx/sbin/nginx 

[root@Zabbix-server nginx-1.2.2]# vim /etc/rc.local 
.....
/usr/local/nginx/sbin/nginx

c)安裝php
先編譯安裝libmcrypt
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# tar zxvf libmcrypt-2.5.8.tar.gz 
[root@Zabbix-server src]# cd libmcrypt-2.5.8 
[root@Zabbix-server libmcrypt-2.5.8]# ./configure  
[root@Zabbix-server libmcrypt-2.5.8]# make  
[root@Zabbix-server libmcrypt-2.5.8]# make install 

接着編譯安裝php
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# tar -zvxf php-5.4.5.tar.gz
[root@Zabbix-server src]# cd php-5.4.5
[root@Zabbix-server php-5.4.5]# mkdir -p /usr/local/php5 
[root@Zabbix-server php-5.4.5]# ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-gd --with-iconv --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --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@Zabbix-server php-5.4.5]# make
[root@Zabbix-server php-5.4.5]# make install
-------------------------------------這一步會報錯如下----------------------------------
/usr/local/php5/ext/dom/node.c:1953: error: dereferencing pointer to incomplete type

make: *** [ext/dom/node.lo] Error 1

解決辦法
在國外的一個網站上找到了這個,其他版本的php也同樣適用。
[root@Zabbix-server ~]# curl -o php-5.2.17.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt
切換到php的解壓目錄
[root@Zabbix-server src]#cd php-5.4.5
[root@Zabbix-server php-5.4.5]# patch -p0 -b <../php-5.2.17.patch
patching file ext/dom/node.c
patching file
ext/dom/documenttype.c
patching file ext/simplexml/simplexml.c
---------------------------------------------------------------------------------------
[root@Zabbix-server php-5.4.5]# cp php.ini-production /usr/local/php5/etc/php.ini 
[root@Zabbix-server php-5.4.5]# rm -rf /etc/php.ini 
[root@Zabbix-server php-5.4.5]# ln -s /usr/local/php5/etc/php.ini /etc/php.ini
[root@Zabbix-server php-5.4.5]# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf
[root@Zabbix-server php-5.4.5]# vim /usr/local/php5/etc/php-fpm.conf
user = www                        //設置php-fpm運行賬號為www
group = www                      //設置php-fpm運行組為www
pid = run/php-fpm.pid        //取消前面的分號

設置 php-fpm開機啟動
[root@Zabbix-server php-5.4.5]# cp /usr/local/src/php-5.4.5/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm 
[root@Zabbix-server php-5.4.5]# chmod +x /etc/rc.d/init.d/php-fpm 
[root@Zabbix-server php-5.4.5]# chkconfig php-fpm on 

[root@Zabbix-server php-5.4.5]# vim /usr/local/php5/etc/php.ini 
找到:
disable_functions =
修改為:
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

//列出PHP可以禁用的函數,如果某些程序需要用到這個函數,可以刪除,取消禁用。
找到:
;date.timezone =
修改為:
date.timezone = PRC          //設置時區

找到:
expose_php = On
修改為:
expose_php = OFF          //禁止顯示php版本的信息

找到:
short_open_tag = Off
修改為:
short_open_tag = ON      //支持php短標簽

d)配置nginx支持php
[root@Zabbix-server ~]# vim /usr/local/nginx/conf/nginx.conf 
user www www;   
index index.php index.html index.htm;    
# 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;
include fastcgi_params;
}

#取消FastCGI server部分location的注釋,並要注意fastcgi_param行的參數,改為
$document_root$fastcgi_script_name,或者使用絕對路徑

[root@Zabbix-server ~]# pkill -9 ningx 
[root@Zabbix-server ~]# /usr/local/nginx/sbin/nginx

e)測試篇
[root@Zabbix-server ~]# cd /usr/local/nginx/html/  
[root@Zabbix-server html]# rm -rf /usr/local/nginx/html/* 
[root@Zabbix-server html]# vim index.php  
<?php
phpinfo();
?>
[root@Zabbix-server ~]#chown www.www /usr/local/nginx/html/ -R 
[root@Zabbix-server ~]#chmod 700 /usr/local/nginx/html/ -R 

在瀏覽器中輸入服務器IP地址,會看到php界面
到此,LNMP環境部署完成!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM