Zabbix的安裝和使用


zabbix

監控系統:硬件、軟件、業務
	采樣:sensor
	存儲:
		數據:歷史數據、趨勢數據
	展示:
	報警:
	
	被監控對象:主機、交換機、路由器、UPS、...
	
	采樣:周期性地獲取某個關注指標相關的數據;
	
	監控系統采集數據通道:
		ssh/telnet
		agent:
			master/agent
		IPMI:
		SNMP:Simple Network Management Protocol
			v1,v2(community,public),v3
		JMX:Java Management extension
			JVM:Java Virtual Machine
	
	存儲系統:
		歷史數據:每次采樣的結果,保存時長較短,一般3個月、半年;
		趨勢數據:聚合數據,保存時長較長周期內的數據;

		存儲系統:
			關系型數據庫:MySQL,PGSQL,Oracle,...
			rrd:RoundRobin Database
			NoSQL:redis/mongodb
				時間序列數據庫
	
	報警:
		郵件、短信、微信
		腳本
	
	展示:
		WebGUI
		GUI
		APP

	開源監控項目:
		cacti:采樣,報警,保存,展示;
		nagios:采樣,報警,不存儲,不存儲也就不展示;
		zabbix:
		ganglia

zabbix:
	Version:
		LTS:Long Time Support
			3.0,4.0,5.0
	
	特性:
		數據采樣:snmp,agent,ipmi,jmx;
		報警:
			升級:步進
		數據存儲:
			mysql/pgsql
		展示:php程序
			實時繪圖:graph,screen,slide show,map
		
		支持監控模板
		網絡自動發現
		分布式監控
		API:支持二次開發
		

zabbix架構圖

zabbix程序組件概述

Zabbix Server:服務端守護進程,負責接收agent發送的報告信息的核心組件,所有配置、統計數據及操作數據均由其組織進行;

Database Storage(zabbix_storage):存儲系統,MySQL/PgSQL,專用於存儲所有配置信息,以及由zabbix收集的數據;

Web interface(zabbix_web): zabbix的GUI接口,通常與Server運行在同一台主機上;

Proxy(zabbix_proxy):代理服務器,可選組件;常用於分布監控環境中,代理Server收集部分被監控端的監控數據並統一發往Server端;

Agent(zabbix_agentd):agent守護進程,部署在被監控主機上,負責收集本地數據並發往Server端或Proxy端; 

zabbix_get:命令行工具,測試向agent端發起數據采集請求;

zabbix_sender:命令行,測試向server端發送數據;

zabbix_java_gateway:java網關;

Zabbix監控Java應用

Zabbix Architecture

Zabbix邏輯組件

主機(host):要監控的網絡設備,可由IP或DNS名稱指定;

主機組(host group):主機的邏輯容器,可以包含主機和模板,但同一個組內的主機和模板不能互相鏈接;主機組通常在給用戶或用戶組指派監控權限時使用;

監控項(item):一個特定監控指標的相關的數據,這些數據來自於被監控對象;item是zabbix進行數據收集的核心,沒有item,將沒有數據;相對某監控對象來說,每個item都由“key”進行標識;
觸發器(trigger):一個表達式,用於評估某監控對象的某特定item內所有接收到的數據是否在合理范圍內,即閾值;接收到的數據量大於閾值時,觸發器狀態將從“OK”轉變為“Problem”,當數據量再次回歸到合理范圍時,其狀態將從“Problem”轉換回“OK”;

事件(event):即發生的一個值得關注的事情,例如觸發器的狀態轉變,新的agent或重新上線的agent的自動注冊等;

動作(action):指對於特定事件事先定義的處理方法,通過包含操作(如發送通知)和條件(何時執行操作);

報警升級(escalation):發送報警或執行遠程命令的自定義方案,如每隔5分鍾發送一次警報,共發送5次等;

媒介(media):發送通知的手段或通道,如Email、Jabber或SMS等;

