- 自定義key
- 網(wǎng)絡(luò)發(fā)現(xiàn)
- Web監(jiān)控
- 主動檢測
- 基于SNMP監(jiān)控
- 基于JMX監(jiān)控
- Zabbix Proxy
- Zabbix調(diào)優(yōu)
一、自定義key
自定義key:在zabbix agent端的配置文件上由用戶通過UserParameter指令定義的key
配置文件路徑:
編輯/etc/zabbix/zabbix_agentd.conf文件,或者
在/etc/zabbix/zabbix_agentd.d建立單獨(dú)文件語法格式:
不帶參數(shù):UserParameter=<key>,<command>
帶參數(shù):UserParameter=<key[*]>,<command>-
實(shí)驗(yàn)1:實(shí)現(xiàn)查看被監(jiān)控主機(jī)已使用內(nèi)存情況
本文中所有實(shí)驗(yàn)主機(jī)ip情況:
node0.hellopeiyang.com: 192.168.136.230, zabbix agent
node1.hellopieyang.com: 192.168.136.130, zabbix agent
node2.hellopeiyang.com: 192.168.136.131, zabbix server步驟1:在被監(jiān)控主機(jī)編輯配置文件
// 定義無參數(shù)的key vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf UserParameter=memory.used,free -m | awk '/^Mem/{print $3}' systemctl restart zabbix-agent.service- 步驟2:在zabbix的web管理界面增加items,手動輸入定義的key
-
實(shí)驗(yàn)2:通過一個帶參數(shù)的key實(shí)現(xiàn)查看被監(jiān)控主機(jī)多個內(nèi)存使用指標(biāo)
- 步驟1:在被監(jiān)控主機(jī)編輯配置文件
// 定義有參數(shù)的key,$1,$2...代表參數(shù) vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf UserParameter=memory.stats[*], cat /proc/meminfo | awk '/^$1/{print $$2}' // 當(dāng)command中出現(xiàn)$符號時,使用$$逃逸符代表屬于command命令本身而非參數(shù) systemctl restart zabbix-agent.service- 步驟2:在zabbix的web管理界面增加items,手動輸入定義的key,通過配置不同參數(shù),可以快速添加多個items
二、網(wǎng)絡(luò)發(fā)現(xiàn):
網(wǎng)絡(luò)發(fā)現(xiàn):zabbix server掃描指定網(wǎng)絡(luò)范圍內(nèi)的主機(jī),并作出響應(yīng)
發(fā)現(xiàn)方式:在ip地址范圍內(nèi)定期掃描
發(fā)現(xiàn)可用服務(wù)
ftp, ssh, http等協(xié)議
zabbix_agent的響應(yīng)
snmp_agent的響應(yīng)-
網(wǎng)絡(luò)發(fā)現(xiàn)分兩個階段:
- discovery:發(fā)現(xiàn),包含四種狀態(tài)
UP/DOWN, DICOVERED/LOST - actions:以discovery events為觸發(fā)條件,可以采取如下動作
send message:發(fā)消息
remote command:遠(yuǎn)程執(zhí)行命令
add/remove host:添加/刪除主機(jī)
enable/disable host:激活/禁用主機(jī)
add host to group:添加主機(jī)至主機(jī)組
link template to host:連接模板至主機(jī)
- discovery:發(fā)現(xiàn),包含四種狀態(tài)
-
實(shí)驗(yàn)3:在IP地址范圍內(nèi)發(fā)現(xiàn)主機(jī)后添加主機(jī),并將指定模板鏈接至主機(jī)
-
步驟1:配置發(fā)現(xiàn)規(guī)則,指定IP范圍、掃描間隔時間、檢測所用的key
實(shí)際生產(chǎn)環(huán)境的間隔時間1h,本實(shí)驗(yàn)為加快實(shí)驗(yàn)速度調(diào)至1min
步驟2:配置執(zhí)行動作,設(shè)置執(zhí)行本動作的條件為步驟1設(shè)置的發(fā)現(xiàn)規(guī)則值為Up
- 步驟3:設(shè)置具體的執(zhí)行動作:添加主機(jī),鏈接至模板
-
三、Web監(jiān)控:
功能:監(jiān)控指定的站點(diǎn)的資源下載速度,及頁面響應(yīng)時間,還有響應(yīng)代碼
基本概念:
web scenario:web場景,監(jiān)控站點(diǎn)
web step:web步驟,監(jiān)控頁面,每個頁面都自動配置3個內(nèi)建key,用于監(jiān)控內(nèi)建key:
web.test.in[Scenario,Step,bps]:傳輸速率
web.test.time[Scenario,Step]:響應(yīng)時長
web.test.rspcode[Scenario,Step]:響應(yīng)碼-
實(shí)驗(yàn)4:實(shí)現(xiàn)監(jiān)控站點(diǎn)
- 步驟1:建立web場景,指定更新間隔和訪問網(wǎng)頁的瀏覽器信息
- 步驟2:建立web步驟,分別給站點(diǎn)的不同網(wǎng)頁添加監(jiān)控,可以要求只返回頭部,要求返回的狀態(tài)碼為200
- 步驟3:最終配置完成如圖
-
步驟4:可以在monitoring查看web監(jiān)控狀態(tài)
四、主動檢測:
(一)主動檢測:
主動檢測:agent向server請求與自己相關(guān)監(jiān)控項(xiàng)配置,主動地將server配置的監(jiān)控項(xiàng)相關(guān)的數(shù)據(jù)發(fā)送給server
agent端所需要基本配置:
ServerActive=
Hostname=
HostnameItem=
Hostname和HostnameItem同時存在時,以HostnameItem值為準(zhǔn)-
實(shí)驗(yàn)5:實(shí)現(xiàn)主動檢測
- 步驟1:編輯配置文件,確保開啟主動檢測功能
ServerActive=192.168.136.131 Hostname=node0.hellopeiyang.com systemctl restart zabbix-agent- 步驟2:定義item,選擇active模式
- 步驟3:可以看到監(jiān)控情況
(二)zabbix_sender發(fā)送數(shù)據(jù):
server端配置:
item type為"zabbix trapper",定義一個不與其它已有key沖突的keyagent端zabbix_sender命令格式:
zabbix_sender
-z zabbix_server_ip
-p zabbix_server_port
-s zabbix_agent_hostname
-k key
-o value-
實(shí)驗(yàn)6:使用zabbix_sender主動向zabbix server發(fā)送數(shù)據(jù)
- 步驟1:定義items,選擇zabbix trapper模式
步驟2:agent端向zabbix server發(fā)送指定數(shù)據(jù)
zabbix_sender -z 192.168.136.131 -p 10051 -s node0.hellopeiyang.com -k send.test.data -o 384步驟3:server端成功接收數(shù)據(jù)
五、基于SNMP監(jiān)控:
(一)SNMP:簡單網(wǎng)絡(luò)管理協(xié)議
支持的網(wǎng)管操作:get, getnext(讀)、set(寫)、trap(陷阱)
讀、寫操作是端口:161/udp (get, set), 162/udp (trap)
發(fā)展歷程:
v1: 1989
v2c: 1993,目前最廣泛使用
v3: 1998-
關(guān)鍵概念:
- NMS:網(wǎng)絡(luò)管理系統(tǒng),向管理員提供界面以獲取與改變設(shè)備的配置、信息、狀態(tài)、操作等信息;NMS與Agent進(jìn)行通信,執(zhí)行相應(yīng)的Set和Get操作,并接收代理發(fā)過來的警報(Trap)
- Agent:代理,負(fù)責(zé)NMS和設(shè)備SNMP操作的傳遞
- MIB:管理信息庫,定義代理進(jìn)程中所有可被查詢和修改的參數(shù)
- OID:對象識別符,唯一指定管理信息庫MIB中可訪問的網(wǎng)絡(luò)設(shè)備及其屬性
經(jīng)常使用的OID:
.1.3.6.1.2.1.
1.1.0:系統(tǒng)描述信息,SysDesc
1.3.0:監(jiān)控時間, SysUptime
1.5.0:主機(jī)名,SysName
1.7.0:主機(jī)提供的服務(wù),SysService
2.1.0:網(wǎng)絡(luò)接口數(shù)目
2.2.1.2:網(wǎng)絡(luò)接口的描述信息
2.2.1.3:網(wǎng)絡(luò)接口類型
(二)Linux啟用snmp
安裝包:net-snmp net-snmp-utils
配置文件:
/etc/snmp/snmpd.conf,定義ACL(允許指定范圍OID能被讀?。?/p>啟動服務(wù):
systemctl start snmpd.service測試工具:
snmpget:獲取指定OID信息
snmpwalk:獲取指定OID根節(jié)點(diǎn)下所有OID葉節(jié)點(diǎn)的信息,遍歷操作
options: -v, 協(xié)議版本 -c 認(rèn)證,語法如下:
snmpget -v 2c -c public HOST OID
snmpwalk -v 2c -c public HOST OID
(三)實(shí)驗(yàn):實(shí)現(xiàn)使用snmp v2協(xié)議監(jiān)控
-
實(shí)驗(yàn)7:實(shí)現(xiàn)使用snmp v2協(xié)議監(jiān)控指定網(wǎng)卡入棧的數(shù)據(jù)包數(shù)
- 步驟1:啟用snmp服務(wù),設(shè)置允許遠(yuǎn)程讀操作的OID范圍
yum install net-snmp net-snmp-utils vim /etc/snmp/snmpd.conf view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.2 // 網(wǎng)絡(luò)接口的相關(guān)數(shù)據(jù) view systemview included .1.3.6.1.4.1.2021 // 系統(tǒng)資源負(fù)載:memory, disk io, cpu load view systemview included .1.3.6.1.2.1.25.1.1 systemctl start snmpd.service- 步驟2:在zabbix-server上增加host的snmp監(jiān)控接口
- 步驟3:增加items,使用snmp v2協(xié)議監(jiān)控,key值可以任意指定,監(jiān)控信息由OID指定,按照 /etc/snmp/snmpd.conf中的信息設(shè)置認(rèn)證community
- 步驟4:稍候片刻,可以看到監(jiān)控信息圖
六、基于JMX監(jiān)控
基本概念:
JMX:查詢JVM信息的專用接口
Java-gateway:用于監(jiān)控JMX應(yīng)用的程序JMX檢測自帶key:
jmx[object_name,attribute_name]
object name - 它代表MBean的對象名稱
attribute name - 一個MBean屬性名稱,可選的復(fù)合數(shù)據(jù)字段名稱以點(diǎn)分隔-
實(shí)驗(yàn)8:實(shí)現(xiàn)通過JMX監(jiān)控Tomcat程序的堆內(nèi)存使用情況
- 步驟1:tomcat主機(jī)設(shè)置:開啟JMX監(jiān)控tomcat
vim /etc/sysconfig/tomcat CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.136.230 -Djavax.management.builder.initial= -Dcom.sun.management.jmx remote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" systemctl start tomcat.service- 步驟2:zabbix-java-gateway主機(jī)設(shè)置
zabbix-java-gateway可以搭建在zabbix-server上,也可以單獨(dú)搭建
本實(shí)驗(yàn)將其搭建在zabbix-server上
yum install zabbix-java-gateway vim /etc/zabbix/zabbix_java_gateway.conf // 默認(rèn)設(shè)置即可,不需修改 LISTEN_IP="0.0.0.0" LISTEN_PORT=10052 systemctl start zabbix-java-gateway.service- 步驟3:zabbix-server主機(jī)設(shè)置,開啟java gateway功能
vim /etc/zabbix/zabbix_server.conf JavaGateway=192.168.136.131 JavaGatewayPort=10052 StartJavaPollers=5 systemctl restart zabbix-server.service- 步驟4:在zabbix-server上增加host的jmx監(jiān)控接口
- 步驟5:增加items,使用JMX agent監(jiān)控
- 步驟6:稍候片刻,可以看到監(jiān)控信息圖
七、Zabbix Proxy
降低zabbix server的network I/O的方法:
采用主動檢測
通過proxy代理zabbix proxy的原理:
由proxy收集本網(wǎng)段被監(jiān)控主機(jī)的信息,以一定間隔時間向zabbix server同步信息zabbix proxy的作用:
降低zabbix server的network I/O
實(shí)現(xiàn)分布式監(jiān)控
解決跨網(wǎng)監(jiān)控很難穿越防火墻的問題-
實(shí)驗(yàn)9:實(shí)現(xiàn)zabbix proxy監(jiān)控
實(shí)驗(yàn)環(huán)境:
node1.hellopeiyang.com: 192.168.136.130, zabbix agent
node2.hellopeiyang.com: 192.168.136.131, zabbix server
node3.hellopeiyang.com: 192.168.136.132, zabbix proxy步驟1:安裝zabbix-proxy,并配置數(shù)據(jù)庫
// 安裝程序包 yum install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender yum install mariadb-server // 數(shù)據(jù)庫服務(wù)器配置 vim /etc/my.cnf.d/server.cnf [server] innodb_file_per_table = ON skip_name_resolve = ON max_connections = 2000 innodb_buffer_pool_size = 256M systemctl start mariadb mysql_secure_installation // 建立zabbix proxy數(shù)據(jù)庫 mysql -uroot -pmagedu MariaDB [(none)]> create database zbxproxydb; MariaDB [(none)]> grant all on zbxproxydb.* to zbxproxyuser@'192.168.136.%' identified by 'centos'; cp /usr/share/doc/zabbix-proxy-mysql-3.4.4/schema.sql.gz /root gzip -d /root/schema.sql.gz mysql -uzbxproxyuser -pcentos -h192.168.136.132 zbxproxydb < /root/schema.sql- 步驟2:配置zabbix proxy
vim /etc/zabbix/zabbix_proxy.conf Server=192.168.136.131 // zabbix server主機(jī)地址 ServerPort=10051 // zabbix server監(jiān)聽端口,默認(rèn)值 // 當(dāng)前代理服務(wù)器的名稱;在server添加proxy時,必須使用此處指定的名稱 Hostname=node4.hellopeiyang.com // 數(shù)據(jù)庫設(shè)置 DBHost=192.168.136.132 DBName=zbxproxydb DBUser=zbxproxyuser DBPassword=centos ConfigFrequency=10 // proxy向server同步配置數(shù)據(jù)的時間間隔(s) DataSenderFrequency=1 // proxy向server發(fā)送監(jiān)控?cái)?shù)據(jù)的時間間隔(s) systemctl start zabbix-proxy.service- 步驟3:配置zabbix agent
yum install zabbix-agent zabbix-sender vim /etc/zabbix/zabbix_agentd.conf Server=192.168.136.132 // zabbix proxy的ip地址 ListenPort=10050 ListenIP=0.0.0.0 ServerActive=192.168.136.132 Hostname=node1.hellopeiyang.com systemctl start zabbix-agent.service- 步驟4:在server端添加此porxy
- 步驟5:在server端配置通過此proxy監(jiān)控的主機(jī)
- 步驟6:添加items
建議使用主動檢測"Zabbix agent (active)"
- 步驟7: 稍候片刻,可以看到監(jiān)控信息圖
八、Zabbix調(diào)優(yōu)
zabbix調(diào)優(yōu)的目的:
降低nvps(new values per second)值
降低zabbix server的磁盤I/O與網(wǎng)絡(luò)I/O
降低mysql數(shù)據(jù)庫的讀寫壓力zabbix調(diào)優(yōu)方向:
數(shù)據(jù)的調(diào)整
server的調(diào)整
數(shù)據(jù)庫的調(diào)整-
數(shù)據(jù)調(diào)優(yōu)要點(diǎn):
- 歷史數(shù)據(jù)不要保存太長時長
- 盡量讓數(shù)據(jù)緩存在數(shù)據(jù)庫服務(wù)器的內(nèi)存中
- 觸發(fā)器表達(dá)式:
減少使用min(), max(), avg()
盡量使用last(),nodata() - 數(shù)據(jù)收集:
polling較慢,減少使用SNMP/agentless/agent
盡量使用trapping, agent(active) - 數(shù)據(jù)類型:
文本型數(shù)據(jù)處理速度較慢,盡量少收集類型為text或string類型的數(shù)據(jù)
多使用類型為numeric的
-
zabbix服務(wù)器的進(jìn)程:
服務(wù)器組件的數(shù)量,在/etc/zabbix/zabbix_server.conf
alerter, discoverer, escalator, http poller, housekeeper, icmp pinger, ipmi polller, poller, trapper, configration syncer, ...設(shè)定合理的緩存大小
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
TrendCacheSize=4M
ValueCacheSize=4M
數(shù)據(jù)庫優(yōu)化:分表
主要分為以下三個方面的表:
history_*
trends*
events*

























