前言php
zabbix是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。
zabbix組件主要分兩個: zabbix-server和zabbix-agent。支持的監控協議有ICMP,IPMI,SNMP,HTTP以及zabbix協議(zabbix協議是最常使用的協議用來監控各被監控端)。
收集的數據存放在數據庫中,數據庫支持mysql,oracle等等。
第三個組件:zabbix web gui這個接口提供web頁面來監控和管理各被監控端。
第四個組件:zabbix proxy(實現分佈式監控專用組件非必要組件,被監控服務器超過一千以上可使用此組件。)前端
本次實驗邏輯架構以下node
相關組件介紹mysql
zabbix_get進程去客戶端收集數據,
zabbix_agentd進程經過監聽在一個套接字上接收
zabbix_get的請求,經過zabbix_sender將
數據收集發送給服務器端,數據保存在zabbix數據庫中,
zabbix_get這種方法主要用於測試,經過寫腳本或遠程執行命令的方式。
zabbix server本身自動會週期性的去被監控端收集數據,收集哪些數據在服務器端事先定義。
zabbix server ,zabbix database,zabbix web gui 能夠部署在一臺服務器上,爲了提高性能能夠放在不一樣主機上。linux
zabbix一些經常使用術語c++
host(主機):要監控的網絡設備,可由IP或DNS名稱指定
host group(主機組):主機的邏輯容器,能夠包含主機和模板,但同一個組內的主機和模板不能互相連接;主機組一般在給用戶或用戶組指派監控權限時使用(大體瞭解下就能夠了)。
item(監控項):這個從名字上能夠理解,具體要監控哪些指標由它定義。
trigger(觸發器):就是超過了定義的合理範圍,這傢伙就會報警。
event(事件):這都是觸發器產生的。
action(動做):對事件如何應對,好比要執行哪些操做。
escalation(報警升級):若是在定義的5分鐘沒反應,從warning級別升到high級別,就是要提醒別人要儘快處理。
media(媒介):發送報警的手段和通道,如Email。
remote command(遠程命令):預約義的命令,可在被監控主機處於某個特定條件下時自動執行。
template(模板):用於快速定義被監控主機的預設條目集合,一般包含了item、trigger、graph、screen、application以及low-level discovery rule;模板能夠直接連接至單個主機。(這個概念不理解不過不要緊的,只要具體會怎麼操做就能夠了)
application(應用):一組item的集合。
以上術語的關係能夠用下圖表示(大體明白就行):web
上圖中的poller這個進程就是去各客戶端獲取數據的。
zabbix產生的數據主要由四部分組成:
配置數據(忽略)
歷史數據:50bytes
歷史趨勢數據: 128bytes
事件數據:130bytes
歷史數據:採樣生成的數據
歷史趨勢數據:每小時的最大值、最小值、平均值、統計
經過對以上數據的計算,能夠得出咱們須要一個多大的zabbix數據庫,來定製磁盤硬件。
具體算法:
假設有60000個監控項,那每秒中處理的數據就有60000/60=1000條
歷史數據大小=天數X每秒鐘處理的數據量X24X3600X50Bytes
趨勢數據:
每個趨勢128Bytes,
大小=天數X監控項X24X128Bytes
事件數據:
每一個佔據130Bytes
大小:天數X86400X130(假設每秒中產生一個事件)算法
本次實驗的zabbix軟件版本 sql
裝下面這個版本,紅框內選中的shell
http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/
實驗所需機器3臺,系統環境以下
3臺機器,一臺作zabbix-server,一臺做爲zabbix-agent,一臺做爲zabbix-proxy
[root@linux-node1 ~]# uname -rm 2.6.32-504.el6.x86_64 x86_64 [root@linux-node1 ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@linux-node1 ~]#
安裝zabbix相關包
複製連接地址,下載wget
noarch代表與處理器無關,src是源碼包須要編譯
執行以下命令,在Zabbix Server和Zabbix Agent上
mkdir /tools -p cd /tools/ wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm rpm -ivh zabbix-release-2.4-1.el6.noarch.rpm
查看這個包安裝了哪些
[root@linux-node1 tools]# rpm -ql zabbix-release /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX /etc/yum.repos.d/zabbix.repo /usr/share/doc/zabbix-release-2.4 /usr/share/doc/zabbix-release-2.4/GPL [root@linux-node1 tools]#
它建立了一個zabbix.repo文件
[root@linux-node1 tools]# cat /etc/yum.repos.d/zabbix.repo [zabbix] name=Zabbix Official Repository - $basearch baseurl=http://repo.zabbix.com/zabbix/2.4/rhel/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX [zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=http://repo.zabbix.com/non-supported/rhel/6/$basearch/ enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX gpgcheck=1 [root@linux-node1 tools]#
Zabbix Server服務器安裝以下包
[root@linux-node1 tools]# yum install zabbix zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql zabbix-agent -y Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from cached hostfile Package zabbix-2.4.8-1.el6.x86_64 already installed and latest version Package zabbix-server-2.4.8-1.el6.x86_64 already installed and latest version Package zabbix-web-2.4.8-1.el6.noarch already installed and latest version Package zabbix-server-mysql-2.4.8-1.el6.x86_64 already installed and latest version Package zabbix-web-mysql-2.4.8-1.el6.noarch already installed and latest version Package zabbix-agent-2.4.8-1.el6.x86_64 already installed and latest version Nothing to do [root@linux-node1 tools]#
因爲Zabbix Server把數據存到mysql裏,所以還須要安裝mysql相關包
[root@linux-node1 tools]# yum install -y mysql-server mysql Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from cached hostfile Package mysql-server-5.1.73-8.el6_8.x86_64 already installed and latest version Package mysql-5.1.73-8.el6_8.x86_64 already installed and latest version Nothing to do [root@linux-node1 tools]#
啓動mysqld
[root@linux-node1 tools]# /etc/init.d/mysqld start Starting mysqld: [ OK ] [root@linux-node1 tools]#
複製配置文件替換默認的
[root@linux-node1 tools]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf cp: overwrite `/etc/my.cnf'? y [root@linux-node1 tools]#
在[mysqld]模塊最後加入字符集的相關參數
character-set-server = utf8 init-connect = 'SET NAMES utf8' collation-server = utf8_general_ci
加入以後以下
[mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M character-set-server = utf8 init-connect = 'SET NAMES utf8' collation-server = utf8_general_ci
重啓mysql
[root@linux-node1 tools]# /etc/init.d/mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ] [root@linux-node1 tools]#
登陸mysql查看
[root@linux-node1 tools]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.1.73-log Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) mysql>
官網有關於Zabbix建庫相關腳本
MySQL shell> mysql -uroot -p<password> mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<password>'; mysql> quit; shell> mysql -uzabbix -p<password> zabbix < database/mysql/schema.sql # stop here if you are creating database for Zabbix proxy shell> mysql -uzabbix -p<password> zabbix < database/mysql/images.sql shell> mysql -uzabbix -p<password> zabbix < database/mysql/data.sql
建庫和受權用戶操做以下
mysql> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye [root@linux-node1 tools]#
導入腳本操做以下
[root@linux-node1 tools]# cd /usr/share/doc/zabbix-server-mysql-2.4.8/create/ data.sql images.sql schema.sql [root@linux-node1 tools]# cd /usr/share/doc/zabbix-server-mysql-2.4.8/create/ [root@linux-node1 create]# ls data.sql images.sql schema.sql [root@linux-node1 create]# mysql -uzabbix -pzabbix zabbix <schema.sql [root@linux-node1 create]# mysql -uzabbix -pzabbix zabbix <images.sql [root@linux-node1 create]# mysql -uzabbix -pzabbix zabbix <data.sql [root@linux-node1 create]#
檢查
[root@linux-node1 create]# mysql -uzabbix -pzabbix -e 'use zabbix;show tables;' +-----------------------+ | Tables_in_zabbix | +-----------------------+ | acknowledges | | actions | | alerts | | application_template | | applications | | auditlog | | auditlog_details | | autoreg_host | | conditions | | config | | dbversion | | dchecks | | dhosts | | drules | | dservices | | escalations | | events | | expressions | | functions | | globalmacro | | globalvars | | graph_discovery | | graph_theme | | graphs | | graphs_items | | group_discovery | | group_prototype | | groups | | history | | history_log | | history_str | | history_text | | history_uint | | host_discovery | | host_inventory | | hostmacro | | hosts | | hosts_groups | | hosts_templates | | housekeeper | | httpstep | | httpstepitem | | httptest | | httptestitem | | icon_map | | icon_mapping | | ids | | images | | interface | | interface_discovery | | item_condition | | item_discovery | | items | | items_applications | | maintenances | | maintenances_groups | | maintenances_hosts | | maintenances_windows | | mappings | | media | | media_type | | opcommand | | opcommand_grp | | opcommand_hst | | opconditions | | operations | | opgroup | | opmessage | | opmessage_grp | | opmessage_usr | | optemplate | | profiles | | proxy_autoreg_host | | proxy_dhistory | | proxy_history | | regexps | | rights | | screens | | screens_items | | scripts | | service_alarms | | services | | services_links | | services_times | | sessions | | slides | | slideshows | | sysmap_element_url | | sysmap_url | | sysmaps | | sysmaps_elements | | sysmaps_link_triggers | | sysmaps_links | | timeperiods | | trends | | trends_uint | | trigger_depends | | trigger_discovery | | triggers | | user_history | | users | | users_groups | | usrgrp | | valuemaps | +-----------------------+ [root@linux-node1 create]#
配置文件修改
修改apache相關配置
zabbix Server默認用的apache,安裝Zabbix Server時,它自動幫咱們裝好了apache
修改apache配置文件裏zabbix.conf文件的時區,並取消註釋。這裏能夠vim修改,也能夠採用sed替換
[root@linux-node1 conf.d]# cd /etc/httpd/conf.d/ [root@linux-node1 conf.d]# ls mod_dnssd.conf php.conf README welcome.conf zabbix.conf [root@linux-node1 conf.d]# grep -n timezone zabbix.conf 19: # php_value date.timezone Europe/Riga [root@linux-node1 conf.d]# vim zabbix.conf [root@linux-node1 conf.d]# grep -n timezone zabbix.conf 19: php_value date.timezone Asia/Shanghai [root@linux-node1 conf.d]#
查看下相關配置
[root@linux-node1 conf.d]# head -10 zabbix.conf # # Zabbix monitoring system php web frontend # Alias /zabbix /usr/share/zabbix <Directory "/usr/share/zabbix"> Options FollowSymLinks AllowOverride None Order allow,deny
看看都有哪些東西
到這個目錄下ls一下,看到都是php代碼。zabbix前端都是php寫的
它的server端是c和c++寫的
[root@linux-node1 conf.d]# cd /usr/share/zabbix/ [root@linux-node1 zabbix]# ls acknow.php chart.php index.php report5.php actionconf.php charts.php items.php report6.php adm.gui.php conf js robots.txt adm.housekeeper.php conf.import.php jsLoader.php screenconf.php adm.iconmapping.php dashboard.php jsrpc.php screenedit.php adm.images.php dashconf.php latest.php screens.php adm.macros.php discoveryconf.php locale scripts_exec.php adm.other.php discovery.php maintenance.php scripts.php adm.regexps.php disc_prototypes.php map.php search.php adm.triggerdisplayoptions.php events.php maps.php services.php adm.triggerseverities.php fonts media_types.php setup.php adm.valuemapping.php graphs.php overview.php slideconf.php adm.workingtime.php history.php popup_bitem.php slides.php api_jsonrpc.php host_discovery.php popup_httpstep.php srv_status.php applications.php hostgroups.php popup_media.php styles audio hostinventoriesoverview.php popup_period.php sysmap.php auditacts.php hostinventories.php popup.php sysmaps.php auditlogs.php host_prototypes.php popup_right.php templates.php authentication.php host_screen.php popup_trexpr.php tr_comments.php browserwarning.php hosts.php popup_usrgrp.php tr_events.php chart2.php httpconf.php profile.php trigger_prototypes.php chart3.php httpdetails.php proxies.php triggers.php chart4.php httpmon.php queue.php tr_logform.php chart5.php image.php report1.php tr_status.php chart6.php images report2.php tr_testexpr.php chart7.php imgstore.php report3.php usergrps.php chart_bar.php include report4.php users.php [root@linux-node1 zabbix]#
[root@linux-node1 conf.d]# /etc/init.d/httpd start Starting httpd: [ OK ] [root@linux-node1 conf.d]#
修改Zabbix Server默認配置文件
由於zabbix存mysql數據,因此要改下server端的配置文件,server端和mysql打交道
[root@linux-node1 conf.d]# cd /etc/zabbix/ [root@linux-node1 zabbix]# ls web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf [root@linux-node1 zabbix]# vim zabbix_server.conf
修改DBHost 和DBName
用戶名和密碼
經過瀏覽器安裝配置zabbix-server
瀏覽器裏輸入以下連接
http://10.0.1.161/zabbix
看到以下界面進行安裝
點擊Finish自動跳轉到了登陸界面
默認的用戶名是Admin,密碼是zabbix
登陸成功,第一件事就是改密碼
zabbix server 還沒運行,上面提示說明這個前端頁面不只僅訪問數據庫,還訪問zabbix server
[root@linux-node1 zabbix]# /etc/init.d/zabbix-server start Starting Zabbix server: [ OK ] [root@linux-node1 zabbix]#
Zabbix Server自己也要監控本身
接下來運行一個agent端,先修改agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
啓動agent
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf [root@linux-node1 ~]# /etc/init.d/zabbix-agent start Starting Zabbix agent: [ OK ] [root@linux-node1 ~]#
zabbix的web界面介紹
一些儀表盤解釋
Actions 是故障了要通知,怎麼通知呢,在這裏配置
好比配置發短信,發郵件,還能配置讓它執行命令,好比reboot
screens是一些圖片效果
slide shows是幻燈片,好比你有3個大屏,可是隻有一個屏幕,你可讓它來回切換
Maps 你能夠作一個架構圖
Discovery 和自動化部署有關,
IT services :sla(SLA:Service-Level Agreement的縮寫,意思是服務等級協議),好比我保證網站可用率 99%。(管理體系相關)你今年的sla達標了麼等
[root@linux-node1 ~]# netstat -lntp |grep 100 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 5846/zabbix_agentd tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 5692/zabbix_server tcp 0 0 :::10050 :::* LISTEN 5846/zabbix_agentd tcp 0 0 :::10051 :::* LISTEN 5692/zabbix_server [root@linux-node1 ~]#
也可使用lsof命令查看
[root@linux-node1 ~]# lsof -i:10050 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME zabbix_ag 5846 zabbix 4u IPv4 24785 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5846 zabbix 5u IPv6 24786 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5848 zabbix 4u IPv4 24785 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5848 zabbix 5u IPv6 24786 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5849 zabbix 4u IPv4 24785 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5849 zabbix 5u IPv6 24786 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5850 zabbix 4u IPv4 24785 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5850 zabbix 5u IPv6 24786 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5851 zabbix 4u IPv4 24785 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5851 zabbix 5u IPv6 24786 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5852 zabbix 4u IPv4 24785 0t0 TCP *:zabbix-agent (LISTEN) zabbix_ag 5852 zabbix 5u IPv6 24786 0t0 TCP *:zabbix-agent (LISTEN) [root@linux-node1 ~]# lsof -i:10051
JMX 監控jvm的
IPMI監控硬件的。監控IPMI性能比較差,常常獲取不到數據
監控項多了可能會慢,好比監控一項。溫度,就不用監控風扇了。風扇不轉了溫度確定上來了
Proxy:表示zabbix支持分佈式的。
enabled勾選的話,表示打開監控。監控Zabbix Server,也能夠不勾選,返回界面以後點擊Enable
宏
它在作snmp監控的時候用,簡單來講,就是給一個變量設置一個值
主機資產,zabbix提供了一個資產管理的功能,默認是關閉狀態,能夠選manual手動填,也能夠選
Automatic自動,在建立items的時候,能夠把獲得的值映射到資產裏面,這個功能比較雞肋,好比下面網卡只有兩個,我服務器要是4個網卡呢
點擊就啓用了
application和item以及graph介紹
application相似items監控項的監控組,就是組的概念
監控間隔。60秒
歷史保留的天數7天
趨勢圖保留的天數,365天
點一下enabled就把這一項關閉了,關閉後就不監控這一項了
若是有個東西老報警。你就能夠把它關閉了
鼠標放觸發器上,看到條件表達式,每五分鐘,超過300 什麼值就報警
添加node2到監控裏
在linux-node2上裝zabbix客戶端
mkdir /tools -p cd /tools/ wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm rpm -ivh zabbix-release-2.4-1.el6.noarch.rpm yum install zabbix-agent -y
自定義監控和圖表
zabbix服務端是不支持windows的,只有客戶端支持windows
下面地址能夠下載windows客戶端監控。
它是個exe文件,配置個zabbix.conf文件
它有2個參數須要注意下
http://www.zabbix.com/download2
修改linux-node2的Zabbix agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
啓動agent
[root@linux-node2 tools]# /etc/init.d/zabbix-agent start Starting Zabbix agent: [ OK ] [root@linux-node2 tools]#
另外讓它開機啓動,能夠選擇加入rc.local
[root@linux-node2 ~]# echo "/etc/init.d/zabbix-agent start" >>/etc/rc.local [root@linux-node2 ~]#
以下
host-name這裏必須寫正確的,顯示的名稱能夠隨便寫,可是建議規範點
選擇模板
模板裏帶有好多監控項,觸發器,圖形。由於模板太多了。上百個,就搞成搜索的了
搜索linux
上面的是基於agent監控的,下面是基於snmp監控的,就不用裝agent了
等一會變綠色了
在監控裏查看主機是否有數據了
選擇主機
經過拖動這裏也能夠改變時間範圍,查看歷史數據
點擊這裏能夠隱藏下面的Zoom時間欄
這個agent ping 不是icmp的ping,而是經過agent ping的。agent發個請求看它返回不返回
自定義監控項並加入到監控頁面上
以上都是模板帶的監控項,如何自定義一個監控項呢
自定義監控項有2個步驟
一、改配置文件,在裏面寫上自定義的監控項
二、web頁面加上
獲取命令以下
[root@linux-node2 ~]# uptime 06:29:23 up 22 min, 1 user, load average: 0.00, 0.00, 0.00 [root@linux-node2 ~]# uptime | awk -F ' ' '{print $5}' 1 [root@linux-node2 ~]#
修改linux-node2的配置文件
vim /etc/zabbix/zabbix_agentd.conf
修改下面地方
逗號隔開
保證這個key在整個系統是惟一的,command能夠換成腳本
另外這個用戶自定義的參數返回值最大是512KB,不能超過這個
UserParameter=login-user,uptime |awk -F ' ' '{print $4}'
這裏注意下,下面截圖是錯的,應該是$4
保存,重啓
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf [root@linux-node2 ~]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] [root@linux-node2 ~]#
服務端測試下可否獲取這個客戶端自定義的值
zabbix-get命令。以前沒裝,補上
[root@linux-node1 ~]# zabbix_get -bash: zabbix-get: command not found [root@linux-node1 ~]# yum install zabbix-get -y
查看幫助用法
[root@linux-node1 ~]# zabbix_get usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key> [root@linux-node1 ~]# zabbix_get --help Zabbix get v2.4.8 (revision 59539) (20 April 2016) usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key> Options: -s --host <host name or IP> Specify host name or IP address of a host -p --port <port number> Specify port number of agent running on the host. Default is 10050 -I --source-address <IP address> Specify source IP address -k --key <key of metric> Specify key of item to retrieve value for -h --help Display help information -V --version Display version number Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]" [root@linux-node1 ~]#
獲取方式以下
[root@linux-node1 ~]# zabbix_get -s 10.0.1.162 -k login-user 1 [root@linux-node1 ~]#
客戶端克隆一個會話,服務端繼續取值,這就是一個自定義的key,固然你裏面寫什麼均可以
[root@linux-node1 ~]# zabbix_get -s 10.0.1.162 -k login-user 2 [root@linux-node1 ~]#
get命令獲取成功,才能加。準備加到web上
點擊進去
點擊Items,顯示以下
點擊右上角的Create item
name能夠和key不同,可是key必須是以前設置的,右邊select是選擇系統自帶的key
Data type 中decimal是10進制的意思
units 是單位的意思。zabbix默認會把1000換算成1k的
若是勾選這裏,上面的數會乘以文本框裏的東西
不過重要的key建議設置5分鐘,太頻繁沒什麼用,反而引發zabbix性能降低
下面設置了就如下面爲準
描述的東西能寫最好寫
點擊Add
有數據了
點擊+ 能夠加入到收藏裏,而後在儀表盤查看