目錄:
(一)搭建Zabbix環境
(二)配置Zabbix服務
(三)瞭解Zabbix監控組件
(四)Zabbix圖形展現
(五)Zabbix利用自帶key監控
(六)Zabbix自定義key
(七)Zabbix觸發器及報警(郵件報警,釘釘報警)html
Zabbix是什麼:
Zabbix是由工程師Alexei Vladishev建立,目前有Zabbix SIA在持續開發和支持。Zabbix是一個企業級的分佈式開源監控方案。Zabbix是一款可以監控各類網絡參數以及服務器健康性和完整性的軟件。Zabbix使用靈活的通知機制,容許用戶爲幾乎任何事件配置基於郵件的告警。這樣能夠快速反饋服務器的問題。基於已存儲的數據,Zabbix提供了出色的報告和數據可視化功能。這些功能使得Zabbix成爲容量規劃的理想方案。Zabbix支持主動輪詢和被動捕獲。Zabbix全部的報告、統計信息和配置參數均可以經過基於Web前端頁面進行訪問。基於Web的前端頁面能夠確保您從任何方面評估您的網絡狀態和服務器的健康性。適當的配置後,Zabbix能夠在IT基礎架構監控方面扮演重要的角色。對於只有少許服務器的小型組織和擁有大量服務器的大型公司也一樣如此。Zabbix是免費的,Zabbix是根據GPL通用公共許可證第二版編寫和發行的。意味着它的源代碼都是免費發行的,可供公衆任意使用。目前世界各地許多不一樣規模的組織將Zabbix做爲主要的監控平臺。
Zabbix監控是一個基於WEB界面的提供分佈式系統監控以及網絡監控功能的企業級的開源解決方案。Zabbix能監視各類網絡參數,保證服務器系統的安全運營,並提供靈活的通知機制讓系統管理員快速定位並解決存在的各類問題。Zabbix由兩部分構成,zabbix-server域可選組件zabbix-agent。zabbix-server能夠經過SNMP,zabbix-agent,ping,端口監視等方法提供對遠程服務器與網絡狀態的監控,數據收集等功能,它能夠運行在Linux,Solaris,HP-UX,AIX,Free BSD,OPEN BSD,OS X等操做系統平臺之上。
爲何要選擇Zabbix?
(一)免費:無商業和社區版之分,無license受權費用。
(二)開源:社區支持,模板分享。
(三)全棧級:從上層應用,到操做系統,以及底層硬件均可實現統一監控;支持Agent,WMI,SNMP,IPMI,JMX等監控方式。
(四)可擴展:用戶可自定義監控項、豐富的API接口可被其餘平臺調用。
(五)分佈式:經過Proxy以支持跨區域、跨地域的分佈式監控。
(六)企業級:每秒能夠收集上萬個指標,將來的版本在極限的狀況下可每秒收集40萬個指標,所以Zabbix的一些特性,也大大提高了系統監控的效率。
(一)搭建Zabbix環境:
首先咱們在VMware虛擬機上建立zabbix-server服務器端,先將CentOS 7的系統安裝起來
(1)打開VMware Workstation,點擊「新建虛擬機」,並選擇「自定義(高級)」
(2)默認選擇「稍後安裝操做系統」
(3)因爲支持搭建Zabbix服務的便捷性,因此咱們選擇CentOS 7.4的光盤鏡像進行安裝。
(4)咱們設置好虛擬主機名爲:zabbix-server,安裝的地址放在咱們本身建的鏡像文件夾中。
(5)CPU處理器選擇1顆CPU,每一個CPU有兩個內核。
(6)建立的虛擬機的內存設置爲2G,由於若是內存小於1G則沒法打開圖形化界面。
(7)網絡選擇默認的網絡地址轉換NAT
(8)I/O控制器類型選擇LSI Logic
(9)虛擬磁盤類型選擇SCSI
(10)接着建立一個新的虛擬磁盤
(11)設置磁盤大小爲200G,並將虛擬磁盤存儲爲單個文件。
(12)虛擬機生成的文件名使用默認值便可。
(13)選擇「自定義硬件」
(14)能夠將「USB控制器」,「聲卡」,「打印機」用處不大的設備都刪除掉。
(15)將處理器的虛擬化引擎的「虛擬化Intel VT-x」勾上。
(16)在「新CD/DVD」中點擊「使用ISO映像文件」,並找到CentOS 7.4版本的鏡像,至此虛擬機的基本配置完畢,點擊「開啓此虛擬機」(如圖1-16和圖1-17)
(17)選擇「Install CentOS 7」
(18)接着系統開始安裝(如圖1-19和1-20)
(19)「軟件選擇」爲「帶GUI的服務器」(如圖1-21和1-22)
(20)在「網絡和主機名」部分,打開以太網的鏈接,而且設置好主機名,以下圖2步所示。
(21)點擊「安裝位置」後,選擇「我要配置分區」
(22)接下來「手動分區」選擇「標準分區」,並添加經常使用的分區配置和分區大小,其中虛擬內存swap的大小設置爲本機內存的1.5-2倍便可,本機的內存爲2G,因此此處設置爲3G。
(23)而後點擊「開始安裝」,並同時給root用戶設置密碼'redhat',再添加一些系統經常使用的賬戶tom,密碼設置爲'redhat'。(如圖1-26至圖1-28)
(24)點擊重啓後,系統即可以正常使用了。
(25)咱們搭建的Zabbix服務的環境包含一臺zabbix-server,兩臺客戶端,其中一個是CentOS 7.4的客戶端,還有一臺是Win 7的客戶端
(26)咱們使用模板的方式克隆出zabbix-server和zabbix-agent1兩臺CentOS 7.4的服務器。
(27)此處以zabbix-agent1的克隆爲例,首先選擇克隆源。
(28)須要選擇「建立完整克隆」
(29)填寫zabbix-agent1虛擬機的名稱,並指定虛擬機文件存放的位置。後續zabbix-server服務器也是用一樣的方式克隆。
(30)接着開始對zabbix-server服務器(192.168.26.50)進行配置,打開zabbix-server虛擬機。
(31)在/etc/sysconfig/network-scripts目錄中找到ifcfg-ens32文件,並添加以下的配置信息,其中網關和DNS咱們選擇虛擬機自己自帶的配置,地址均爲:192.168.26.2便可。
(32)爲了使操做便捷一些,接着在本機打開Xshell便可使用SSH的方式鏈接到zabbix-server的服務器了。
(33)打開/etc/selinux/config配置文件,並作以下SELinux的配置,最後重啓服務器生效。
(34)設置防火牆firewall默認的規則爲trusted,至此咱們服務器的基本配置完成了。
(35)接着咱們到Zabbix的官網:https://www.zabbix.com/download ,查詢並下載相關的軟件包,此處咱們下載zabbix 3.4的版本。
(36)接着咱們在zabbix-server服務器端將軟件包使用RPM方式安裝起來。
(37)此時YUM倉庫已經設置成功了,咱們將zabbix服務器所需的四個軟件包:zabbix-server-mysql,zabbix-web-mysql,zabbix-get,zabbix-agent依次安裝起來。
(38)此時咱們還須要將Mariadb數據庫安裝起來。
(39)因爲中國使用的文字編碼屬於UTF-8,因此須要在數據庫的配置文件/etc/my.cnf中進行相關的設置。
(40)而後將數據庫服務啓動起來,並加入開機啓動項中。
(41)進入Mariadb數據庫,建立一個zabbix數據庫,而且進行對應的數據庫受權。
(42)驗證此時能夠正常的登陸Mariadb數據庫。
(43)進入到/usr/share/doc/zabbix-server-mysql-3.4.15目錄中,查找到create.sql.gz文件。
(44)而後將第43步查找到的create.sql.gz文件導入到zabbix數據庫中。
(45)此時登陸mysql數據庫,並切換到zabbix數據庫中,能夠查看到數據庫內的數據表信息已經生成了。
(46)接着查看zabbix_server.conf的配置文件
(47)同時修改zabbix_server.conf配置文件,設置好zabbix服務器的位置。
(48)設置所使用的數據庫名和用戶名。
(49)設置用戶登陸數據庫所使用的密碼,而後保存退出。
(50)進入到/etc/httpd/conf.d/目錄中找到zabbix.conf配置文件,對zabbix服務器的時區信息進行設置。(如圖1-58至1-60)
(51)此時全部配置已經完成,最後將httpd服務和zabbix_server服務啓動起來並加入開機啓動項中,能夠在本身的本地電腦上打開瀏覽器輸入:http://192.168.26.50/zabbix 此時即可以正常的訪問剛剛搭建好的zabbix服務了。前端
(二)配置Zabbix服務:
(1)點擊Next step繼續下一步。
(2)如圖所示,選擇好數據庫,並填寫好鏈接的數據庫名、主機、端口號、用戶名和登陸密碼。
(3)接着咱們設置好zabbix服務器的主機和端口號,包括主機名稱。
(4)此時個人全部初始化操做已經完成了。
(5)咱們輸入用戶名和密碼登陸系統。(如圖2-5和圖2-6)
(6)zabbix服務器配置好後,咱們還須要添加相關被監測的主機。(目前Zabbix支持大部分主流的服務器監控,包括:Linux系統,IBM基於AT&T Unix System V開發的AIX系統,類UNIX操做系統FreeBSD系統,基於4.4BSD的類UNIX操做系統OpenBSD系統,Sun Microsystems研發的計算機操做系統Solaris系統,微軟的Windows系列的操做系統等)
(7)咱們經過模板克隆一臺被監控的Linux主機zabbix-agent1
(8)設置好zabbix-agent1的網絡、SELinux和防火牆。(如圖2-9和圖2-10)
(9)接着咱們將官網的zabbix 3.4版本的RPM包下載到本地zabbix-agent1客戶端主機上。
(10)而後將軟件包安裝起來。
(11)接着在zabbix-agent1客戶端主機上安裝zabbix-agent代理軟件便可。
(12)進入到/etc/zabbix目錄中,查看zabbix_agent.conf配置文件。
(13)進入zabbix_agent.conf配置文件,設置被動監測Server爲192.168.26.50
(14)進入zabbix_agent.conf配置文件,設置主動監測ServerActive也爲192.168.26.50
(15)而後找到Hostname將值設置爲agent1-ip51,此處的設置很是重要。
(16)配置完成後,啓動zabbix_agent服務。
(17)同時在zabbix-agent1客戶端上將服務加入開機啓動項。
(18)配置好zabbix-agent1的客戶端後,點擊「配置」--「主機」--「建立主機」,將zabbix-agent1主機添加到zabbix-server服務器中。(如圖2-20和圖2-21)
(19)接下來咱們再添加一臺Windows客戶端的主機。
(20)在win7客戶端得瀏覽器中找到zabbix-agent客戶端的配置文件並下載下來。
(21)在win7客戶端中,打開剛剛下載的zabbix目錄下的conf文件夾中的zabbix_agentd.win的文件
(22)在zabbix_agentd.win配置文件中修改被動監測Server的地址爲zabbix-server的IP地址。
(23)在zabbix_agentd.win配置文件中修改主動監測Server的地址爲zabbix-server的IP地址。
(24)在zabbix_agentd.win配置文件中修改Hostname的值爲win7便可。
(25)配置好文件後,還須要將zabbix_agent的軟件包安裝起來。
(26)而且將服務啓動起來,在win7客戶端的計算機管理平臺能夠看到zabbix服務已經啓動起來了
(27)最後記得將win7系統的防火牆配置關閉一下,防止後續監控的時候出現其餘異常。
(28)接下來在zabbix監控配置界面,點擊點擊「配置」--「主機」--「建立主機」,將win7客戶端主機添加到zabbix-server服務器中。(如圖2-34和圖2-35)node
(三)瞭解Zabbix監控組件:
(1)學會如何查看Zabbix圖形:當咱們添加好被監測的主機以後,假設也有監控項,並且也產生了數據,該如何查看這些數據呢?能夠經過以下的方式:
(2)解決Zabbix字體的問題:在zabbix監控頁面因爲編碼問題,致使顯示的信息均爲方塊字,咱們能夠經過如下的方式解決。(如圖3-2至圖3-5)
# yum install google-noto-sans-simplified-chinese-fonts.noarch -y
# mv /etc/alternatives/zabbix-web-font /etc/alternatives/zabbix-web-font_bak
# ln -s /usr/share/fonts/google-noto/NotoSansSC-Regular.otf /etc/alternatives/zabbix-web-font
(3)學會Zabbix模板的使用,給Linux主機添加模板:(如圖3-6至圖3-9)
(4)接着咱們給Windows主機也添加模板應用:
(5)瞭解Zabbix應用集的做用:
(5.1)
主機組----能夠對咱們的主機進行分類,基於地區的方式,對服務器進行分組。
模板----若是某些服務器有共同的監控項、有共同的圖形等,咱們能夠把這些共同的監控項、共同的圖形放在一個模板裏,而後把這個模板應用到某主機,這個主機就自動有了這些監控項,圖形了。
應用集----應用集也是一種分類,不一樣的監控項好比有100個監控項,其中有30個是CPU相關的,把這些監控項歸類到一個應用集,若是咱們想查看和CPU相關的監控數據,咱們直接找到CPU應用集就能夠了。
(5.2)在主機羣組中添加一個名爲shenzhen_group1的組名。
(5.3)此時便發現agent-node1客戶端在以下的Linux servers和shenzhen_group1兩個羣組中了。
(5.4)接下來經過主機羣組名的方式來進行圖像的篩選展現。mysql
(四)Zabbix圖形展現:
(1)聚合圖形:
(1.1)有時候咱們在「監測中--圖形」裏看到的圖形展現比較單一,若是要看其餘的數據還須要從新選擇「羣組--主機--圖形」的選項。此時若是咱們想方便的查看到系統的全部相關監測內容的展現信息,可使用聚合圖形解決。
(1.2)添加咱們平時須要監測的主機數據,以下圖所示:
(2)拓撲圖:
(2.1)有時候公司內部的網絡結構比較複雜,若是有數量較多的服務器,路由器和交換機的時候,一旦出現了出現了問題定位起來比較費時。咱們須要對整個公司的網絡架構有清晰的結構才易於排查和解決問題,此時Zabbix便爲咱們提供了拓撲圖的功能,這樣咱們即可以在前期將公司的架構和框架用拓撲圖的形式展示出來,便於在遇到故障的時候可以協助快速的排查和定位問題。
(2.2)接着編輯拓撲圖:
(2.3)爲了方便後續Windows客戶端易於管理,咱們把windows7主機也加入到shenzhen_group1羣組中,以下圖所示:
(2.4)其中拓撲圖支持的宏:
{HOST.CONN}
{HOST.DNS}
{HOST.HOST}
{HOST.IP}
{host:key.func(param)}
Host:{HOST.NAME}
IP:{HOST.IP}
OS:{{HOST.HOST}:system.uname.last(0)}
CPU Load:{{HOST.HOST}:system.cpu.load[percpu,avg1].last(0)}
Free Disk /:{{HOST.HOST}:vfs.fs.size[/,free].last(0)}
Free Disk /data:{{HOST.HOST}:vfs.fs.size[/data,free].last(0)}
Incoming network:{{HOST.HOST}:net.if.in[eth0].last(0)}
Outgoing network:{{HOST.HOST}:net.if.out[eth0].last(0)}
(2.5)此時咱們再次添加一個宏選項的標籤CPU Load,發現拓撲圖可以正常的顯示信息。若是在客戶端的主機裏若是沒有CPU Load的監控項,那麼添加了對應的標籤後會顯示「未知數據」的字樣,可是此處咱們的Linux主機裏有對應的CPU Load的監控項:system.cpu.load[percpu,avg1],因此能夠正常的顯示標籤的信息。
(3)故障排錯:
(3.1)有時候咱們使用SSH鏈接CentOS 7.4的系統時沒法鏈接成功,而且發現設置好的網絡信息沒有生效
(3.2)重啓網絡後發現沒法重啓成功,而且出現了報錯的信息。
(3.3)經過在搜索報錯日誌:systemctl status network後定位到故障爲CentOS 7系統中因爲使用NetworkManager管理網絡從而引發故障的機率比較大,因此將NetworkManager服務中止並設置禁用,重啓網絡後,發現恢復正常。linux
(五)Zabbix利用自帶key監控:
(1)使用自帶key監控進程:
(1.1)因爲以前咱們是使用Zabbix系統的模板來造成監控效果,若是咱們想使用自定義的監控項則應該使用Zabbix自帶key進行監控。
(1.2)好比服務器想知道客戶端的CPU的使用狀況,服務器就會在客戶端執行一個腳本,這個腳本可以獲取客戶端的CPU信息,服務器開始在本機的監控界面進行畫圖。其中服務器在客戶端執行的那一個腳本就是key,在Zabbix裏,自帶不少的key,能夠獲取客戶端方方面面的數據。其中system.hostname的key表明返回主機名字符串,利用zabbix_get獲取數據:zabbix_get -s 被監測主機IP -k 監測的key
(1.3)監控進程數proc.num:這個key表明的是某用戶某些狀態的進程數量,同時可使用Linux系統常規的統計方式進行驗證。
proc.num[(name),(user),(state),(cmdline)]---某用戶某些狀態的進程數量
name--進程名稱(默認「all processes」)
user--用戶名(默認「all users」)
state--可用值:all(默認),run,sleep,zomb
cmdline--命令行過濾(正則表達式)
(1.4)當key值存在參數的時候,例如key1[a1,a2,a3],那麼什麼參數都沒有的時候能夠寫爲:key1;當只有a1一個參數時,能夠寫爲key1[a1]或者key1[a1,,];當只有a2一個參數的時候,能夠寫爲:key1[,a2];當只有a3一個參數的時候,能夠寫爲:key1[,,a3]。如今咱們統計192.168.26.51客戶端的httpd進程的數量:
(1.5)接着咱們測試指定用戶對應的進程數的統計:zabbix_get -s 192.168.26.51 -k proc.num[,tom]
(1.6)咱們能夠查看指定Linux客戶端的CPU的負載狀況:zabbix_get -s 192.168.26.51 -k system.cpu.load
(2)使用webbench壓力測試工具
(2.1)咱們使用webbench-1.5.tar.gz壓力測試工具測試客戶端web進程鏈接數量,將webbench解壓到當前目錄。
(2.2)將webbench-1.5安裝好,並想客戶端創建100個鏈接,每一個鏈接持續100秒:
# tar zxvf webbench-1.5.tar.gz
# yum install ctags* gcc -y
# mkdir -p -m 644 /usr/local/man/man1
# cd webbench-1.5
# make && make install
# webbench -c 100 -t 100 http://192.168.26.51/
(3)使用Zabbix圖形展現進程監控項
(3.1)上面咱們都是使用字符界面進行監控數據的查看,接下來咱們將監控的數據以圖表的形式展示出來,使得監控信息更加直觀。
(3.2)接着咱們使用webbench-1.5模擬100個用戶,每一個用戶對Linux客戶端主機產生100秒的大併發量訪問
(4)使用Zabbix圖形展現CPU監控項
(4.1)對Linux客戶端主機的CPU監控,咱們能夠先在zabbix的監控項處建立一個名爲cpu_util的監控名稱,而後設置好對應的鍵值,更新時間。
system.cpu.util[(cpu),(type),(mode)]---CPU利用率百分比
cpu--cpu數量(默認是全部cpu)
type--可用值:idle,nice,user(默認),system(windows系統默認值),iowait,interrupt,softirq,steal
mode--可用值:avg1(1分鐘平均值,默認值),avg5(5分鐘平均值),avg15(15分鐘平均值)
(4.2)建立好監控項後,咱們須要將監控的信息以圖表的形式展示,因此須要建立對應的圖形,並選擇好圖形對應的展現方式。
(4.3)接着咱們使用cpuburn的CPU測試工具對Linux客戶端進行壓力測試。
(4.4)咱們在Linux客戶端執行:# top -d 1,能夠發現cpu的使用率已經出現了很大的提高。
(4.5)此時即可以在zabbix系統的監控界面清晰的看到剛剛Linux客戶端的CPU資源的消耗狀況。
(4.6)有時候主機上會存在多核cpu,若是咱們想了解多核cpu每一個CPU資源的運行狀況,例如如今咱們須要對指定客戶端上指定的CPU資源的使用率進行表格的統計。首先建立一個用於統計0號CPU的監控項和一個用於統計1號CPU的監控項。
(4.7)而後建立一個圖形,用於同時統計0號和1號CPU資源的運行狀況。
(4.8)首先咱們指定只是在1號CPU上運行:# taskset -c 1 burnBX,發現1號CPU的負載已經達到了100%了。
(4.9)接着咱們指定0號CPU和1號CPU同時進行壓力測試,能夠發現監控的圖表呈現以下:
(5)使用Zabbix圖形展現內存監控項
(5.1)因爲咱們須要監控Linux客戶端主機的內存消耗狀況,咱們能夠建立一個名爲mem_util的監控項,而後設置好對應的名稱,鍵值,信息類型,更新時間等。
proc.mem[(name),(user),(mode),(cmdline)]---用戶進程消耗的內存使用量
--name--進程名(默認值「all processes」)
--user--用戶名(默認值「all users」)
--mode--可選值:avg,max,min,sum(默認)
--cmdline--命令行過濾(正則表達式)
(5.2)接着咱們建立一個名爲mem_util_gr的圖形,而且和建立好的內存監控項進行關聯。
(5.3)經過命令行操做agent1-node1,咱們發現agent1-node1總共有2G可用內存,其中緩存佔用了198M左右。
# free -m
# echo 3 > /proc/sys/vm/drop_caches
(5.4)接着咱們使用內存的測試工具memload,來查看內存使用的展現效果。
(6)使用Zabbix圖形展現IO讀寫監控項
(6.1)因爲咱們須要監控agent1-node1客戶端的IO的狀況,首先咱們建立一個IO讀的監控項,而且設置好對應的名稱,鍵值,數據的信息類型以及更新間隔。
vfs.dev.read[(device),(type),(mode)]---磁盤讀取狀態整數,浮點數
--device--磁盤設備(默認值「all」)
--type--可選值:sectors,operations,bytes,sps,ops,bps(必須指定,不一樣操做系統下不一樣)
--mode--可選值:avg1,avg5,avg15
備註:只有type爲sps,ops,bps的時候,第三個參數才被支持。
(6.2)接下來咱們使用IO讀寫壓力測試工具iozone來測試監控項的圖形展現。
# iozone -a -i 0 -i 1 -g 12G -Rb out.xls
-a:自動模式
-i:指定運行於哪一種測試模式,可使用-i 0 -i 1 -i 2進行多個測試
-R:將結果導出到Excel文件
-b:指定導出結果的Excel文件名
(6.3)接着咱們使用Linux客戶端主機自帶的IO監控命令:# sar -d 1,來查看當前系統的寫數據量的狀況。
(6.4)最後經過Zabbix系統的「IO寫」監控的圖形展現能夠看到當向系統IO寫入12G的文件時,數據量忽然增加的狀況。
(7)使用Zabbix圖形展現net網絡數據包傳輸監控項
(7.1)因爲須要監控agent1-node1客戶端的網絡入口的流量,咱們建立好一個監控項:network_in,而後設置好監控項的鍵值,數據類型,更新間隔等。
net.if.in[if,(mode)]---網卡入口流量整數
--if--網卡名稱
--mode--可用值:
----bytes--字節數(默認)
----packets--包數量
----errors--錯誤數量
----dropped--丟包數量
net.if.out[if,(mode)]---網卡出口流量
--if--網卡名稱
--mode--可用值:
----bytes--字節數(默認)
----packets--包數量
----errors--錯誤數量
----dropped--丟包數量
net.if.total[if,(mode)]---網卡進/出流量的總合
--if--網卡名稱
--mode--可用值:
----bytes--字節數(默認)
----packets--包數量
----errors--錯誤數量
----dropped--丟包數量
(7.2)將以前建立的監控項network_in和此處建立的圖形network_in_gr進行關聯,並設置好顏色,線條信息。
(7.3)接着咱們使用192.168.26.50的主機模擬web服務器給客戶端192.168.26.51提供文件下載服務,首先咱們在192.168.26.50的主機上進行以下的操做:
# yum install httpd -y---安裝http服務
# mkdir /var/www/html/download---建立一個下載的文件夾
#dd if=/dev/zero of=zerofile.tar.gz bs=1024M count=2---建立一個2G的臨時空文件
(7.4)接着咱們在客戶端上建立一個aa.sh的腳本,自動實現從服務器上下載文件,而後刪除,並實現循環操做直到人工終止。
(8)使用Zabbix自帶key監控web網站服務
(8.1)公司一般都會有web網站服務器,例如公司有網店業務對外提供服務,若是一直須要以人工的方式盯着網站服務是否正常,耗時費力,並且人工的方式監控每每也會有差錯的狀況,此時咱們可使用Zabbix監控系統中提供的web監測功能解決問題。首先咱們在agent1-node1主機上搭建一個簡單的web服務。
(8.2)接着進入Zabbix系統控制界面選擇web場景,並點擊「建立web場景」,並分別配置好「場景」和「步驟」
(8.3)而後點擊「監測中」--「Web監測」,能夠看到系統能夠對web主頁進行正常的監控
(8.4)當咱們把eshop目錄下的index.html頁面刪除掉的時候,能夠發現Zabbix監控項出現了以下的變化。
(8.5)有時候登錄web頁面的時候須要使用用戶名和密碼進行登錄來測試頁面訪問是否正常,因此如今咱們建立一個帶認證的web訪問設置:# vim .htaccess
(8.6)接着須要修改/etc/httpd/conf/httpd.conf的配置文件
(8.7)此時登錄網頁的時候便會提示須要輸入用戶名和密碼的信息。
# tailf /var/log/httpd/erro_log---此命令能夠用於查看報錯的日誌信息
(8.8)接着咱們在Web場景的認證部分填入監控系統登錄頁面時須要使用的用戶名和密碼信息,最後發現此時系統已經恢復了能夠正常監測web主頁的狀態。
(8.9)有時候咱們也可使用監控系統在每次進行頁面訪問時,輸入name信息,從而起到標記的做用。nginx
(六)Zabbix自定義key
(1)以前咱們都是使用系統自帶的key來監測系統的數據,可是有時候系統自帶的key並不能知足咱們平常的監控需求,這個時候咱們便須要使用自定義key解決問題,例如咱們須要具體查詢某個服務的狀態,數據庫的慢查詢的個數,鏈接池的大小,web服務具體有多少個正確的鏈接和多少個錯誤的鏈接等等,此時使用自定義key監控數據更爲高效。
(1.1)首先咱們進入/etc/zabbix目錄中查看zabbix_agentd.conf的配置文件。
(1.2)首先咱們在zabbix_agentd.d目錄下定義一個aa.conf的配置文件,而且寫一個簡單的鍵值對,基本語法格式以下:
cd /etc/zabbix/zabbix_agentd.d/
vim aa.conf
UserParameter=key-name,script-name
UserParameter=key-name[*],script-name $1 $2
(1.3)因爲咱們修改了配置文件,因此若是須要將修改的配置信息從新加載生效才能夠在監控端執行成功。
(1.4)接着咱們在Zabbix服務器端執行建立的自定義key。
# zabbix_get -s 192.168.26.51 -k test_key1
(2)接着咱們定義一個有參數的自定義key
(2.1)咱們將建立一個鍵爲test_key2,而且容許傳遞參數,執行打印參數$1和$2的命令:
(2.2)咱們在zabbix服務器端執行命令能夠發現自定義key能夠正常的打印傳遞的兩個參數。
(3)如今咱們須要統計系統的進程數,所以咱們定義一個統計進程數的自定義key
(3.1)首先咱們建立一個shell腳本proc_num.sh,而且將腳本添加可執行權限還要放入系統的環境變量目錄中。
(3.2)在aa.conf文件中添加一個用於統計進程的鍵值對。
(3.3)接着在agent1-node1主機上重啓zabbix_agent服務。
(3.4)在Zabbix主機上執行自定義的key,發現已經能夠正常的統計進程數量的信息了。
(4)自定義腳本監控MySQL
(4.1)首先在agent1-node1客戶端上安裝數據庫服務
(4.2)在Mariadb中建立一個名爲datatest的數據庫,而且設置好對應的權限,密碼等信息。
(4.3)同時咱們登陸數據庫datatest,查看數據庫運行的各項數據正常與否。
(4.4)經過查看「$?」的 返回值,咱們能夠獲得當前數據庫的運行狀態正常與否。
(4.5)而後咱們在agent1-node1客戶端建立一個腳本:check_mysql.sh
(4.6)同時給腳本check_mysql.sh添加可執行的權限,而且測試腳本執行是正常的。
(4.7)接着咱們在aa.conf的配置文件中定義一個自定義的key,而且將zabbix-agent服務從新啓動一次。
(4.8)首先當Mariadb數據庫是正常運行的時候,咱們在Zabbix客戶端查看自定義key的運行狀況。
(4.9)接着咱們將Mariadb數據庫中止後,再次查詢Zabbix客戶端的自定義key的運行狀況,發現此時顯示的「error」
(5)定義一個帶有參數的自定義的key來查詢MySQL
(5.1)首先咱們編寫一個shell腳本用來統計Mariadb數據庫中統計各類狀態的腳本:check_mysql_full.sh
(5.2)同時在agent1-node1客戶端的主機上zabbix_agentd.d目錄下的aa.conf文件中定義一個自定義的key
(5.3)接着在agent1-node1客戶端將腳本複製到/bin/目錄中,並重啓zabbix-agent服務,讓修改的自定義配置生效。
(5.4)咱們在Zabbix服務器端執行自定義key,並使用正確的參數查詢agent1-node1客戶端數據庫的「慢查詢」時,能夠返回正確的結果。
(6)自定義腳本監控Nginx
(6.1)首先在agent1-node1客戶端安裝Nginx服務,因爲Nginx和Http服務都是監聽80端口,爲了不衝突,將httpd服務先停下來。
(6.2)接着從nginx官網下載對應的安裝源:http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
(6.3)接着安裝nginx服務,並將服務啓動起來。
(6.4)接着進入到/etc/nginx/conf.d/目錄,而且配置default.conf配置文件。
(6.5)在default.conf配置文件中添加以下的status信息並重啓nginx服務。
(6.6)在Zabbix服務器端使用curl命令登陸驗證,發現能夠正常的顯示status狀態信息。
(6.7)如今咱們使用webbench軟件來模擬大量的客戶併發訪問agent1-node1客戶端的服務器,能夠發現status併發量的狀態發生了很大的變化。
(6.8)如今咱們寫一個腳本統計nginx服務的狀態信息:nginx_check.sh
(6.9)將nginx_check.sh拷貝到/bin/目錄下
(6.10)在agent1-node1客戶端主機上定義一個自定義的key,並設置好對應的鍵值對。
(6.11)在Zabbix服務器上執行自定義的key腳本監控Nginx狀態,能夠獲得正確的返回值。
(7)自定義腳本監控TCP鏈接數
(7.1)首先建立一個用於統計TCP鏈接數的shell腳本tcp_connect.sh,而且給腳本添加可執行的權限。
(7.2)將tcp_connect.sh腳本添加到/bin/目錄下,而且添加自定義的key
(7.3)在zabbix服務器端嘗試執行自定義的key時,出現了報錯信息。
(7.4)此時咱們在agent1-node1客戶端上給tcp_status.txtwen文件的其餘用戶添加可執行的權限。
(7.5)此時在zabbix服務器端執行自定義的key時即可以正常的獲得對應的結果了。
(7.6)同時咱們將建立好的自定義key在zabbix中建立對應的監控項和圖形進行展現操做。
(7.7)咱們此時使用webbench壓測工具向agent1-node1客戶端產生100個鏈接請求。
(7.8)此時在zabbix服務器的tcp_connection_gr的圖形展現區即可以看到產生的實時的TCP會話的鏈接圖像。git
(七)Zabbix觸發器及報警
(1)Zabbix觸發器設置,有時候咱們須要對監控的數據進行報警監控,此時須要使用觸發器功能實現本地郵件報警。
(1.1)首先在配置主機頁面建立一個觸發器,設置好對應的名稱,而且選擇對應的表達式。
(1.2)僅僅建立觸發器是不行的,必須還要建立一個動做,當知足觸發器的條件的時候,還要指定接下來須要作什麼。
(1.3)經過「管理」--「用戶」選項,咱們能夠找到建立好的Admin信息。
(1.4)接着咱們先在Zabbix服務器端配置好postfix郵件服務器,先實現本機發送報警郵件,配置:vim /etc/postfix/main.cf
(1.5)配置完郵件服務後須要將郵件服務重啓一下。
(1.6)在「管理」--「報警媒介類型」配置好對應郵件服務器的名稱,IP地址,發送郵件者的身份。
(1.7)接着再經過「管理」--「用戶」選項,選擇發送郵件的接收人爲:tom的郵箱。
(1.8)使用壓測工具產生400個用戶鏈接請求,每一個請求持續100秒。
(1.9)咱們發如今Zabbix監控的觸發器頁面產生了警告信息,而且tom郵箱也接收到了相應的警告郵件了。
(1.10)等壓測結束後,進程回到了200如下,此時警告信息結束,系統恢復正常了。
(2)本地郵件報警已經完成了,接下來咱們使用互聯網的郵箱實現郵件報警功能。
(2.1)首先咱們測試一下Zabbix服務器的網卡,使得可以鏈接互聯網。
(2.2)接着在「管理」--「用戶」--「報警媒介」的收件人的位置寫上我本身的163郵箱。
(2.3)接着使用壓力測試工具產生400個用戶訪問,每一個用戶訪問100秒。
(2.4)此時Zabbix服務器監控出現了進程超過200的報警,並且個人163郵箱也收到了對應的報警的郵件。
(3)如今企業使用釘釘比較多,咱們也能夠實現釘釘報警的功能提升平常運維的事故處理響應效率。
(3.1)在「配置」--「動做」界面設置好動做的名稱和相應的條件。
(3.2)接着咱們在釘釘軟件上建立一個報警機器人,並記錄好webhook信息。
(3.3)接着咱們使用GitHub上的開源腳本實現「Zabbix監控+釘釘報警」的功能:https://github.com/eagle-1949/cock
(3.4)編輯/etc/zabbix/zabbix_server.conf文件,將cock軟件複製到zabbix服務器的alertscripts目錄中。這個目錄的具體路徑爲:/usr/lib/zabbix/alertscripts
(3.5)接着在「管理」--「報警媒介類型」處建立一個名稱爲:Cock的報警媒介
(3.6)在「管理」--「用戶」--「報警媒介」處添加類型爲Cock的報警媒介。
(3.7)接着咱們使用壓力測試工具webbench產生400個用戶鏈接,每一個用戶鏈接100秒。
(3.8)此時在Zabbix服務器端已經產生了進程超過200報警的警告信息,並且釘釘機器人也接收到了相應的報警信息。github
—————— 本文至此結束,感謝閱讀 ——————web