通知(notification):通過選定的媒介向用戶發送的有關某事件的信息;

遠程命令(remote command):預定義的命令,可在被監控主機處於某特定條件下時自動執行;

模板(template):用於快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph、screen、application、以及low-level discovery rule; 模板可以直接鏈接至單個主機;

應用(application):一組item的集合;

web場景(web scennario):用於檢測web站點可用性的一個或多個HTTP請求;

前端(frontend):Zabbix的web接口;

圖形(graph):

屏幕(screens):

幻燈(slide show):

item:item key
	兩類:
		zabbix內建
			zabbix agent:服務端通過agent拉取數據
			zabbix agent(active):由agent主動推送數據到服務端
		用戶自定義(UserParameter)
	
采集到的數據類型:
	數值:
		整數
		浮點數
	字符型:
		字符串
		text
		log
	存儲的值:
		As is:不對數據做任何處理,存儲采集到的數據本身;
		Delta(simple change):本次采樣的數據減去前一次采樣的數據;
		Delta(speed per second):本次采樣的數據減去前一次采樣的數據,再除以經過的時長;速率數據;


邏輯組件

zabbix安裝及配置

1.安裝 zabbix-server(服務端)

(1) 安裝ZBX DB 192.168.0.112
	yum install mariadb-server
	vim /etc/my.conf
		skip-name-resolve = ON
		innodb_file_per_table = ON
	
	mysql>
	mysql>create database zabbix charset 'utf8';
	mysql>grant all on 'zabbix.*' to 'zbxuser'@'192.168.%.%' identified by 'zbxpass';
	mysql>grant all on 'zabbix.*' to 'zbxuser'@'127.0.0.1' identified by 'zbxpass';
	mysql>flush privileges;
	
安裝服務器端:
	1. 配置zabbix yum源
		rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
		vim /etc/yum.repos.d/zabbix.repo
			將3.0改成4.0即可
	2.添加gpgkey
		curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
 
		curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
	3.添加之后即可使用,更新源
		yum makecache -y
		
		# 查詢zabbix相關的包:
		yum list all | grep zabbix
		yum install zabbix-server-mysql zabbix-agent zabbix-get -y
	
	4. 程序環境:
		配置文件:/etc/zabbix_server.conf
		Unit File:zabbix-server.service
	5.在mariadb數據庫創建表,根據 rpm -ql zabbix-server-mysql 中的sql腳本:/usr/share/doc/zabbix-server-mysql-4.0.33/create.sql.gz 導入數據庫結構,才能運行zabbix
	~]# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.33/create.sql.gz 
	~]# mysql -uzabbix -h127.0.0.1 -pzabbix zabbix </usr/share/doc/zabbix-server-mysql-4.0.33/create.sql # 指定將create.sql 重定向導入zabbix數據庫
		
		注意:zabbix 2的sql腳本有三個,需要一次導出;
	
	6.zabbix server配置啟動
		cd /etc/zabbix
		cp zabbix_server.conf{,.bak} # 備份配置文件
		
		# zabbix_server.conf中的配置段:
            grep "^#####" zabbix_server.conf
            ############ GENERAL PARAMETERS ################# 通用配置參數
            ############ ADVANCED PARAMETERS ################  高級配置參數
            ####### LOADABLE MODULES #######  可加載的模塊 
            ####### TLS-RELATED PARAMETERS #######  使用ssl加密傳輸數據
		
		通用配置相關的參數:
			ListenPort=10051
			SourceIP=
			LogType=file
			LogFile=/var/log/zabbix/zabbix_server.log
			DebugLevel=3 # 日志級別
			DBHost=127.0.0.1  
			DBName=zabbix # 我們在mariadb數據庫創建的數據庫名稱是zabbix
			DBUser=zabbix # 我們在mariadb數據庫授權的用戶是zabbix
			DBPassword=zabbix  #  我們在mariadb數據庫授權的用戶zabbix的密碼是zabbix
			DBPort=
			DBSocket=/tmp/mysql.sock
		
		高級配置參數:
			StartPollers=5  # 啟動多少個進程負責數據采集
		
		配置好這些參數,基本能滿足正常需要了。。。
		在啟動zabbix-server.service之前,我們還要檢查trousers包的版本,zabbix要求其版本要在0.3.12以上。
		yum info trousers
		
	7. 啟動zabbix-server
		systemctl start zabbix-server.service
		systemctl status zabbix-server.service

