zabbix安裝配置
一、資源
1.1 環境
名稱 | 版本 | 下載地址 |
---|---|---|
centos | 7.4 | http://mirrors.163.com/centos/ |
zabbix-server | 3.4.11 | https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz |
zabbix-agent | 3.4.11 | |
nginx | 1.15.1 | http://nginx.org/download/nginx-1.15.1.tar.gz |
mysql | 5.7 | http://repo.mysql.com/mysql57-community-release-el7.rpm |
php | 1.15.1 | http://am1.php.net/distributions/php-7.2.3.tar.gz |
zabbix web GUI | 1.15.1 | |
openssl | 1.0.2o | https://www.openssl.org/source/openssl-1.0.2o.tar.gz |
- 所有的源碼包、壓縮包和解壓包都放置在 /snow/zabbix/ 目錄下
- 所有組件的安裝都安裝在 /usr/local/ 目錄下,用yum方式安裝的除外
在被監控的服務器端安裝和配置 zabbix agent,版本 zabbix-agent-3.4.11
注意:服務器端和客戶端的zabbix版本最好一致,這裏都是3.4.11的版本
如果是阿里雲服務器的話需要配置安全組 開放5000、 5001等端口
1.2 LAMP/LNMP介紹
zabbix需要LNMP或者LAMP環境
-
LAMP:Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因爲常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。
-
LNMP:LNMP指的是一個基於CentOS/Debian編寫的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一鍵安裝包。可以在VPS、獨立主機上輕鬆的安裝LNMP生產環境。
-
L:linux
-
A:apache
-
N:nginx
-
M:mysql,mariaDB
-
P:php,python,perl
本文采用LNMP環境安裝zabbix
二、安裝配置
2.1、nginx安裝配置
- 安裝必要的依賴庫等組件
yum -y install zlib pcre pcre-devel openssl openssl-devel
- 創建www用戶
useradd -s /sbin/nologin www
- 下載nginx源碼包, 版本:nginx-1.15.1
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix/
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# wget http://nginx.org/download/nginx-1.15.1.tar.gz
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# tar -zxvf nginx-1.15.1.tar.gz
- 下載openssl源碼包,版本:openssl-1.0.2o
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# tar -zxvf openssl-1.0.2o.tar.gz
- 進入解壓後的nginx目錄,開始編譯
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix/nginx-1.15.1
執行
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/subsys/nginx \
--with-openssl=/snow/zabbix/openssl-1.0.2o \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre
- 編譯安裝
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# make
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# make install
2.2 安裝mysql
- 刪除系統默認安裝的mariadb數據庫
yum remove mariadb*
- 通過yum源的方式安裝MySQL5.7 ,下載MySQL yum源:
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix
wget http://repo.mysql.com/mysql57-community-release-el7.rpm
rpm -ivh mysql57-community-release-el7.rpm
- 驗證yum源已安裝:確認有兩個源:mysql-community.repo 和mysql-community-source.repo
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# ll /etc/yum.repos.d/ | grep mysql
-rw-r--r-- 1 root root 1838 Apr 27 2017 mysql-community.repo
-rw-r--r-- 1 root root 1885 Apr 27 2017 mysql-community-source.repo
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# yum install mysql-server mysql mysql-devel
- 驗證MySQL5.7安裝成功
rpm -qa | grep mysql
- 啓動mysql服務
systemctl start mysqld
驗證mysql啓動成功
ps -ef | grep mysqld
- 獲取初次安裝MySQL後的root的臨時密碼:
grep "password" /var/log/mysqld.log
- 通過臨時密碼登錄MySQL數據庫後後,必須要修改密碼,否則無法進行相關數據庫的操作。注意新密碼要符合密碼複雜性要求:最小8位,包含字母大小寫,數字和特殊字符
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your_New_Password';
加粗樣式修改完密碼之後重新登錄一下驗證密碼無誤
2.3 安裝php
- 先安裝php依賴庫
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
- 源碼包 編譯安裝
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix
wget http://am1.php.net/distributions/php-7.2.3.tar.gz
tar -zxvf php-7.2.3.tar.gz
[root@iZ2ze6qralnaqhb67athsaZ php-7.2.3]# cd /snow/zabbix/php-7.2.3
#編譯配置PHP
./configure \
--prefix=/usr/local/php7 \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo -enable-tokenizer \
--enable-zip
- 編譯 make make install
make
make install
- 拷貝兩個文件到相關的目錄
cp /snow/zabbix/php-7.2.3/php.ini-production /usr/local/php7/lib/php.ini
cp /snow/zabbix/php-7.2.3/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
- 修改nginx配置文件,添加php-fpm的整合配置,如截圖:
vim /usr/local/nginx/conf/nginx.conf
- 進入安裝好的php7 的目錄執行下面命令
[root@iZ2ze6qralnaqhb67athsaZ php-7.2.3]# cd /snow/zabbix/php-7.2.3
cp /usr/local/php7/etc/php-fpm.conf.default php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
systemctl start php-fpm.service // 啓動php服務
netstat -antlp | grep php //驗證php-fpm的啓動端口是否爲9000
/usr/local/nginx/sbin/nginx -t // 測試nginx是否能正常啓動,結果如圖能夠通過檢測
- 啓動nginx
/usr/local/nginx/sbin/nginx
systemctl stop firewalld //關閉防火牆
- 驗證PHP,創建info.php文件
echo '<?php phpinfo(); ?>' > /usr/local/nginx/html/info.php
- 在客戶端輸入服務器的IP/info.php,如果網頁能打卡正常,說明配置正確
- php配置優化,配置完後重啓php-fpm服務
vim /usr/local/php7/lib/php.ini
----------------------------------------------------------------------------------------------
post_max_size = 16M
max_execution_time = 300
memory_limit = 128M
max_input_time = 300
date.timezone = Asia/Shanghai
----------------------------------------------------------------------------------------------
2.4 安裝zabbix server
yum install net-snmp net-snmp-devel curl curl-devel libxml2 libevent libevent-devel //安裝zabbix server依賴庫
// 下載zabbix server到/snow/zabbix目錄下
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz
// 解壓zabbix源碼包
tar zxvf zabbix-3.4.11.tar.gz
- 創建啓動zabbix的守護進程的普通用戶
groupadd zabbix
useradd -g zabbix zabbix
// /snow/zabbix下獲取源碼包
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz
// 解壓
tar zxvf zabbix-3.4.11.tar.gz
//進入解壓好的zabbix目錄,執行編譯
./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
- 說明:該zabbix目錄包含zabbix server端和web前端 (frontends目錄)
- 編譯安裝
make
make install
- zabbix啓動腳本路徑默認指向的是/usr/local/sbin路徑,而zabbix的安裝路是/usr/local/zabbix,因此,需要提前創建如下軟鏈接
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
- 加粗樣式創建zabbix數據庫和zabbix的數據庫用戶
[root@iZ2ze6qralnaqhb67athsaZ ~]# mysql -u root -p
Enter password: // 輸入數據庫密碼
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21368
Server version: 5.7.28 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserv ed.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input state ment.
//密碼要符合當前數據庫密碼策略
mysql> create database zabbix character set utf8 collate utf8_bin;
/*
grant all PRIVILEGES on (*).* to user@'%' identified by 'password';
這裏(*)表示允許訪問所有庫,也可以在這裏寫庫名,則只能訪問這個庫,並把該數據庫的所有表的所有權限給user這個用戶,允許這個用戶通過任何ip地址(也可限定IP地址,‘%’改成允許的‘IP'),使用指定密碼進行連接,配置完後使用命令:flush privileges;使配置生效,刷新mysql的系統權限相關表,否則會出現拒絕訪問。重啓數據庫也能達到這樣的效果
*/
//允許所有主機訪問zabbix庫所有表單
mysql> grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'powerNow2019!!';
mysql> flush privileges;
- zabbix數據導入, 進入zabbix源碼包中 database/mysql/ 目錄下(本文是/snow/zabbix/zabbix-3.4.11/database/mysql下),登入mysql,再在mysql命令行模式下,按順序執行以下命令來導入sql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| zabbix |
+--------------------+
5 rows in set (0.01 sec)
mysql> use zabbix
Database changed
mysql> source /snow/zabbix/zabbix-3.4.11/database/mysql/schema.sql;
mysql> source /snow/zabbix/zabbix-3.4.11/database/mysql/images.sql;
mysql> source /snow/zabbix/zabbix-3.4.11/database/mysql/data.sql;
- 配置zabbix server, 編輯 /usr/local/zabbix/etc/zabbix_server.conf,修改以下配置項
- 拷貝 zabbix_server和zabbix_agentd兩個管理腳本,到/etc/init.d目錄下
cd /etc/init.d
cp /snow/zabbix/zabbix-3.4.11/misc/init.d/fedora/core/* /etc/init.d/
chmod +x zabbix_server
chmod +x zabbix_agentd
// zabbix服務開機自動啓動
chkconfig zabbix_server on
chkconfig zabbix_agentd on
- 啓動zabbix server
/etc/init.d/zabbix_server start
或者
systemctl start zabbix_server
- 添加相應的zabbix服務和端口到系統配置文件中
[root@iZ2ze6qralnaqhb67athsaZ ~]# vim /etc/services
----------------------------------------------------------------------------------------------------------------------------
//如果已存在就不需要改動
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
-----------------------------------------------------------------------------------------------------------------------------
三、zabbix_agent安裝配置
3.1 server配置 agent server主機名
- agent server服務器添加主機名配置
vi /etc/hosts
--------------------------------------------------------------------------------------------
// 添加agent server等服務器主機名配置
hb2-a-ld-overseas-001 39.106.68.199
iZ2ze6qralnaqhb67athsaZ 39.96.46.193
-----------------------------------------------------------------------------------------------
3.2 zabbix_agent安裝配置
- 獲取zabbix agent rpm
cd /snow/zabbix
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.11-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-3.4.11-1.el7.x86_64.rpm
- 安裝完成後,生成 /etc/zabbix目錄和相關配置文件
- 修改zabbix agent的配置文件zabbix_agentd.conf, 主要項目如下:
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=5
Timeout=30 //最大值是30 超過30啓動會報錯
Server=xxx.xxx.xxx.xxx //zabbix server IP 地址
StartAgents=3
ServerActive=xxx.xxx.xxx.xxx // zabbix server IP 地址
Hostname=xxx.xxx.xxx.xxx // 一般填寫zabbix agent主機名 hostname命令可以查看
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
配置hostname需要特別注意 需要和zabbix圖形化界面 配置》主機》創建主機中的主機名稱保持一致,也就是說後續添加主機一定要用這裏配置的hostname值
- 啓動zabbix agent服務
systemctl start zabbix-agent.service
3.3 zabbix server端 安裝 zabbix web GUI
- zabbix web GUI:在zabbix 源碼包中 frontends/php目錄下。拷貝php目錄到zabbix安裝目錄下/usr/local/nginx/html/,並重命名爲zabbix
cp -r /snow/zabbix/zabbix-3.4.11/frontends/php /usr/local/nginx/html/zabbix
- 最後確保 mysqld, nginx, zabbix_server, zabbix_agentd 和 php-fpm 這些服務已經正常啓動運行。
- 測試 zabbix server 監控是否生效,命令中XXX表示zabbix server IP 地址,如果結果返回一串數字表示測試成功。數字的意思是客戶端在線時間時長,單位是:秒
// XXX.XXX.XXX.XXX是 server agent服務器地址
/usr/local/zabbix/bin/zabbix_get -s XXX.XXX.XXX.XXX -p 10050 -k "system.uptime"
3.4 添加php缺少的四個功能模塊
- 添加在之前完成PHP的安裝後缺少的四個功能模塊:bcmath,sockets, LDAP和gettext
// 添加LDAP依賴 否則編譯配置LDAP的過程中遇到如下圖錯誤,說明還缺少ldap包,執行下面命令解決該錯誤
[root@iZ2ze6qralnaqhb67athsaZ ~]# yum install autoconf
[root@iZ2ze6qralnaqhb67athsaZ ~]# yum install openldap openldap-devel
[root@iZ2ze6qralnaqhb67athsaZ ~]# cp -frp /usr/lib64/libldap* /usr/lib/
- 這裏對bcmath 模塊進行配置添加作爲例子,其它三個模塊配置步驟完全一樣,記住一點對哪個模塊進行配置就在哪個模塊下的目錄進行操作。
//安裝sockets就進入/snow/zabbix/php-7.2.3/ext/sockets目錄下操作
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# cd /snow/zabbix/php-7.2.3/ext/bcmath
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# /usr/local/php7/bin/phpize
/*
*上面命令執行完成後,在當前目錄下生成bcmath的configure文件,再執行下面操作
*/
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# ./configure --with-php-config=/usr/local/php7/bin/php-config
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# make
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# make install
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# vim /usr/local/php7/lib/php.ini
--------------------------------------------------------------------------------------------------------
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718"
extension = bcmath.so
---------------------------------------------------------------------------------------------------------
- 把這四個模塊都完成編譯配置後,最終php.ini裏添加的內容如下圖
- 注意:PHP編譯配置生成的模塊放置於下面的目錄
/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
- 重啓php-fpm服務器,對php.ini所做的配置生效
systemctl restart php-fpm.service
打開瀏覽器,輸入地址zabbix servier ip/zabbix,然後就能進入Zabbix 3.4的web管理配置界面
- 在WEB 界面中,點擊 Next Step 按鈕,進入如下界面,並輸入正確的信息,連接數據庫
- 填寫zabbix server 的相關信息
- 預覽最終配置
- 最後一步有個報錯,按照提示,先下載配置文件zabbix.conf.php,然後保存到下面目錄。
/usr/local/nginx/html/zabbix/conf/
- 刷新web頁面後,顯示成功完成web的前端配置。
- 點擊finish按鈕成功進入界面。輸入zabbix的用戶名和密碼
初始用戶名 :Admin
初始密碼:zabbix
- 最後成功進入zabbix web GUI 界面!!!
四、 zabbix 漢化
4.1 修改系統配置文件,讓web頁面支持簡體中文顯示
- zabbix server端漢化
vi /usr/local/nginx/html/zabbix/include/locales.inc.php #編輯修改
----------------------------------------------------------------------------------------------------
'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => false),
修改爲
'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => true),
-----------------------------------------------------------------------------------------------------
4.2 替換監控圖像上系統默認的字體
默認字體不支持中文,如果不替換,圖像上會顯示亂碼
- 在Windows系統中的C:\Windows\Fonts目錄中複製出一箇中文字體文件,例如msyh.ttf
- 把字體文件msyh.ttf上傳到/usr/local/nginx/html/zabbix/fonts
- 備份默認的字體文件:DejaVusSans.ttf-bak
- 修改msyh.ttf名稱爲DejaVusSans.ttf
- zabbixweb頁面修改語言環境
五、zabbix添加監控
5.1 添加服務器監控
- 創建主機
- 填寫主機相關配置
- 選擇服務器監控模板
- 添加具體模板
- 添加之後主機會多一條記錄
- 選擇羣組等 查看監控的信息
5.2 zabbix實時監控mysql業務數據
- 創建/etc/zabbix/scripts/bin目錄
mkdir -p /etc/zabbix/scripts/bin
- zabbix agent 編寫zabbix查詢mysql業務數據腳本
[root@hb2-a-ld-overseas-001 bin]# vi /etc/zabbix/scripts/bin/online.sh
---------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
HOSTNAME="xxxxxx" #需要查詢的業務數據庫的ip,不是zabbix_server的數據庫
PORT="3306" #連接數據庫端口
USERNAME="root" #連接數據庫的用戶名
PASSWORD="xxxxxx" #連接數據庫的密碼
DBNAME="cdt" #需要連接的庫名
#新加坡上線設備
xjp_online_count="select count(*) from cdt_device_apply where status = 1 and countryId = 2"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${xjp_online_count}"
#馬來西亞上線設備
mlxy_online_count="select count(*) from cdt_device_apply where status = 1 and countryId = 3"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${mlxy_online_count}"
#新加坡已上線設備在線數量
xjp_onlining_count="select count(*) from cdt_device c, (select terminal,countryId,shopName,shopAddr,glat,glng from cdt_device_apply where status = 1 and countryId = 2 )a where c.terminal = a.terminal and c.updateTime > DATE_ADD(NOW(), INTERVAL -30 MINUTE)"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${xjp_onlining_count}"
#馬來西亞已上線設備在線數量
mlxy_onlining_count="select count(*) from cdt_device c, (select terminal,countryId,shopName,shopAddr,glat,glng from cdt_device_apply where status = 1 and countryId = 3 )a where c.terminal = a.terminal and c.updateTime > DATE_ADD(NOW(), INTERVAL -30 MINUTE)"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${mlxy_onlining_count}"
----------------------------------------------------------------------------------------------------------------------------------
- 賦予腳本執行權限
chmod +x online.sh
- 執行腳本,結果如圖:
./online.sh
- 創建腳本對應監控配置文件
[root@hb2-a-ld-overseas-001 zabbix]# cd /etc/zabbix/zabbix_agentd.d/
[root@hb2-a-ld-overseas-001 zabbix_agentd.d]# vi userparameter_sql.conf
-----------------------------------------------------------------------------------------------------------------------------------------
//UserParameter=後面是key名, ","後面命令獲取到的值爲key值,2>/dev/null輸出至回收站,awk 'NR==2{print $1}'抓取需要的值作爲key值<br>
UserParameter=laidian.xjp.online.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==2{print $1}'
UserParameter=laidian.mlxy.online.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==4{print $1}'
UserParameter=laidian.xjp.onlining.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==6{print $1}'
UserParameter=laidian.mlxy.onlining.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==8{print $1}'
-----------------------------------------------------------------------------------------------------------------------------------------
- zabbix server服務器執行命令 驗證監控配置
//xxx.xxx.xxx.xxx是zabbix agent服務器地址
/usr/local/zabbix/bin/zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k laidian.mlxy.online.count
- 創建主機
- 配置主機信息
- 配置監控項
- 添加圖形
- 監控信息圖形界面