1. 程式人生 > >分布式監控系統Zabbix3.2跳坑指南

分布式監控系統Zabbix3.2跳坑指南

zabbix 分布式

zabbix是什麽在此就不多作介紹了,可以參考之前的文章 零代碼如何打造自己的實時監控預警系統 ,這篇主要介紹安裝及註意事項。

主要分為服務端和客戶端安裝,客戶端又分為Linux、Windows。

服務端安裝環境

CentOS6.8

Zabbix3.2

Mysql5.6

Apache

PHP56w

環境準備

關閉selinux
setenforce 0

進入mysql,創建zabbix用戶並授權

mysql -uroot -p CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;

GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@'%' IDENTIFIED BY 'zabbix';

安裝apache、php

依次安裝,雖然說是離線安裝,但還是需要聯網下載一些包,如果自己手動下載再安裝的話會掉入一個個連環坑。


yum install php-pecl-ssh2.x86_64 libssh2-devel.x86_64 net-snmp* OpenIPMI OpenIPMI-devel -y

yum install --skip-broken rpm-build curl* curl-devel httpd php56w php56w-gd php56w-mysql php56w-bcmath php56w-mbstring php56w-xml php56w-ldap -y

yum install gcc libxml2-devel unixODBC-devel net-snmp-devel

libcurl-devel libssh2-devel OpenIPMI-devel openssl-devel openldap-devel –y

在這裏centos6.8裏面的php是一個低版本php54w的,因此需要安裝php56w,並重啟httpd 和mysqld服務

修改php配置文件


vim /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


啟動apache
service httpd start

調整防火墻配置,沒加會訪問出錯

-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT

添加zabbix服務端口

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

創建用戶

groupadd zabbix
useradd -g zabbix zabbix

創建zabbix文件夾

mkdir /usr/local/zabbix

cd /usr/local/zabbix

下載zabbix3.2
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.0/zabbix-3.2.0.tar.gz
解壓
tar zxvf zabbix-3.2.0.tar.gz

進入zabbix文件數據庫導入表

cd /usr/local/zabbix/zabbix-3.2.0/database/mysql

mysql -u zabbix -p zabbixzabbix<schema.sql

mysql -u zabbix -p zabbixzabbix<images.sql

mysql -u zabbix -p zabbixzabbix<data.sql


下載依賴包

yum install -y gcc mysql-community-devel libxml2-devel unixODBC-devel net-snmp-devel libcurl-devel libssh2-devel OpenIPMI-devel openssl-devel openldap-devel fping

編譯安裝zabbix

這裏面的zabbix為編譯後的zabbix文件夾,zabbix-3.2.0為源文件

cd /usr/local/zabbix/zabbix-3.2.0/

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --enable-proxy -with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc --with-ssh2 --with-openipmi --with-openssl --with-java-gateway
make install

修改zabbix_server配置文件

或在編譯目錄下/usr/local/zabbix/etc/zabbix_agentd.conf

vim /usr/local/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
FpingLocation=/usr/sbin/fping

DBSocket=/usr/local/mysql5.6/data/mysql.sock 這裏填你本機數據庫的sock //我發現如果不加,zabbix會一直報connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket mysql.sock'。
ListenIP=你的zabbix_server監聽的IP地址 這裏的配置一定要寫正確,否則後面會出很多問題

創建zabbix-web頁面文件夾

在/var/www/html/下創建文件夾 zabbix
mkdir /var/www/html/zabbix
拷貝 php 頁面文件到/var/www/html/zabbix 目錄下並授權

