Zabbix監控系統部署:源碼安裝


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安裝后升級
MAIL /bin/mail YUM
Zabbix zabbix-3.4.12.tar.gz 源碼編譯

配置約定:

  1. 采用全局文件系統,減少部署過程
  2. 采用本地用戶,而非LDAP認證縮短部署過程
  3. 不配置啟動腳本,以遠程管理方式啟動服務

系統環境

  1. 關閉防火牆:service iptables stop
  2. 取消selinux:setenforce 0 或修改配置文件/etc/selinux/config,使SELINUX=disabled

2. 部署過程

2.1 創建用戶組

根據zabbix的部署文檔,如果在相同節點同時部署zabbix server,zabbix proxy,zabbix agent等,需要為運行不同的進程創建不同的進程用戶
本篇博客為了區分不同進程的角色,雖然將服務分散在不同節點,也創建不同的進程用戶:

  1. zabbix server進程用戶:zbx_s
  2. zabbix proxy進程用戶:zbx_p
  3. 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環境。

注:升級過程參見包括:https://www.cnblogs.com/savokiss/p/6259816.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

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前端目錄下,並重新配置。
具體操作如下:

  1. win10找到【宋體】字,將其拷貝到nod17的zabbix字體目錄下
  2. 配置字體配置文件
    vim /var/www/html/zabbix/include/defines.inc.php


  1. 刷新驗證

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全局文件系統,否則會因為進程互斥導致無法啟動進程


免責聲明!

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



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