耕耘實錄 關注 4人評論 1580人閱讀 2018-12-06 20:20:29 php
在開始以前,一些概念和定義須要咱們提早了解一下(如下內容摘自官方網站)。前端
架構mysql
Zabbix 由幾個主要的功能組件組成,其職責以下所示。linux
Serverweb
Zabbix server 是Zabbix agent 向其報告可用性、系統完整性信息和統計信息的核心組件。是存儲全部配置信息、統計信息和操做信息的核心存儲庫。sql
Zabbix Server 負責執行數據的主動輪詢和被動獲取,計算觸發器條件,向用戶發送通知。它是 Zabbix Agent 和 Proxy 報告系統可用性和完整性數據的核心組件。Server 自身能夠經過簡單服務遠程檢查網絡服務(如Web服務器和郵件服務器)。數據庫
Zabbix Server是全部配置、統計和操做數據的中央存儲中心,也是 Zabbix 監控系統的告警中心。在監控的系統中出現任何異常,將被髮出通知給管理員。centos
基本的 Zabbix Server 的功能分解成爲三個不一樣的組件。他們是:Zabbix server、Web前端和數據庫。瀏覽器
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)
你想要監控的聯網設備,有IP/DNS。
主機組(host group)
主機的邏輯組;可能包含主機和模板。一個主機組裏的主機和模板之間並無任何直接的關聯。一般在給不一樣用戶組的主機分配權限時候使用主機組。
監控項(item)
你想要接收的主機的特定數據,一個度量/指標數據。
值預處理(value preprocessing)
轉化/預處理接收到的指標數據 存入數據庫以前。
觸發器(trigger)
一個被用於定義問題閾值和「評估」監控項接收到的數據的邏輯表達式。當接收到的數據高於閾值時,觸發器從「OK」變成「Problem」狀態。當接收到的數據低於閾值時,觸發器保留/返回「OK」的狀態。
事件(event)
一次發生的須要注意的事情,例如觸發器狀態改變、發現/監控代理自動註冊。
事件標籤(event tag)
提早設置的事件標記能夠被用於事件關聯,權限細化設置等。
事件關聯(event correlation)
自動靈活的、精確的關聯問題和解決方案。
好比說,你能夠定義觸發器A告警的異常能夠由觸發器B解決,觸發器B可能採用徹底不一樣的數據採集方式。
異常(problems)
一個處在「異常」狀態的觸發器。
異常更新(problem update)
Zabbix提供的問題管理選項,例如添加評論、確認異常、改變問題級別或者手動關閉等。
動做(action)
預先定義的應對事件的操做。一個動做由操做(例如發出通知)和條件(什麼時間進行操做)組成。
升級(escalation)
一個在動做內執行操做的自定義方式; 發送通知/執行遠程命令的順序安排。
媒介(media)
發送告警通知的方式,傳送途徑。
通知(notification)
關於事件的信心,將經過選設定的媒介途徑發送給用戶。
遠程命令(remote command)
一個預約義好的,知足特定條件的狀況下,能夠在被監控主機上自動執行的命令。
模版(template)
一組能夠被應用到一個或多個主機上的實體(監控項,觸發器,圖形,聚合圖形,應用,LLD,Web場景)的集合。模版的應用使得主機上的監控任務部署快捷方便;也可使監控任務的批量修改更加簡單。模版是直接關聯到每臺單獨的主機上。
應用(application)
一組監控項組成的邏輯分組。
Web場景(web scenario)
檢查網站可瀏覽性的一個或多個HTTP請求。
前端(frontend)
Zabbix提供的web界面。
Zabbix API
Zabbix API容許用戶使用JSON RPC協議來建立、更新和獲取Zabbix對象(如主機、監控項、圖形和其餘)信息或者執行任何其餘的自定義的任務。
Zabbix server
Zabbix監控的核心程序,主要功能是與Zabbix proxies和Agents進行交互、觸發器計算、發送告警通知;並將數據集中保存等。
Zabbix agent
部署在監控對象上的,可以主動監控本地資源和應用的程序。
Zabbix proxy
一個幫助Zabbix Server收集數據,分擔Zabbix Server的負載的程序。
加密(encryption)
支持Zabbix組建之間的加密通信(server, proxy, agent, zabbix_sender 和 zabbix_get 程序) 使用TLS(Transport Layer Security )協議。
因爲實驗環境資源有限,本實驗中只有一臺 Zabbix Server 和一臺被監控的Host,配置以下:
Zabbix Server
[root@zabbix ~]# cat /etc/centos-releaseCentOS 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 --versionzabbix_server (Zabbix) 4.0.2
Host
[root@httpd ~]# cat /etc/centos-releaseCentOS 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 -Vzabbix_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 mariadbCreated symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix ~]# mysql -uroot -pMariaDB [(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 zabbixEnter password: [root@zabbix ~]# mysql -u zabbix -pEnter password: MariaDB [(none)]> use zabbix; MariaDB [zabbix]> show tables; 144 rows in set (0.00 sec) MariaDB [zabbix]> exitBye
輸入以前咱們設置的密碼,回車鍵稍後便可。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 firewalldRemoved 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 httpdCreated 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-agentCreated 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-agentCreated 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 最新版官方中文文檔