zabbix安装使用及监控案例(从头到尾)
前文提要:本文為整個zabbix的介紹及配置以及案例
目錄
一.監控的概述
二.zabbix的概述
1.zabbix是什么
2.zabbix的作用
3.zabbix的特性
4.zabbix系統的組成
5.zabbix 3.2.4的軟件環境要求
三.zabbix的安裝
1.環境準備
2.部署監控服務器
3.部署被監控主機Zabbix Agent
四.配置及使用Zabbix監控系統
1.添加監控主機
2.自定義Zabbix監控項目
3.創建監控模板
4.實現Zabbix報警功能
6.設置郵件
8.自動發現規則
9.創建動作
10.添加新的虛擬機
五.Zabbix主動監控
1.添加被監控主機
2.創建主動監控的監控模板
3.添加監控主機
六.拓撲圖與聚合圖形
1.創建拓撲圖
2.創建聚合圖形
七.自定義監控案例
1.監控Nginx服務狀態
2.創建自定義key
2.監控網絡連接狀態
一.監控的概述
監視并控制各種服務器(網站服務、數據庫服務器)的網絡流量、訪問量、操作系統的運行情況.硬件資源使用情況、、服務的運行狀態 使用操作系統自帶命令控制 計劃任務執行自己編寫的監控腳本 搭建監控服務器實現對所有服務器的監控 監控的目的 報告系統運行狀況-每一部分必須同時監控 -內容包括吞吐量、反應時間、使用率等 提前發現問題-進行服務器性能調整前,知道調整什么-找出系統的瓶頸在什么地方二.zabbix的概述
1.zabbix是什么
zabbix是一款基于web頁面的、開源的、企業級的,可以分布式部署的監控軟件。
2.zabbix的作用
??? 監控windows和Linux主機上的軟硬件狀態。
??? 監控各網絡設備,如路由器、交換機、防火墻、f5、打印機等。
??? 發送告警通知。
??? 通過web頁面及圖形展示監控數據。
3.zabbix的特性
??? 1)由server和agent程序協同工作,如果是分布式監控還需要proxy程序。
??? 監控方式站在agnet的角度分為主動監控(agent active)和被動監控(agent)。
??????? 主動監控
??????? 當監控條目配置為agent active時,即為主動監控,此時agent會主動根據配置好的時間間隔去向server或proxy詢問要監控哪些item,然后將item的數據主動提交給server或proxy。
??????? 被動監控
??????? 當監控條目配置為agent時,即為被動監控,此時server或proxy會主動向agent請求它要監控的item的數據,然后agent會將數據發送給server或proxy。支持的監控手段
??
2)所謂監控手段即server或proxy通過什么方式來收集監控到的數據,常用的有:
??????? SNMP(polling,trapping)
??????? IPMI(監控硬件狀況)
??????? JMX(監控java應用)
??????? 自定義監測(自定義各類監控腳本監測)
3)告警閾值定義
??????? 在trigger中定義告警閾值或條件
??????? 存儲于后臺數據庫中
??????? 可以自定義告警升級機制
??????? 調用action實現自動化動作
???
4)監控數據呈現
??? zabbix通過內置的畫圖軟件將監控到的數據實時通過web頁面呈現出來。
??? 歷史數據存儲
??????? 存儲于數據庫中
??????? 支持多種數據庫,mysql,db2,oracle,postgresql,sqlite
??????? 存儲時長可自定義
??????? 自動清理過期歷史數據
?
5)監控主機配置
??????? 通過添加監控設備方式添加
??????? 可以使用模板進行配置
6) 模板的使用
??????? 模板包含item,trigger,action等一系列單個主機支持的元素
??????? 模板中可以使用組監控
??????? 模板可以繼承
7) 自動發現功能
??????? 網絡設備自動發現
??????? agent自動注冊
??????? 自動發現文件系統、網卡、SNMP OID
???
8)web界面
??????? web前端采用php編寫
??????? 界面樣式可以靈活自定義
??????? 自帶操作日志審計
???
9)zabbix API
??????????? 供第三方程序接入
??????????? 權限系統
??????????? 可以對用戶進行分組認證及授權。
10)agent端
??????????? 支持Linux和Windows系統。
??????????? 守護進程
??????????? 基于C語言開發。
4.zabbix系統的組成
zabbix_server
??????? 服務端守護進程。
??????? 負責處理客戶端主動送上來以及它主動去取回的數據。
??????? 通過web界面呈現這些數據。
???
zabbix_agentd
??????? 客戶端守護進程。
??????? 負責收集客戶端上的數據并發送給server或proxy。
???
zabbix_get
??????? 服務端工具。
??????? 在服務器上執行,用于手動收集客戶端的監控數據,可以用于監控測試或者排錯。
??? zabbix_sender
??????? 客戶端工具。
??????? 對于非常耗時間的檢測項,可以在其檢測完成以后,通過它將數據發送給server或者proxy。
??????? 需要與trapper配合使用。
???
zabbix_proxy
??? 類似于server,但它只是一個中轉站,當跨地區,跨機房部署zabbix系統時,需要用到它,以將它收集到的數據發送給server。
???
zabbix_java_gateway
??????? 類似于agentd程序。
??????? 只用于java應用程序的監控。
??????? 只能主動去獲取數據,類似于agent active。
??????? 最終將收集到的數據發送給server或proxy。
???
zabbix_web
??? 構建zabbix專用的站點,將監控數據以web頁面的形式呈現出來,并對zabbix系統進行配置設定。
5.zabbix 3.2.4的軟件環境要求
zabbix 3.2.4 web需求php的環境如下:
三.zabbix的安裝
1.環境準備
硬件:CentOS7.5
?軟件:
| gcc | pcre-devel | openssl | nginx-1.12.2.tar.gz |
| php | php-mysqlnd | php-fpm | mysql-community* |
| php-xml | php-json | net-snmp-devel | curl-devel |
| autoconf | ?libevent-devel | php-gd | zabbix-3.4.4.tar.gz |
| php-bcmath | php-mbstring | autoconf |
nginx所需模塊:
| --with-http_ssl_module |
zabbix-server所需模塊
| --enable-server | --enable-proxy |
| --enable-agent | --with-mysql=/usr/bin/mysql_config |
| --with-net-snmp | --with-libcurl |
zabbix-agent所需模塊
| --enable-agent |
?2.部署監控服務器
1)zabbix服務端搭建LNMP環境
[root@zabbixserver ~]# yum -y install gcc pcre-devel openssl-devel [root@zabbixserver ~]# tar -xf nginx-1.12.2.tar.gz [root@zabbixserver ~]# cd nginx-1.12.2 [root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module [root@zabbixserver nginx-1.12.2]# make && make install [root@zabbixserver ~]# yum -y install php php-mysql php-fpm [root@zabbixserver ~]# yum -y install mysql-community*2)修改Nginx配置文件
配置Nginx支持PHP動態網站,因為有大量PHP腳本需要執行,因此還需要開啟Nginx的各種fastcgi緩存,加速PHP腳本的執行速度
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf … … http{ … …fastcgi_buffers 8 16k;???? ????#緩存php生成的頁面內容,8個16kfastcgi_buffer_size 32k;???? ????#緩存php生產的頭部信息,32kfastcgi_connect_timeout 300; ????#連接PHP的超時時間,300秒fastcgi_send_timeout 300;???? ????#發送請求的超時時間,300秒fastcgi_read_timeout 300;???? ????#讀取請求的超時時間,300秒 location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf; #[注意這里別出錯]} ....3)啟動服務
[root@zabbixserver ~]# systemctl enable mysqld --now [root@zabbixserver ~]# systemctl enable php-fpm?--now???????#設置開機并自啟 [root@zabbixserver ~]# /usr/local/nginx/sbin/nginx????????#啟動服務 [root@zabbixserver ~]# echo /usr/local/nginx/sbin/nginx >> /etc/rc.local [root@zabbixserver ~]# chmod +x /etc/rc.local #通過rc.local設置開機自啟 [root@zabbixserver ~]# firewall-cmd --set-default-zone=trusted [root@zabbixserver ~]# setenforce 0 [root@zabbixserver ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config4)部署監控服務器Zabbix Server
源碼安裝Zabbix Server
[root@zabbixserver lnmp_soft]# yum -y install net-snmp-devel \ curl-devel autoconf libevent-devel #安裝相關依賴包 [root@zabbixserver lnmp_soft]# tar -xf zabbix-3.4.4.tar.gz [root@zabbixserver lnmp_soft]# cd zabbix-3.4.4/ [root@zabbixserver zabbix-3.4.4]# ./configure --enable-server \--enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config \--with-net-snmp --with-libcurl5)創建并初始化數據庫
[root@zabbixserver ~]# grep -i password /var/log/mysqld.log # 修改數據庫的root用戶密碼為NSD2021@tedu.cn [root@zabbixserver ~]# mysqladmin -uroot -p'A8cCwrjefY(v' password NSD2021@tedu.cn #原密碼在上面的配置 [root@zabbixserver ~]# mysql -uroot -pNSD2021@tedu.cn mysql> create database zabbix default charset utf8mb4; mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix'; [root@zabbixserver mysql]# ls schema.sql images.sql data.sql [root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql [root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql [root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql注.該數據包無法上傳,有需要聯系我
如何測試? [root@zabbixserver ~]# mysql -uzabbix -pzabbix -h localhost zabbix #-u指定用戶名,-p指定密碼,-h指定服務器IP,最后的zabbix是數據庫名稱 #使用zabbix賬戶(密碼為zabbix)連接localhost服務器上面的zabbix數據庫 mysql> show tables #查看有沒有數據表 mysql> exit #退出數據庫6)修改zabbix_server配置并啟動監控服務
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf DBHost=localhost # 85行,定義哪臺主機為數據庫主機,localhost為本機 DBName=zabbix #95行,設置數據庫名稱 DBUser=zabbix #111行,設置數據庫賬戶 DBPassword=zabbix #119行,設置數據庫密碼 LogFile=/tmp/zabbix_server.log???? #38行,日志的位置,排錯使用,該行僅查看即可 [root@zabbixserver ~]# useradd -s /sbin/nologin zabbix通過創建service文件管理zabbix服務
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service [Unit] Description=zabbix server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/tmp/zabbix_server.pid ExecStart=/usr/local/sbin/zabbix_server ExecStop=/bin/kill $MAINPID [Install] WantedBy=multi-user.target [root@zabbixserver ~]# systemctl enable zabbix_server --now [root@zabbixserver ~]# ss -ntulp |grep zabbix_server #確認連接狀態,端口10051 tcp LISTEN 0 128 *:10051 *:* users:(("zabbix_server",pid=23275,fd=4),("zabbix_server",pid=23274,fd=4)7) 修改Zabbix_agent配置文件,啟動Zabbix_agent服務
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf Server=127.0.0.1,192.168.2.5????????????#93行,允許哪些主機監控本機(主動監控) ServerActive=127.0.0.1,192.168.2.5????????#134行,允許哪些主機通過主動模式監控本機(被動監控) Hostname=zabbix_server????????????????#145行,設置本機主機名(名稱可以任意) LogFile=/tmp/zabbix_agentd.log????????????#設置日志文件(不需要修改) UnsafeUserParameters=1????????????????#280行,是否允許自定義監控傳參(0不允許)編寫zabbix_agentd的service文件,通過systemd管理服務
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_agentd.service [Unit] Description=zabbix agent After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/tmp/zabbix_agentd.pid ExecStart=/usr/local/sbin/zabbix_agentd ExecStop=/bin/kill $MAINPID [Install] WantedBy=multi-user.target [root@zabbixserver ~]# systemctl enable zabbix_agentd --now [root@zabbixserver ~]# ss -ntulp |grep zabbix_agentd #查看端口信息為10050 tcp LISTEN 0 128 *:10050 *:* users:(("zabbix_agentd",pid=23505,fd=4),("zabbix_agentd",pid=23504,fd=4)8)上線Zabbix的Web頁面
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/frontends/php/ [root@zabbixserver php]# cp -r * /usr/local/nginx/html/ [root@zabbixserver php]# chown -R apache.apache /usr/local/nginx/html/ #這里修改所有者使用:或者.都可以。 #修改權限的原因如下: #php-fpm的賬戶是apache,后面我們需要讓php-fpm對網站目錄具有讀寫操作, #而/usr/local/nginx/html默認是root所有,僅root具有寫權限,php-fpm無寫權限注.該數據包無法上傳,有需要聯系我
9)瀏覽器訪問Zabbix_server服務器的Web頁面
http://192.168.2.5/index.php#第一次訪問,初始化PHP頁面會檢查計算機環境是否滿足要求,如果不滿足會給出修改建議 #默認會提示PHP的配置不滿足環境要求,需要修改PHP配置文件
????????根據錯誤提示,安裝依賴、修改PHP配置文件,滿足Zabbix_server的環境要求。
[root@zabbixserver ~]# yum -y install php-gd php-xml [root@zabbixserver ~]# yum -y install php-bcmath php-mbstring [root@zabbixserver ~]# vim /etc/php.ini date.timezone = Asia/Shanghai????????????????#878行,設置時區 max_execution_time = 300????????????????????#384行,最大執行時間,秒 post_max_size = 32M????????????????????????#672行,POST數據最大容量 max_input_time = 300????????????????????????#394行,服務器接收數據的時間限制 [root@zabbixserver ~]# systemctl restart php-fpm修改完PHP配置文件后,再次使用瀏覽器訪問服務器
?
?在登陸頁面,使用用戶(admin)和密碼(zabbix)登陸,登陸后設置語言環境為中文
?
3.部署被監控主機Zabbix Agent
1)源碼安裝Zabbix agent軟件
[root@web1 ~]# useradd -s /sbin/nologin zabbix [root@web1 ~]# yum -y install gcc pcre-devel autoconf [root@web1 ~]# tar -xf zabbix-3.4.4.tar.gz [root@web1 ~]# cd zabbix-3.4.4/ [root@web1 zabbix-3.4.4]# ./configure --enable-agent [root@web1 zabbix-3.4.4]# make && make install2)修改agent配置文件,啟動Agent
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf Server=127.0.0.1,192.168.2.5????????????????#93行,誰可以監控本機(被動監控模式) ServerActive=127.0.0.1,192.168.2.5????????????#134行,誰可以監控本機(主動監控模式) Hostname=web1???????????????? ????????????????#145行,被監控端自己的主機名 EnableRemoteCommands=1???? #69行,監控異常后,是否允許服務器遠程過來執行命令,如重啟某個服務 UnsafeUserParameters=1????????????????????#280行,是否允許自定義key傳參 [root@web1 ~]# firewall-cmd --set-default-zone=trusted [root@web1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config [root@web1 ~]# setenforce 0設置service管理服務
[root@web1 ~]# vim /usr/lib/systemd/system/zabbix_agentd.service [Unit] Description=zabbix agent After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/tmp/zabbix_agentd.pid ExecStart=/usr/local/sbin/zabbix_agentd ExecStop=/bin/kill $MAINPID [Install] WantedBy=multi-user.target [root@web1 ~]# systemctl enable zabbix_agentd --now #啟動服務器并設置開機自啟動四.配置及使用Zabbix監控系統
1.添加監控主機
使用覽器登錄http://192.168.2.5/index.php,通過Configuration(配置)-->Hosts(主機)-->Create Host(創建主機)添加被監控Linux主機
?添加被監控主機時,需要根據提示輸入被監控Linux主機的主機名稱(最好與電腦的主機名一致,但也允許不一致)、主機組、IP地址等參數
1) 為被監控主機添加監控模板
?2)查看監控數據
查看監控數據,登錄Zabbix Web控制臺,點擊Monitoring(監控中)—> Latest data(最新數據),正過濾器中填寫過濾條件,根據監控組和監控主機選擇需要查看哪些監控數據
?找到需要監控的數據后,可以點擊后面的Graph(圖形)查看監控圖形
?2.自定義Zabbix監控項目
操作步驟:創建自定義key創建監控項目創建監控圖形將監控模板關聯到主機被監控主機創建自定義key
自定義的key文件一般存儲在/usr/local/etc/zabbix_agentd.conf.d/目錄,這里還需要修改zabbix_agentd.conf文件,允許自定義監控key,來讀取該目錄下的所有文件 。
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf Include=/usr/local/etc/zabbix_agentd.conf.d/???????? #264行,加載配置文件目錄 [root@web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/ [root@web1 zabbix_agentd.conf.d]# vim count.line.passwd UserParameter=count.line.passwd,sed -n '$=' /etc/passwd(被執行端執行此命令) #自定義key語法格式: #UserParameter=自定義key名稱,命令(每當執行此名稱就執行后面的命令)測試自定義key是否正常工作
[root@web1 ~]# systemctl restart zabbix_agentd???????????#重啟agent服務 [root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd(指定地址)21注意:如zabbix_get命令執行錯誤,提示Check access restrictions in Zabbix agent configuration,則需要檢查agent配置文件是否正確
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf Server=127.0.0.1,192.168.2.5 ServerActive=127.0.0.1,192.168.2.5
3.創建監控模板
模板、應用集與監控項目的關系圖
?1)添加監控模板
登錄Zabbix Web監控控制臺,通過Configuration(配置)-->Template(模板)-->Create template(創建模板),填寫模板名稱,新建模板群組
創建模板后,默認模板中沒有任何應用集、監控項、觸發器、圖形等
?2)創建應用集
創建完成模板后,默認模板中沒有任何應用集、監控項、觸發器、圖形等資源。這里需要點擊模板后面的Application(應用集)鏈接打開創建應用集的頁面
?點擊Application(應用集)后,會刷新出圖-16所示頁面,在該頁面中點擊Create application(創建應用集)按鈕,設置應用集名稱,名稱可以任意
?3)創建監控項目item
與創建應用集一樣,在模板中還需要創建監控項目
?
?接下來,還需要給項目設置名稱(名稱可以任意)及對應的自定義key(必須與前面自定義的監控key名稱一致),
?
?鍵值必須是和機器上的指令一樣
4)將模板鏈接到被監控主機
?將完整的監控模板制作完成后,就可以將模板鏈接到主機實現監控功能了。首先找到被監控主機Configuration(配置)-->Hosts(主機)
點擊需要的被監控主機鏈接,打開監控主機設置頁面,在Template(模板)頁面中選擇需要鏈接到該主機的模板,在此選擇剛剛創建的模板count_line.passwd添加即可
?
?5)查看監控數據圖形
點擊Monitoring(監控中)—> Latest data(最新數據),根據需要選擇條件,查看監控圖形
?
4.實現Zabbix報警功能
自定義的監控項默認不會自動報警,首頁也不會提示錯誤,需要配置觸發器與報警動作才可以自定報警。
什么是觸發器(trigger)?(相當于if)
????????表達式,如內存不足300M,用戶超過30個等
????????當觸發條件發生后,會導致一個觸發事件
????????觸發事件會執行某個動作
什么是動作(action)?
????????動作是觸發器的條件被觸發后所執行的行為
????????可以是發送郵件、也可以是重啟某個服務等
參考如下操作步驟:
????????創建觸發器并設置標記
????????設置郵箱(發件人,收件人)
????????創建Action動作
????????創建觸發器規則
1)創建觸發器
創建觸發器時強烈建議使用英文的語言環境,通過Configuration(配置)--> Templates(模板),找到我們之前創建的count.line.passwd模板,點擊模板后面的triggers(觸發器),如圖-1所示。
?2)觸發器表達式
創建觸發器時需要定義表達式,觸發器表達式(Expression)是觸發異常的條件,觸發器表達式格式如下:
{<server>:<key>.<function>(<parameter>)}<operator><constant> {主機:key.函數(參數)}<表達式>常數(key指監控的名字)(函數:求最大值或最小最新值【可能有可能沒有】)(表達式:<>=...)可以直接手寫,也可以通過add選擇表達式模板。
下面,我們看幾個表達式的案例:
{web1:system.cpu.load[all,avg1].last(0)}>5 #0為最新數據 如果web1主機最新的CPU平均負載值大于5,則觸發器狀態Problem {vfs.fs.size[/,free].max(5m)}<10G #5m為最近5分鐘 根分區,最近5分鐘的最大容量小于10G,則狀態進入Problem {vfs.file.cksum[/etc/passwd].diff(0)}>0 #0為最新數據 最新一次校驗/etc/passwd如果與上一次有變化,則狀態進入Problem 大多數函數使用秒作為參數,可以使用#來表示其他含義(具體參考表-1)。 avg, count, last, min and max 等函數支持額外的第二個參數time_shift(時間偏移量)可以對過去進行,這個參數允許從過去一段時間內引用數據。6.設置郵件
1)創建Media(設置發件人信息)
通過Administration(管理)-->Media Type(報警媒體類型)-->選擇Email(郵件)
設置郵件服務器信息,設置郵件服務器及發件人郵件賬戶信息,如圖-8所示。
2)為用戶添加Media(設置收件人信息)
在Administration(管理)-->Users(用戶)中找到選擇admin賬戶
點擊Admin賬戶后,在彈出的界面中選擇Media(報警媒介)菜單-->點擊Add(添加)報警媒介,
點擊Add(添加)后,在Meida Type(類型)中填寫報警類型,收件人,時間等信息
7.創建Action動作
1)Action動作
Action(動作)是定義當觸發器被觸發時的時候,執行什么行為。
通過Configuration(配置)-->Actions(動作)-->Create action(創建動作),注意事件源選擇觸發器
2)配置Action動作的觸發條件
填寫Action動作的名稱,配置什么觸發器被觸發時會執行本Action動作(賬戶數量大于35)
3)配置Action動作的具體行為
配置動作的具體操作行為(發送信息或執行遠程命令),無限次數發送郵件,60秒1次,發送給Admin用戶
?
0就是永不停止4)測試效果
在被監控主機創建賬戶(讓賬戶數量大于35),然后登錄監控端Web頁面,在儀表盤中查看問題報警(需要等待一段時間)
[root@web1 ~]# useradd user1 ??#創建若干測試用戶
查看報警郵件,需要在監控服務器上面有發郵件軟件postfix和收取郵件的軟件mailx,啟動postfix后,可以在監控服務器上使用mail命令查收報警郵件,如圖-17所示。
[root@zabbixserver ~]# yum -y install postfix ?mailx ??#安裝軟件
[root@zabbixserver ~]# systemctl start ?postfix ???#啟動服務
[root@zabbixserver ~]# systemctl enable ?postfix ???#設置開機自啟動
[root@zabbixserver ~]# mail ???????????????????????#收取郵件 ??
8.自動發現規則
1)創建自動發現規則
通過Configuration(配置)-->Discovery(自動發現)-->Create discovery rule(創建發現規則),
2)填寫規則
填寫自動發現的IP范圍(逗號隔開可以寫多個),多久做一次自動發現(默認為1小時,僅實驗修改為1m),如圖-19所示。配置檢查的方式:Ping、HTTP、FTP、Agent的自定義key等檢查
9.創建動作
1)創建Action動作
通過Configuration(配置)--> Actions(動作)--> Actions Event source(事件源):自動發現(Discovery)-->Create action(創建動作)
2)配置Action動作具體行為
配置動作,添加動作名稱,添加觸發動作的條件
點擊操作(觸發動作后要執行的操作指令),操作細節:添加主機到組,與模板鏈接(HTTP模板)
10.添加新的虛擬機
1)創建新的虛擬機
創建一臺新的主機,驗證zabbix是否可以自動發現該主機,可以重新部署一臺新的虛擬機(注意前面的課程,我們已經創建了虛擬機web2,并且已經安裝部署了Zabbix agent)。
2)驗證結果
登陸Zabbix服務器的Web頁面,查看主機列表,確認新添加的主機是否被自動加入監控主機列表。
五.Zabbix主動監控
默認zabbix采用的是被動監控,主動和被動都是對被監控端主機而言的!
被動監控:Server向Agent發起連接,索取監控數據。
主動監控:Agent向Server發起連接,Agent周期性地收集數據發送給Server。
區別:Server不用每次需要數據都連接Agent,Agent會自己收集數據并處理數據,Server僅需要保存數據即可
?
當監控主機達到一定量級后,Zabbix服務器會越來越慢,此時,可以考慮使用主動監控,釋放服務器的壓力。
另外,Zabbix也支持分布式監控,也是可以考慮的方案。
1.添加被監控主機
1)為被監控主機安裝部署zabbix agent
注意:前面的實驗如果我們已經在web2主機安裝部署了zabbix agent,如果已經完成,則如下操作可以忽略。
[root@web2 ~]# yum -y install gcc pcre-devel autoconf
[root@web2 ~]# tar -xf zabbix-3.4.4.tar.gz
[root@web2 ~]# cd zabbix-3.4.4/
[root@web2 ~]#./configure --enable-agent
[root@web2 ~]# make &&?make install
2)修改agent配置文件
將agent監控模式修改為主動模式。
[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf#Server=127.0.0.1,192.168.2.5#93行,注釋該行,允許誰監控本機StartAgents=0 #118行,被動監控時啟動幾個Agent進程監聽10050端口#設置為0,則禁止被動監控,不啟動zabbix_agentd服務及端口ServerActive=192.168.2.5#134行,允許哪些主機監控本機(主動模式),一定要取消127.0.0.1Hostname=web2#145行,告訴監控服務器,是誰發的數據信息#一定要和zabbix服務器配置的監控主機名稱一致(后面設置)RefreshActiveChecks=120#183行,默認120秒檢測一次UnsafeUserParameters=1 #280行,允許自定義監控傳參Include=/usr/local/etc/zabbix_agentd.conf.d/#264行,自定義監控的位置[root@web2 ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]Description=zabbix agentAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/tmp/zabbix_agentd.pidExecStart=/usr/local/sbin/zabbix_agentdExecStop=/bin/kill $MAINPID[Install]WantedBy=multi-user.target[root@web2 ~]# systemctl restart zabbix_agentd????????????#重啟服務
[root@web2 ~]# ss -nutlp |grep ?zabbix_agentd ???????????#應該查看不到任何端口信息
2.創建主動監控的監控模板
1)克隆Zabbix自動的監控模板
為了方便,克隆系統自帶模板(在此基礎上修改更方便)。
通過Configuration(配置)-->Templates(模板)-->選擇Template OS Linux
-->全克隆,克隆該模板,新建一個新的模板
新模板名稱為:Template OS Linux Server Active。
2)修改模板中的監控項目的監控模式
將模板中的所有監控項目全部修改為主動監控模式,通過Configuration(配置)-->Templates(模板)-->選擇新克隆的模板,點擊后面的Items(監控項)-->點擊全選,選擇所有監控項目,點擊<批量更新>,將類型修改為:Zabbix Agent(Active主動模式)
3)禁用部分監控項目
批量修改監控項的監控模式后,并非所有監控項目都支持主動模式,批量修改后,會發現有幾個沒有修改主動模式成功,說明,這些監控項目不支持主動模式,關閉即可。
可以點擊類型排序,方便操作,點擊狀態即可關閉。
3.添加監控主機
1)手動添加監控主機(主動模式監控)
在Zabbix監控服務器,添加被監控的主機(主動模式),設置主機名稱:web2 (必須與被監控端的配置文件Hostname一致),將主機添加到Linux servers組,IP地址修改為0.0.0.0,端口設置為0,
為主機添加監控模板,選擇剛剛創建的模板(主動模式),添加鏈接模板到主機
2)驗證監控效果
查看數據圖表,通過Monitoring(監控中)-->Latest(最新數據)菜單,選擇需要查看的主機組、主機以及圖形,查看效果
六.拓撲圖與聚合圖形
1.創建拓撲圖
1)創建拓撲
繪制拓撲圖可以快速了解服務器架構,通過Monitoring(監控中)-->Maps(拓撲圖),選擇默認的Local network拓撲圖,編輯即可(也可以新建一個拓撲圖),如圖-33所示。
2)拓撲圖圖表說明
Icon(圖標),添加新的設備后可以點擊圖標修改屬性
Shape(形狀)
Link(連線),先使用Ctrl選擇兩個圖標,再選擇連線
完成后,點擊Update(更新)
創建完拓撲圖,
2.創建聚合圖形
1)創建聚合圖形
聚合圖形可以在一個頁面顯示多個數據圖表,方便了解多組數據。
通過Monitoring(監控中)-->Screens(聚合圖形)-->Create screen(創建聚合圖形)即可創建聚合圖形
修改聚合圖形參數如下:
Owner(所有者):使用默認的Admin用戶
Name(名稱):名稱設置為web2_host
Columns(列):列數設置為2列
Rows(行):行數設置為2行
2)為聚合圖形中添加監控圖形
選擇剛剛創建的聚合圖形(web2_host),點擊后面的構造函數(constructor),點擊Change(更改),設置每行每列需要顯示的數據圖表,
?
七.自定義監控案例
1.監控Nginx服務狀態
1)準備環境,部署nginx軟件 安裝nginx軟件,開啟status模塊
[root@web1 ~]# tar -xf nginx-1.12.2.tar.gz [root@web1 ~]# cd nginx-1.12.2 [root@web1 nginx-1.12.2]# yum -y install gcc pcre-devel openssl-devel [root@web1 nginx-1.12.2]# ./configure \ > --with-http_stub_status_module [root@web1 nginx-1.12.2]# make && make install [root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf #參考前面的課程內容 location /status {stub_status on;} [root@web1 ~]# /usr/local/nginx/sbin/nginx #啟動服務 [root@web1 ~]# curl http://192.168.2.100/status Active connections: 1 server accepts handled requests 10 10 3 Reading: 0 Writing: 1 Waiting: 02)自定義監控key 編寫自定義監控腳本(僅供參考,未檢測完整狀態)
[root@web1 ~]# vim /usr/local/bin/nginx_status.sh #!/bin/bash case $1 in active)curl -s http://192.168.2.100/status |awk '/Active/{print $NF}';; waiting)curl -s http://192.168.2.100/status |awk '/Waiting/{print $NF}';; accepts)curl -s http://192.168.2.100/status |awk 'NR==3{print $2}';; esac [root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh2.創建自定義key
語法格式: UserParameter=key,command UserParameter=key[*],<command> $1
key里的所有參數,都會傳遞給后面命令的位置變量
注意:被監控端修改配置文件,注意要允許自定義key并設置Include!
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1 (便量傳倉能不能用,取決主配置文件UnsafeUserParameters=1) [root@web1 ~]# systemctl restart zabbix_agentd????????????#重啟服務 測試效果: [root@web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'登陸Zabbix監控Web,創建監控項目item,點擊Configuration(配置)-->Hosts(主機),點擊主機后面的items(監控項),點擊Create item(創建監控項)。修改監控項參數如圖-37所示。
備注:Type(類型)后面的Zabbix agent中文是Zabbix 客戶端。 Key的中文是鍵值。
2.監控網絡連接狀態
1)模擬多人并發連接(如果沒有ab命令,則安裝httpd-tools軟件包)
[root@web1 ~]# ab -c 1000?-n 100000?http://192.168.2.100/
2)查看網絡連接狀態,仔細觀察、分析第二列的數據
[root@web1 ~]# ss -antup
#-a顯示所有
#-t顯示TCP連接狀態
#-u顯示UDP連接狀態
#-n以數字形式顯示端口號和IP地址
#-p顯示連接對應的進程名稱
3)創建自定義key
編寫自定義監控腳本(僅供參考,未檢測完整狀態)
[root@web1 ~]# vim /usr/local/bin/net_status.sh#!/bin/bashcase $1 inestab)ss -antp |awk 'BEGIN{x=0} /^ESTAB/{x++} END{print x}';;close_wait)ss -antp |awk 'BEGIN{x=0} /^CLOSE-WAIT/{x++} END{print x}';;time_wait)ss -antp |awk 'BEGIN{x=0} /^TIME-WAIT/{x++} END{print x}';;esac[root@web1 ~]# chmod +x ?/usr/local/bin/net_status.sh
注意:被監控端修改配置文件,注意要允許自定義key并設置Include參數。
如果沒有killall命令,則需要安裝psmisc軟件包。
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/net.statusUserParameter=net.status[*],/usr/local/bin/net_status.sh $1[root@web1 ~]# systemctl restart zabbix_agentd????????????#重啟服務
4)測試效果:
[root@web1 ~]# zabbix_get ?-s 127.0.0.1?-k 'net.status[time_wait]'
5) 監控netstatus
在監控服務器,添加監控項目item,Configuration(配置)-->Hosts(主機)點擊主機后面的items(監控項)
點擊Create item(創建監控項)
本文為完整的zabbix安裝及監控配置,僅供學習,為經本人允許禁止轉載
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的zabbix安装使用及监控案例(从头到尾)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux企业运维人员最常用192个命令
- 下一篇: nmap,tcpdump