2.安裝zabbix-web(GUI)

這里我們安裝zabbix的GUI和zabbix server 在不同主機,在192.168.0.111;
(1)zabbix-web(GUI)依賴以下包,因為zabbix-web是php語言寫的:
	yum install php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml -y
(2) 安裝web GUI
	yum install -y zabbix-web-mysql zabbix-web
(3) 配置php時區參數,有以下(a),(b)兩種方式:	
	rpm ql zabbix-web # 默認會在/etc/httpd/conf.d下添加一個zabbix.conf文件,在此文件中修改時區為Asia/Shanghai  如下圖1
	(a)php.ini
	(b)/etc/httpd/conf.d/zabbix.conf
	vim /etc/httpd/conf.d/zabbix.conf
		php_value date.timezone Asia/Shanghai
	
(4)啟動httpd web服務
	systemctl start httpd.service
(5)訪問zabbix web頁面
	http://192.168.0.111/zabbix  # /etc/httpd/conf.d/zabbix.conf定義zabbix是web頁面的根目錄 如下圖2
	
	安裝后生成的配置文件在:/etc/zabbix/web/zabbix.conf.php

圖1:

圖2:

給zabbix-web配置數據庫連接:

在Next step遇到問題:

Please create database manually, and set the configuration parameters for connection to this database. Press “Next step” button when done.
問題來源:連接mariadb的時候總是連接不上
解決方法:創建zabbix數據庫的時候應該這樣創建:create database zabbix character set utf8 collate utf8_bin;
而我之前創建的時候是:create database zabbix character set utf8;

只好刪除之前創建的zabbix庫,重新創建zabbix庫,然后導入/usr/share/doc/zabbix-server-mysql-4.0.33/create.sql

配置成功!!!!

登錄zabbix web:

使用默認的Username和Password無法登錄zabbix web,因為他創建的Admin用戶是存在mysql數據庫中的,所以我們可以修改admin用戶的密碼,如下:

~]# mysql -h192.168.0.112 -uzabbix -pzabbix

#  進入mysql數據庫以后查詢users表
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> select userid,alias,passwd from users;
+--------+-------+----------------------------------+
| userid | alias | passwd                           |
+--------+-------+----------------------------------+
|      1 | Admin | 5fce1b3e34b520afeffb37ce08c7cd66 |
|      2 | guest | d41d8cd98f00b204e9800998ecf8427e |
+--------+-------+----------------------------------+
2 rows in set (0.00 sec)

#  生成一個新密碼MD5,admin是密碼
[root@zhang ~]# echo -n admin | openssl md5
(stdin)= 21232f297a57a5a743894a0e4a801fc3


update users set  passwd='21232f297a57a5a743894a0e4a801fc3' where userid = '1';

登錄后:

3.zabbix agent 安裝配置

現在在被監控主機上都需要安裝的包:
	zabbix-agent
	zabbix-sender
我們准備了包括監控端在內的四台虛擬機:
	192.168.0.11 #  zabbix-agent zabbix-sender
	192.168.0.111 # zabbix-web zabbix-web-mysql zabbix-get  zabbix-agent zabbix-sender
	192.168.0.112 # zabbix-server zabbix-server-mysql  zabbix-agent zabbix-sender
	192.168.0.113 # zabbix-agent zabbix-sender

