1.1 基礎環境
2. 部署過程
2.1 創建用戶組
2.2 下載源碼解壓編譯安裝
2.2.1 下載源碼解壓
2.2.2 YUM安裝依賴環境
2.2.3 編譯安裝最新版curl
2.2.4 更新GNU構建工具
2.2.5 YUM安裝MySQL
2.2.5 配置編譯安裝
2.3 部署監控前端站點環境
2.3.1 部署Web服務器
2.3.2 部署DB數據庫服務器
2.3.3 部署PHP環境
2.3.4 配置zabbix部分
3. 環境共享
3.1 安裝NFS環境
3.2 配置NFS共享目錄
3.3 啟動NFS服務
3.4 node18和node19掛載
3.5 批量啟動
1. 概述
本篇博客主要從zabbix使用者的角度(運維)來源碼部署zabbix,並利用zabbix進行集群的性能監控,故障報警及處理等基礎功能測試。
軟件安裝方式為源碼編譯安裝最新版zabbix。源碼部署不僅有利於把控整個軟件部署的整個過程及其細節,也能夠更好地調整,移植和升級zabbix系統。
1.1 基礎環境
節點分配:
主機 | 配置 | 角色 | 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 | 源碼編譯 |
配置約定:
- 采用全局文件系統,減少部署過程
- 采用本地用戶,而非LDAP認證縮短部署過程
- 不配置啟動腳本,以遠程管理方式啟動服務
系統環境
- 關閉防火牆:service iptables stop
- 取消selinux:setenforce 0 或修改配置文件/etc/selinux/config,使SELINUX=disabled
2. 部署過程
2.1 創建用戶組
根據zabbix的部署文檔,如果在相同節點同時部署zabbix server,zabbix proxy,zabbix agent等,需要為運行不同的進程創建不同的進程用戶
本篇博客為了區分不同進程的角色,雖然將服務分散在不同節點,也創建不同的進程用戶:
- zabbix server進程用戶:zbx_s
- zabbix proxy進程用戶:zbx_p
- zabbix agent進程用戶:zbx_a
在node17上執行命令:
創建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和node19
若采用LDAP進行全局認證,此過程可以省略,轉為配置LDAP全局認證,這里不做介紹。
2.2 下載源碼解壓編譯安裝
2.2.1 下載源碼解壓
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/
2.2.2 YUM安裝依賴環境
由於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
2.2.3 編譯安裝最新版curl
在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》,博客園地址:https://www.cnblogs.com/liwanliangblog/p/9419205.html
2.2.4 更新GNU構建工具
在上面的步驟中,已經通過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
選項驗證安裝
2.2.5 YUM安裝MySQL
因為使用MySQL作為數據庫,並且在編譯zabbix時,需要指定MySQL的安裝環境,在此通過YUM來安裝數據庫
node17上執行:
yum -y install mysql mysql-server mysql-clients mysql-devel
2.2.5 配置編譯安裝
配置
./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
2.3 部署監控前端站點環境
zabbix監控前端時通過PHP語言構建,后端采用MySQL存儲配置和監控數據。
在最新版的zabbix中,要求PHP的版本不低於5.6。
本部分主要介紹監控前端的站點環境部署
2.3.1 部署Web服務器
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
2.3.2 部署DB數據庫服務器
安裝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
2.3.3 部署PHP環境
zabbix前端采用PHP語言編寫,並且zabbix-3.4.12版本需要PHP5.6以上支持。
本篇博客在最小化安裝系統上通過YUM安裝PHP環境,並且更新YUM源升級PHP的方式來部署PHP環境。
更新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
2.3.4 配置zabbix部分
拷貝站點前端文件
在解壓后的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監控前端的初始化安裝。
本篇博客不涉及,參見以下內容:
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9410900.html
筆記內鏈:《Zabbix監控系統部署:前端初始化.md》
登陸
當前端配置完成之后,便可登陸zabbix
初次登陸,默認的賬號為:Admin,密碼為zabbix
登陸之后,可以配置語言環境,其他用戶等,具體參見以下內容:
博客園地址:
筆記內鏈:《Zabbix監控系統部署:基本功能測試.md》
中文字體顯示方塊
這是因為zabbix前端配置的字體無法正常顯示,這里參照網上的教程,將win10操作系統中的宋體字拷貝至zabbix前端目錄下,並重新配置。
具體操作如下:
- win10找到【宋體】字,將其拷貝到nod17的zabbix字體目錄下
- 配置字體配置文件
vim /var/www/html/zabbix/include/defines.inc.php
- 刷新驗證
3. 環境共享
按照配置約定,為了減少部署的步驟,將node17的/usr/local目錄,通過NFS共享給node18和node19
同時因為node18和node19拷貝了node17的用戶組和密碼等文件,因此具有相通的zbx_s/zbx_p/zbx_a等進程用戶
3.1 安裝NFS環境
node17執行:yum -y install rpcbind nfs-utils
3.2 配置NFS共享目錄
編輯文件vim /etc/exportfs,內容如下
/usr/local 192.168.80.0/24(rw,no_root_squash,no_all_squash)
3.3 啟動NFS服務
執行service rpcbind start && service nfs start
,設置服務啟動
執行命令chkconfig rpcbind on && chkconfig nfs on
,設置開機啟動服務
3.4 node18和node19掛載
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的可用與否。
3.5 批量啟動
共享了node17的文件系統之后,對於node18和node19,只需要按照“命令+配置”的方式,便可啟動對應的服務。
使用全局文件系統啟動服務需要注意的是程序的pid文件和sock文件等,需要放置在節點根文件系統上,而不能夠放在NFS全局文件系統,否則會因為進程互斥導致無法啟動進程