Zabbix:
是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案,非常強大的一款工具。一般zabbix都是選擇mysql作爲存儲數據,所以當zabbix監控的主機越來越多,數據量也會越來越大,這是mysql就會成爲瓶頸。
zabbix的版本:
長期維護的版本有2.2和3.0,還有2.0和2.4
zabbix的功能:
1、數據採集: 可以根據zabbix內置的key,也可以使用自定義的UserParameter
2、實時繪圖: 展示採集的結果,由graph和screen
3、告警 : 超出定義的觸發器的值就告警,可以通過郵件、短信、QQ、微信的方式通知
4、數據存儲: 採集的數據存儲在數據庫中
5、支持使用模塊:
6、網絡自動發現: 只要在主機上定義好ip和端口,zabbix通過掃描機制自動添加監控
7、分佈式監控: 可以通過代理收集區域內的主機採集信息,然後發送給zabbix,減緩zabbix的壓力
zabbix程序的構成:
zabbix_server:服務端守護進程,監聽的端口是10050
zabbix_agentd: agent端守護進程,監聽的端口是10051
zabbix_proxy: 代理服務器,可選組件
zabbix_get: 命令行工具,手動測試數據採集;
zabbix_sender: 命令行工具,運行於agent端,手動向server端發送數據
zabbix_java_gateway: java網關,只用於監控jvm虛擬機的
一、安裝zabbix,以3.0爲例:
~]# yum -y install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-get mariadb-server
編輯配置文件:/etc/zabbix/zabbix_server.conf:
ListenPort=10051 //監聽的端口 SourceIP= //服務端IP LogType=file //日誌格式,自我獨立進行的格式(file)、system(系統記錄) LogFile=/var/log/zabbix/zabbix_server.log //日誌文件 LogFileSize=0|1 //日誌是否需要滾動 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=localhost //數據庫服務器地址 DBName=zabbix //數據庫名稱 DBUser=zabbix //登錄數據庫名稱 DBPassword=zabbix //數據庫密碼 DBSocket=/var/lib/mysql/mysql.sock //指明數據庫的sock路徑
編輯zabbix-web文件:
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai //修改時區
編輯php.ini文件:
vim /etc/php.ini [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Asia/Shanghai //修改時區
授權zabbix登錄數據庫,並創建zabbix存儲的數據庫:
> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix'; > create database zabbix charset 'utf8';
zabbix_server數據庫的初始化:
~]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/ ~]# gzip -d create.sql.gz ~]# mysql -uzabbix -h127.0.0.1 -p zabbix <create.sql Enter password:
啓動zabbix,web服務:
]# service zabbix-server start ]# service httpd start
根據指示一步步填寫信息,最後登錄zabbix:
二:配置需要監控的主機:
~]# yum -y install zabbix-agent zabbix-sender
編輯配置文件:
~]# vim /etc/zabbix/zabbix_agentd.conf LogFileSize=1 //日誌是否需要滾動 EnableRemoteCommands=1 //是否允許遠程命令執行 LogRemoteCommands=1 //記錄遠程命令的執行日誌 Server=172.18.250.77 //被動模式下zabbix的地址,允許哪些zabbix-server來拉取數據 ListenPort=10050 //監聽的端口 ListenIP=0.0.0.0 //監聽的IP,表示監聽任何主機發送的信息 StartAgents=3 //啓用多少進程來採集數據 ServerActive=172.18.250.77 //主動模式下zabbix的地址,主機主動發送數據給zabbix-server Hostname=zabbix.node1 //主機名
啓動agent服務:
~]# service zabbix-agent start
三、配置監控主機狀態
1、先創建一個host group組
2、創建hosts主機
3、創建監控項,監控目標主機上的80端口:
Store value:
As is: 數據不做任何處理
Delta(simple change): 本次採樣數據減去前一次採集數據
Delta(speed per second): 本次採樣數據減去前一次採樣數據,而後除以採樣間隔時長
這樣基本上就能監控目標主機上的端口了。
4、定義觸發器,只要檢測到端口爲0就發送警告,併發送告警郵件
可以點Monitoring的Dashboard,查看告警信息:
設置發送告警信息到郵箱:
1、先創建一個用戶組和用戶:
定義發送媒介:
定義zabbix用戶給系統用戶發郵件:
查看系統是否收到報警郵件:
~]# mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/root": 1 message 1 new >N 1 [email protected] Fri May 20 19:37 23/1047 "PROBLEM: zabbix.node.port" & 1 Message 1:
5、對於多個監控項可以整合到一個圖形當中,比如監控網卡流量:
定義網卡的進口流量和出口流量,點擊Hosts中的node1主機中的Graphs,創建圖像
添加完後查看圖形界面:
如果有多個主機監控了流量的話可以聚合在一個頁面,方便查看:
四、配置模板,直接讓主機套用模板,而不用一個個添加監控項:
模板可以直接用系統自帶的,也可以自定義一個模板:
生成一個模板後,之後只要添加各種監控項,觸發器,和應用集等,添加完後直接套用在主機上即可:
五、配置宏定義 (macro,預設的文本替換模式)
兩種:
內置 {MACRO} 調用不需要加$
自定義 {$MACRO} 調用和定義都需要加$
級別:
全局
模板
主機
優先級: 主機 --> 模板 -->全局
定義端口全局宏:
定義一個主機宏:
查看是否生效:
六:配置key
key也分內建和自定義,有時候系統沒有的key只能自己定義,自定義的key是在agent端實現:
語法格式:
UserParameter=<key>,<command>
~]# vim /etc/zabbix/zabbix_agentd.conf UserParameter=menory.info,awk '/^MemFree/{print $2}' /proc/meminfo UserParameter=memory.usage[*],awk '/^$1/{print $$2}' /proc/meminfo //傳遞參數
重啓zabbix-agent服務:
~]# service zabbix-agent restart ~]# zabbix_get -s 172.18.250.75 -p 10050 -k "memory.info" //在zabbix-server端測試 693772 ~]# zabbix_get -s 172.18.250.75 -p 10050 -k "memory.usage[MemTotal]" 1012352
測試key能否在主機上應用:
七:配置zabbix的分佈式監控:
當zabbix-server監控的主機太多時,每個item都需要server端去建立tcp連接,這時server會扛不住,所以可以根據佈置分佈式代理來建立item連接,然後收集數據,並一起發給server端。
~]# yum -y install zabbix-proxy-mysql mariadb-server
授權zabbix登錄數據庫,並創建proxy存儲的數據庫:
> grant all on proxy.* to 'proxy'@'localhost' identified by 'proxy'; > create database proy charset 'utf8';
zabbix_server數據庫的初始化:
~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.2/ ~]# gzip -d scheam.sql.gz ~]# mysql -uproxy -h127.0.0.1 -p proxy <create.sql Enter password:
授權zabbix登錄數據庫,並創建zabbix存儲的數據庫:
> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix'; > create database zabbix charset 'utf8';
zabbix_server數據庫的初始化:
~]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/ ~]# gzip -d create.sql.gz ~]# mysql -uzabbix -h127.0.0.1 -p zabbix <create.sql Enter password:
編輯配置文件:
]# vim /etc/zabbix/zabbix_proxy.conf Server=172.18.250.77 //指向server端 Hostname=proxy.zabbix LogFileSize=1 DBName=proxy DBUser=proxy DBPassword=proxy DBSocket=/var/lib/mysql/mysql.sock
編輯proxy管理區域內的agent主機:
]# vim /etc/zabbix/zabbix_agent.conf LogFileSize=1 //日誌是否需要滾動 EnableRemoteCommands=1 //是否允許遠程命令執行 LogRemoteCommands=1 //記錄遠程命令的執行日誌 Server=172.18.250.78 //被動模式下zabbix的地址,允許哪些zabbix-proxy來拉取數據 ListenPort=10050 //監聽的端口 ListenIP=0.0.0.0 //監聽的IP,表示監聽任何主機發送的信息 StartAgents=3 //啓用多少進程來採集數據 ServerActive=172.18.250.78 //主動模式下zabbix的地址,主機主動發送數據給zabbix-proxy Hostname=node1.proxy
啓動服務:
]# service zabbix-proxy start //proxy服務 ]# service zabbix-agent start //監控的agent主機
創建代理主機:
創建監控的agent主機:
創建個監控項,看是否能正常監控:
如果還需要監控其他主機或者監控項,只需添加模板就行。