今日學習目標:
-
可以實現一個web頁面的監測html
-
可以實現自動發現遠程linux主機mysql
-
可以經過動做在發現主機後自動添加主機並連接模板linux
-
可以建立一個模版並添加相應的元素(監控項,圖形,觸發器等)web
-
可以將主機或模板的配置實現導出和導入sql
-
可以實現至少一種報警方式(郵件,微信等)數據庫
- 可以經過zabbix_proxy來實現監控
web監測
web監測:相似一個監控項,能夠對一個url頁面進行監測(監測它的狀態碼,下載速度等)vim
下面來作個例子(監測agent1的httpd的主頁)bash
1,
web管理界面--》配置--》主機--》web監測(選agent1的web監測)--》右上角點建立web場景
服務器
2,再點步驟,填上名稱與監測的URL(你能夠添加多個步驟,我這裏只加這一個)微信
3,繼續在步驟界面的最下面填上200狀態碼,而後點添加,出來後再點添加
4,建立完後,去下圖中查看驗證
若是看到是鏈接失敗,則表示agent1的httpd沒有啓動若是是404錯誤,則表示服務啓動了,但找不到主頁
5, 去agent1上安裝httpd,並作一個主頁,再重啓服務
[root\@agent1 \~]# yum install httpd httpd-devel
-
[root\@agent1 \~]# echo "agent1 主頁" \> /var/www/html/index.html
-
[root\@agent1 \~]# systemctl restart httpd
- [root\@agent1 \~]# systemctl enable httpd
6,再去查看驗證
練習:
-
爲上面的web監測建立一個圖形
- 爲上面的web監測建立一個觸發器,狀態碼不爲200就觸發(選監控項的時候要注意看清楚,一個web監測會產
生好幾個小的監控項,選狀態碼的那一個)
自動發現與動做
發現:假設我如今須要添加監控100臺主機,這個工做量有點大。因此我能夠把這100臺連好網絡,配置並啓動好
zabbix-agent服務。而後在zabbix
server上配置一個自動發現規則,自動發現這100臺主機。自動發現是由服務端主動發起,Zabbix
Server開啓發現進程,定時掃描網絡中符合條件的主機。動做:自動發現了這100臺主機,可是還要添加監控主機和連接模板啊。這時能夠經過動做來達到此目的。
我們前面早就準備了一臺agent2,一直還沒使用,這裏就嘗試自動發現這臺agent2。
1,在agent2上安裝zabbix-agent包
1 [root\@agent2 \~]# yum install zabbix-agent
2,配置zabbix-agent端的配置文件,啓動服務並作成開機自動啓動
147 Hostname=agent2.cluster.com --修改爲agent2的主機名
[root\@agent2 \~]# systemctl restart zabbix-agent [root\@agent2 \~]# systemctl
enable zabbix-agent [root\@agent2 \~]# systemctl status zabbix-agent
[root\@agent2 \~]# lsof -i:10050
--修改爲zabbix監控服務器的IP(被動監控)
97 Server=10.1.1.11
[root\@agent2 \~]# vim /etc/zabbix/zabbix_agentd.conf
思考: 若是100臺服務器都要裝系統,而後再作上面兩步,也挺累的。用什麼方法來作更高效?
答:
安裝系統可使用pxe(kickstart)或cobbler.安裝軟件,修改配置可使用cobbler的postscript,再或者使用ansible,saltstack這種軟件。
3, web管理界面--》配置--》自動發現
4, 自動發現規則啓用後,按下圖顯示的去驗證
5,發現了agent2,但有一個問題,並無把agent添加到監控的主機列表中,以下圖所示
6,經過動做,將發現的主機添加到監控主機列表,並加上監控模板。
web管理界面--》配置--》動做--》右上角事件源選自動發現--》有一個叫Auto
discovery. Linux servers的動做,直接啓用就好
思考: 若是我發現主機後,還想要添加ftp,ssh相關的監控模板,怎麼作?
1
7,
再次驗證就OK了(這裏等待比較久,你也能夠嘗試把自動發現規則關閉一下,再次打開)課外拓展:自動註冊
自動註冊:
與自動發現實現的功能相同,區別在於自動發現是由zabbixserver去發現被監控機器。而自動註冊是由被監控機器去找zabbixserver註冊。請問: 若是有大量的被監控機器,哪種方式性能更好?
模板
模板(template):
就是包括監控項,應用集,觸發器,圖形,聚合圖形,自動發現規則,web監測等的一組實體。使用模板能夠方便應用到主機,更改模板也會將更改應用到全部連接的主機。
參 考 :
https://www.zabbix.com/documentation/3.4/zh/manual/config/templates
web管理界面--》配置--》模板--》建立模板
導入導出
辛辛苦苦配置了一個模板或一個主機,我想給另外一臺zabbix服務器使用或者我想保存下來(備份防止誤刪除),如何
實現?導入導出能夠幫你輕鬆實現,導出的是xml格式文件.
配置--》主機--》選取要導出的主機(前面打勾)--》下面選擇導出
配置--》模版--》選取要導出的模版(前面打勾)--》下面選擇導出
配置--》主機--》右上角導入
配置--》模板--》右上角導入
練習: 導入導出練習
-
把本機的一個模版刪除
- 而後從同桌的zabbix服務器那導出成xml文件,並拷貝過來導入(裏面有IP參數的要記得修改相應的IP)
報警
觸發器:觸發報警
zabbix的報警媒介支持email,jabber,sms(短信),微信,電話語音等。
經過報警平臺實現報警
本身配置報警比較複雜,並且郵件容易被拒或當作垃圾郵件。有些專業的報警平臺就能夠幫你簡單實現。
如:onealeart 參考:<http://www.onealert.com/>;咱們這裏之前面都定義過的"agent1遠程登陸用戶數"來測試報警,當agent1遠程登陸用戶數大於20個就會觸發器,
而後報警。(注意:請在測試前先把agent1的登陸用戶數調整到20個如下)
簡單過程:
1,去http://www.onealert.com/申請一個帳號,在我的中心綁定:手機,微信,郵箱等
2,在應用里加zabbix應用,產生一個key(我這裏的key爲51c35554-939f-5c4d-604d-53ecdf3d7e2e);設置
報警的策略(設置報警郵箱或微信等)
3,按照它的提示,進行安裝
# cd /usr/lib/zabbix/alertscripts
# wget
<http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.2.0.tar.gz>;
#若是上述地址沒法下載,請使用官方連接。
# tar xf oneitsm_zabbix_release-1.2.0.tar.gz # cd oneitsm/bin/
# bash install.sh 51c35554-939f-5c4d-604d-53ecdf3d7e2e
start to create config file...
-
Zabbix管理地址: <http://10.1.1.11/zabbix/>;
-
Zabbix管理員帳號: admin
-
Zabbix管理員密碼:
-
4,安裝完後,zabbix_server的web界面直接就配置好了報警媒介,報警用戶,報警動做;你什麼都不用再配置了
- 5,測試;你能夠故意觸發一些警告(觸發器達到臨界值),就會自動按照報警策略報警
配置完onealert後,咱們能夠驗證下它安裝後到底對zabbix作了啥。簡單來講,它作了三件事:
-
增長了一個報警媒介類型
-
增長了一個用戶和一個用戶組用於報警
- 增長了一個報警動做
驗證: 將agent1遠程登陸用戶數調整成大於20個,讓觸發器觸發。也會觸發報警。
分佈式監控
當監控機主機特別多,甚至分散在不一樣的地域機房。這個時候zabbix
server壓力很大,因此能夠經過增長zabbix
proxy來代理收集每一個機房裏的主機信息,再統一給zabbix server.參考網址:
<https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitoring/proxies>;
zabbix proxy的兩個主要應用場景總結:
-
分佈式監控,爲zabbix server分擔壓力
- zabbix
server監控有防火牆的內網各服務器時,須要防火牆開放各個端口。使用zabbix
proxy在內網統一監控,而後與zabbix
server經過公網鏈接,此時防火牆只須要開放zabbix server與zabbix
proxy的鏈接就能夠了。
實驗環境準備:
我這裏把原來的agent2用來模擬zabbixproxy
-
先在web界面把agent2的配置刪除(並把先前作的自動發現規則禁用,報警也禁用)
- 把agent2主機名改爲zabbixproxy.cluster.com而且三臺從新綁定/etc/hosts
zabbixserver.cluster.com agent1.cluster.com
zabbixproxy.cluster.com
10.1.1.11
10.1.1.12
10.1.1.13
# hostnamectl set-hostname --static zabbixproxy.cluster.com
# vim /etc/hosts
- 把agent2上的zabbix-agent服務先停一下
實驗過程:
- 在zabbixproxy上安裝相關軟件包
1 [root\@zabbixproxy \~]# yum install mariadb-server zabbix-proxy-mysql
zabbix-agent
2,啓動數據庫,受權並導入數據
[root\@zabbixproxy \~]# zcat
/usr/share/doc/zabbix-proxy-mysql-3.4.15/schema.sql.gz
|mysql zabbix_proxy -u zabbix -p123
MariaDB [(none)]\> create database zabbix_proxy default charset utf8;
MariaDB [(none)]\> grant all privileges on zabbix_proxy.* to
'zabbix'\@'localhost' identified by '123';
MariaDB [(none)]\> flush privileges;
8
9
10
[root\@zabbixproxy \~]# mysql
[root\@zabbixproxy \~]# systemctl restart mariadb
[root\@zabbixproxy \~]# systemctl enable mariadb
3, 修改zabbix_proxy上的配置文件,並重啓服務
253 DataSenderFrequency=5
--主動模式下zabbix_proxy多久發送一次收集的數據給zabbix_server--打開註釋,並寫上密碼(與前面受權一致)
--主動模式下zabbix_proxy多久從zabbix_server接收一次配置數據
190 DBPassword=123
244 ConfigFrequency=60
--主動模式
--zabbix_server的ip
--這個名字最好和你的主機名還有後面在web界面配置代理
13 ProxyMode=0
24 Server=10.1.1.11
43 Hostname=zabbixproxy.cluster.com
的名字保持一致
156 DBHost=localhost
167 DBName=zabbix_proxy
182 DBUser=zabbix
1 [root\@zabbixproxy \~]# vim /etc/zabbix/zabbix_proxy.conf 2
3
4
1 [root\@zabbixproxy \~]# vim /etc/zabbix/zabbix_agentd.conf 2 64
SourceIP=10.1.1.13
3 97 Server=10.1.1.13
4 138 ServerActive=10.1.1.13
5 149 Hostname=zabbixproxy.cluster.com
-
[root\@zabbixproxy \~]# systemctl restart zabbix-proxy
-
[root\@zabbixproxy \~]# systemctl restart zabbix-agent
-
[root\@zabbixproxy \~]# systemctl enable zabbix-agent
- [root\@zabbixproxy \~]# systemctl enable zabbix-proxy
4, 修改agent1上的服務並重啓服務
[root\@agent1 \~]# systemctl restart zabbix-agent
把服務器的ip改爲zabbix_proxy的ip,而不是zabbix_server的ip
[root\@agent1 \~]# vim /etc/zabbix/zabbix_agentd.conf 97 Server=10.1.1.13
138 ServerActive=10.1.1.13
149 Hostname=agent1.cluster.com
驗證測試:
在agent1上找一個監控項作改變(好比登陸用戶數),而後在zabbix_server的圖形界面能看到這個改變,說明proxy
成功.
主動監控和被動監控(拓展)
agent被動模式
相對於agent的被動,也就是表示是server或proxy去找agent拿數據(這也是zabbix
server的默認模式)配置方法以下:
[root\@agent1 \~]# systemctl restart zabbix-agent
--IP爲zabbix_proxy的ip(若是沒有proxy,則直接爲zabbix_server的ip)
Server=10.1.1.13
agent端配置被動模式的參數以下
[root\@agent1 \~]# vim /etc/zabbix/zabbix_agentd.conf
agent主動模式
相對於agent的主動,也就是表示是agent主動把數據傳給server或proxy
agent主動模式的優勢是:
當agent太多的狀況下,server或proxy去找這麼多agent蒐集數據,壓力負載過大。用主動模式就能夠緩解server或proxy的壓力。但用主動模式的問題是:
監控項也要轉爲主動式才行,並且不少zabbix自帶模板裏的監控項不支持轉爲主動式.
agent端配置主動模式的參數以下
-
[root\@agent1 \~]# vim /etc/zabbix/zabbix_agentd.conf
-
Serveractive=10.1.1.13
--IP爲zabbix_proxy的ip(若是沒有proxy,則直接爲zabbix_server的ip) - [root\@agent1 \~]# systemctl restart zabbix-agent
驗證測試:
在agent1上把登陸用戶數再次調整,而後在zabbix_server的圖形界面能看到這個改變,說明主動監控成功.
proxy主動模式
zabbix_proxy主動發數據給zabbix_server(proxy的默認模式)
# vim /etc/zabbix/zabbix_proxy.conf
- ProxyMode=0 --此參數爲0表示proxy主動模式
proxy被動模式
zabbix_server找zabbix_proxy爲收集數據
# vim /etc/zabbix/zabbix_proxy.conf
- ProxyMode=1 --此參數爲1表示proxy主動模式
場景
場景:
公司大概十幾臺服務器(主要是lnmp環境),如今須要你來設計並使用zabbix監控它們,而且要考慮之後的擴展,
儘可能使用自動的方式實現.傳智要作一個宣傳網站--》1臺--\>
架構(高可用,負載均衡)--》監控(安裝監控軟件並鏈接)
--》按需求設置監控模板--》因公司發展,業務增加,服務器增長,咱們得基礎擴展監控模板
》公司再發展,有多個機房,咱們要實現分佈式監控+自動註冊+主動被動模式的優化