本篇博客主要從zabbix使用者的角度(運維)來源碼部署zabbix,並利用zabbix進行集羣的性能監控,故障報警及處理等基礎功能測試。
軟件安裝方式爲源碼編譯安裝最新版zabbix。源碼部署不只有利於把控整個軟件部署的整個過程及其細節,也可以更好地調整,移植和升級zabbix系統。php
節點分配:html
主機 | 配置 | 角色 | IP | 備註 |
node17 | >512M | zabbix_server | 192.168.80.17 | 提供LANMP環境 |
node18 | >512M | zabbix_proxy | 192.168.80.18 | |
node19 | >512M | zabbix_agent | 192.168.80.19 |
系統版本:前端
操做系統 | CentOS6.5_x86_64 | 安裝方式 |
HTTP | httpd-2.2.15-69 | YUM |
MySQL | mysql-5.1.71 | YUM |
PHP | PHP 5.6.36 | YUM安裝後升級 |
/bin/mail | YUM | |
Zabbix | zabbix-3.4.12.tar.gz | 源碼編譯 |
配置約定:node
系統環境mysql
根據zabbix的部署文檔,若是在相同節點同時部署zabbix server,zabbix proxy,zabbix agent等,須要爲運行不一樣的進程建立不一樣的進程用戶
本篇博客爲了區分不一樣進程的角色,雖然將服務分散在不一樣節點,也建立不一樣的進程用戶:linux
在node17上執行命令:c++
建立server進程用戶:useradd -M -s /sbin/nologin -u 501 zbx_s 建立proxy進程用戶:useradd -M -s /sbin/nologin -u 502 zbx_p 建立agent進程用戶:useradd -M -s /sbin/nologin -u 503 zbx_a
按照約定:將node17的/etc/passwd,/etc/group,/etc/shadow拷貝至node18和node19web
若採用LDAP進行全局認證,此過程能夠省略,轉爲配置LDAP全局認證,這裏不作介紹。sql
zabbix官網地址:https://www.zabbix.com/
最新版zabbix下載地址:
wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.12/zabbix-3.4.12.tar.gz
解壓源碼目錄:
tar -zxvf zabbix-3.4.12.tar.gz -C /tmp/ && cd /tmp/zabbix-3.4.12/
數據庫
因爲node17系統是最小化安裝,所以須要安裝基本的編譯環境和構建工具:
執行yum -y install gcc gcc-c++ libtool autoconf automake
由於本篇博客要在配置編譯環境過程,即執行./configure腳本時,指定一些依賴軟件環境,主要包括:
libxml2,libxml2-devel,libevent,libevent-devel,pcre,pcre-devel,net-snmp,net-snmp-devel
所以,須要經過YUM來安裝這些依賴軟件環境。執行命令:
yum -y install libxml2 libxml2-devel libevent libevent-devel net-snmp net-snmp-devel pcre pcre-devel
在centos6.5系統上安裝zabbix-3.4.12時,由於操做系統版本太低的問題,會致使在後面配置zabbix發送郵件時報錯,報錯的緣由爲curl版本太低。
所以須要更新node17上的curl版本。
此時經過rpm -qa | grep curl
,檢查系統是否安裝curl包,並經過curl -V
肯定curl的版本。
node17檢查的版本爲curl 7.19.7,而且能夠經過該命令,查看該版本支持的協議有:tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
下載新版curl
經過wget https://curl.haxx.se/download/curl-7.61.0.tar.gz
下載最新版本的curl源碼
解壓配置編譯安裝
tar -zxvf curl-7.61.0.tar.gz -C /tmp cd /tmp/curl-7.61.0 ./configure make && make install
此時執行curl -V
,可以看到curl版本已經更新至7.61,且支持的協議有:dict file ftp gopher http imap pop3 rtsp smtp telnet tftp
雖然已經安裝了最新版的curl,可是此時YUM命令已經不能使用,錯誤提示:No module named pycurl
注:此時須要解決這個問題,具體方法參見博客《Error【0007】:zabbix中由於curl版本太低而沒法發送郵件.md》,博客園地址:http://www.javashuo.com/article/p-zfsvymnh-go.html
在上面的步驟中,已經經過YUM安裝了autoconf和automake等GNU構建工具
可是在編譯zabbix時,指定的編譯選項:--enable-proxy和--enable-agent會由於這兩個工具的版本太低而沒法編譯。
所以,這部分主要進行這兩個版本的更新。
首先查看當前的工具版本:
autoconf -V
: autoconf (GNU Autoconf) 2.63
automake --version
:automake (GNU automake) 1.11.1
在GNU官網下載這兩個工具的更高版本:
autoconf:wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
automake:wget ftp://ftp.gnu.org/gnu/automake/automake-1.5.tar.gz
解壓並編譯安裝
tar -zxvf autoconf-2.68.tar.gz -C /tmp && cd /tmp/autoconf-2.68 && ./configure && make && make install tar -zxvf automake-1.5.tar.gz -C /tmp && cd /tmp/automake-1.15 && ./configure && make && make install
從新登錄經過autoconf --version和automake --version
選項驗證安裝
由於使用MySQL做爲數據庫,而且在編譯zabbix時,須要指定MySQL的安裝環境,在此經過YUM來安裝數據庫
node17上執行:
yum -y install mysql mysql-server mysql-clients mysql-devel
配置
./configure --prefix=/usr/local/zabbix/3.4.6 \ --enable-server --enable-proxy --enable-agent --enable-ipv6 \ --with-mysql --with-libxml2 --with-net-snmp --with-libevent --with-libpcre --with-openssl --with-libcurl \
編譯安裝
make all && make install
zabbix監控前端時經過PHP語言構建,後端採用MySQL存儲配置和監控數據。
在最新版的zabbix中,要求PHP的版本不低於5.6。
本部分主要介紹監控前端的站點環境部署
Web服務器經過httpd提供服務。
安裝HTTP
node17執行命令:yum -y install httpd
配置
編輯httpd的主配置文件,
vim /etc/httpd/conf/httpd.conf
,修改ServerName=192.168.80.17
啓動httpd
node17執行,service httpd restart && chkconfig httpd on
安裝MySQL
上述過程當中,已經經過YUM安裝了MySQL,這裏主要時配置MySQL
啓動MySQL服務:service mysqld start
配置MySQL
執行mysql
回車,進入數據庫後:
#刪除無用用戶和登錄 delete from mysql.user where user = ' ' and host = 'node17'; delete from mysql.user where user = ' ' and host = 'localhost'; delete from mysql.user where user = 'root' and host = 'node17'; #受權root用戶對全部庫的權限 grant all privileges on *.* to 'root'@'localhost' identified by 'liwanliang'; grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'liwanliang'; grant all privileges on *.* to 'root'@'192.168.80.1' identified by 'liwanliang'; grant all privileges on *.* to 'root'@'192.168.80.17' identified by 'liwanliang'; #刷新權限 flush privileges; #建立zabbix數據庫 create database zabbix; #受權zabbix用戶對zabbix庫的權限 grant all privileges on zabbix.* to 'zabbix'@'192.168.80.17' identified by 'liwanliang'; #刷新權限 flush privileges;
配置MySQL默認字符編碼
由於MySQL默認編碼不是utf8,所以會在後續的配置中,出現中文變成???的現象,所以須要提早配置MySQL字符編碼,以下:
配置MySQL開機啓動
node17執行:chkconfig mysqld on
zabbix前端採用PHP語言編寫,而且zabbix-3.4.12版本須要PHP5.6以上支持。
本篇博客在最小化安裝系統上經過YUM安裝PHP環境,而且更新YUM源升級PHP的方式來部署PHP環境。
注:升級過程參見包括:http://www.javashuo.com/article/p-hbplcore-ge.html
更新YUM源
node17上執行
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
安裝PHP5.6環境
yum -y install php56w php56w-fpm php56w-mysql php56w-mbstring php56w-gd php56w-dom php56w-bcmath php56w-ldap
配置PHP
在配置文件/etc/php.ini中,如下內容須要修改或者取消註釋
post_max_size = 16M max_execution_time = 300 max_input_time = 300 date.timezone = Asia/Shanghai always_populate_raw_post_data = -1
注:這些參數會在前端站點初始化時檢查並提示修改
重啓httpd生效
service httpd restart
拷貝站點前端文件
在解壓後的zabbix目錄下,有一個叫作frontends的目錄,裏面存放着zabbix前端框架文件,將其拷貝至httpd服務器根目錄下:
cp -r /tmp/zabbix-3.4.12/frontends/php /var/www/html/zabbix
導入數據庫
在解壓後的zabbix目錄下,有一個叫作database的目錄,裏面存放着各種zabbix後端數據庫的初始化sql語句。
執行如下命令,進行數據庫安裝:
#注:如下順序最後不要亂,以避免報錯 mysql -h 192.168.80.17 -uzabbix -p zabbix < schema.sql #輸入密碼:liwanliang,等待結束 mysql -h 192.168.80.17 -uzabbix -p zabbix < images.sql #輸入密碼:liwanliang,等待結束 mysql -h 192.168.80.17 -uzabbix -p zabbix < data.sql #輸入密碼:liwanliang,等待結束
圖形化配置
安裝了前端和數據庫以後,即可以經過瀏覽器進行zabbix監控前端的初始化安裝。
本篇博客不涉及,參見如下內容:
博客園地址:http://www.javashuo.com/article/p-oxmkzymv-eh.html
筆記內鏈:《Zabbix監控系統部署:前端初始化.md》
登錄
當前端配置完成以後,即可登錄zabbix
初次登錄,默認的帳號爲:Admin,密碼爲zabbix
登錄以後,能夠配置語言環境,其餘用戶等,具體參見如下內容:
博客園地址:
筆記內鏈:《Zabbix監控系統部署:基本功能測試.md》
中文字體顯示方塊
這是由於zabbix前端配置的字體沒法正常顯示,這裏參照網上的教程,將win10操做系統中的宋體字拷貝至zabbix前端目錄下,並從新配置。
具體操做以下:
vim /var/www/html/zabbix/include/defines.inc.php
按照配置約定,爲了減小部署的步驟,將node17的/usr/local目錄,經過NFS共享給node18和node19
同時由於node18和node19拷貝了node17的用戶組和密碼等文件,所以具備相通的zbx_s/zbx_p/zbx_a等進程用戶
node17執行:yum -y install rpcbind nfs-utils
編輯文件vim /etc/exportfs,內容以下
/usr/local 192.168.80.0/24(rw,no_root_squash,no_all_squash)
執行service rpcbind start && service nfs start
,設置服務啓動
執行命令chkconfig rpcbind on && chkconfig nfs on
,設置開機啓動服務
node18和node19須要安裝nfs-utils,執行yum -y install nfs-utils rpcbind
安裝
執行命令掛載:mount.nfs 192.168.80.17:/usr/loca/ /usr/local
經過ldd /usr/local/zabbix/3.4.6/sbin/zabbix_agentd
驗證agent的可用與否。
共享了node17的文件系統以後,對於node18和node19,只須要按照「命令+配置」的方式,即可啓動對應的服務。 使用全局文件系統啓動服務須要注意的是程序的pid文件和sock文件等,須要放置在節點根文件系統上,而不可以放在NFS全局文件系統,不然會由於進程互斥致使沒法啓動進程