|
【作者】李承軒,系統(tǒng)監(jiān)控專家 1. 安裝準備 Zabbix4.0對基礎架構有一定的要求,尤其是對PHP和MySQL: 2. 安裝環(huán)境 Zabbix Server運行在CentOS上,Zabbix Agent可以運行主流的操作系統(tǒng)上,本文檔的安裝環(huán)境為: 3. 安裝配置Zabbix Server 3.1. 安裝Zabbix Server 首先,獲取Zabbix官方的YUM源:
其次,獲取epel官方的YUM源:
shell> rpm -ivh http://ftp./pub/linux/fedora-epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm 然后,安裝依賴包: shell> yum install httpd php php-mysql php-gd php-bcmath php-common php-xml php-mbstring php-cli Zabbix 需要的 PHP 擴展庫: - php-mysql:使用MySQL作為Zabbix后端數(shù)據(jù)庫所需要的組件; - php-gd:PHP GD擴展庫必須支持 PNG 圖像(--with-png-dir)、JPEG 圖像 (--with-jpeg-dir)和FreeType2(--with-freetype-dir); - php-bcmath:包含所需的bcmath; - php-common:包含所需的ctype和php-session擴展; - php-xml:包含所需的libXML、xmlreader和xmlwriter擴展。 - php-mbstring:包含所需的mbstring擴展。 shell> yum install pcre glibc gcc livevent zlib libcurl-devel curl-devel OpenIPMI-devel libssh2 fping net-snmp-devel perl-DBI openssl-devel iksemel libxml2 ntp Zabbix 需要的依賴包: - pcre:為強制安裝的包。用來支持Perl Compatible Regular Expression(PCRE); - gcc:為強制安裝的包。即編譯器, - glibc:為強制安裝的包。即libc運行庫,其中包含了所需的Libpthread - libevent:為強制安裝的包,用來支持 IPMI; - zlib:為強制安裝的包。用來支持壓縮; - libcurl-devel、curl-devel:為可選安裝包,但建議安裝。用來支持 Web 監(jiān)控; - OpenIPMI-devel:為可選安裝包,按需安裝。用來支持IPMI監(jiān)控; - libssh2:為可選安裝包。用來支持SSH功能; - fping: 為可選安裝包,但建議安裝。用來支持ICMP Ping監(jiān)控; - net-snmp-devel:為可選安裝包,按需安裝。用來支持SNMP監(jiān)控; - iksemel:為可選安裝包,按需安裝。用來支持 Zabbix 報警媒介 Jabber; - libxml2:為可選安裝包,按需安裝。用來支持 VMware 監(jiān)控; - ntp:為可選安裝包,但強烈建議安裝。用來保持 Zabbix 精準的時間。 最后,安裝Zabbix-Server。 shell> yum install zabbix-agent zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-web Zabbix 服務端上的安裝包: - zabbix-agent:為可選安裝包,但在 Zabbix Server 上建議安裝。Zabbix 客戶端代理程序; - zabbix-server-mysql、zabbix-web-mysql:為強制安裝的包。前者用來存放采集到的數(shù)據(jù),后來為前端所需; - zabbix-get:為可選安裝包,但在 Zabbix Server 上建議安裝。Zabbix 用來手動采集數(shù)據(jù)的命令; - zabbix-web:為可選安裝包,但在 Zabbix Server 上建議安裝。Zabbix用來監(jiān)控 Web 服務的。 - zabbix-java-gateway:為可選安裝包,按需安裝。Zabbix 的 JAVA 采集服務端,用于 JMX 的監(jiān)控方式。 Zabbix 客戶端上的安裝包: - zabbix-agent:為強制安裝包。Zabbix 客戶端代理程序; - zabbix-sender:為可選安裝包,但強烈建議安裝。Zabbix agent 向 Zabbix server 手動發(fā)送數(shù)據(jù)的命令; - zabbix-proxy-mysql:為可選安裝包,按需安裝。Zabbix proxy 是 Zabbix 代理服務的程序,適用于分布式監(jiān)控環(huán)境。 3.2. 安裝數(shù)據(jù)庫(PerconaDB 5.7) 首先,獲取PerconaDB官方的YUM源:
shell> yum install https://www./redir/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm 其次,通過YUM方式安裝PerconaDB 57。 再次,修改PerconaDB的配置文件。
然后,初始化數(shù)據(jù)庫: 最后,在Percona里面創(chuàng)建Zabbix數(shù)據(jù)庫,并修改權限。 3.3. 配置NTP時間同步 Zabbix Server對時間的精確要求比較高,時間對數(shù)據(jù)的計算等都有影響。因此,可以自建NTP服務器,或同步網(wǎng)絡時間。如下,使用Crontab同步網(wǎng)絡時間。
3.4. 導入數(shù)據(jù)庫 首先,獲取Zabbix的數(shù)據(jù)庫。
最后,使用Percona來Zabbix的初始數(shù)據(jù)庫schema和數(shù)據(jù)。
3.5. 禁用Selinux以及按需禁用或者配置防火墻 防火墻可以按需配置,可以暫時關閉,后面再進行配置,但 Selinux必須關閉,否則后面啟動Zabbix server的時候會報錯。
3.6. 修改Zabbix Server的配置文件 在zabbix_server.conf中有很多參數(shù)需要修改,此時先將Zabbix連接Percona的信息配置好,包括先前創(chuàng)建的數(shù)據(jù)庫、其用戶名和密碼。需要注意的是,這里的參數(shù)必須和之前創(chuàng)建數(shù)據(jù)庫的信息一致,否則后面運行Zabbix server時會有無法連接到數(shù)據(jù)庫的報錯。
3.7. 配置PHP 首先,Zabbix需要修改PHP的時區(qū)。
最后,適當修改一些PHP配置文件的參數(shù)。
3.8. 修改Web顯示文字為微軟雅黑 首先,將微軟雅黑的字體msyh.ttf上傳到/usr/share/zabbix/fonts/目錄下:
最后,修改配置文件使用微軟雅黑字體。 將代碼區(qū)第 2 行和第 3 行的graphfont改為上傳的中文字體,本例使用的字體為msyh(代碼區(qū)內容所在為63行和108行, vi設置了set=number)。
3.9. 配置Apache 首先,設置HTTPD開機自啟。重啟并訪問Apache的默認頁面。
然后,為了安全起見,可以刪除Apache測試頁面。
最后,同樣地,為了安全起見,禁用Apache的目錄列表配置。在Apache的配置文件中找到該行,將該行中的Indexes去掉,并重啟進程。
3.10. 啟動Zabbix 啟動zabbix-agent和zabbix-server,并將其添加到開機自啟動。
4. 配置Zabbix Web管理頁面首先,瀏覽器鍵入http:IP/zabbix,點擊Next step進行下一步;
其次,會出現(xiàn)檢查PHP配置的頁面。此前PHP已修改了相應參數(shù),點擊Next step進行下一步:
再次,會出現(xiàn)配置zabbix數(shù)據(jù)庫的頁面。其中Database host由localhost修改為127.0.0.1,Database port默認,Database name、User、Password為之前建立數(shù)據(jù)庫的數(shù)據(jù)庫名和用戶名密碼, 點擊Next step進行下一步;
此頁默認不需要修改,直接點擊Next step進行下一步;
然后,會出現(xiàn)配置信息匯總頁面,待確認無誤后點擊Next step進行下一步;
點擊Finish完成安裝。
最后,完成配置,進入登錄界面,輸入默認的用戶名Admin和密碼zabbix,點擊Sign in登錄。
5. 升級Zabbix5.1. 主要版本間的升級首先,主要版本間的升級,需要先閱讀官方的升級說明,再進行升級。 其次,備份Zabbix數(shù)據(jù)庫。 再次,備份Zabbix Server的配置文件、PHP文件和Zabbix二進制文件。
然后,更新新版的Zabbix官方YUM,并通過YUM UPGRADE進行升級。
最后,待更新完成后, 重新修改中文字體(每次更新后必須修改)。 將代碼區(qū)行的graphfont改為上傳的中文字體。
5.1.1. Zabbix 3.2升級至Zabbix 3.4 首先,停止Zabbix Server和Zabbix agent
其次,備份數(shù)據(jù)庫、Zabbix Server的配置文件、PHP文件和Zabbix二進制文件。 再次,卸載當前的Zabbix 3.2版本。
然后,安裝Zabbix 3.4。
恢復之前的Zabbix配置文件
重新配置下Zabbix前端的配置文件
最后,啟動Zabbix3.4,并檢查數(shù)據(jù)庫的升級日志。
5.1.2. Zabbix 3.4升級至Zabbix 4.0 5.2. 次要版本升級 如果要升級Zabbix的次要版本(例如,從 4.0.1 升級至 4.0.3),是非常容易的: shell> yum upgrade zabbix* 待升級完成后,重新修改中文字體(每次更新后必須修改)。 將代碼區(qū)行的graphfont改為上傳的中文字體。
6. 安裝配置Zabbix Agent 6.1. 獲取Zabbix Agent 從Zabbix Download獲取下載地址: 下載地址: https://www./download 6.2. 安裝配置Linxu Agent 在CentOS上安裝Zabbix agent,可以通過YUM安裝直接安裝RPM包,還可以通過源碼編譯安裝,在Zabbix 3.4版本之前,官方還提供Precompiled agents介質,下面使用YUM直接安裝: 首先,客戶端添加官方YUM,并通過YUM安裝Zabbix agent:
然后,按需根據(jù)修改配置文件:
最后,配置防火墻,啟動Zabbix agent,并配置開機自啟:
6.3. 安裝配置AIX Agent在AIX上安裝Zabbix agent,有兩種安裝方式。一種為從官網(wǎng)下載預編譯好的介質(Precompiled agents)進行安裝,另一種是通過源碼包編譯安裝。 值得注意的是,Zabbix agent已從3.0LTS版本開始便不再支持AIX 6.1之前的版本,建議在AIX低版本使用對應的Zabbix agent版本,其對應版本支持如下:
6.3.1. 預編譯文件安裝AIX Agent 首先,從官網(wǎng)下載頁面下載預編譯好的介質(Precompiled agents),并解壓到目標位置,解壓目標位置可以根據(jù)需要決定。
其次,添加Zabbix用戶和用戶組:
再次,將配置文件和agent二進制進程文件復制到指定目錄下:
根據(jù)當前環(huán)境修改配置文件:
然后,添加隨系統(tǒng)開機自啟動(AIX6.1),需要將對應的Zabbix Agent的源碼包下載下來zabbix-2.4.8.tar.gz,待解壓后,將目錄zabbix-2.4.8\misc\init.d\aix下zabbix_agentd文件拷貝到/etc/rc.d/rc2.d下:
最新,增設相應權限,并啟動Zabbix agent進程。
6.3.2. 通過源碼文件安裝AIX Agent通過源碼文件編譯安裝,需要先解決依賴包,待所有依賴包安裝完成后,即可編譯安裝Zabbix agent。
6.4. 安裝配置Windows Agent首先,在Windows上安裝Zabbix agent,從官網(wǎng)下載預編譯好的介質(Precompiled agents),并解壓到目標位置,解壓目標位置可以根據(jù)需要決定,下代碼區(qū)為Windows上的Zabbix agent目錄文件結構:
其次,修改zabbix_agentd.win.conf配置文件,其中LogFile是日志存放的位置,Server為Zabbix Server的地址,ServerActive為開啟主動模式并配置Zabbix Server的地址, Hostname為本地客戶端的主機名或IP地址。
然后,執(zhí)行安裝命令進行安裝。其中,-i參數(shù)為安裝指令,-c參數(shù)為執(zhí)行配置文件的目,-s為啟動Zabbix agent服務。
最后,zabbix_agentd.exe還有更多的命令語法,建議通過--help參數(shù)進行查看:
7. 官方系統(tǒng)模板的擴展7.1. Windows計數(shù)器鍵值
7.2. 監(jiān)控Linux&AIX&Windows用戶登錄 7.2.1. 監(jiān)控Linux用戶登錄 關于監(jiān)控Linux用戶登錄,是利用Zabbix自帶的日志監(jiān)控功能監(jiān)控Linux的/var/log/secure日志,當有用戶登錄失敗或者用戶在非常規(guī)時間登錄成功時觸發(fā)告警。 首先,使用Zabbix提供的鍵值'log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]'來監(jiān)控Linux的/var/log/secure文件。先介紹下這個鍵值: 該監(jiān)控項類型是Zabbix agent(active),返回數(shù)據(jù)類型是Log。Zabbix agent需要對監(jiān)控的日志文件有可讀權限,否則會返回unsupported。
其次,在Linux模版Template_OS_Linux_Chinese下增加登錄審核的監(jiān)控項:
注意:正則表達式為'(Accepted|Failed) password',過濾/var/log/secure中的正確或失敗的用戶登錄請求(這里只過濾密碼驗證方式的登錄)。 創(chuàng)建登錄失敗的觸發(fā)器:
該表達式含義為:如果用戶登錄失敗了,監(jiān)控項返回的數(shù)據(jù)中會包含F(xiàn)ailed,則觸發(fā)器被觸發(fā)。如果在60秒內沒有接收新數(shù)據(jù)的話,則觸發(fā)器恢復,這樣就能保證觸發(fā)器不會一直在觸發(fā)狀態(tài)。 下面把表達式拆解分析: A:{Template_OS_Linux_Chinese:log[/var/log/secure,'(Accepted|Failed) password',,,skip,].str(Failed)}=1,表示如果字符串中包含`Failed`則表達式為真; B:{Template_OS_Linux_Chinese:log[/var/log/secure,'(Accepted|Failed) password',,,skip,].nodata(60)}=0,表示如果60秒內有接收數(shù)據(jù)則表達式為真,反之則表達式為假。 邏輯為 A and B,表示同時符合 A 和 B 兩個條件(同時為真),觸發(fā)器才會觸發(fā)。 再次,創(chuàng)建登錄成功的觸發(fā)器:
該表達式的含義為:晚上 20 點到早上 8 點之間如果有用戶登錄成功了,且監(jiān)控項返回數(shù)據(jù)中會包含Accepted,則觸發(fā)器被觸發(fā),如果60秒內沒有接收到新數(shù)據(jù)的話,則觸發(fā)器恢復。 下面把表達式拆解分析: A:{Template OS Linux:log[/var/log/secure,'(Accepted|Failed) password',,,skip,].str(Accepted)}=1。表示如果字符串中包含`Accepted`則表達式為真; B: {Template OS Linux:log[/var/log/secure,'(Accepted|Failed) password',,,skip,].nodata(60)}=0。表示如果 60 秒內有接收到數(shù)據(jù)則表達式為真,反之則表達式為假。 C:{Template OS Linux:log[/var/log/secure,'(Accepted|Failed) password',,,skip,].time(0)}<080000。表示當前時間小于 8 點(08:00:00)則表達式為真; D: {Template OS Linux:log[/var/log/secure,'(Accepted|Failed) password',,,skip,].time(0)}>200000。表示當前時間大于晚上 8 點(20:00:00)則表達式為真。 邏輯為 A and B and(C or D)。表示 A 和 B 要同時為真且 C 和 D 只要一個為真,則整個表達式為真,觸發(fā)器才會觸發(fā)。 然后,因為監(jiān)控日志需要Agent為主動模式,那么在Agent上需要額外配置ServerActive參數(shù)。在配置文件zabbix_agentd.conf的ServerActive參數(shù)定義了Zabbix Server的地址和端口。
同時,需要修改/var/log/secure被監(jiān)控文件的權限,/var/log/secure默認權限為600,需要增加用戶zabbix的可讀權限,命令如下: shell> setfacl -m u:zabbix:r-- /var/log/secure 最后,修改logrotate配置。 shell> sed -i '/kill/a\/usr\/bin\/setfacl -m u:zabbix:r-- \/var\/log\/secure' /etc/logrotate.d/syslog 7.2.2. 監(jiān)控AIX用戶登錄 由于在AIX系統(tǒng)上的局限性,用戶登錄審核日志位于/etc/securrity/failedlogin(登錄失?。┖?var/adm/wtmp(登錄成功)文件中,并且讀取這兩個文件得用who命令讀取,顯然Zabbix自帶的日志監(jiān)控無法滿足需求,只能通過UserParameter自定義key來獲取。 首先,參照兩個文件的輸出內容,可以看到登錄信息記錄均為單行,不會跨行,是以每行記錄一次用戶登錄行為,那么可以統(tǒng)計這個文件的行數(shù)來達到需求:
其次,在確定了監(jiān)控思路的情況下,可以著手在Agent上自定義key:
再次,由于AIX的權限控制比較嚴格,Agent上的Zabbix用戶無法讀取這兩個系統(tǒng)文件,只能通過安裝sudo來完成讀取操作,并配置sudo,增加丟兩個文件的who命令執(zhí)行權限:
從次,在Zabbix Server端增加監(jiān)控項,監(jiān)控項為在agent上定義好的自定義key: 用戶登錄成功監(jiān)控項:
用戶登錄失敗監(jiān)控項:
最后,創(chuàng)建其觸發(fā)器: 創(chuàng)建用戶登錄成功觸發(fā)器:
該表達式的含義為:在晚上 20 點到早上 8 點之間如果有用戶登錄成功了,且監(jiān)控項返回數(shù)據(jù)acceptedlogin與上次采集的值發(fā)生變化,且在 60 秒內有新數(shù)據(jù)產生的話,則觸發(fā)觸發(fā)器,反之觸發(fā)器恢復?;舅悸泛?Linux 登錄監(jiān)控觸發(fā)器思路相同。 創(chuàng)建用戶登錄失敗觸發(fā)器:
該表達式的含義為:如果監(jiān)控項返回數(shù)據(jù)failedlogin與上次采集的值發(fā)現(xiàn)變化,且在 60 秒內有新數(shù)據(jù)產生的話,則觸發(fā)觸發(fā)器,若在 60 秒內沒有新數(shù)據(jù)的話,觸發(fā)器恢復?;舅悸泛蚅inux登錄失敗觸發(fā)器思路相同。 7.2.3. 監(jiān)控Windows用戶登錄關于Windows用戶的登錄日志,全部記錄在事件管理器中。根據(jù)事件管理器中的記錄,在Windows模版新建登錄成功和失敗監(jiān)控項: 首先,參照在事件管理器中的用戶登錄成功審核記錄,創(chuàng)建對應登錄成功的監(jiān)控項:
該監(jiān)控項中,類型選擇Zabbix agent(active)、數(shù)據(jù)類型選擇Log、監(jiān)控間隔60秒。其中,監(jiān)控項Key的參數(shù)用大括號包裹,用逗號分隔,下面解釋各項參數(shù)的含義: - Security:事件的日志名稱: - Success Audit:事件的Severity; - ^4624$:這是一個正則表達式,匹配事件ID等于4624的日志; - skip:該含義是不監(jiān)控已產生的歷史日志,如果省略skip,會監(jiān)控所有符合以上條件的歷史日志信息。 其次,參照在事件管理器中的用戶登錄失敗審核記錄,創(chuàng)建對應登錄失敗的監(jiān)控項:
從次,創(chuàng)建登錄成功的觸發(fā)器:
表達式的含義為: 如果在60秒內有監(jiān)控到數(shù)據(jù), 并且監(jiān)控內容不包含字符串Advapi則觸發(fā)告警, 如果60秒內沒有新的數(shù)據(jù)了, 則觸發(fā)器恢復正常; 簡單點說就是, 用戶登錄后觸發(fā)器觸發(fā)至少會持續(xù)60秒, 如果用戶不斷的登錄成功, 間隔小于60秒, 則觸發(fā)器一直是problem狀態(tài). 然后,創(chuàng)建登錄失敗的觸發(fā)器:
表達式的含義為: 如果在60秒內有監(jiān)控到數(shù)據(jù), 并且監(jiān)控內容不包含字符串Advapi則觸發(fā)告警, 如果60秒后沒有新的數(shù)據(jù)了, 則觸發(fā)器恢復正常; 如果有人不斷的惡意破解登錄密碼, 你會發(fā)現(xiàn)觸發(fā)器problem狀態(tài)會一直存在. 8. 異常處理8.1. 按時間刪除Zabbix歷史數(shù)據(jù)首先,停止Zabbix Server,獲取其縮減時間點的時鐘:
然后,修改MySQL的參數(shù),使Innodb引擎支持縮減,并重啟MySQL:
最后,使用先前獲取的時鐘去清理Zabbix的歷史數(shù)據(jù):
8.2. 消息隊列堆積 首先,停止Zabbix Server。 shell> systemctl stop zabbix_server 然后,連接數(shù)據(jù)庫,執(zhí)行以下語句: SQL> update alerts set status=2,error='' where status=0 and alerttype=0; SQL> delete from escalations; 最后,重新啟動Zabbix Server。 shell> systemctl start zabbix_server |
|
|
來自: yi321yi > 《系統(tǒng)》