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

1. 概述

本篇博客主要從zabbix使用者的角度(運維)來源碼部署zabbix,並利用zabbix進行集羣的性能監控,故障報警及處理等基礎功能測試。
軟件安裝方式爲源碼編譯安裝最新版zabbix。源碼部署不只有利於把控整個軟件部署的整個過程及其細節,也可以更好地調整,移植和升級zabbix系統。php

1.1 基礎環境

節點分配: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安裝後升級
MAIL /bin/mail YUM
Zabbix zabbix-3.4.12.tar.gz 源碼編譯

配置約定:node

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

系統環境mysql

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

2. 部署過程

2.1 建立用戶組

根據zabbix的部署文檔,若是在相同節點同時部署zabbix server,zabbix proxy,zabbix agent等,須要爲運行不一樣的進程建立不一樣的進程用戶
本篇博客爲了區分不一樣進程的角色,雖然將服務分散在不一樣節點,也建立不一樣的進程用戶:linux

  1. zabbix server進程用戶:zbx_s
  2. zabbix proxy進程用戶:zbx_p
  3. zabbix agent進程用戶:zbx_a

在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

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》,博客園地址:http://www.javashuo.com/article/p-zfsvymnh-go.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環境。

注:升級過程參見包括: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

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監控前端的初始化安裝。
本篇博客不涉及,參見如下內容:
博客園地址:http://www.javashuo.com/article/p-oxmkzymv-eh.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全局文件系統,不然會由於進程互斥致使沒法啓動進程

相關文章
相關標籤/搜索