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