Zabbix是一個企業級的開源監控軟件,可以監控IT基礎架構的可用性和應用的性能,為用戶提供集中管理、分布式監控的一站式(all in one)監控解決方案,是一款真正的開源產品(True Open source)。采用GPL協議發布,不論是商業或非商業的使用沒有任何限制,可以說是絕對的自由使用。不同于其他開源產品有社區版本和企業版本的區別,Zabbix軟件本身提供的功能、監控設備的數量等方面沒有任何限制。無論是企業或者個人使用,你都可以對源代碼進行修改、定制以便適應自身需求,尤其是對企業來講很重要的一點就是避免了廠商鎖定的問題。
Zabbix最基本的目的是收集監控數據,將收集的數據統一保存到數據庫中進行分析處理,利用Web前端頁面可以輕松的將這些監控數據實時展示出來。通過與設定的閥值進行比較觸發特定的事件并產生相應的動作,發出告警通知或執行遠程命令。Zabbix 提供了多種監控方式用來監控基礎架構的各個方面,不僅有專用的Agent,還支持External checks、SNMP、IPMI、JMX monitoring、SSH checks等多種方式收集監控數據,具有豐富的功能和靈活的擴展性。事實上,幾乎所有你能想到的都可以在Zabbix中實現監控。
Alexei Vladishev 1998年開始創建Zabbix,2001年他發布了Zabbix的第一個版本,自從第一次發布起,Zabbix就確定了它的開發指南:
關于閾值、觸發器和警報的所有規則均由 Zabbix 服務器管理。
幾乎所有的配置任務都可以通過Zabbix?Web前端頁面完成。
使用PHP開發Zabbix Web前端頁面,使用C語言開發Zabbix 服務器保證核心系統的性能。
所有的數據(包括配置和歷史數據)存儲在關系數據庫中(將來也可以在 NoSQL 數據庫中存儲歷史數據)。
目前Zabbix支持的穩定發行版本如下表1-1所示:
表1-1
版本 | 發布日期 | 終止支持日期 |
Zabbix 3.0 | 2016年2月16日 | 2019年2月 |
Zabbix 2.2 | 2013年11月12日 | 2017年8月 |
目前在運維監控領域越來越多的人開始關注并使用Zabbix,那為什么Zabbix會在眾多開源監控軟件中脫穎而出,成為最受歡迎的開源監控產品,或者說使用Zabbix監控系統的理由,可以歸納為以下幾點:
只需要Linux、Apache/Nginx、PHP、MySQL/PostgreSQL,無須專用的操作系統和硬件。
安裝和配置簡單,提供集中統一的Web前端管理界面,易學易用。
服務器可以安裝運行在大部分UNIX-like的操作系統中,包括Linux、AIX、BSD、Mac OS X和Solaris。
原生的agents支持大部分UNIX-like操作系統和Windows操作系統。
支持 SNMP(SNMPv1、SNMPv2c、SNMPv3)trapping和polling方式監控設備。
能直接監控IPMI 設備。
利用JMX(Java Management Extensions)監控Java應用。
利用VMware API可以直接監控vCenter或vSphere。
內置繪圖功能,實時展示監控數據和其他可視化功能。
收集的數據持久保存到中心數據庫中,便于對監控數據的二次分析。
可以很方便的使用微信、釘釘等擴展告警方式。
Zabbix API提供可編程接口,可以使用多種不同的編程語言與第三方系統的集成。得輕松、簡單。
靈活強大的模板化配置,并支持模板的嵌套。
具有自動發現網絡設備、自動注冊主機、自動添加模板等功能,實現自動化運維。
具有豐富的擴展能力,可以輕松的自定義監控項并收集數據,幾乎能監控你想得到的所有數據。
當然還有很多功能特性,例如用戶及權限管理、靈活的告警條件設置及告警升級等,在這里不再一一列舉,隨著本書的介紹,相信你將對Zabbix有一個深入的了解。
近日完成《深入淺出?zabbix 4.0》視頻教程的錄制并正式發布,該教程基于 zabbix 4.2 ,對Zabbix進行全面講解。歡迎大家圍觀。課程鏈接:https://edu.51cto.com/sd/ce000?
Zabbix監控系統包含四個主要組件:Zabbixserver、Zabbix proxy、Zabbix database和Zabbix GUI。每個組件都有其自身的特點和要求:
Zabbix server:這是核心引擎,負責收集或接收來自被監控設備的數據。它是用C語言開發的,與Zabbix agents、Zabbix proxy和 Zabbix database進行通信。它是最主要的組件,管理所有的規則(包括收集監控數據、觸發器、告警等等)。
Zabbix?GUI:這是?Zabbix Web前端管理頁面,用戶通過Web前端頁面可以查看Zabbixserver收集的數據,也可以對Zabbix server進行配置。它是用?PHP?開發的,使用支持?PHP程序運行的?web?服務器?(Apache或Nginx),并與?Zabbix?數據庫通信。
Zabbix database:?這是?Zabbix?數據存儲庫。?Zabbix的后端數據庫可以是?Oracle、?IBM DB2、PostgreSQL、MySQL?或?SQLite3。在這本書中,我們將使用MySQL?作為數據庫。
Zabbix?proxy:這是一個可選的組件,利用它來實現分布式監控架構或分擔Zabbix server的負載,提高Zabbix server的性能。它的主要功能是協助?Zabbix server從被監視的主機或設備收集數據。Zabbix?proxy收集的數據首先存放到本地臨時數據庫中,隨后定時發送到?Zabbix server中,即便Zabbix server和Zabbix proxy的連接斷開也不會導致數據的丟失(數據保留的時間可在proxy的配置文件中設置)。在3.0版本中原生支持Zabbix server和Zabbix proxy之間的數據加密傳輸(基于證書或者基于共享秘鑰的加密都是支持的)。
通過圖1-1可以看到,Zabbix是一個三層架構,在實現時我們需要安裝以下三個服務器,即Web服務器、Database服務器和Zabbix服務器。
圖1-1
如果需要監控的規模比較?。◣着_或幾十臺主機),上面提到的三個服務器可以同時安裝在一個物理服務器中,這種方式的優點是安裝配置簡單快速,初期部署成本比較低。如下圖1-2所示。
?圖1-2
隨著監控規模的不斷擴大,需要保存和處理更多的監控數據,也會有更多的運維人員訪問Zabbix Web前端頁面,這樣勢必會讓Zabbixserver的處理性能下降,出現斷圖、Web前端頁面訪問慢等問題。這時我們可以將Web服務器、Database服務器和Zabbix服務器拆分,分別安裝到不同的物理服務器中。這種方式中每個服務器組件使用專用的硬件資源,可以解決相應的性能問題,但是需要增加服務器硬件的投入。如下圖1-3所示。
圖1-3
?
?
圖1-4
在標準的Zabbix數據處理流程中,主要是通過幾個不同的數據源端發送數據到Zabbix server,所有的數據都會保存到數據庫中,并通過Web GUI為用戶展現結果。從上圖1-4中我們可以看到發送數據的主要源包括:
Zabbix agent
Zabbix sender
Other agent (如腳本或者自定義的第三方的agent)
Zabbix proxy
?
準備部署Zabbix之前,應當根據實際的IT基礎架構和業務需求,規劃設計Zabbix監控部署方案,盡量避免后期使用過程中可能遇到的性能、容量等方面的問題。
Zabbix在大部分場景中以集中式架構部署即可滿足要求,所謂集中式架構就是無論Zabbix server、Database server和Web server是否安裝在同一臺服務器中,所有的監控數據都是由Zabbix server收集。如果你需要監控的IT基礎架構有多個分中心或分支機構,建議采用分布式架構部署,在每個分中心或分支機構增加Zabbix proxy,由Zabbix proxy收集本地的監控數據后統一傳輸到Zabbix server中存儲和處理,實現分布式架構、集中監控的方案。
服務器只要有128MB內存和256MB磁盤空間就能夠正常運行Zabbix,但在實際環境中部署時需要根據監控需求加以調整。
下表1-2為官方列舉的服務器硬件配置:
表1-2
類型 | 系統平臺 | CPU/內存 | 數據庫 | 硬盤 | 被監控主機 |
小型 | CentOS | 虛擬機 | MySQL InnoDB | SATA | 100 |
中型 | CentOS | 2 CPU cores/2GB | MySQL InnoDB | SATA | 500 |
大型 | RedHat Enterprise Linux | 4 CPU cores/8GB | MySQL InnoDB 或 PostgreSQL | RAID 10 SAS或SSD | >1000 |
超大型 | RedHat Enterprise Linux | 8CPU cores/16GB | MySQL InnoDB 或 PostgreSQL | RAID 10 SAS或SSD | >10000 |
服務器的硬件配置和被監控主機的數量、監控指標的數量以及觸發器的設置和數量等都有很密切的關系,數量越大意味著Zabbix需要更高的處理器性能,特別是數據庫不僅需要大量的處理器資源,還需要更多的內存。
當收集監控數據的間隔時間設置的比較小時,會提高數據的刷新速率,同時也會對數據庫帶來更密集的讀寫操作,因此在被監控主機數量和監控指標的數量很大時,建議配置SSD硬盤,避免磁盤I/O和數據庫的性能成為瓶頸。
Zabbix雖然支持Oracle、PostgreSQL、IBM DB2、MySQL和SQLite數據庫,但在生產環境中建議使用MySQL數據庫,理由是Zabbix的開發后端數據庫使用的就是MySQL數據庫,使用MySQL數據庫應該能夠獲得Zabbix最好的性能。除非你的環境中只能使用Oracle數據庫,否則不建議使用,Zabbix使用Oracle可能會有一些性能方面的問題。IBM DB2數據庫目前處于試驗階段,不建議使用。在Zabbix proxy中使用SQLite 3作為數據庫是沒有任何問題的,但是在Zabbix server中不能使用SQLite 3,Zabbix v2.4以上的版本中server和web前端對數據庫的并發訪問可能會造成數據庫的損壞。
MySQL數據庫目前有兩個衍生版:Percona 和MariaDB,在生成環境中建議的選擇順序為Perconaà MariaDB à Oracle MySQL。
影響Zabbix占用磁盤空間大小的因素主要有以下幾個:
監控項總數。
監控項的平均刷新率。
數據保留天數。
數據庫中新增一條數據占用的磁盤空間。不同的數據庫中這個值會有所不同,在MySQL數據庫中,新增一條數值(numeric)類型的歷史或趨勢數據記錄一般占用大約90個字節(bytes),文本(text)或日志(log)類型的記錄大約占用 500個 字節(bytes)。新增一條事件記錄一般占用大約170個字節(bytes)。
占用磁盤空間的容量可以用下面的公式計算:
磁盤總容量= 配置數據 + 歷史數據+ 趨勢數據 + 事件數據
其中:
配置數據:Zabbix中所有相關的配置數據都保存在數據庫中,大約占10MB的磁盤空間。
歷史數據:歷史記錄通常會保留一段時間,比如說30天,1年,可根據你的需要設置。當新增一條記錄時占用相應的磁盤空間可以用下面的公式計算:
歷史數據保留天數* 24 * 3600 *(監控項總數/平均刷新率)* 90 bytes
趨勢數據:Zabbix每過1小時會便會對所有的監控項進行max/min/avg/count的統計并將結果保存到數據庫的趨勢表(trends)中,當新增一條記錄時占用相應的磁盤空間可以用下面的公式計算:
趨勢數據保留天數* 監控項總數 * 24 * 90bytes
事件數據:每天Zabbix中生成的事件很難估計一個比較準確的數量,我們可以假設Zabbix每秒鐘生成一個事件,新增記錄占用磁盤的空間可以用下面的公式計算:
事件數據保留天數* 24 * 3600 * 170 bytes
下面通過例子來看看磁盤容量的計算過程:
假設有3000個監控項,每60秒鐘刷新一次。
首先我們要計算出每秒鐘需要處理的監控項數量,即監控項總數/平均刷新率,3000 / 60 = 50,這個值的意思是Zabbix每秒鐘會在數據庫中新增50條記錄。
再分別計算出歷史數據、趨勢數據和事件數據占用的磁盤空間。
假設每個監控項的歷史數據保留30天,歷史數據占用的磁盤空間容量為:歷史數據保留天數* 24 * 3600 *(監控項總數/平均刷新率)* 90 bytes,即(30 * 24 *3600)* 50 * 90,計算得出需要11.7 GB磁盤空間。
假設每個監控項的趨勢數據保留5年,趨勢數據占用的磁盤空間容量為:趨勢數據保留天數* 監控項總數 * 24 * 90bytes,即(5 * 24 * 365)* 3000 * 90,計算得出需要11.8 GB磁盤空間。
假設每個事件保留3年,事件數據占用的磁盤空間容量為:事件數據保留天數* 24 * 3600 * 170 bytes,即 3 * 365 * 24 * 3600 * 170,計算得出需要16GB磁盤空間。
Zabbix中對過期的歷史、趨勢等數據的管理,提供了Housekeeper功能,通過Housekeeping可以自動刪除過期的數據。監控規模較小,數據不是很多的情況下,使用Housekeeper不會有什么問題。當監控的規模上去后,數據庫的存儲容量也會快速增長,這時候如果使用Housekeeping自動刪除大量過期的數據,將需要更多的時間來完成刪除任務。在刪除過期數據的同時又要滿足新數據入庫和各種數據查詢的操作,很容易出現數據庫的性能問題,例如操作Web前端頁面時出現卡頓,新數據不能正常入庫等。
為了解決這個問題,我們通常采用的辦法是對history、history_uint、trends、trends_uint等數據表進行表分區,如下圖1-5所示。
圖1-5
表分區會帶來如下好處:
大大改善單表的查詢性能。
分區會減少索引的大小。
大規模刪除可以通過刪除分區表完成,比執行SQL刪除命令更快。
查詢需要大范圍的訪問分區時,使用順序掃描的方法比使用索引效率更高。
因此,根據實際環境,如果監控數據量比較大,那么建議你在安裝前考慮數據庫表分區,早分比晚分好。
在本書中使用的環境是:
OS:CentOS 7.2 (SElinux需設置為disable)
Web server:Apache
Database server:mariadb
Zabbix server:version 3.0.1
Zabbix的安裝和其他軟件一樣,可以有兩種方法安裝:基于包管理器安裝和基于源碼編譯安裝。
基于包管理器安裝的好處:
輕松的安裝和升級
自動解決所有的依賴關系
基于源碼編譯安裝的好處:
只需要編譯自己需要的特性
完全控制升級過程
可以靜態編譯agent,在不同的linux平臺使用統一版本的agent
在一個大的IT基礎架構中會有不同版本的Linux、Unix或Windows系統,如果我們使用Zabbix發布的agent,會造成使用的agent版本不一致的情況,而不同版本的agent定義的配置文件的存儲位置可能不一樣,這樣在運維中無法實現標準化的統一管理,給運維帶來壓力。通過--enable-static 選項進行編譯,為我們提供了標準化的方法,在不同的系統中輕松部署相同版本的agent。
下面我們開始安裝和配置Zabbix server、Zabbix agent和Zabbix proxy。為了學習、測試Zabbix,我們也可以在虛擬機中安裝,在實際的生產環境中不建議使用虛擬機。
?安裝MySQL server和Zabbix server
# yuminstall mariadb-server mariadb zabbix-server-mysql zabbix-web-mysql
#systemctl enable mariadb
#systemctl start mariadb.service
# /usr/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT ISRECOMMENDED FOR ALL MySQL
?????SERVERS IN PRODUCTION USE!? PLEASEREAD EACH STEP CAREFULLY!
?
In order to log into MySQL to secure it,we'll need the current
password for the root user.? If you've just installed MySQL, and
you haven't set the root password yet, thepassword will be blank,
so you should just press enter here.
?
Enter current password for root (enter fornone):
OK, successfully used password, movingon...
?
Setting the root password ensures thatnobody can log into the MySQL
root user without the proper authorisation.
?
Set root password? [Y/n] y
New password: (此處設置數據庫root用戶密碼,本書例子中設置為zabbix)
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
?...Success!
?
By default, a MySQL installation has ananonymous user, allowing anyone
to log into MySQL without having to have auser account created for
them.?This is intended only for testing, and to make the installation
go a bit smoother.? You should remove them before moving into a
production environment.
?
Remove anonymous users? [Y/n] y
?...Success!
?
Normally, root should only be allowed to connectfrom 'localhost'.? This
ensures that someone cannot guess at theroot password from the network.
?
Disallow root login remotely? [Y/n] y
?...Success!
?
By default, MySQL comes with a databasenamed 'test' that anyone can
access.?This is also intended only for testing, and should be removed
before moving into a productionenvironment.
?
Remove test database and access to it?[Y/n] y
?-Dropping test database...
?...Success!
?-Removing privileges on test database...
?...Success!
?
Reloading the privilege tables will ensurethat all changes made so far
will take effect immediately.
?
Reload privilege tables now? [Y/n] y
?...Success!
?
Cleaning up...
?
All done!?If you've completed all of the above steps, your MySQL
installation should now be secure.
#mysql -u root -p
MariaDB [(none)]> create database zabbixcharacter set utf8 collate utf8_bin;
MariaDB [(none)]> use zabbix;
MariaDB [(none)]> grant all privilegeson zabbix.* to zabbix@'%' identified by 'zabbix';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
?
# cd/usr/share/doc/zabbix-server-mysql-3.0.0
# zcatcreate.sql.gz | mysql -uroot -pzabbix zabbix
在zabbix數據庫中創建表,命令中 -uroot 是數據庫的root用戶,-pzabbix 是數據庫root用戶的密碼zabbix,。
?
# vi/etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix (此處為你設置的密碼,本書例子中設置為zabbix)
#systemctl enable zabbix-server
# systemctl start zabbix-server
# cat /var/log/zabbix/zabbix_server.log
? 2924:20160302:155929.675 Starting ZabbixServer. Zabbix 3.0.1 (revision 58734).
? 2924:20160302:155929.675 ****** Enabledfeatures ******
? 2924:20160302:155929.675 SNMPmonitoring:?????????? YES
? 2924:20160302:155929.675 IPMImonitoring:?????????? YES
? 2924:20160302:155929.675 Web monitoring:??????????? YES
? 2924:20160302:155929.675 VMwaremonitoring:???????? YES
? 2924:20160302:155929.676 SMTPauthentication:?????? YES
? 2924:20160302:155929.676 Jabbernotifications:????? YES
? 2924:20160302:155929.676 Ez Textingnotifications:? YES
? 2924:20160302:155929.676 ODBC:????????????????????? YES
? 2924:20160302:155929.676 SSH2 support:????????????? YES
? 2924:20160302:155929.676 IPv6 support:????????????? YES
? 2924:20160302:155929.676 TLS support:???????? ??????YES
? 2924:20160302:155929.676******************************
? 2924:20160302:155929.676 using configurationfile: /etc/zabbix/zabbix_server.conf
? 2924:20160302:155929.694 current databaseversion (mandatory/optional): 03000000/03000000
? 2924:20160302:155929.694 required mandatoryversion: 03000000
? 2924:20160302:155929.698 server #0 started[main process]
? 2929:20160302:155929.698 server #1 started[configuration syncer #1]
? 2930:20160302:155929.698 server #2 started[db watchdog #1]
? 2932:20160302:155929.699 server #3 started[poller #1]
? 2952:20160302:155929.704 server #23 started[history syncer #4]
? 2944:20160302:155929.704 server #15 started[alerter #1]
? 2946:20160302:155929.704 server #17 started[timer #1]
? 2934:20160302:155929.704 server #5 started[poller #3]
? 2935:20160302:155929.710 server #6 started[poller #4]
? 2938:20160302:155929.715 server #9 started[trapper #1]
? 2940:20160302:155929.717 server #11 started[trapper #3]
? 2936:20160302:155929.720 server #7 started[poller #5]
? 2949:20160302:155929.729 server #20 started[history syncer #1]
? 2950:20160302:155929.729 server #21 started[history syncer #2]
? 2942:20160302:155929.730 server #13 started[trapper #5]
? 2937:20160302:155929.731 server #8 started[unreachable poller #1]
? 2954:20160302:155929.731 server #25 started[proxy poller #1]
? 2933:20160302:155929.733 server #4 started[poller #2]
? 2939:20160302:155929.741 server #10 started[trapper #2]
? 2941:20160302:155929.747 server #12 started[trapper #4]
? 2943:20160302:155929.749 server #14 started[icmp pinger #1]
? 2945:20160302:155929.749 server #16 started[housekeeper #1]
? 2947:20160302:155929.749 server #18 started[http poller #1]
? 2951:20160302:155929.749 server #22 started[history syncer #3]
? 2955:20160302:155929.749 server #26 started[self-monitoring #1]
? 2953:20160302:155929.749 server #24 started[escalator #1]
? 2948:20160302:155929.752 server #19 started[discoverer #1]
當你看到上面的信息時表明zabbix安裝、啟動成功。
3019:20160302:160415.128 [Z3001] connectionto database 'zsabbix' failed: [1044] Access denied for user'zabbix'@'localhost' to database 'zsabbix'
3019:20160302:160415.128 Cannot connect tothe database. Exiting...
如果你看到上面的信息,說明Zabbix服務器沒有正常啟動,請檢查配置文件/etc/zabbix/zabbix_server.conf中DBHost、DBName 、DBUser和 DBPassword參數是否正確設置:
# firewall-cmd--permanent --add-port=10051/tcp
#firewall-cmd --reload
?
檢查10051 和10050端口在 /etc/service中是否注冊:
# grep1005 /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服務器及MySQL數據庫,可以根據需要對Zabbix server進行優化配置。準備對配置文件進行修改時,我們可以復制一份正在使用的配置文件并進行修改,完成后可以使用–c參數用新的配置文件啟動Zabbix服務器,檢查配置文件中參數配置的正確性。
# /sbin/zabbix_server?–c ?<config file> ??????????
其中<config file>是修改后的配置文件。
Zabbix agent是一個很小的程序,大概有320KB的大小,在所有Zabbix 服務器中都會安裝agent,以便我們監控Zabbix服務器本地的資源。需要監控其他服務器時,我們只需要安裝agent就可以。
在Zabbix服務器中安裝agent時,服務器中已經安裝了Zabbix源,所以直接通過yum命令安裝即可。在其他服務器中安裝agent之前,請按照前面介紹的方法安裝設置Zabbix源。
#yum install zabbix-agent
# firewall-cmd --permanent --add-port=10050/tcp
# firewall-cmd –reload
# vi/etc/zabbix/zabbix_agentd.conf
Server=< zabbix server的IP地址>????????????????? # 被動模式下需要設置,從哪個服務器連接agent
ServerActive=<zabbixserver的IP地址>??????? # 主動模式下需要設置,向哪個服務器發生數據
Hostname=<被監控主機的名稱>??????????????????? # 主動模式下必須設置,被動模式不需要
?
關于Zabbix agent主動模式和被動模式的設置請參考第三章內容。
多個Zabbix服務器可以同時和一個agent連接,獲得該agent端的監控數據,設置時每個IP地址間用逗號分隔。例如:Server=192.168.2.100,192.168.10.2。
#systemctl enable zabbix-agent
#systemctl start zabbix-agent
# cat/var/log/zabbix/zabbix_agentd.log
?6489:20160303:112252.464 Starting Zabbix Agent [zabbixsrv]. Zabbix 3.0.1(revision 58734).
?6489:20160303:112252.464 **** Enabled features ****
?6489:20160303:112252.464 IPv6 support:????????? YES
?6489:20160303:112252.464 TLS support:?????????? YES
?6489:20160303:112252.464 **************************
?6489:20160303:112252.464 using configuration file:/etc/zabbix/zabbix_agentd.conf
?6489:20160303:112252.464 agent #0 started [main process]
?6490:20160303:112252.465 agent #1 started [collector]
?6491:20160303:112252.465 agent #2 started [listener #1]
?6492:20160303:112252.465 agent #3 started [listener #2]
?6493:20160303:112252.467 agent #4 started [listener #3]
?
如果你看到上面的信息說明Zabbix agent啟動成功。如果在日志中看到下面的信息:
2155:20150907:220219.494 no active checks on server[192.168.0.116:10051]: host [Zabbix server] not monitored
不用擔心,這是因為沒有設置ServerActive這個參數,當anget安裝成功后,該參數默認設置為127.0.0.1,如果你使用主動模式,需要把ServerActive設置成Zabbix server的地址,同時設置參數Hostname(agent安裝成功后默認設置為Zabbix server)。如果你確定不使用主動模式,可以在配置文件中該參數前加#號注釋掉。建議配置anget時,將Server、ServerActive和Hostname參數同時配置好。
修改Zabbix agent的配置文件后,記著一定要重啟agent服務,否則修改的參數不會生效。
我們已經在Zabbix服務器中安裝設置了Zabbix源,直接通過yum命令安裝即可。在其他服務器中安裝web頁面之前,請按照前面介紹的方法先安裝設置Zabbix源。
#yum install zabbix-web zabbix-web-mysql
# vi/etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
#firewall-cmd --permanent --add-service=http
# firewall-cmd –reload
#systemctl enable httpd
#systemctl start httpd
現在我們已經完成了web前端系統的安裝,你可以通過reboot命令重新引導服務器,系統重啟后檢查日志看看所有的組件是否正常啟動。
接下來我們在web 瀏覽器輸入http://192.168.0.22/zabbix進入web頁面(192.168.0.22換成你自己的服務器地址),你看到了嗎?Zabbix 3.0的歡迎頁面出現了,這時候是不是很開心啊。如下圖1-5所示。
圖 1-6
點擊頁面右下角的Next step按鈕進入php配置檢查頁面,在這里Zabbix將檢查php的配置,通常Zabbix會提供相關配置的文件,我們唯一要做的就是設置timezone,如果某些參數有問題,你可以通過檢查Zabbix的配置文件解決。如下圖1-7所示。
?
圖 1-7
確認所有php項目都顯示為OK時點擊Next step進入數據庫配置頁面,在這個頁面我們需要填寫數據庫的連接信息(在安裝數據庫時我們已經設置),填寫相關信息后就可以進行下一步操作。如下圖1-8所示。
?
圖 1-8
點擊Next step進入Zabbix服務器配置頁面,在Zabbix server details頁面中,需要填寫Zabbixserver的主機名或IP地址,以及端口號,一般這個信息會自動填寫,如果沒有你可以自己添加。Name是可選的,如果你愿意也可以設置。如下圖1-9所示。
圖 1-9
點擊Next step進入配置信息預覽頁面,在這個頁面顯示前幾個步驟設置的信息,你可以再檢查一下是否正確。如下圖1-10所示。
圖 1-10
點擊Next step,出現安裝頁面,頁面中提示你Zabbix前端已經成功安裝,并在目錄/etc/zabbix/web/中創建了配置文件zabbix.conf.php。如下圖1-11所示。
圖 1-11
在上圖1-11中點擊Finish按鈕,完成Zabbix web的配置安裝。
在Web前端的登錄頁面中,我們輸入Zabbix默認的用戶名和密碼,用戶名:Admin,密碼:zabbix ,這里一定要注意用戶名的大小寫。如下圖1-12所示。
圖 1-12
輸入正確的用戶名和密碼后,點擊Sign in 按鈕登錄系統,或者點擊signin guest鏈接已Guest用戶的身份登錄系統。登錄后的Web頁面如下圖1-13所示。
圖 1-13
?
1、編輯locales.inc.php文件啟用簡體中文。修改zh_CN的'display' => true,在v3.0.3版本后Zabbix默認設置zh_CN為true。
# vi /usr/share/zabbix/include/locales.inc.php
'zh_CN' => ['name' => _('Chinese(zh_CN)'),???? 'display' => false],
?
2、在Zabbix web頁面中點擊Admin 圖標。如下圖1-14所示。
圖 1-14
?
3、在 Language 中選擇Chinese(zh_CN),點擊Update按鈕保存。如下圖1-15所示。
圖 1-15
?
3、刷新web頁面,我們就可以看到中文了,但是在圖形頁面里中文顯示不出來,這是因為字體的原因。如下圖1-16所示。
?
圖 1-16
?
?
4、拷貝中文字體如 simkai.ttf 到/usr/share/fonts/
# ll /usr/share/fonts
total 11520
total 11516
drwxr-xr-x 2 root root???? 4096 Mar?2 15:26 dejavu
-rw-r--r—1 ?root root 11785184 Mar? 3 12:53 simkai.ttf
?
5、給Zabbix web頁面添加字體
# ll /usr/share/zabbix/fonts
total 0
lrwxrwxrwx 1 root root 33 Mar? 3 12:56 graphfont.ttf ->/etc/alternatives/zabbix-web-font
?
# alternatives --install/usr/share/zabbix/fonts/graphfont.ttf zabbix-web-font /usr/share/fonts/simkai.ttf100
?
# alternatives --display zabbix-web-font
zabbix-web-font - status is manual.
?linkcurrently points to /usr/share/fonts/dejavu/DejaVuSans.ttf
/usr/share/fonts/dejavu/DejaVuSans.ttf -priority 10
/usr/share/fonts/simkai.ttf - priority 100
Current `best' version is /usr/share/fonts/simkai.ttf.(當前字體是simkai.ttf)
?
如果當前字體不是simkai.ttf,可執行命令設置。
# alternatives --config zabbix-web-font
There are 2 programs which provide'zabbix-web-font'.
?Selection??? Command
-----------------------------------------------
?+1??????????/usr/share/fonts/dejavu/DejaVuSans.ttf
*?2??????????/usr/share/fonts/simkai.ttf
Enter to keep the current selection[+], ortype selection number: 2 (此處選擇simkai.ttf)
?
6、刷新web 頁面,中文正常顯示,如下圖1-17所示。
?圖 1-17
1、???從Zabbix官網下載Zabbix源碼包并保存到/usr/src目錄中,解壓縮源碼包。
# tar -zxvf zabbix-3.0.1.tar.gz
# cd /usr/src/zabbix-3.0.1
?
2、???我們需要安裝 Apache,MySQL,PHP 和一些其他的庫。
# yum install httpd mariadb-server php php-mysql php-bcmath php-mbstring php-gdphp-xml
3、??? 配置數據庫。
# systemctl enable mariadb
# systemctl start mariadb.service
# /usr/bin/mysql_secure_installation
# mysql -u root –p<密碼>
MariaDB [(none)]> create database zabbix character set utf8collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%'identified by 'zabbix';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
# /usr/src/zabbix-3.0.1/database/mysql
# mysql -uzabbix -p<密碼> zabbix? < schema.sql
# mysql -uzabbix -p<密碼> zabbix? < p_w_picpaths.sql
# mysql -uzabbix -p<密碼> zabbix? < data.sql
?
4、???創建zabbix用戶和組:
# groupadd zabbix
# useradd -g zabbix zabbix
5、???為了能順利的編譯 ,我們需要額外安裝一些包,你可能需要添加EPEL 源:
# yum install gcc mysql-devellibxml2-devel net-snmp-devel
curl-devel unixODBC-develOpenIPMI-devel libssh3-devel iksemel-devel openldap-devel
查看支持的配置選項:
# ./configure --help
根據需要選擇配置選項:
# ./configure --enable-server--with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2--with-openipmi --with-unixodbc --with-ssh3 --with-ldap --with-jabber --with-mbedtls
當正確完成配置后,你可以看到make install 的提示信息,如果遇到錯誤會提示哪個庫有問題。
編譯安裝:
# make install
?
完成編譯安裝后標準的配置文件在/usr/local/etc/中,Zabbix server文件在/usr/local/sbin/ 中。你可以通過 --prefix 參數指定安裝的位置,例如:--prefix=/,使用 / 代替 /usr/local ,編譯的文件將安裝到 /sbin、/lib、/etc 等。
6、???定義zabbix-server服務。
# cd /usr/lib/systemd/system/
# vi zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/etc/zabbix_server.conf"
Type=forking
Restart=on-failure
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
?
# systemctl enable zabbix-server
# systemctl start zabbix-server
?
接下來我們安裝Zabbix web頁面:
? ? ? # mkdir /var/www/html/zabbix
? ? ? # cd /usr/src/zabbix-3.0.1/frontends/php/
? ? ? # cp -a . /var/www/html/zabbix
? ? ? # chown -R --no-dereference apache:apache /var/www/html/zabbix
? ? ? # vi /etc/httpd/conf.d/zabbix.conf
? ? ? ?<Directory "/var/www/html/zabbix">
? ? ? ? ? ? ? Options FollowSymLinks
? ? ? ? ? ? ? AllowOverride None
? ? ? ? ? ? ? Order allow,deny
? ? ? ? ? ? ? Allow from all
? ? ? ? ? ? ? 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 date.timezone Asia/Shanghai
? ? ? ?</Directory>
# systemctl enable httpd
# systemctl start httpd
在Web 瀏覽器中輸入http://服務器ip地址/zabbix,在web頁面中完成相關配置。
以上提到的編譯安裝的方法也適用于agent和proxy。
編譯安裝agent時,使用Zabbix server相同的源碼包,只需要配置--enable-agent選項,例如:
??? # ./configure --enable-agent
編譯安裝proxy時,使用Zabbix server相同的源碼包,只需要配置--enable-proxy選項,例如:
??? # ./configure --enable-proxy
當你使用其他數據庫產品時,可以使用配置選項--with-oracle、--with-postgresql或著--with-ibm-db2。
?
?本文出自?http://ustogether.blog.51cto.com/8236854/1921034,如需轉載請與作者聯系。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。