01-zabbix簡介
The Enterprise-class Monitoring Solutionfor Everyone
www.zabbix.com
SLA:Service-Level Agreement:服務等級協議
監控解決方案應該具有哪些功能?
數據採集(Datagathering)
ZabbixAgent
Passive/Active方式,內置常用監控項,多平臺支持
SNMP
對路由/交換等設備提供SNMP支持
IPMI
支持IPMI協議,常用於監控傳感器(機箱溫度,風扇轉速等)
JavaGateway
原生提供JavaGateway,支持JMX監控(如Tomcat,Resin等)
Custom
支持高度自定義監控,提供UserParameter及ZabbixTrapper等方式
告警(Alerting)
Trigger
Zabbix內置豐富的Triggerfunction,非常易於進行復雜的告警觸發
Action
故障發生後,可以通過靈活的Action規則進行告警及執行命令,並支持告警升級
Event
故障發生及恢復,觸發的Action均會記錄,並支持ACK
Maintenance
支持提前定義的維護, 可以配置維護時刻不採集數據或不發送告警
數據存儲(Datastorage)
多數據庫支持
mysql,oracle,postgresql,sqlite,DB2
數據存儲方式
History詳細的監控數據
Trend歷史數據縮減機制,存儲每小時的最小值,平均值,最大值
可視化(Visualisation)
SimpleGraph
所有數值類型監控項,均可以直接通過simple graph查看
Graph
可以靈活的將多監控項繪製在同一張圖上,並且支持多種圖形樣式
Screen
可以將多張圖,文字等放在同一個screen中,便於集中大屏展示
Map
可以創建更復雜NX的圖形(拉全國IDC監控圖),便於給BOSS展示
Enterprise-class?
Discovery
NetworkDiscovery
基於定義的規則掃描指定的IP範圍,自動發現已有的網絡設備
AutoRegistration
允許activeagent進行自動註冊
LowLevel Discovery
自動創建Items,Triggers,Graphs
DistributedMonitoring
分佈式
API
ZABBIX
開發公司:Zabbix SIA
開發語言:C(後端)+PHP(前端)
2001年First GPLRelease(V0.1)
官方網站:http://www.zabbix.com
學習手冊:http://www.zabbix.com/documentation.php
學習書籍《Mastering Zabbix》《Zabbix1.8 Network Monitoring》
《Zabbix企業級分佈式監控系統》《Zabbix 監控系統深度實踐》
02-zabbix server安裝
環境:CentOS 6.6 2.6.32-504.el6.x86_64iptable關閉 Selinux關閉
Zabbix版本:2.4.7
Server ip: 192.168.50.93
agent ip: 192.168.50.246
目標:
成功安裝ZabbixServer
成功安裝ZabbixWeb
瞭解Zabbix Web頁面佈局
yum install gcc gcc-c++autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perlmod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpcphp-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-develcurl-devel -y
service mysqld start
service httpd start
mysqladmin password rinimei
http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.6/zabbix-2.4.6.tar.gz
tar xf zabbix-2.4.6.tar.gz
cd zabbix-2.4.6
groupadd zabbix
useradd zabbix -gzabbix
mysql>createdatabase zabbix character set utf8;
mysql>grantall on zabbix.* to zabbix@localhost identified by "rinimei";
mysql>flushprivileges;
cdzabbix-2.4.7/database/mysql/
mysql -uzabbix-prinimei zabbix < schema.sql
mysql -uzabbix-prinimei zabbix < p_w_picpaths.sql
mysql-uroot-prinimei zabbix < data.sql
cd zabbix-2.4.6
./configure \
--prefix=/usr/local/zabbix\
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
make &&make install
服務端口定義
vim /etc/services
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
修改zabbix server配置文件
vim/usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=rinimei
cpzabbix-2.4.6/misc/init.d/fedora/core/zabbix_server /etc/init.d
chmod +x/etc/init.d/zabbix_server
修改啓動腳本
vim/etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
CONFILE=$BASEDIR/etc/zabbix_server.conf
#搜索start,修改啓動選項,默認是去/etc下面找配置文件
action$"Starting $BINARY_NAME:"$FULLPATH -c $CONFILE
servicezabbix_server start
03-zabbix server安裝- Zabbix Web
cp -r frontents/php/var/www/html/zabbix
chown -R apache:root /var/www/html/zabbix
訪問http://serverip/zabbix,通過頁面安裝zabbix web端有關date()的錯誤提示解決方法:
vim /etc/php.ini
data.timezone=Asia/Shanghai
post_max_size = 16M
max_excution_time = 300
max_input_time = 300
/var/www/html/zabbix/include
cd /usr/share/zabbix/include
vim locales.inc.php +58
/zh_CN
true
頁面繪圖中文顯示方框
yum install wqy-microhei-fonts-y
cd /etc/alternatives/
ll zabbix-web-font
zabbix-web-font ->/usr/share/fonts/dejavu/DcjaVuSans.ttf
rm -f /etc/alternatives/zabbix-web-font
ln -s /usr/share/fonts/wqy-microhei/wqy-microhci.ttc/etc/alternatives/zabbix-web-font
cd /var/www/html/zabbix/fonts
cp/usr/share/fonts/wqy-microhei/wqy-microhei.ttc .
cp wqy-microhei.ttc.bak DejaVuSans.ttf
/usr/lib/zabbix/alertscripts/51com.sh
/usr/local/zabbix/share/zabbix/alertscripts
04-zabbix agent
目標:
安裝zabbixagent
完成linux cpu監控
學習使用模板
wget http://www.zabbix.com/downloads/2.4.6/zabbix_agents_2.4.6.linux2_6.amd64.tar.gz
mkdir /usr/local/zabbix
tar xf zabbix_agents_2.4.6.linux2_6.amd64.tar.gz-C /usr/local/zabbix
cd /usr/local/zabbix/etc
vim zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server= #服務器IP
ServerActime= #主動模式服務器IP
Hostname= #設定主機名
下載的包裏沒有腳本,但在服務端zabbix源碼包裏有
scp misc/init.d/fedora/core/zabbix_agentdip:/etc/init.d
vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix
CONFILE=$BASEDIR/etc/zabbix_agentd.conf
action $"Starting $BINARY_NAME:"$FULLPATH -c $CONFILE
servicezabbix_agentd start
windows客戶端下載:
http://www.zabbix.com/downloads/2.0.6/zabbix_agents_2.0.6.win.zip
zabbix_agentd.exe -c zabbix_agentd.conf –i
#
Yum install zabbix
Yum install zabbix-agent-2.4.6-1.el6.x86_64.rpm
chkconfig --add zabbix-agent
chkconfig --level 3 zabbix-agent on
05-zabbix key&自定義key
./zabbix_get -s ip -k net.tcp.service[ssh]
key
net.tcp.service[service,<ip>,<port>]
agent.hostname 返回agent定義的hostname
agent.ping 檢測agent能否ping通,能返回1,不能返回0
agent.version 返回agent版本
net.tcp.listen[port] 檢測是否監聽端口
net.tcp.port[<ip>,<port>] 檢測是否監聽端口
net.tcp.service[service,<ip>,<port>]檢測是否啓動該服務
net.tcp.service.perf[service,<ip>,<port>]檢測該服務性能
net.udp.listen[port]檢測是否監聽該端口UDP
proc.num[<name>,<user>,<state>,<cmdline>]返回進程數量
自定義key
a.編輯agent配置文件zabbix_agentd.conf
UserParameter=TestMysql,mysql -uzabbix-prinimei -e 'show status' &>/dev/null && echo 1
b.重啓zabbix_agentd
service zabbix_angetd restart
c.測試該key
./zabbix_get -s ip -k TestMysql
nginx需要監控哪些內容?
可用性
進程是否存在?
端口是否監聽?
服務是否正常?
性能指標
當前連接數?
每秒鐘處理多少連接?
每秒鐘處理多少請求?
當前讀寫連接有多少?
zabbix_get -s 10.0.0.8 -k proc.num[nginx]
zabbix_get -s 10.0.0.8 -knet.tcp.service[http,,80]
wgethttp://raw.githubusercontent.com/pengyao/zabbix-1/master/scripts/zabbix_nginx_check.sh
./zabbix_nginx_check.sh active_connections
cd zabbix_agentd
vim nginx.conf
UserParameter=custom.nginx.status[*],/etc/zabbix/scripts/zabbix_nginx_check.sh$1
nginx進程數
zabbix_get -s 10.0.0.8 -k proc.num[nginx]
proc.num[nginx]
nginx服務狀態
zabbix_get -s 10.0.0.8 -knet.tcp.service[http,,]
zabbix_get -s 10.0.0.8 -knet.tcp.service[http,,80]
net.tcp.service[http,,80]
nginx當前連接數
zabbix_get -s 10.0.0.8 -kcustom.nginx.status[active_connections]
custom.nginx.status[active_connections]
nginx每秒處理的連接數
zabbix_get -s 10.0.0.8 -kcustom.nginx.status[handled_connections]
custom.nginx.status[handled_connections]
store value Delta(speed per second)
nginx每秒處理的請求數
zabbix_get -s 10.0.0.8 -kcustom.nginx.status[handled_requests]
custom.nginx.status[handled_requests]
store value Delta(speed per second)
觸發器
avg平均值
{ip:vm.memory.size[pused].avg(60)}>80 #60s內平均值大於80
last最後收到的值
{ip:vm.memory.size[pused].last(0)}>90 #最後收到的值大於90
{ip:vm.memory.size[pused].last(#6)}>90 #最後收到的第6個值大於90
{ip:vm.memory.size[pused].last(0,60)}>90 #60s前收到的值大於90
nodata沒有收到數據
{ip:vm.memory.size[pused].nodata(60)}=1 #60s內沒收到值爲真
sum求和
{ip:vm.memory.size[pused].sum(60)}>100 #60s內收到的值的和大於100爲真
{ip:vm.memory.size[pused].sum(#4)}>100 #最後4個值大於100爲真
min最小值
{ip:vm.memory.size[pused].min(300)}>100k #5分鐘內流入流量最小大於100K爲真
count計數
{ip:vm.memory.size[pused].count(1800,0)>5 #三分鐘內收到0的數量大於5爲真
06-zabbix Maintenance&用戶控制
目標:
瞭解Maintenance應用場景及用法
熟悉Zabbix Web用戶權限控制
Maintenance
用於滿足預知的維護計劃,不再發送告警的需求
當前Maintenance作用於Host/Group,不能作用於Trigger
zabbix web用戶權限控制
用戶類型:
Zabbix User:允許訪問Monitoring,只能讀取Usergroup中指定的主機狀態信息
Zabbix Admin:允許訪問Monitoring及Configuration,只能獲取及配置User中制定的主機
Zabbix Super Admin:能夠訪問配置一切
限制訪問制定的Group狀態:User Group Only
07-zabbix 分佈式部署
目標:
瞭解Zabbix Proxy適用場景
部署並配置Zabbix分佈式監控
Zabbix Proxy常用於:
Zabbix無法直接連接對應的節點或遠程中心Server網絡不可靠時完成遠程監控
當監控大量設備時,使用Proxy可以降低Server負載
構建易於維護的分佈式監控
安裝zabbix proxy
yum install zabbix-proxy zabbix-proxy-mysql-y
yum install mysql-server -y
vim /etc/my.cnf
default-character-set= utf8
mysql>create database zabbix_proxy;
mysql>grant all on zabbix_proxy.* tozabbix_proxy@localhost identified by "zabbix_proxy";
mysql -uzabbix_proxy -hlocalhost-pzabbix_proxy zabbix_proxy </usr/share/doc/zabbix-proxy-mysql-2.2.9/create/schema.sql
vim /etc/zabbix/zabbix_proxy.conf
Server=
Hostname=
DBName=
DBUser=
DBPassword=
service zabbix-proxy restart
more /var/log/zabbix/zabbix_proxy.log
Administration-DM-create proxy