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