在 192.168.0.112虛擬機將,zabbix源拷貝到 192.168.0.11和192.168.0.113主機上:
	scp -r /etc/yum.repos.d/zabbix.repo root@192.168.0.11:/etc/yum.repos.d/
	scp -r /etc/yum.repos.d/zabbix.repo root@192.168.0.113:/etc/yum.repos.d/
	
在192.168.0.11和192.168.0.113主機上,從阿里鏡像源下載包校驗key:
		curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
		curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

在四台主機上分別裝上 zabbix-agent zabbix-sender:
	yum install -y zabbix-agent zabbix-sender

程序環境:
	配置文件:/etc/zabbix/zabbix_agentd.conf
	Unit File:/usr/lib/systemd/system/zabbix-agent.service

cd /etc/zabbix
grep -i "^####" zabbix_agentd.conf

############ GENERAL PARAMETERS #################
##### Passive checks related  被動監控相關的配置
##### Active checks related   主動監控相關的配置
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS #######  用戶自定義的監控參數,UserParameter
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######
####### For advanced users - TLS ciphersuite selection criteria #######

############ GENERAL PARAMETERS #################
PidFile=
LogType=
DebugLevel=3
SourceIP=
EnableRemoteCommands=0  # 是否允許執行遠程命令
LogRemoteCommands=0
##### Passive checks related 
#Server=127.0.0.1  # 允許哪一台主機來采集數據,訪問控制授權的功能
Server=IP1,IP2,.....
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=3  # 預先生成的agent子進程的數量,

##### Active checks related 

# ServerActive=127.0.0.1  # 作為客戶端,主動報告給服務器端的IP
ServerActive=IP1,IP2,...
Hostname=  # 當前主機的主機名
HostnameItem=
HostMetadata=
HostMetadataItem=
RefreshActiveChecks=120
BufferSend=5
BufferSize=100
MaxLinesPerSecond=20

(3)啟動zabbix-agent服務
	systemctl start zabbix-agent  # 確保10050是監聽的


配置監控項

快速配置一個監控項:
	host groups-->host-->applications-->item-->triggers(events)-->action(conditions,operations)
	operations:remote command,alert
	
	item-->simple graph
	items-->graph
	grapps-->screen
	screens-->slide show


在zabbix-server主機(192.168.0.112):
	zabbix-get -h
	
	zabbix-get -s 192.168.0.111 -k "system.cpu.switches" # 內置的item,如下圖1.如果不滿足需求可以自定義。
		21772839
	zabbix_get -s 192.168.1.11 -k "net.if.in[eth0,packets]"
	zabbix_get -s 192.168.1.11 -k "net.if.out[eth0,packets]"
	zabbix_get -s 192.168.1.11 -k "net.if.in[eth0,bytes]"
	zabbix_get -s 192.168.1.11 -k "net.if.out[eth0,bytes]"
	
	前提是在對方主機的zabbix_agentd.conf文件中的server已經配置了當前主機的IP,並且對方主機已啟動了zabbix-agent服務。

圖1:

創建觸發器(trigger)

創建觸發器(trigger)
	"監控項"僅負責收集數據,而通常收集數據的目的還包括在某指標對應的數據超出合理范圍時給相關人員發送告警信息,“觸發器”正式用於為監控項所收集的數據定義閾值;
	
	每一個觸發器僅能關聯至一個監控項,但可以為一個監控項同時使用多個觸發器
		事實上,為一個監控項定義多個具有不同閾值的觸發器,可以實現不同級別的報警功能
	
	一個觸發器由一個表達式構成,它定義了監控項所擦去的數據的一個閾值
	
	一旦某次采集的數據超出了此觸發器定義的閾值,觸發器狀態將會轉換為“Problem”;而當采取的數據再次回歸至合理范圍內時,其狀態將重新返回到“OK”
	
	OK--> PROBLEM
	Recovery:PROBLEM --> OK
	
item > 100,TRUE,PROBLEM
		   FALSE,OK

