Zabbix簡介
官方網站:http://www.zabbix.com/
Zabbix 是企業級監控系統的開源解決方案,是一個基于 WEB 界面的分布式監控服務器。
主要特點:
Zabbix 安裝不配置簡單,學習成本低,支持多語言(包括中文),免費開源,自動發現服務器與網絡設備,分布式監視,良好的 WEB 界面交互等通知功能。
Zabbix 主要監控服務器:CPU 負載、內存使用、磁盤使用、網絡狀態、端口監視、日志監視。
Zabbix 運行機制
Zabbix Server 可以通過 SNMP,Zabbix agent,Ping,端口監視等方法監控服務器狀態。可以在 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows 多平臺運行。
Zabbix Agent 安裝在被監控的服務器上,主要完成對內存,CPU,磁盤等信息收集。
Agent [?e?d??nt] 代理人
Zabbix 運行過程圖
Zabbix 運行過程圖
(1)Agent 從服務器中收集相關數據,傳送給 Zabbix Server
(2)Server 把數據存儲到數據庫中
(3)Server 把數據分析之后以 Web 頁面,展示出來。
zabbix-server 監聽端口:10051 ; Agent 監控端口 10050 。
服務端安裝 Zabbix Server 和 Zabbix Agent 兩個服務,客戶端只安裝 Zabbix Agent 一個服務。
Zabbix 服務安裝部署及監控配置
安裝 LAMP 環境
我們需要先構建 LAMP 的環境,因為 Zabbix 通過 PHP 頁面展示數據。
1、安裝 lamp 環境
yum -y install httpd mariadb mariadb-server
yum install centos-release-scl
#安裝官方擴展源
yum -y install rh-php72
#安裝zabbix5.0所需rh-php-72
2、安裝 zabbix 需要的 php 庫
后續安zabbix5.0要求安裝
安裝 Zabbix-server
1、安裝 zabbix yum 源
**注:**zabbix 官方源在中國無法使用,而且每個人網絡環境無法保障,所以我們可以選擇配置本地 yum源進行離線安裝。
xshell上傳所需rpm包
清華大學鏡像源下載,附地址:
https://mirrors.tuna.tsinghua.edu.cn/zabbix/
yum源
yum -y install https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
依次安裝
依賴包裝一下
yum install OpenIPMI OpenIPMI-libs OpenIPMI-modalias
unixODBC fping -y
rpm -ivh 這邊不作詳細描述
zabbix-agent #客戶端
zabbix-web #zabbix的web頁面
zabbix-server-mysql #服務器包
zabbix-apache-conf #Apache conf.d下配置文件 ( 4.4裝完web-mysql httpd配置文件下會有zabbix.conf 5.0的話需要單獨安裝)
server安裝過程中會提示需要php依賴。
zabbix-web-deps-scl 這個需要php擴展包若干。
rh-php72-php-mysqlnd
rh-php72-php-bcmath rh-php72-php-fpm rh-php72-php-gd rh-php72-php-ldap rh-php72-php-mbstring
yum -y install rh-php72-php-mysqlnd
yum -y install rh-php72-php-bcmath rh-php72-php-fpm rh-php72-php-gd rh-php72-php-ldap rh-php72-php-mbstring
依賴解決之后 zabbix5.0所需六個包全部裝好。
配置Zabbix Server
啟動數據庫
systemctl restart mariadb.service
systemctl enable mariadb.service
systemctl stop firewalld && systemctl disable firewalld #關閉防火墻
創建初始數據庫
mysql -uroot
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
**注:**character set utf8:設置數據庫的默認字符集編碼為 utf8 ;
collate utf_bin:是以二進制值比較,也就是區分大小寫,collate 是核對的意思
character [?k?r?kt??] 特征 ; collate [k??le?t] 核對,整理
MariaDB [(none)]>
grant all privileges on zabbix.* to zabbix@localhost identified by
'password';
**注:**創建 zabbix 用戶,密碼是 passwod
MariaDB [(none)]> exit;
zabbix表導入mariadb
zcat /usr/share/doc/zabbix-server-mysql-4.4.6/create.sql.gz |
mysql -u zabbix -p zabbix
Enter password: 輸入 password
zcat 命令 用于不真正解壓縮文件,就能顯示壓縮包中文件的內容的場合。
cat直接查看為亂碼
可登錄數據庫查看導入的表
mysql -u root -p zabbix
修改zabbix配置文件
vim /etc/zabbix/zabbix_server.conf
91 # DBHost=localhost #數據庫的 IP 地址 ,默認就可以
100 DBName=zabbix #數據庫名,默認就可以
116 DBUser=zabbix #違接數據庫授的用戶是 zabbix,默認就可以
改:124 # DBPassword=為:DBPassword=password #mysql 用戶 zabbix 的密碼 password
vim /etc/httpd/conf.d/zabbix.conf
#5.0不安裝zabbix-apache-conf-scl 沒有這個配置文件
Apache Alias 網站別名作用:為站點 URI 定義一個路徑映射關系。
當訪問http://192.168.x.x/zabbix目錄下的文件時,會直接從服務器/usr/share/zabbix 目錄下訪問對應的文件。/usr/share/zabbix 下存儲著 zabbix web 網站代碼。
4.4版本需要在該配置文件中更改時區。
改:20 # php_value date.timezone Europe/Riga
為:20 php_value date.timezone Asia/Shanghai
監控Zabbix Server本身
vim /etc/zabbix/zabbix_agentd.conf
119 Server=127.0.0.1 #指定 zabbix服務器的 IP 地址
160 ServerActive=127.0.0.1 #開啟主動模式
171 Hostname=Zabbix server
改:330 # UnsafeUserParameters=0
為:330 # UnsafeUserParameters=0 #不安全的用戶參數。是否允許自定義腳本傳遞特殊字符作為參數,通常不用開。
擴展:主動模式流程如下:
(1)、Agent 主動找 server 要需要采集的數據
(2)、Server 響應 Agent,發送要采的數據內容
(3)、Agent 開始周期性地收集數據
后期可以在配置時指定客戶端主動模式。
安裝Zabbix-Wbe前端頁面
啟動服務
systemctl restart zabbix-server zabbix-agent httpd mariadb rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd mariadb rh-php72-php-fpm
瀏覽器訪問
http://192.168.x.x/zabbix
開始檢查環境,確認所有選項都為 ok。
這里需要修改php.ini 時區
如果不 ok,可以編輯 php.ini 文件,修改環境
vim /etc/php.ini
改: post_max_size=8M
為: post_max_size=16M
改: max_execution_time=30
為: max_execution_time=300
改: max_input_time=60
為: max_input_time=300
改: ;date.timezone=為: date.timezone=Asia/Shanghai
#輸入用于違接數據庫的詳細信息。Zabbix 數據庫必須已經創建。
#請輸入 Zabbix 服務器的主機名戒主機 IP 地址和端口號,以及安裝的名稱(可選)。
端口0為默認3306
下面兩頁下一步 忘記截圖
登錄Zabbix并配置修改語音為中文 默認用戶名為Admin,密碼zabbix
點擊左下角用戶頭像 更改語言為中文。
暫時安裝就這些。
配置監控進程主機
安裝agent客戶端
rpm -ivh zabbix-agent-5.0.0-1.el7.x86_64.rpm
配置Agentd的配置文件
vim /etc/zabbix/zabbix_agentd.conf
改:Server=127.0.0.1
為:Server=192.168.x.x #zabbix server 地址,可以多個,用“,”隔開
改:ServerActive=127.0.0.1
為:ServerActive=192.168.x.x #主動檢查本主機的數據發送給 Zabbix Server
改:Hostname=Zabbix server
為:Hostname=客戶端ip
啟動服務
systemctl start zabbix-agent && systemctl enable zabbix-agent
netstat -lntp | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 5512/zabbix_agentd
tcp6 0 0 :::10050 :::*
在服務端測試通訊
zabbix_get 命令是在 server 端用來檢查 agent 端的一個命令,在添加完主機或者觸發器后,不能正常獲得數據,可以用 zabbix_get 來檢查能否采集到數據,以便判斷問題所在。
zabbix_get 參數說明:
-s --host: 指定客戶端主機名或者 IP
-p --port:客戶端端口,默認 10050
-I --source-address:指定源 IP,寫上 zabbix server 的 ip 地址即可,一般留空,服務器如果有多ip 的時候,你指定一個。
-k --key:你想獲取的 key
zabbix_get -s 192.168.43.42 -p 10050 -k system.uname
Linux xxxxx 3.10.0-693.el7.x86_64 xxxxxxxxxxxxxx
以上可以獲取對方系統版本則證明沒有問題
如果不知道 key 參數可以使用 zabbix_agentd -p 尋找自己想要找的參數
zabbix_agentd -p | grep system.cpu.load
system.cpu.load[all,avg1]
zabbix_get -s 192.168.43.42 -p 10050 -k system.cpu.load[all,avg1]
0.000000
將客戶端主機添加到zabbix服務器上并監控
選擇 zabbix agent 模版監控模板,來監控x 上運行狀態
注: zabbix agent 模板和 zabbix agent active 版本不能同時選擇,有沖突。
選擇模板后點擊添加即可。
添加后狀態為已啟動,等待可用性也變為綠色就可以正常獲取數據了。
① 介紹
自定義用戶參數,也就是自定義key
有時,你可能想要運行一個代理檢查,而不是Zabbix的預定義
你可以編寫一個命令來檢索需要的數據,并將其包含在代理配置文件("UserParameter"配置參數)的用戶參數中
② 用法格式 syntax
UserParameter=<key>,<command>
A user parameter also contains a key 一個用戶參數也包含一個鍵
The key will be necessary when configuring an item 在配置監控項時,key是必需的
Note: Need to restart the agent 注意:需要重新啟動agent 服務
(1)修改agent 端的配置,設置用戶參數
① free | awk '/^Mem/{print }' 自己需要查找的參數的命令
② 修改配置文件,把查找參數的命令設為用戶參數
cd /etc/zabbix/zabbix_agentd.d/
vim memory_usage.conf
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
③ systemctl restart zabbix-agent.service 重啟agent 服務
(2)在zabbix-server 端,查詢
zabbix_get -s 192.168.30.7 -p 10050 -k "memory.used"
(3)在監控上,設置一個item監控項,使用這個用戶參數
(4)查詢graph 圖形
(1)修改agent 端的配置,設置用戶參數
① 命令行查詢參數的命令
② 修改配置文件,把查找參數的命令設為用戶參數
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^1/{print }'
分析:$:表示不是前邊調位置參數的2 ,而是awk 的參數2,而是awk的參數2
注意:是調用前邊的[*],位置參數,第一個參數
(2)在zabbix-server 端,查詢使用這個用戶參數的key
(3)在監控上,設置一個item監控項,使用這個用戶參數
① 添加Memory Total 的item監控項,使用memory.stats[MemTotal] 的用戶參數
在進程中定義倍數,規定單位
② clone 克隆Memory Total 創建Memory Free 的監控項
memory.stats[MemFree] 用戶參數
③ 創建Memory Buffers 的item 監控項,使用 memory.stats[Buffers] 的key
(4)上面3個監控項的graph 圖形
① memory total
② memory free
③ buffers
在agent 端:
(1)下載,設置php-fpm
① yum -y install 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的狀態頁面匹配
vim /etc/nginx/nginx.conf
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服務
(3)在agent 端,設置用戶參數
① 查詢 curl 192.168.30.7/php-fpm-status
② 設置
cd /etc/zabbix/zabbix_agentd.d/
vim php_status.conf
UserParameter=php-fpm.stats[*],curl -s http://127.0.0.1/php-fpm-status | awk '/^$1/{print $$NF}'
分析:設置用戶參數為php-fpm.stats[*],1為第一個參數;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監控項,使用定義的用戶參數
① 創建一個模板
② 在模板上配置items 監控項,使用剛定義的用戶參數
fpm.stats[total processes]
③ 再clone克隆幾個items監控項
fpm.stats[active processes]
④ fpm.stats[max active processes]
⑤ fpm.stats[idle processes]
(6)host主機鏈接模板
(7)查看graph 圖形
① php-fpm total processes
② php-fpm active processes
③ php-fpm max active processes
④ php-fpm idle processes
(8)把模板導出,可以給別人使用
① 導出模板
最下面有導出
② 自己定義用戶參數的文件,也不要忘記導出
/etc/zabbix/zabbix_agentd.d/php_status.conf
(1)介紹
網絡發現:zabbix server掃描指定網絡范圍內的主機;
網絡發現是zabbix 最具特色的功能之一,它能夠根據用戶事先定義的規則自動添加監控的主機或服務等
優點:
加快Zabbix部署
簡化管理
在快速變化的環境中使用Zabbix,而不需要過度管理
(2)發現方式:
ip地址范圍;
可用服務(ftp, ssh, http, ...)
zabbix_agent的響應;
snmp_agent的響應;
(3)網絡發現通常包含兩個階段:discovery發現 和actions動作
① discovery:
Zabbix定期掃描網絡發現規則中定義的IP范圍;檢查的頻率對于每個規則都是可配置的
每個規則都有一組用于為IP范圍執行的服務檢查
由網絡發現模塊執行的服務和主機(IP)的每個檢查都會生成一個發現事件
8種響應事件
② 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 、狀態、上線/ 離線等進行配置
(4)網絡發現:接口添加
網絡發現中添加主機時會自動創建interface 接口
例如:
如果基于SNMP 檢測成功,則會創建SNMP 接口
如果某服務同時響應給了agent 和SNMP ,則兩種接口都會創建
如果同一種發現機制( 如agent) 返回了非惟一數據,則第一個接口被識別為默認,其它的為額外接口
即便是某主機開始時只有agent 接口,后來又通過snmp 發現了它,同樣會為其添加額外的snmp 接口
不同的主機如果返回了相同的數據,則第一個主機將被添加,余下的主機會被當作第一個主機的額外接口
(1)準備一臺可被掃描發現的主機
① 安裝agent 段的包
yum -y install zabbix-agent zabbix-sender
② 設置agent 配置,可以把之前設置好的node1的配置傳過來
vim /etc/zabbix/zabbix_agentd.conf
Hostname=http://node2.along.com #只需修改hostname
③ visudo 修改sudo的配置
zabbix ALL=(ALL) NOPASSWD: ALL
④ 開啟服務
systemctl start zabbix-agent
(2)設置自動發現規則discovery
注釋:
① key:zabbix_get -s 192.168.30.2 -p 10050 -k "system.hostname"
② 更新間隔:1h就好,不要掃描太過頻繁,掃描整個網段,太廢資源;這里為了實驗,設為1m
(3)自動發現成功
(4)設置自動發現discovery 的動作action
a) 創建
b) 設置action動作
① 設置A條件,自動發現規則=http://test.net
② 設置B條件,自動發現狀態=up
③ 要做什么操作
添加主機到監控
自動鏈接Template OS Linux 到此host
c) 配置action 完成,默認是disabled 停用的
d) 啟用動作,查看效果
確實已經生效,添加主機成功,模板鏈接成功
(5)如果自己需要添加的主機已經掃描添加完成,就可以關閉網絡掃描了,因為太耗資源
(1)介紹
① Web監控:監控指定的站點的資源下載速度,及頁面響應時間,還有響應代碼;
② 術語:
web Scenario: web場景(站點)
web page :web頁面,一個場景有多個頁面
內建key:要測一個頁面,要測三個步驟(下邊3個內建key)
③ 內建key:
http://web.test.in[Scenario,Step,bps]:傳輸速率
web.test.time[Scenario,Step]: 響應時長
web.test.rspcode[Scenario,Step]:響應碼
(1)創建
(2)配置web 監測
① 點擊步驟,設置web page 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頁面
c) 設置2個web頁面成功
② 如果有特殊認證,也可以添加
(1)主動/被動介紹
被動檢測:相對于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";
② 用法選項:
zabbix_sender
-z zabbix_server_ip
-p zabbix_server_port
-s zabbix_agent_hostname
-k key
-o value 值
(1)agent端所需要基本配置:
ServerActive=192.168.30.107 給哪個監控server 發送數據 Hostname=http://node1.along.com 自己的主機名,假設主機定死了,不設置下一項 #HostnameItem=如果自己的主機名易變動,這一項相當于key一樣去匹配
注意:若后兩項同時啟用,下邊一個選擇生效
(2)設置一個主動監測
① 選擇進程,每秒更改,
因為key:system.cpu.switches :上下文的數量進行切換,它返回一個整數值。為了監控效果,選擇下一秒減上一秒的值作為監控
(3)已經有啦graph圖形
(1)配置一個zabbix traper(采集器) 的item 監控項
(2)agent 端手動發送數據
(3)監控到數據的變化
(1)介紹
SNMP:簡單網絡管理協議;(非常古老的協議)
三種通信方式:讀(get, getnext)、寫(set)、trap(陷阱);
端口:
161/udp
162/udp
SNMP協議:年代久遠
v1: 1989
v2c: 1993
v3: 1998
監控網絡設備:交換機、路由器
MIB:Management Information Base 信息管理基礎
OID:Object ID 對象ID
(2)Linux啟用snmp的方法:
yum install net-snmp net-snmp-utils
配置文件:定義ACL
/etc/snmp/snmpd.conf
啟動服務:
systemctl start snmpd 被監控端開啟的服務
systemctl start snmptrapd 監控端開啟的服務(如果允許被監控端啟動主動監控時啟用)
(3)配置文件的介紹
開放數據:4步
① 定義認證符,將社區名稱"public"映射為"安全名稱"
② 將安全名稱映射到一個組名
③ 為我們創建一個視圖,讓我們的團隊有權利
掩碼:我列出一些注釋,有很多,可以再網上查詢
.1.3.6.1.2.1.
1.1.0:系統描述信息,SysDesc
1.3.0:監控時間, SysUptime
1.5.0:主機名,SysName
1.7.0:主機提供的服務,SysService
.1.3.6.1.2.2.
2.1.0:網絡接口數目
2.2.1.2:網絡接口的描述信息
2.2.1.3:網絡接口類型
……
④ 授予對systemview視圖的只讀訪問權
(4)測試工具:
(1)下載,修改配置文件
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
(2)在agent 上測試
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
(3)在監控頁面,給node2加一個snmp的接口
(4)在node2上加一個 Template OS Linux SNMPv2 模板
模板添加成功,生成一系列東西
點開一個item 看一下
(5)生成一些最新數據的圖形graph了
(1)監控網絡設備:交換機、路由器的步驟:
① 把交換機、路由器的SNMP 把對應的OID的分支啟用起來
② 了解這些分支下有哪些OID,他們分別表示什么意義
③ 我們要監控的某一數據:如交換機的某一個接口流量、報文,發送、傳入傳出的報文數有多少個;傳入傳出的字節數有多少個,把OID取出來,保存
(2)定義入站出站的item監控項
interface traffic packets(in)
interface traffic packets(out)
(1)介紹
Java虛擬機(JVM)具有內置的插裝,使您能夠使用JMX監視和管理它。您還可以使用JMX監視工具化的應用程序。
(2)配置設置介紹
① zabbix-java-gateway主機設置:
安裝 zabbix-java-gateway程序包,啟動服務;
yum -y install zabbix-java-gateway
② zabbix-server端設置(需要重啟服務):
JavaGateway=172.16.0.70
JavaGatewayPort=10052
StartJavaPollers=5 #監控項
③ tomcat主機設置:
監控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
(1)安裝配置tomcat
① 下載安裝tomcat,主要是用JVM
yum -y install java-1.8.0-openjdk-devel tomcat-admin-webapps tomcat-docs-webapp
② 加CATALINA_OPTS=#啟用JVM接口,默認沒有啟用
vim /etc/sysconfig/tomcat
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"
③ 開啟服務
systemctl start tomcat
(2)在zabbix-server 端,安裝配置java-gateway
① 安裝配置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 服務
(3)在node2 主機上添加JMX接口,實驗模板
① 添加JMX接口
② 在node2 上連接tomcat JMX 模板
③ 隨便查看一個監控項item
(4)自己定義一個堆內存使用的監控項,基于JVM接口(沒必要,使用模板就好)
(1)介紹
分布式監控概述
proxy and node
Zabbix 的三種架構
Server-agent
Server-Node-agent
Server-Proxy-agent
監控Zabbix
(2)配置介紹
Zabbix Proxy的配置:
server-node-agent
server-proxy-agent
a) 配置proxy主機:
(1) 安裝程序包
zabbix-proxy-mysql zabbix-get
zabbix-agent zabbix-sender
(2) 準備數據庫
創建、授權用戶、導入schema.sql;
(3) 修改配置文件
Server=
zabbix server主機地址;
Hostname=
當前代理服務器的名稱;在server添加proxy時,必須使用此處指定的名稱;
=需要事先確保server能解析此名稱;
DBHost=
DBName=
DBUser=
DBPassword=
ConfigFrequency=10
DataSenderFrequency=1
b) 在server端添加此Porxy
Administration --> Proxies
c) 在Server端配置通過此Proxy監控的主機;
注意:zabbix agent端要允許zabbix proxy主機執行數據采集操作:
實驗前準備:
① ntpdate 172.168.30.1 同步時間
② 關閉防火墻,selinux
③ 設置主機名 hostnamectl set-hostname http://zbproxy.along.com
④ vim /etc/hosts 每個機器都設置hosts,以解析主機名;DNS也行
192.168.30.107 http://server.along.com
192.168.30.7 http://node1.along.com
192.168.30.2 http://node2.along.com
192.168.30.3 http://node3.along.com http://zbproxy.along.com
(1)環境配置(4臺主機)
機器名稱
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 直接監控一臺主機node1
zabbix-server 通過代理node3 監控node2
(2)在node3 上配置mysql
① 創建配置mysql
vim /etc/my.cnf.d/server.cnf
[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
a) 初始化數據庫
zabbix-proxy-mysql 包里帶有,導入數據的文件
cp /usr/share/doc/zabbix-proxy-mysql-3.4.4/schema.sql.gz ./ 復制
gzip -d schema.sql.gz 解包
mysql -root -p zbxproxydb < schema.sql 導入數據
b) 查看數據已經生成
(4)配置proxy端
① vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.30.107 #server 的IP ServerPort=10051 #server 的端口 Hostname=http://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 開啟服務
(5)配置node2端,允許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 啟動服務
(6)把代理加入監控server,創建配置agent 代理
① 創建agent 代理
② 配置
(7)創建node2 主機,并采用代理監控
設置代理成功
(8)創建item監控項
① 為了實驗,隨便創一個監控項 CPU Switches
② 進程里設置每秒更改
③ 成功,graph 圖形生成
https://cn.bing.com/ 搜索 zabbix share
例如:我們要實現監控Nginx ,我們查找一個模板
就以這個模板為例
(1)安裝配置 nginx
① yum -y install nginx
vim /etc/nginx/nginx.conf 按照網頁的操作指示
location /stub_status { stub_status on; access_log off; # allow 127.0.0.1; #為了操作方便,我取消的訪問控制 # deny all; }
② 啟動服務
systemctl restart nginx
(2)下載模板所依賴的腳本
mkdir -p /srv/zabbix/libexec/
cd /srv/zabbix/libexec/
wget https://raw.githubusercontent.com/oscm/zabbix/master/nginx/nginx.sh 從網頁上獲取腳本
chmod +x nginx.sh 加執行權限
(3)配置agent 的用戶參數UserParameter
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上
① 導入下載的模板
② 主機node1 鏈接這個模板
③ 模板生效
vim /etc/zabbix/zabbix_agentd.conf 配置agent
EnableRemoteCommands=1 允許遠程命令 LogRemoteCommands=1 記錄遠程命令 Server=127.0.0.1 ServerActive=127.0.0.1 Hostname=http://server.along.com
① Database:
歷史數據不要保存太長時長;
盡量讓數據緩存在數據庫服務器的內存中;
② 觸發器表達式:減少使用聚合函數 min(), max(), avg();盡量使用last(),nodata();
因為聚合函數,要運算
③ 數據收集:polling較慢(減少使用SNMP/agentless/agent);盡量使用trapping(agent(active)主動監控);
④ 數據類型:文本型數據處理速度較慢;盡量少收集類型為文本 text或string類型的數據;多使用類型為numeric 數值型數據 的;
(1) 服務器組件的數量;
alerter, discoverer, escalator, http poller, hourekeeper, icmp pinger, ipmi polller, poller, trapper, configration syncer, ...
StartPollers=60
StartPingers=10
...
StartDBSyncer=5
...
(2) 設定合理的緩存大小
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
TrendCacheSize=4M
ValueCacheSize=4M
(3) 數據庫優化
分表:
history_*
trends*
events*
文章來源:https://www.cnblogs.com/along21/p/8119088.html