cd zabbix-3.2.0
cp -R ./frontends/* /var/www/html/zabbix


創建一個規則允許web服務器訪問前端文件
chcon -Rv --type=httpd_sys_content_t /var/www/html

chmod +x /var/www/html/zabbix/php/conf/

運行Apache和zabbix訪問外網
setsebool -P httpd_can_network_connect=1

setsebool -P zabbix_can_network=1

編輯zabbix前端的PHP配合配置

vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai //主要去掉# 改成上海
不設置會導致異常:Time zone for PHP is not set (configuration parameter "date.timezone").

拷貝啟動腳本到/etc/init.d

cp /usr/local/zabbix/zabbix-3.2.0/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
cp /usr/local/zabbix/zabbix-3.2.0/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
chkconfig --add /etc/init.d/zabbix_server
chkconfig --add /etc/init.d/zabbix_agentd

修改 basedir:這裏面的zabbix為編譯後的zabbix文件夾

vi /etc/init.d/zabbix_server
BASEDIR=/usr/local/換成BASEDIR=/usr/local/zabbix
vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/換成BASEDIR=/usr/local/zabbix
ln -s /usr/local/zabbix/sbin/zabbix_server /usr/local/sbin/
ln -s /usr/local/zabbix/sbin/ /usr/local/sbin/

解決前端顯示中文問題

技術分享圖片
cd /var/www/html/zabbix/fonts/
將中文字體放入
msyh.ttf
修改php配置文件

vim /var/www/html/zabbix/include/defines.inc.php

define('ZBX_FONT_NAME', 'msyh');

define('ZBX_GRAPH_FONT_NAME', 'msyh'); // font file name

進入主頁面:下面進行,將語言改為中文。
vim /usr/share/zabbix/include/locales.inc.php
找到第55行,將false改為true

技術分享圖片

啟用Zabbix服務器,Apache和MySQL服務啟動

chkconfig httpd on

chkconfig mysqld on

chkconfig zabbix_server on

chkconfig zabbix_agentd on

全面啟動

service zabbix_server start

service zabbix_agentd start

登陸zabbix

http://192.168.80.32/zabbix/setup.php

默認用戶名/密碼:Admin/zabbix

此時會出現安裝界面,然後點下一步

技術分享圖片

點擊next配置mysql:

不要用localhost,用主機IP

技術分享圖片

點擊下一步。此步出現錯誤,發現無法連接數據庫,最後發現zabbix這個數據庫中,沒有任何數據,檢查時加紅色的那部分出問題。
next到最後

技術分享圖片

默認用戶名/密碼:Admin/zabbix

技術分享圖片

點擊zabbix右上角小人,進行修改:

技術分享圖片

再重新刷新頁面

至此Zabbix服務端全部搭建完畢。

Zabbix客戶端安裝

下載zabbix3.2

zabbix-3.2.0.tar.gz
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.0/zabbix-3.2.0.tar.gz

添加服務

vim /etc/services
zabbix-agent 10050/tcp # ZabbixAgent
zabbix-agent 10050/udp # ZabbixAgent
zabbix-trapper 10051/tcp # ZabbixTrapper
zabbix-trapper 10051/udp # ZabbixTrapper

添加用戶

groupadd -g 201 zabbix
useradd -g zabbix -u 201 -s /sbin/nologin zabbix

解壓

tar -zxvf zabbix-3.2.0.tar.gz
cd zabbix-3.2.0
./configure --prefix=/usr/local/zabbix --enable-agent
make install


修改agentd配置文件

vi /usr/local/zabbix/etc/zabbix_agentd.conf
Server= 192.168.80.32 #服務端ip地址
ServerActive= 192.168.80.32 #服務端ip地址
Hostname=192.168.80.30 #必須與創建主機時的hostname一致(客戶端IP)

修改啟動配置,添加軟鏈接

mkdir /var/log/zabbix
chown zabbix.zabbix /var/log/zabbix
cp /usr/local/zabbix/zabbix-3.2.0/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
chmod 755 /etc/init.d/zabbix_agentd
ln -sv /usr/local/zabbix/sbin/* /usr/local/sbin/
ln -sv /usr/local/zabbix/bin/* /usr/local/bin/

轉換文件用戶
chown -R zabbix:zabbix /usr/local/zabbix

設置自啟動

chkconfig zabbix_agentd on

service zabbix_agentd start

在Server端使用以下命令測試是否能連接到Agent端:
# zabbix_get -s 192.168.80.30 -p 10050 -k "system.uptime"

若沒有添加zabbix_get軟連接,則加上編譯文件夾路徑

/usr/local/zabbix/bin/zabbix_get -s 192.168.80.30 -p 10050 -k "system.uptime"

啟動zabbix web端添加主機

技術分享圖片

技術分享圖片

註意上面的IP,與zabbix_agent中配置的hostname要一致

技術分享圖片

給服務器添加監控模板(自帶了一些模板,如果不滿足後面可以自己創建)

技術分享圖片

在監控項圖表中可查看記錄了,如果沒數據可能要等一會。

Windows中安裝客戶端

下載

官網:https://www.zabbix.com/download
下載 zabbix_agents_3.2.0.win.zip
解壓縮zabbix_agents_3.2.0.win.zip

在應用程序中文件夾中創建配置目錄及文件 conf\zabbix_agent.conf

配置

LogFile=c:\zabbix_agentd.log
EnableRemoteCommands=1 ##激活遠程執行腳本
Server=192.168.80.32
ServerActive=192.168.80.32
Hostname=192.168.80.33

註冊zabbix agent服務

1 運行cmd進入windows命令行控制臺,下面我是將程序放在D:\Soft文件夾下,且對文件夾重命名zabbix_agents_320win
2 運行D:\Soft\zabbix_agents_320win\bin\win64\zabbix_agentd.exe -c D:\Soft\zabbix_agents_320win\conf\zabbix_agentd.conf -i
註:-c表示配置文件路徑 -i表示安裝

啟動

在命令行運行services.msc進入windows服務控制臺,找到zabbix_agent服務,右鍵啟動即可

技術分享圖片

總得來說zabbix客戶端中windows比linux安裝容易。

最後一點就是如果能用CentOS7就盡量用,6.8的版本有些基礎插件版本低,需要自己升級所以安裝的時候不是差這就差那的。如果是CentOS7就簡單了,導入源:

rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安裝zabbix服務包
yum -y install zabbix-server-mysql zabbix-web-mysql
我們給本機也安裝上客戶端
yum -y install zabbix-agent

不過安裝的位置是默認的。

安裝問題匯總

zabbix_server啟動報錯---解決方法

Starting Zabbix Server: /opt/app/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory

vim /etc/ld.so.conf 加入
/usr/local/mysql5.6/lib mysql安裝路徑換成自己的

zabbix web頁面中添加的主機的可用性狀態顯示“received empty response from zabbix agent at.......”

解決方法:agent配置文件中的Server填寫的IP不對,一定要填寫zabbix_server的監聽IP。確認配置文件沒問題後,還有一個原因,在創建主機的時候,IP地址填寫的不正確,要填寫agent的IP地址。更改即可

vi /etc/zabbix/zabbix_agentd.conf //修改zabbix_agentd.conf參數
Server=192.168.80.32 //安裝zabbix服務端的機器的IP
ServerActive=192.168.80.32 //安裝zabbix服務端的機器的IP
Hostname=192.168.80.31 //我這以被監控的機器的ip作為Hostname,註意是被監控的,而且要與監控頁面的監控主機名一致

安裝過程中遇到Requires: libc.so.6(GLIBC_2.17)(64bit) 怎麽辦?

網上有說

cp /usr/local/glibc-2.17/lib/libc-2.17.so /lib64/libc-2.17.so
mv /lib64/libc.so.6 /lib64/libc.so.6.bak (但這樣會導致整個系統錯誤,結果悲劇了 登錄不了服務器,最後只能找其它方法修復系統,libc.so是一個系統級的文件,不能隨便刪除,但在centos7環境下不存在此問題)


分布式監控系統Zabbix3.2跳坑指南