源程式碼編譯zabbix4.0.2
- 2020 年 1 月 21 日
- 筆記
簡介:
zabbix是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。zabbix能監視各種網路參數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
簡單的監控流程
一個監控系統運行的大概的流程是這樣的: zabbix agent需要安裝到被監控的主機上,它負責定期收集各項數據,並發送到zabbix server端,zabbix server將數據存儲到資料庫中,zabbix web根據數據在前端進行展現和繪圖。這裡agent收集數據分為主動和被動兩種模式: 主動:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy 被動:server向agent請求獲取監控項的數據,agent返回數據。
安裝
然後我選著的安裝版本是4.0.4LTS,至於為什麼,因為是最新版本啊~ 話不都說,上安裝教程!
前提
伺服器要安裝好LNMP環境,建議手動編譯吧,因為用一鍵安裝腳本會有一系列不可抗問題 先放上我的LNMP版本
- CentOS Linux release 7.5.1804 (Core)
- Nginx 1.9.9
- Mysql 5.7.23 #PHP需要5.4.0以上
- PHP 7.1.25
不需要和我一樣的配置,但是nginx配置文件要添加php支援,簡單來說能phpinfo()要有回顯,然後php要安裝基本的模組,能連接mysql等等,具體的安裝方式我在下一篇部落格會寫
下載
去zabbix的官網下載編譯包。 下載後解壓
➜ cd /home/ #進入下載文件目錄 ➜ tar -zxvf zabbix-4.0.4.tar.gz #解壓
然後創建用戶
➜ groupadd zabbix #創建用戶組zabbix ➜ useradd zabbix -g zabbix -s /sbin/nologin #創建用戶zabbix,並且把用戶zabbix加入到用戶組zabbix中
導入資料庫
因為我用的是Mysql 所以這裡命令是
➜ mysql -u root -p #登錄資料庫 Enter password: mysql> create database zabbix character set utf8 collate utf8_bin; #創建一個名叫zabbix的資料庫 mysql> grant all privileges on zabbix.* to zabbix@"%" identified by '<password>'; #創建用戶並授權 mysql> flush privileges; #刷新許可權 mysql> quit; #退出
進入資料庫文件
➜ cd /home/zabbix-4.0.4/database/mysql/
➜ mysql -uzabbix -p zabbix < schema.sql ➜ mysql -uzabbix -p zabbix < images.sql ➜ mysql -uzabbix -p zabbix < data.sql #導入資料庫文件
編譯zabbix
➜ cd /home ➜ mkdir /home/zabbix #創建zabbix的安裝目錄 ➜ chown zabbix:zabbix -R zabbix #授予zabbix用戶許可權 ➜ ./configure --enable-server --enable-agent --with-mysql=/home/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 #因為我的資料庫是自己編譯安裝的,所以自己指定了一下mysql安裝目錄 ➜ make&&make install #等待一會就好了
然後修改一下配置文件 首先創建日誌文件 ➜ cd /home/zabbix ➜ mkdir {tmp,log} ➜ chowe -R zabbix:zabbix /home/zabbix
zabbix-server
➜ vi /home/zabbix/etc/zabbix_server.conf #修改 LogFile=/home/zabbix/log/zabbix_server.log PidFile=/home/zabbix/tmp/zabbix_server.pid #去掉前面的注釋 SocketDir=/home/zabbix/tmp DBHost=192.168.30.106 #安裝Mysql的伺服器地址,注意最好不要填127.0.0或者localhost DBName=zabbix DBUser=zabbix DBPassword=<password> DBSocket=/home/mysql/tmp/mysql.sock DBPort=3306
然後其餘的參數 如果你的安裝很小(最多十個受監控主機),其餘參數將適合您的默認值。如果要最大化Zabbix伺服器(或代理)的性能,則應更改默認參數。
zabbix-agent
➜ vi /home/zabbix/etc/zabbix_server.conf PidFile=/home/zabbix/tmp/zabbix_agentd.pid LogFile=/home/zabbix/log/zabbix_agentd.log UnsafeUserParameters=1 #改用自定義的key Server=192.168.30.106 #改成zabbix-server的地址 ServerActive=192.168.30.106 Hostname=Zabbix server #這裡要和網頁中主機的主機名稱一樣,不然伺服器會找不到
其餘默認就好
然後啟動一下服務
➜ zabbix_server ➜ zabbix_agentd
安裝前端
我這裡用的是nginx 所以進入nginx安裝目錄
➜ cd /home/nginx/html/ ➜ mkdir zabbix ➜ chown nginx:nginx ./zabbix ➜ cp /home/zabbix-4.0.4/frontends/php/* ./zabbix/
然後打開瀏覽器,/zabbix/setup.php

顯示這樣的窗口 然後下一步 會警告下面選項的值過低
- post_max_size
- max_execution_time
- max_input_time
修改一下php的配置文件就好
➜ vi /home/php/etc/php.ini #修改 post_max_size =16M max_execution_time =300 max_input_time =300
重啟一下php服務
ps -ef |grep php #查看php的pid kill -USR2 3734 #重啟
然後刷新一下頁面沒有警告就好了。然後繼續下一步,輸入基本的資訊,填寫一下資料庫的資訊,就好了 到最後安裝完成的時候,會有個php文件,你下載下來,然後scp
發到伺服器的指定目錄就好,他會提示的! 然後瀏覽器輸入<192.168.30.106>/zabbix/ 就能登入了

默認賬戶是Admin,密碼是zabbix,主要A是大寫的,登入成功後顯示

在zabbix伺服器那值如果是綠色的是的話表示連接成功了。然後後面的操作就自己去官網看教程吧。
遇到的問題
安裝的時候也不是順風順水,一路磕磕碰碰,問題一大堆,不知道是最新版的緣故還是我誤操作太多的緣故,反正照著官方文檔來各種也各種問題
用rpm包安裝
剛開始用rpm包安裝,然後文件安裝位置賊亂,然後前段還各種連不上zabbix伺服器,10050埠也沒有開啟,但是我明明已經開啟server服務了,然後查看日誌,說什麼無法連接到資料庫,剛開始以為是配置文件的問題,然後查了一下zabbix-server配置文件,資料庫設置也沒有錯誤,資料庫授權也是好的,也測試過,但就是連接不上,然後就放棄了,哎,如果知道問題出在哪裡的可以聯繫我,最後卸載,換成現在的從源編譯。
從源碼包編譯
從源程式碼編譯,也有各種奇怪的問題,比如在啟動zabbix-server的時候報error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such
,然後試著百度解決問題,然後發現是因為我mysql是自己編譯的zabbix找不到lib文件
解決辦法
添加軟鏈
ln /home/mysql/lib/libmysqlclient.so.20 /usr/lib/
然後更新一下配置
/sbin/ldconfig –v
然後就啟動成功了
最後安裝完以後,在問題處報錯,提示我的Zabbix server的zabbix-agent
搜索不到,然後看日誌,顯示failed to accept an incoming connection: connection from "192.168.30.106" rejected, allowed hosts: "192.168.30.105"
,我以為是我的配置文件出問題了,然後仔細查看了一遍,沒有發現錯誤,最後想到,可能是官網給的agent包有問題,就卸載了,去官網重新下載了一個4.0的agent,編譯安裝,一樣的配置文件,然後連接上了= =!
總結
就像老師說的,好事多磨,總的來說成功的感覺還是喜悅的,哈哈,只要不放棄就對了,要有一個堅定的信念,Anything is possible!