觸發器表達式:
	觸發器表達式高度靈活,可以以之創建出非常復雜的測試條件
	基本的觸發器表達式格式如下所示
	{<server>:<key>.<function>(<parameter>)}<operator><constant>
		server:主機名稱;
		key:主機上關聯的相應監控項的key;
		function:評估采集到的數據是否在合理范圍內時所使用的函數,其評估過程可以根據采集的數據、當前事件及其它因素進行;
		目前,觸發器所支持的函數由avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等
		patameter:函數參數;大多數數值函數可以接受秒數為其參數,而如果在數值參數之前使用“#”作為前綴,則標識為最近幾次的取值,如sum(300)表示300秒內所有取值之和,而sum(#10)則表示最近10次取值之和;
		此外,avg、count、last、min和max還支持使用第二個參數,用於完成事件限定;例如,max(1h,7d)將返回一周之前的最大值;

觸發器之間存在依賴關系:主機依賴網絡設備,服務依賴於主機;

媒介類型(Media Types):
	報警信息的傳遞方式:
	類型:
		Email:郵件,需要定義發件人郵箱地址和SMTP服務器;
		Script:自定義腳本,此腳本有發送信息至相關用戶的功能;
		SMS:短信,僅對北美的運營商有效;jabber、Ez Texting

Action:
	conditions:觸發此動作的條件,一般通過“事件”觸發;
	operations:觸發條件滿足時要采取的動作;
		send message
		remote command
			功能:
				在agent所在的主機上運行用戶指定的命令或腳本來嘗試着恢復故障;例如:
					重啟服務:
					任何由用戶自定義的腳本;
			
			類型:
				IPMI命令
				custom script
				ssh
				telnet
				global script

觸發器支持的運算符

觸發器表達式例子

{zhang.ansible2.com:system.cpu.load[all,avg1].last(0)}>3
表示主機zhang.ansible2.com上所有CPU的過去1分鍾內的平均負載的最后一次取值大於3時將觸發狀態變換
對last函數來說,last(0)相當於last(#1)

模板

模板:
	主機配置模板,可鏈接至主機,從而實現主機的快速監控配置;
模板可繼承:
	在模板之上link其它模板即可;

從主機上刪除模板:
	unlink:反鏈接
	ulink and clear:反鏈接並清除數據;
	
模板可導出,也可以從指定文件導入;

宏:MACRO
	預設的文本替換模式;
	
	級別:
		全局宏:Administation-->Genaral-->Macros
		模板宏:Configuration--> Tempates-->TEMPLATE-->Macros
		主機宏:Configuration-->Hosts-->HOST-->Macros
	
	類型:
		內建:{MACRO_NAME}
		自定義:{$MACRO_NAME}
		
		命名方式:大寫字母、數字和下划線;
		
網絡發現:
	zabbix server掃描指定網絡范圍內的主機;
	
		發現方式:
			ip地址范圍:
				可用服務探測(ftp,ssh,http,...)
				zabbix_agentd的相應對某個key的請求;
				snmp_agent響應;
				
			一旦發現某主機,就會產生發現時間;
				事件有8類:
					Host,Service
					Up/Down,Discovered/Lost

			發現操作


網絡發現:接口添加

網絡發現中添加主機時會自動創建interface

	the services detected
		例如,如果基於SNMP檢測成功,則會創建SNMP接口
		
	如果某服務同事響應給了agent和SNMP,則兩種接口都會創建
	如果同一中發現機制(如agent)返回了非唯一數據,則第一個接口被識別為默認,其他的為額外接口
	即便是某主機開始時只有agent接口,后來又通過snmp發現了他,同樣會為其添加額外的snmp接口;
	不同的主機如果返回了相同的數據,則第一個主機將被添加,余下的主機會被當作第一個主機的額外接口;

zabbix web 菜單

菜單:
	Monitoring
	Inventory
	Reports
	Configuration
	Administration


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM