項目實戰12.2—企業級監控工具應用實戰-zabbix操做進階
1、User parameters 用戶參數
一、介紹和用法
有時,你可能想要運行一個代理檢查,而不是Zabbix的預約義java
你能夠編寫一個命令來檢索須要的數據,並將其包含在代理配置文件("UserParameter"配置參數)的用戶參數中node
UserParameter=<key>,<command>linux
A user parameter also contains a key 一個用戶參數也包含一個鍵nginx
The key will be necessary when configuring an item 在配置監控項時,key是必需的git
Note: Need to restart the agent 注意:須要從新啓動agent 服務github
二、用法展現
① free | awk '/^Mem/{print $3}' 本身須要查找的參數的命令
cd /etc/zabbix/zabbix_agentd.d/
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
③ systemctl restart zabbix-agent.service 重啓agent 服務
zabbix_get -s 192.168.30.7 -p 10050 -k "memory.used"
三、用法升級
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'
分析:$$2:表示不是前邊調位置參數的$2 ,而是awk 的參數$2
(2)在zabbix-server 端,查詢使用這個用戶參數的key
① 添加Memory Total 的item監控項,使用memory.stats[MemTotal] 的用戶參數
② clone 克隆Memory Total 建立Memory Free 的監控項
③ 建立Memory Buffers 的item 監控項,使用 memory.stats[Buffers] 的key
四、使用用戶參數監控php-fpm 服務的狀態
② vim /etc/php-fpm.d/www.conf 打開php-fpm的狀態頁面
user = nginx group = nginx pm.status_path = /php-fpm-status #php-fpm 的狀態監測頁面 ping.path = /ping #ping 接口,存活狀態是否ok ping.response = pong #響應內容pong
③ systemctl start php-fpm 開啓服務
(2)設置nginx ,設置代理php,和php-fpm的狀態頁面匹配
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* /(php-fpm-status|ping) { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; include fastcgi_params; allow 127.0.0.1; #由於這個頁面很重要,全部需加訪問控制 deny all; access_log off; #訪問這個頁面就不用記錄日誌了 }
② systemctl start nginx 開啓nginx服務
① 查詢 curl 192.168.30.7/php-fpm-status
cd /etc/zabbix/zabbix_agentd.d/
UserParameter=php-fpm.stats[*],curl -s http://127.0.0.1/php-fpm-status | awk '/^$1/{print $$NF}'
分析:設置用戶參數爲php-fpm.stats[*],$1爲第一個參數;$$NF爲awk中的參數,倒數第一列
systemctl restart zabbix-agent
(4)在zabbix-server 端,查詢使用這個用戶參數的key
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[idle]"
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[active]"
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[max active]"
(5)建立一個模板,在模板上建立4個item監控項,使用定義的用戶參數
④ fpm.stats[max active processes]
③ php-fpm max active processes
/etc/zabbix/zabbix_agentd.d/php_status.conf
2、Network discovery 網絡發現
一、介紹
網絡發現:zabbix server掃描指定網絡範圍內的主機;
網絡發現是zabbix 最具特點的功能之一,它可以根據用戶事先定義的規則自動添加監控的主機或服務等
加快Zabbix部署
簡化管理
可用服務(ftp, ssh, http, ...)
zabbix_agent的響應;
snmp_agent的響應;
(3)網絡發現一般包含兩個階段:discovery發現 和actions動做
Zabbix按期掃描網絡發現規則中定義的IP範圍;檢查的頻率對於每一個規則都是可配置的
由網絡發現模塊執行的服務和主機(IP)的每一個檢查都會生成一個發現事件
② actions:網絡發現中的事件能夠觸發action,從而自動執行指定的操做,把discvery events看成前提條件;
Sending notifications 發送通知
Adding/removing hosts 添加/刪除主機
Enabling/disabling hosts 啓用/禁用host
Adding hosts to a group 向組中添加主機
Removing hosts from a group 移除組中的主機
Linking hosts to/unlinking from a template 從模板連接主機或取消連接
Executing remote scripts 執行遠程腳本
這些事件的配置還能夠基於設備的類型、IP 、狀態、上線/ 離線等進行配置
若是基於SNMP 檢測成功,則會建立SNMP 接口
若是某服務同時響應給了agent 和SNMP ,則兩種接口都會建立
若是同一種發現機制( 如agent) 返回了非唯一數據,則第一個接口被識別爲默認,其它的爲額外接口
即使是某主機開始時只有agent 接口,後來又經過snmp 發現了它,一樣會爲其添加額外的snmp 接口
不一樣的主機若是返回了相同的數據,則第一個主機將被添加,餘下的主機會被看成第一個主機的額外接口
二、配置網絡發現Network discovery
yum -y install zabbix-agent zabbix-sender
② 設置agent 配置,能夠把以前設置好的node1的配置傳過來
vim /etc/zabbix/zabbix_agentd.conf
Hostname=node2.along.com #只需修改hostname
zabbix ALL=(ALL) NOPASSWD: ALL
① key:zabbix_get -s 192.168.30.2 -p 10050 -k "system.hostname"
② 更新間隔:1h就好,不要掃描太過頻繁,掃描整個網段,太廢資源;這裏爲了實驗,設爲1m
c) 配置action 完成,默認是disabled 停用的
(5)若是本身須要添加的主機已經掃描添加完成,就能夠關閉網絡掃描了,由於太耗資源
3、web監控
一、介紹
① Web監控:監控指定的站點的資源下載速度,及頁面響應時間,還有響應代碼;
web Scenario: web場景(站點)
web page :web頁面,一個場景有多個頁面
內建key:要測一個頁面,要測三個步驟(下邊3個內建key)
web.test.in[Scenario,Step,bps]:傳輸速率
web.test.time[Scenario,Step]: 響應時長
web.test.rspcode[Scenario,Step]:響應碼
二、建立設置web場景
a) 設置名爲home page,URL爲http://192.168.30.7/index.html 的web頁面
b) 設置名爲fpm status,URL爲http://192.168.30.7/fpm-status 的web頁面
三、查看測試
4、主動/被動 監控
一、介紹
被動檢測:相對於agent而言;agent, server向agent請求獲取配置的各監控項相關的數據,agent接收請求、獲取數據並響應給server;
主動檢測:相對於agent而言;agent(active),agent向server請求與本身相關監控項配置,主動地將server配置的監控項相關的數據發送給server;
主動監控能極大節約監控server 的資源。
(2)zabbix_sender發送數據:實現人工生成數據,發給server端
① zabbix server上的某主機上,直接定義Item時隨便定義一個不與其它已有key衝突的key便可,即item type爲"zabbix trapper";
-z zabbix_server_ip
-p zabbix_server_port
-s zabbix_agent_hostname
-k key
-o value 值
二、設置一個經過內建key發送數據的主動監控
ServerActive=192.168.30.107 給哪一個監控server 發送數據 Hostname=node1.along.com 本身的主機名,假設主機定死了,不設置下一項 #HostnameItem= 若是本身的主機名易變更,這一項至關於key同樣去匹配
由於key:system.cpu.switches :上下文的數量進行切換,它返回一個整數值。爲了監控效果,選擇下一秒減上一秒的值做爲監控
三、設置一個經過命令zabbix_sender發送數據的主動監控
(1)配置一個zabbix traper(採集器) 的item 監控項
5、基於SNMP監控(瞭解)
一、介紹
三種通訊方式:讀(get, getnext)、寫(set)、trap(陷阱);
161/udp
162/udp
v1: 1989
v2c: 1993
v3: 1998
MIB:Management Information Base 信息管理基礎
yum install net-snmp net-snmp-utils
/etc/snmp/snmpd.conf
systemctl start snmpd 被監控端開啓的服務
systemctl start snmptrapd 監控端開啓的服務(若是容許被監控端啓動主動監控時啓用)
① 定義認證符,將社區名稱"public"映射爲"安全名稱"
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:網絡接口類型
……
# snmpget -v 2c -c public HOST OID
# snmpwalk -v 2c -c public HOST OID 經過這個端口查詢到的數據,全列出了
二、配置SNMP監控
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
snmpget -v 2c -c public 192.168.30.2 .1.3.6.1.2.1.1.3.0
snmpget -v 2c -c public 192.168.30.2 .1.3.6.1.2.1.1.5.0
(4)在node2上加一個 Template OS Linux SNMPv2 模板
三、設置入站出站packets 的SNMP監控
① 把交換機、路由器的SNMP 把對應的OID的分支啓用起來
③ 咱們要監控的某一數據:如交換機的某一個接口流量、報文,發送、傳入傳出的報文數有多少個;傳入傳出的字節數有多少個,把OID取出來,保存
interface traffic packets(out)
6、JMX接口
一、介紹
Java虛擬機(JVM)具備內置的插裝,使您可以使用JMX監視和管理它。您還可使用JMX監視工具化的應用程序。
安裝 zabbix-java-gateway程序包,啓動服務;
yum -y install zabbix-java-gateway
JavaGateway=172.16.0.70
JavaGatewayPort=10052
StartJavaPollers=5 #監控項
監控tomcat:
/etc/sysconfig/tomcat,添加
CATALINA_OPTS="-Djava.rmi.server.hostname=TOMCAT_SERVER_IP -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" #啓用JVM接口,默認沒有啓用
添加監控項:
jmx[object_name,attribute_name]
object name - 它表明MBean的對象名稱
attribute name - 一個MBean屬性名稱,可選的複合數據字段名稱以點分隔
示例:
jmx["java.lang:type=Memory","HeapMemoryUsage.used"]
④ jmx的詳細文檔:https://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html
二、配置JVM接口監控
yum -y install java-1.8.0-openjdk-devel tomcat-admin-webapps tomcat-docs-webapp
② 加CATALINA_OPTS= #啓用JVM接口,默認沒有啓用
CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.30.2 -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
(2)在zabbix-server 端,安裝配置java-gateway
yum -y install zabbix-java-gateway
/etc/zabbix/zabbix_java_gateway.conf 安裝完後,會生成一個java_gateway 的配置文件
systemctl start zabbix-java-gateway.service 不用修改,直接開啓服務
② 修改server 配置,開啓java-gateway的配置
vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.30.107 JavaGatewayPort=10052 StartJavaPollers=5 #打開5個監控項
③ systemctl restart zabbix-server 重啓zabbix-server 服務
(4)本身定義一個堆內存使用的監控項,基於JVM接口(不必,使用模板就好)
7、分佈式監控
一、介紹
proxy and node
Server-agent
Server-Node-agent
Server-Proxy-agent
server-node-agent
server-proxy-agent
建立、受權用戶、導入schema.sql;
Server=
zabbix server主機地址;
Hostname=
當前代理服務器的名稱;在server添加proxy時,必須使用此處指定的名稱;
=須要事先確保server能解析此名稱;
DBHost=
DBName=
DBUser=
DBPassword=
ConfigFrequency=10
DataSenderFrequency=1
注意:zabbix agent端要容許zabbix proxy主機執行數據採集操做:
二、實現分佈式zabbix proxy監控
③ 設置主機名 hostnamectl set-hostname zbproxy.along.com
④ vim /etc/hosts 每一個機器都設置hosts,以解析主機名;DNS也行
192.168.30.107 server.along.com
192.168.30.3 node3.along.com zbproxy.along.com
機器名稱 |
IP配置 |
服務角色 |
zabbix-server |
192.168.30.107 |
監控 |
agent-node1 |
192.168.30.7 |
被監控端 |
agent-node2 |
192.168.30.2 |
被監控端 |
node3 |
192.168.30.3 |
代理proxy |
zabbix-server 經過代理node3 監控node2
[server] skip_name_resolve = on innodb_file_per_table = on innodb_buffer_pool_size = 256M max_connections = 2000 log-bin = master-log
② systemctl start mariadb 開啓服務
MariaDB [(none)]> create database zbxproxydb character set 'utf8'; MariaDB [(none)]> grant all on zbxproxydb.* to 'zbxproxyuser'@'192.168.30.%' identified by 'zbxproxypass'; MariaDB [(none)]> flush privileges;
(3)在node3 上下載zabbix 相關的包,主要是代理proxy的包
yum -y install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender
zabbix-proxy-mysql 包裏帶有,導入數據的文件
cp /usr/share/doc/zabbix-proxy-mysql-3.4.4/schema.sql.gz ./ 複製
mysql -root -p zbxproxydb < schema.sql 導入數據
① vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.30.107 #server 的IP ServerPort=10051 #server 的端口 Hostname=zbxproxy.along.com #主機名 ListenPort=10051 #proxy本身的監聽端口 EnableRemoteCommands=1 #容許遠程命令 LogRemoteCommands=1 #記錄遠程命令的日誌 數據的配置 DBHost=192.168.30.3 DBName=zbxproxydb DBUser=zbxproxyuser DBPassword=zbxproxypass ConfigFrequency=30 #多長時間,去服務端拖一次有本身監控的操做配置;爲了實驗更快的生效,這裏設置30秒,默認3600s DataSenderFrequency=1 #每一秒向server 端發一次數據,發送頻度
② systemctl start zabbix-proxy 開啓服務
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.30.107,192.168.30.3 ServerActive=192.168.30.107,192.168.30.3
systemctl restart zabbix-agent 啓動服務
8、查詢使用網上模板監控
一、找官方的share 分享網站
https://cn.bing.com/ 搜索 zabbix share
二、在node1 上使用此模板
vim /etc/nginx/nginx.conf 按照網頁的操做指示
location /stub_status { stub_status on; access_log off; # allow 127.0.0.1; #爲了操做方便,我取消的訪問控制 # deny all; }
wget https://raw.githubusercontent.com/oscm/zabbix/master/nginx/nginx.sh 從網頁上獲取腳本
cd /etc/zabbix/zabbix_agentd.d/
wget https://raw.githubusercontent.com/oscm/zabbix/master/nginx/userparameter_nginx.conf 很短,本身寫也行
(4)在windows 上下載模板,並導入這server 的模板中
wget https://raw.githubusercontent.com/oscm/zabbix/master/nginx/zbx_export_templates.xml 能夠如今linux上下載,再sz 導出到windows上
9、zabbix-server 監控本身,數據庫,nginx
一、下載安裝,配置agent
vim /etc/zabbix/zabbix_agentd.conf 配置agent
EnableRemoteCommands=1 容許遠程命令 LogRemoteCommands=1 記錄遠程命令 Server=127.0.0.1 ServerActive=127.0.0.1 Hostname=server.along.com
2、自動生成Zabbix server 的主機
3、在主機中添加模板
4、啓用Zabbix server
5、監控到數據
10、調優
一、調優
歷史數據不要保存太長時長;
儘可能讓數據緩存在數據庫服務器的內存中;
② 觸發器表達式:減小使用聚合函數 min(), max(), avg();儘可能使用last(),nodata();
由於聚合函數,要運算
③ 數據收集:polling較慢(減小使用SNMP/agentless/agent);儘可能使用trapping(agent(active)主動監控);
④ 數據類型:文本型數據處理速度較慢;儘可能少收集類型爲文本 text或string類型的數據;多使用類型爲numeric 數值型數據 的;
二、zabbix服務器的進程
alerter, discoverer, escalator, http poller, hourekeeper, icmp pinger, ipmi polller, poller, trapper, configration syncer, ...
StartPollers=60
StartPingers=10
...
StartDBSyncer=5
...
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
TrendCacheSize=4M
ValueCacheSize=4M
分表:
history_*
trends*
events*
三、其它解決方案
exporter:收集
alertmanager:
openfalcon