在開始以前,一些概念和定義須要咱們提早了解一下(如下內容摘自官方網站)。php
架構前端
Zabbix 由幾個主要的功能組件組成,其職責以下所示。mysql
Serverlinux
Zabbix server 是Zabbix agent 向其報告可用性、系統完整性信息和統計信息的核心組件。是存儲全部配置信息、統計信息和操做信息的核心存儲庫。web
Zabbix Server 負責執行數據的主動輪詢和被動獲取,計算觸發器條件,向用戶發送通知。它是 Zabbix Agent 和 Proxy 報告系統可用性和完整性數據的核心組件。Server 自身能夠經過簡單服務遠程檢查網絡服務(如Web服務器和郵件服務器)。sql
Zabbix Server是全部配置、統計和操做數據的中央存儲中心,也是 Zabbix 監控系統的告警中心。在監控的系統中出現任何異常,將被髮出通知給管理員。數據庫
基本的 Zabbix Server 的功能分解成爲三個不一樣的組件。他們是:Zabbix server、Web前端和數據庫。centos
Zabbix 的全部配置信息都存儲在 Server 和 Web 前端進行交互的數據庫中。例如,當你經過Web前端(或者API)新增一個監控項時,它會被添加到數據庫的監控項表裏。而後,Zabbix server 以每分鐘一次的頻率查詢監控項表中的有效項,接着將它存儲在 Zabbix server 中的緩存裏。這就是爲何 Zabbix 前端所作的任何更改須要花費兩分鐘左右才能顯示在最新的數據段的緣由。瀏覽器
數據庫緩存
全部配置信息以及 Zabbix 收集到的數據都被存儲在數據庫中。
Web 界面
爲了從任何地方和任何平臺輕鬆訪問 Zabbix ,咱們提供了基於 web 的界面。該界面是 Zabbix server 的一部分,一般(但不必定)和 Zabbix server 運行在同一臺物理機器上。
Proxy
Zabbix proxy 能夠替 Zabbix server 收集性能和可用性數據。Zabbix proxy 是 Zabbix 環境部署的可選部分;然而,它對於單個 Zabbix server 負載的分擔是很是有益的。
Zabbix proxy 是一個能夠從一個或多個受監控設備採集監控數據並將信息發送到 Zabbix server 的進程,主要是表明 Zabbix server 工做。 全部收集的數據都在本地緩存,而後傳輸到 proxy 所屬的 Zabbix server。
部署Zabbix proxy 是可選的,但可能很是有利於分擔單個 Zabbix server 的負載。 若是隻有代理採集數據,則 Zabbix server 上會減小 CPU 和磁盤 I/O 的開銷。Zabbix proxy 是無需本地管理員便可集中監控遠程位置、分支機構和網絡的理想解決方案。Zabbix proxy 須要使用獨立的數據庫。
Agent
Zabbix agent 部署在被監控目標上,以主動監控本地資源和應用程序(硬盤、內存、處理器統計信息等)。
Zabbix agent 收集本地的操做信息並將數據報告給 Zabbix server 用於進一步處理。一旦出現異常 (例如硬盤空間已滿或者有崩潰的服務進程),Zabbix server 會主動警告管理員指定機器上的異常。
Zabbix agents 的極高效率緣於它能夠利用本地系統調用來完成統計數據的採集。
Zabbix agent 能夠運行被動檢查和主動檢查。
在被動檢查 模式中 agent 應答數據請求。Zabbix server(或 proxy)詢求數據,例如 CPU load,而後 Zabbix agent 返還結果。
主動檢查 處理過程將相對複雜。Agent 必須首先從 Zabbix sever 索取監控項列表以進行獨立處理,而後會按期發送採集到的新值給 Zabbix server。
是否執行被動或主動檢查是經過選擇相應的監控項類型來配置的。 Zabbix agent 處理「Zabbix agent」或「Zabbix agent(active)」類型的監控項。
數據流
首先,爲了建立一個採集數據的監控項,您就必須先建立主機。其次,必須有一個監控項來建立觸發器。最後,您必須有一個觸發器來建立一個動做,這幾個點構成了一個完整的數據流。所以,若是您想要收到 CPU load it too high on Server X 的告警,您必須首先爲 Server X 建立一個主機條目,其次建立一個用於監視其 CPU 的監控項,最後建立一個觸發器,用來觸發 CPU is too high 這個動做,並將其發送到您的郵箱裏。雖然這些步驟看起來很繁瑣,可是使用模板的話,其實並不複雜。也正是因爲這種設計,使得 Zabbix 的配置變得更加靈活易用。
主機(host)
主機組(host group)
監控項(item)
值預處理(value preprocessing)
觸發器(trigger)
事件(event)
事件標籤(event tag)
事件關聯(event correlation)
好比說,你能夠定義觸發器A告警的異常能夠由觸發器B解決,觸發器B可能採用徹底不一樣的數據採集方式。
異常(problems)
異常更新(problem update)
動做(action)
升級(escalation)
媒介(media)
通知(notification)
遠程命令(remote command)
模版(template)
應用(application)
Web場景(web scenario)
前端(frontend)
Zabbix API
Zabbix server
Zabbix agent
Zabbix proxy
加密(encryption)
因爲實驗環境資源有限,本實驗中只有一臺 Zabbix Server 和一臺被監控的Host,配置以下:
Zabbix Server
[root@zabbix ~]# cat /etc/centos-release CentOS Linux release 7.5.1804 (Core) [root@zabbix ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+' 172.31.3.21/22 [root@zabbix ~]# zabbix_server --version zabbix_server (Zabbix) 4.0.2
Host
[root@httpd ~]# cat /etc/centos-release CentOS Linux release 7.5.1804 (Core) [root@httpd ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+' 172.31.3.41/22 [root@httpd ~]# zabbix_agentd -V zabbix_agentd (daemon) (Zabbix) 4.0.2
Host主機的防火牆已關閉。
[root@zabbix ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
若是這一步沒法正常執行,那麼咱們還能夠去官方倉庫下載相關repo的rpm包進行安裝。
[root@zabbix ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm 警告:zabbix-release-4.0-1.el7.noarch.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID a14fe591: NOKEY 準備中... ################################# [100%] 正在升級/安裝... 1:zabbix-release-4.0-1.el7 ################################# [100%]
[root@zabbix ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent 已安裝: zabbix-agent.x86_64 0:4.0.2-1.el7 zabbix-server-mysql.x86_64 0:4.0.2-1.el7 zabbix-web-mysql.noarch 0:4.0.2-1.el7 做爲依賴被安裝: OpenIPMI-libs.x86_64 0:2.0.23-2.el7 OpenIPMI-modalias.x86_64 0:2.0.23-2.el7 apr.x86_64 0:1.4.8-3.el7_4.1 apr-util.x86_64 0:1.5.2-6.el7 dejavu-fonts-common.noarch 0:2.33-6.el7 dejavu-sans-fonts.noarch 0:2.33-6.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 fping.x86_64 0:3.10-1.el7 gnutls.x86_64 0:3.3.26-9.el7 httpd.x86_64 0:2.4.6-80.el7.centos httpd-tools.x86_64 0:2.4.6-80.el7.centos iksemel.x86_64 0:1.4-2.el7.centos libX11.x86_64 0:1.6.5-1.el7 libX11-common.noarch 0:1.6.5-1.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXpm.x86_64 0:3.5.12-1.el7 libevent.x86_64 0:2.0.21-4.el7 libjpeg-turbo.x86_64 0:1.2.90-5.el7 libpng.x86_64 2:1.5.13-7.el7_2 libtool-ltdl.x86_64 0:2.4.2-22.el7_3 libxcb.x86_64 0:1.12-1.el7 libxslt.x86_64 0:1.1.28-5.el7 libzip.x86_64 0:0.10.1-8.el7 mailcap.noarch 0:2.1.41-2.el7 net-snmp-libs.x86_64 1:5.7.2-32.el7 nettle.x86_64 0:2.7.1-8.el7 php.x86_64 0:5.4.16-45.el7 php-bcmath.x86_64 0:5.4.16-45.el7 php-cli.x86_64 0:5.4.16-45.el7 php-common.x86_64 0:5.4.16-45.el7 php-gd.x86_64 0:5.4.16-45.el7 php-ldap.x86_64 0:5.4.16-45.el7 php-mbstring.x86_64 0:5.4.16-45.el7 php-mysql.x86_64 0:5.4.16-45.el7 php-pdo.x86_64 0:5.4.16-45.el7 php-xml.x86_64 0:5.4.16-45.el7 t1lib.x86_64 0:5.1.2-14.el7 trousers.x86_64 0:0.3.14-2.el7 unixODBC.x86_64 0:2.3.1-11.el7 zabbix-web.noarch 0:4.0.2-1.el7 完畢!
在某些CentOS版本中,MySQL已經被替換爲mariadb,mariadb徹底兼容MySQL,而且不存在法律風險,是MySQL良好的替代品。固然,若是要安裝MySQL,那麼也是沒有問題的,我以前的博文有關各種MySQL的安裝教程,可供參考。因爲實驗環境資源有限,本人把 mariadb 也安裝在了與 Zabbix Server 相同的主機上。生產環境的話仍是儘可能把數據庫獨立處理安裝與配置。
[root@zabbix ~]# yum -y install mariadb-server 已安裝: mariadb-server.x86_64 1:5.5.60-1.el7_5 做爲依賴被安裝: mariadb.x86_64 1:5.5.60-1.el7_5 完畢! [root@zabbix ~]# systemctl start mariadb [root@zabbix ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix ~]# mysql -uroot -p MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | zabbix | +--------------------+ MariaDB [(none)]> show variables like 'character_set_database'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | character_set_database | latin1 | +------------------------+--------+ 1 row in set (0.00 sec) MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix.gysl'; MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('zabbix.gysl'); MariaDB [(none)]> quit Bye
Mariadb 安裝完成以後默認無密碼,在提示輸入密碼那一步直接按回車鍵便可登入。等入數據庫以後,建立了數據庫zabbix,授予全部的權限並設置密碼。最後順便給mariadb設置了密碼。
[root@zabbix ~]# sed -i.bak '/^DBUser/a DBPassword=zabbix.gysl' /etc/zabbix/zabbix_server.conf [root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf |grep -v ^#|grep ^"\S" LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid SocketDir=/var/run/zabbix DBName=zabbix DBUser=zabbix DBPassword=zabbix.gysl SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=4 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix Enter password: [root@zabbix ~]# mysql -u zabbix -p Enter password: MariaDB [(none)]> use zabbix; MariaDB [zabbix]> show tables; 144 rows in set (0.00 sec) MariaDB [zabbix]> exit Bye
輸入以前咱們設置的密碼,回車鍵稍後便可。144張表,確認無誤。
[root@zabbix ~]# sed -i.bak '/Europe\/Riga/a \\tphp_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
[root@zabbix ~]# systemctl stop firewalld [root@zabbix ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@zabbix ~]# systemctl start httpd [root@zabbix ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@zabbix ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@zabbix ~]# systemctl restart zabbix-server zabbix-agent [root@zabbix ~]# systemctl enable zabbix-server zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service. Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service. [root@zabbix ~]# reboot
重啓以後若是無其餘異常,那麼 Zabbix Server 已經正常運行,等待進一步配置。
在瀏覽器地址欄輸入:http://172.31.3.21/zabbix
(http://server_ip_or_name/zabbix)後按下回車鍵。
點擊Next setup按鈕,按照提示輸入必填內容,填寫完畢以後界面大體以下:
出現如下界面說明安裝成功。
點擊Finish便可。
輸入用戶名 Admin 以及密碼 zabbix 以做爲 Zabbix 超級用戶登陸。頁面右上角找到用戶頭像標誌,把語言設置爲中文。
[root@httpd ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm [root@httpd ~]# yum -y install zabbix-agent [root@httpd ~]# sed -i.bak 's/Server=127.0.0.1/Server=172.31.3.21/g' /etc/zabbix/zabbix_agentd.conf [root@httpd ~]# systemctl start zabbix-agent [root@httpd ~]# systemctl enable zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
登陸系統以後,依次點擊:配置->建立主機(右上角)。依次填入或者選擇以下圖所示項目:
選擇模板並添加:
選擇完成以後,點擊添加,查看:
出現如上圖所示內容則表明配置成功,能夠進一步探索Zabbix強大的功能了。
4.1 整體來講,Zabbix是很是容易安裝、使用的,可是在安裝過程當中仍是須要注意一些細節。
4.3 Zabbix 的官方文檔很詳細,還提供中文版,可是也還有一些坑須要咱們去思考、總結。
4.4 若是使用二進制安裝,那麼進程管理帳戶那是很是有必要考慮的。在官方文檔中有提到,zabbix server 和 zabbix agent 在同一臺主機上安裝時,須要使用不通的進程管理帳戶。
4.4 這篇文章主要介紹的Zabbix的安裝,截圖較少,須要一些使用經驗。進一步的使用會在後面的文章中具體展開介紹,不足之處萬望海涵。願你們與我一塊兒成長!
5.1 官方倉庫
5.2 下載地址及簡要安裝教程
5.3 Zabbix安全最佳實踐
5.4 CentOS環境下官方安裝教程
5.5 最新版官方中文文檔