zabbix是基於web界面提供的分佈式系統監控,以及網絡監控的企業級開源方案php
zabbix有兩部分組成:zabbix-server 和zabbix-agenthtml
zabbix server能夠經過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視。java
sensor:傳感器針對監控指標進行採樣,採樣的數據分爲:存儲數據,歷史數據,趨勢數據。mysql
展現:經過web監控窗口進行展現ios
報警:當超過監控指標時會進行報警。web
工做方式分爲:sql
主動、被動模式都是相對於proxy來講的。proxy主動發送數據就是主動模式;proxy等待server的請求,再發送數據就是被動模式。數據庫
主動監控:vim
被動監控:centos
監控系統採集的方式有:
ssh/telent
agent: 基於master/agent 架構,構建的
IPMI接口:硬件層面的接口能夠直接採樣硬件指標
snmp:主要針對網絡設備如交換機,路由器等是一種比較老的網絡管理協議
工做是在被監控的主機上啓動一個snmp程序叫snmpagent
jmx:是java的一個特定的接口
存儲系統:
歷史數據: 每次採樣結構通常保存半年或3個月
趨勢數據:去一段時間內的最大值,最小值,平均值造成趨勢圖保存時間長
存儲系統有:
關係型數據庫:mysql oracle
rrd 循環數據庫:它是一個環,會按照固定的數據曹位,重複的放入數據,如內環數據能夠保存趨勢數據,外環保存歷史數據
時間序列數據庫:專門用來存儲時間序列
報警方式:
郵件 短信 微信 觸發報警腳本
開源的監控項目:
cacti(沒有報警功能 ,如今我用這個)
cactiEZ :是基於centos6 包含了cacti的監控系統具備報警功能
nagios(具備採樣,報警) 通常能夠將這兩種結合使用
zabbix(功能較全)
zabbix的報警能夠實現報警升級:
1 首先當觸發器觸發時會先本身去執行命令解決,
2 若不行,就進行郵件通知
3 向管理級發送通知
支持模板監控:能夠實行快速部署主機監控
支持網絡自動監控;在一個網絡段內會自動掃描
支持分佈式監控:能夠按不一樣的業務,功能進行分組,每組有一個代理主機來負責收集數據在發生後將採樣的數據發給監控系統
zabbix架構
zabbix-server:負責經過各類接口去採集數據
zabbix-proxy:當server監控的太多能夠將一部分委託給proxy代理(分佈式監控方式)
zabbix-database:存儲
zabbix-web: web展現
zabbix-get:是用來測試向監控端發一次若能返回採樣數據,說明能夠監控而後由zabbix-server 開始監控
第二節
zabbix程序組件:
zabbix-server 服務端守護進程
zabbix-agent agent守護進程
zabbix-proxy 代理服務器組件
zabbix-database 存儲系統
zabbix-web web展現接口
zabbix-get 命令行工具用於測試
zabbix-sender 命令行工具 測試向server端發送數據
邏輯組件:
主機組: hosts groups
主機: hosts
監控項:items
應用:applications
觸發器:triggers
事件:events
action動件: 有條件conditions 和操做operations 完成
媒介:發送通知的通道
通知:notification
遠程命令:remote command
報警升級:escalation
模板:template
圖形:graph
屏幕:screens
幻燈:slide show
zabbix安裝配置:
1 安裝mysql :yum install mariadb-server –y
vim /etc/my.cnf
systemctl start mariadb.service 啓動服務
systemctl enable mariadb.service 開機自啓服務
鏈接到mysql 建立用戶
# mysql
>create database zabbix CHARSET 'utf8'; 建立字符集
> grant all on zabbix.* to 'zbxuser'@'192.168.1.%' identified by 'zbxpass'; 建立一個用戶受權
> grant all on zabbix.* to 'zbxuser'@'127.0.0.1' identified by 'zbxpass';
> flush PRIVILEGES;
zabbix服務端:
安裝zabbix的yum源
rpm –I https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
web依賴的包
# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent 安裝包
# rpm -ql zabbix-server-mysql
/etc/zabbix/zabbix_server.conf 配置文件
/usr/lib/systemd/system/zabbix-server.service 程序
導入數據可腳本, 已生成數據庫環境
腳本:/usr/share/doc/zabbix-server-mysql-3.0.20/create.sql.gz 須要解壓
gzip -d create.sql.gz
鏈接數據庫導入sql:
# mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < ./create.sql
注意在2版本會有3個sql腳本需依次導入
vim /etc/zabbix/zabbix_server.conf 配置文件
GENERAL PARAMETERS 通用端參數有:
ListenPort 端口
Option: SourceIP 用來採集的ip地址
Option: LogType 日誌格式
Option: LogFile 日誌文件
Option: LogFileSize 0表示禁止滾動
Option: DebugLevel 通常3表示正常級別
Option: DBHost ; 指明存儲地址
Option: DBName 數據庫名
setenforce 0
systemctl start zabbix-server.service 啓動
配置web
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/shanghai
systemctl start httpd.service 啓動服務
訪問;第一次訪問須要頁面配置
在被監控的主機配置agent
rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-agent zabbix-sender
# rpm -ql zabbix-agent
/etc/zabbix/zabbix_agentd.conf 配置文件
/usr/lib/systemd/system/zabbix-agent.service 程序
vim 配置文件
##### Active checks related 主動監控相關配置
ServerActive=192.168.1.105 服務器地址
Hostname=localhost 本地主機名
##### Passive checks related 被動監控
systemctl start zabbix-agent.service 啓動服務
第三節頁面配置
一個採集系統具備幾樣功能:採集 存儲 展現 報警
相關的安裝包:
服務器包:zbbix-server-mysql zabbix-get
被監控端:zabbix-agent zabbix-sender
web: zabbix-web zabbix-web-mysql
proxy(代理): zabbix-proxy
採集存儲的數據類型:
數值型:整數,浮點數
字符型:字符串
存儲值的格式:
as is :不對數據作任何的處理 保留數據自己
delta:本次採集減去前一次採集的差
delta(speed per second) 本次採集減去前一次採集再除以通過的時長
快速定義一個監控項過程:
hostgroup – host—application—item—triggers(event) ---action
有一個默認組: zabbix-servers
定義主機:
item定義
item的類型:
zabbix內建key用的:zabbix agent (是被動)
zabbix agent (active) 主動
SNMP 使用snmp方式來監控時用的
2 內建key的選擇
zabbix_get -s 192.168.1.101 -k "net.if.in[ens33,packets]"
列如在命令行傳一個key值 監控項:
配trigger觸發器 (合理的區間內)它定義的是超過區間的閾值
定義好監控後查看主機
這裏item是針對觸發區域定義
如>100 當定義item >10 , 當item> 10 爲ture PROBLEM 狀態 而item< 10 爲 false ok
PROBLEM (故障) OK(正常)
通常狀態之間的轉化,要進行屢次的採集纔會觸發
每個觸發器關聯着一個item,但一個item能夠有多個觸發器
能夠根據不一樣的觸發器實現不一樣級別的報警
一 個觸發器有一個表達式構成,當超過一個閾值時狀態轉爲PROBLEM
觸發器表達式格式:通常能夠在頁面自動生成也能夠手動編寫
{<server>:<key>.<fumction>(<parameter>)} <operator><constant>
server:主機名稱
key:主機上相應監控項的key
function: 是評估採集的數據是否在合理的範圍內
目前觸發器所支持的函數有avg,count,chunge,date,falofweek,delta, diff ,pregexp,last, max , min , now, sum, nodata
parameter:爲函數參數,大多數參數能夠接受秒數爲其參數,若是在數值參數前面使用#作爲前綴,則表示爲最近幾回的取值如sum(300)表300s內的取值之和,而sum(#10)表示最近10次取值之和
此爲avg, count ,last , min ,max 還支持使用第二個參數如max(1h,7d)表返回一週以前的最大值
列: {192.168.1.104:systemctl.cup.load[all,avg1] last(0)} > 3
定義 trigger:
觸發後會在monitoring ---events 會記錄事件
action動做
conditions 條件
operations 動做
定義email的定義,
報警信息方式: email
script 自定義腳本
administration—media types –email
定義條件能夠定義多個條件之間使用邏輯關係
觸發器之間存在依賴關係:
定義類型 默認是send 發送郵件
IPMI 是命令
custom script 自定義腳本
ssh
telnet
grobal script:
定義mail服務器:
定義個user
問題啓動zabbix-server服務器動成功,可是查不到10051端口
解決:查看/var/log/zabbix/zabbix-server.log 日誌
添加用戶權限:
grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'zbxpass';
flush PRIVILEGES;