Zabbix 是一個高度集成的網絡監控解決方案,能夠提供企業級的開源分佈式監控解決方案,由一個國外的團隊持續維護更新,軟件能夠自由下載使用,運做團隊靠提供收費的技術支持贏利 zabbix是一個基於Web界面的,提供分佈式系統監控以及網絡監視功能的企業級的開源解決方案。 zabbix能監視各類網絡參數,保證服務器系統的安全運營,並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各類問題 zabbix主要由2部分構成zabbix server和zabbix agent,可選組建zabbix proxy zabbix server能夠經過SNMP,zabbix agent,fping端口監視等方法對遠程服務器或網絡狀態完成監視,數據收集等功能。同時支持Linux以及Unix平臺,Windows平臺只能安裝客戶端
①具有常見的商業監控軟件所具有的功能(主機的性能監控、網絡設備性能監控、數據庫、性能監控、FTP 等通用協議監控、多種告警方式、詳細的報表圖表繪製)
②支持自動發現網絡設備和服務器(能夠經過配置自動發現服務器規則來實現)
③支持自動發現(low discovery)key 實現動態監控項的批量監控(需寫腳本)
④支持分佈式,能集中展現、管理分佈式的監控點
⑤擴展性強,server 提供通用接口(api 功能),能夠本身開發完善各種監控(根據相關接口編寫程序實現)編寫插件容易,能夠自定義監控項,報警級別的設置。
⑥數據收集
可用和性能檢測
支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET
自定義的檢測
自定義收集數據的頻率
服務器/代理和客戶端模式
靈活的觸發器
能夠定義很是靈活的問題閾值,稱爲觸發器,從後端數據庫的參考值
高可定製的報警
發送通知,可定製的報警升級,收件人,媒體類型
通知可使用宏變量有用的變量
自動操做包括遠程命令
實時的繪圖功能
監控項實時的將數據繪製在圖形上面
WEB 監控能力
ZABBIX 能夠模擬鼠標點擊了一個網站,並檢查返回值和響應時間php
Api 功能
應用api
功能,能夠方便的和其餘系統結合,包括手機客戶端的使用。
更多功能請查看
http://www.zabbix.com/documentation.phphtml
Zabbix 3.0 Manual
Zabbix 2.4 Manual
Zabbix 2.2 Manual
Zabbix 2.0 Manual
下載地址:http://www.zabbix.com/documentation.php
本次採用yum安裝,安裝zabbix3.0.使用Centos7前端
優勢
一、開源,無軟件成本投入
二、Server 對設備性能要求低
三、支持設備多,自帶多種監控模板
四、支持分佈式集中管理,有自動發現功能,能夠實現自動化監控
五、開放式接口,擴展性強,插件編寫容易
六、當監控的item
比較多服務器隊列比較大時能夠採用被動狀態,被監控客戶端主動從
七、server
端去下載須要監控的item 而後取數據上傳到server 端。這種方式對服務器的負載比較小。
八、Api
的支持,方便與其餘系統結合
缺點
需在被監控主機上安裝agent
,全部數據都存在數據庫裏,產生的數據據很大,瓶頸主要在數據庫
。java
Zabbix 通過C/S
模式採集數據,經過B/S
模式在web 端展現和配置。
被監控端:主機經過安裝agent 方式採集數據,網絡設備經過SNMP 方式採集數據
Server 端:經過收集SNMP 和agent 發送的數據,寫入數據庫(MySQL,ORACLE 等),再經過php+apache 在web 前端展現。node
Server:
Zabbix Server 需運行在LAMP(Linux+Apache+Mysql+PHP)環境下(或者LNMP),對硬件要求低
Agent:
目前已有的agent 基本支持市面常見的OS,包含Linux、HPUX、Solaris、Sun、
windows
SNMP
:支持各種常見的網絡設備
SNMP(Simple Network Management Protocol,簡單網絡管理協議python
Zabbix監控過程邏輯圖
mysql
硬件監控 適用於物理機、遠程管理卡(iDRAC),IPMI(只能平臺管理接口)
ipmitools:,MegaCli(查看Raid磁盤)
系統監控: 監控cpt:lscpu、uptime、top、vmstat 1 、mpstat 一、htop
監控內存: free -m、
**監控硬盤:**df -h、iotop
**監控網絡:**iftop、netstat、ss
**應用服務監控:**nfs、MySQL、nginx、apache、php、rsync
更詳細的監控類型能夠參考:http://www.abcdocker.com/abcdocker/1376linux
全部監控範疇,均可以整合到Zabbix
中
硬件監控:
Zabbix、IPMI、lnterface
系統監控:
Zabbix、Agent、Interface
Java監控:
Zabbix、JMX、lnterface
網絡設備監控:
Zabbix、SNMP、lnterface
應用服務監控:
Zabbix、Agent、UserParameter
MySQL數據庫監控:
percona-monitoring-plulgins
URL監控:
Zabbix Web監控
android
一、環境信息ios
[root@localhost ~]# cat /etc/redhat-release
CentOSLinux release 7.2.1511(Core)
[root@localhost ~]# uname -r
3.10.0-327.28.3.el7.x86_64
二、yum安裝
阿里雲yum源已經提供了zabbix3.0
,所以咱們須要使用官方yum源。官方
yum源下載會比較慢
[root@localhost ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
問題:爲何要下載release
版本的zabbix?
[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Media.repo epel.repo.rpmnew
CentOS-CR.repo CentOS-Sources.repo epel-testing.repo
CentOS-Debuginfo.repo CentOS-Vault.repo zabbix.repo
CentOS-fasttrack.repo epel.repo
由於下載這個版本會在yum.repos.d
下面生成一個zabbix.repo
的文件
三、安裝相關軟件包
[root@localhost ~]# yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb -y
注:若是Server端也須要監控則須要安裝zabbix-agent
提示:在Centos7中,mysql
更名爲mariadb
四、修改PHP時區設置
[root@localhost ~]# sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g'/etc/httpd/conf.d/zabbix.conf
#要注意須要改的配置文件是/etc/httpd/conf.d/zabbix.conf而不是/etc/php.ini,
1.啓動數據庫
[root@localhost ~]# systemctl start mariadb
2.建立zabbix數據庫及用戶
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by '123456';
exit
3.導入數據
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.4/
[root@localhost zabbix-server-mysql-3.0.4]# ll
total 1836
-rw-r--r--1 root root 98Jul2211:05 AUTHORS
-rw-r--r--1 root root 687803Jul2211:05ChangeLog
-rw-r--r--1 root root 17990Jul2211:06 COPYING
-rw-r--r--1 root root 1158948Jul2402:59 create.sql.gz
-rw-r--r--1 root root 52Jul2211:06 NEWS
-rw-r--r--1 root root 188Jul2211:05 README
[root@localhost zabbix-server-mysql-3.0.4]# zcat create.sql.gz |mysql -uzabbix -p123456 zabbix
咱們使用zcat
,專門查看sql.gz
包。和cat
基本類似
4.修改zabbix配置文件
[root@localhost zabbix-server-mysql-3.0.4]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost #數據庫所在主機
DBName=zabbix #數據庫名
DBUser=zabbix #數據庫用戶
DBPassword=123456#數據庫密碼
5.啓動zabbix及apache
[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# systemctl start httpd
注意:若是沒有啓動成功,要看一下是否是80端口被佔用
6.Web界面安裝master
訪問地址:http://192.168.56.11/zabbix/setup.php
點擊Next step
進行安裝
首先要確保沒有no
,若是時區沒有改好會提示咱們進行修改
帳號密碼都是咱們剛剛在配置文件中設置的,端口默認就是3306
爲咱們的zabbix起個名字,一會在右上角會顯示
最後是展現咱們的配置信息,能夠查看到哪裏有錯誤
點擊Finish
提示:上去以後請當即修改密碼
7.配置zabbix-agent端
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1修改Server端的IP地址(被動模式IP地址)
ServerActive=127.0.0.1主動模式,主動向server端報告
[root@localhost ~]# systemctl start zabbix-agent
查看端口號
[root@localhost ~]# netstat -lntp
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:33060.0.0.0:* LISTEN 7806/mysqld
tcp 000.0.0.0:220.0.0.0:* LISTEN 1062/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2208/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 11511/zabbix_agentd
tcp 000.0.0.0:100510.0.0.0:* LISTEN 11335/zabbix_server
tcp 00127.0.0.1:1990.0.0.0:* LISTEN 2692/snmpd
tcp6 00:::80:::* LISTEN 11408/httpd
tcp6 00:::22:::* LISTEN 1062/sshd
tcp6 00::1:25:::* LISTEN 2208/master
tcp6 00:::443:::* LISTEN 11408/httpd
tcp6 00:::10050:::* LISTEN 11511/zabbix_agentd
tcp6 00:::10051:::* LISTEN 11335/zabbix_server
10051爲server端口,10050爲agent端口
找到Configuration---->Hosts
添加一臺監控主機
開啓後,若是出現錯誤咱們能夠看一下zabbix
的日誌
[root@localhost ~]# ls /var/log/zabbix/zabbix_
zabbix_agentd.log zabbix_server.log
當ZBX變成綠色的時候,說明監控成功。由於咱們沒有配置SNMP、JMX、IPMI等。因此我發監控
由於咱們如今只安裝了一臺服務器,因此只有一個主機。咱們能夠查看如今這臺主機的CPU等及基本的信息
點擊Monitoring-----Graphs
,選擇咱們要監控的內容
咱們選擇能夠隨便選擇一個進行查看信息
例如:咱們查看CPU的負載
某一段時間內,CPU正在處理以及等待CPU處理的進程數的之和。Load Average是從另外一個角度來體現CPU的使用狀態的。
這些監控其實就是zabbix在數據庫查找數據,而後使用jd進行畫圖
Zabbix性能依賴於mysql數據庫
一、設置默認帳號密碼
設置完中文
Zabbix 上方的菜單簡單介紹說明
Doshboard下面能夠設置你想設置的圖形,添加方法以下:
這時,就能夠找到你喜好的了,直接打開
screens
其實就是一個聚合圖形
,能夠把多個圖片合在一塊兒。而後放在大屏幕上,供別人查看
maps
就是一個架構圖
Status of Zabbix
就是一個狀態欄
第一行是Server是否運行[yes]和後面的運行地址
第二行監控的機器 (啓用的/關閉的/模板)
第三行監控項 (啓用的/關閉的/不支持的)
第四行觸發器的狀態 (啓用的/關閉的/【故障/正常】)
第五行 當前用戶數量 (在線數量)
第六行 zabbix每秒能夠收到的一個新值
告警的級別
咱們能夠設置報警響鈴,讓他在前端響
咱們首頁的監控列表是能夠隨意拖動的
咱們還能夠將它關閉,而且設置刷新時間
##################################################################################
Agent能夠幹一些SNMP沒法乾的事情,例如自定義監控項
snmp相關文章:http://www.abcdocker.com/abcdocker/1376
這裏咱們先不着急點add
,還須要設置其餘選項
點擊監控模板
zabbix監控是由監控項
組成(cpu
使用率監控就是一個監控項
/內存使用率
就是一個監控項),若是是100
臺服務器就須要監控模板
了。只須要將監控項和模板關聯
起來便可
舉個例子:咱們上面主機使用的是SNMP,就能夠直接搜索SNMP
。提示:有的模板須要本身定義
舒適提示:請點擊下面的小add
而後在點大的。不然會出現問題哦
IPMI
若是有的話,須要在這裏寫上用戶名
和密碼
宏定義,這個宏其實就是一個變量。咱們給能夠給變量附一個值
由於咱們設置的是SNMP
,SNMP
有一個團體名。而且能夠設置定義
團體名是中間的abcdocker
,具體的能夠看http://www.abcdocker.com/abcdocker/1376
[root@localhost ~]# cat /etc/snmp/snmpd.conf
rocommunity abcdocker 192.168.56.11
值:{$SNMP_COMMUNITY}
主機資產設置分爲3中
一、關閉 Disabled
二、手動 Manual
三、自動 Automatic (自動錶明的是你在定義監控項的時候,他有一個小箭頭,勾上以後監控項的值就會填寫在這裏)
咱們這設置好模板就能夠選擇add
了
等SNMP
變綠就行了
如今的狀態是用SNMP
進行監控了,咱們只是添加了一個SNMP OS LINUX
的模板,可是出現了4
個。這4個連接。能夠和多個模板
連起來用
進入監控項,下面這個菜單
是過濾搜索用的
下面全都是模板
咱們能夠隨便點擊一個,這裏咱們新建一個監控項
點擊建立
類型選擇
Zabbix agent 被動
Zabbix agent (active主動模式)
Simple check 簡單檢測
SNMPv1 agent ......
在Key這行點擊Select
能夠進行選擇
咱們隨便選擇一個,例如agent.version
。查看agent的版本
Numeric
是無符號整數型
Configuration----hosts----Graphs
繪圖靠的是監控項
,咱們能夠隨便打開一個看看
顏色等都是能夠隨意設置
提示:由於我們用的版本是3.0當2.4的時候須要在Configuration----
下面來建立screens
建立Screens
咱們建立一個2*2
命名爲test screens
的screens
而後咱們點進去
點擊編輯
點擊Change
進行設置
多添加幾個以後就是如下結果
例如:咱們本身添加一個監控項來進行監控當前的活動鏈接數 [Nginx 安裝請看上一篇]
nginx
安裝地址:http://www.abcdocker.com/abcdocker/1376
Nginx狀態模塊配置以下,過於簡單不說了
[root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
listen 8080;
location /status {
stub_status on;
access_log off;
allow 192.168.56.0/24;
deny all;
}
修改nginx
端口並重啓
測試:http://192.168.56.11:8080/status
解釋說明:使用zabbix來監控活動鏈接數,經過status狀態模塊爲前提
咱們如今命令取出咱們想要的值,例如:
[root@localhost ~]# curl -s http://192.168.56.11:8080/status|grep Active|awk -F "[ ]"'{print $3}'
1
由於咱們是監控他的活動鏈接數,他的活動鏈接數爲1
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/
#提示: 若是想要加自定義監控項,不要在配置文件中寫入,能夠在Include
裏面定義的目錄寫上
只要咱們寫在Include
目錄下,均可以識別到
[root@linux-node1 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@linux-node1 zabbix_agentd.d]# ls
userparameter_mysql.conf
#默認有一個MySQL的,咱們能夠參考MySQL的進行操做
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
#提示,前面是key的名稱 後面的key的命令
UserParameter=mysql.version,mysql -V
咱們本身編輯一個文件
[root@linux-node1 zabbix_agentd.d]# cat nginx.conf
UserParameter=nginx.active,/usr/bin/curl -s http://192.168.56.11:8080/status|grep Active|awk -F "[ ]"'{print $3}'
#提示,此處配置文件的名字能夠隨便起
若是是多個命令能夠寫一個腳本
,命令最好寫絕對路徑
!這個過程其實就是咱們定義監控的過程,前面是key
的名字,後面是命令
修改完配置文件以後須要重啓zabbix-agent
[root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent
配置完成以後先在server
端測試,是否能夠獲取到agent
上的值。不要着急添加
咱們如今只用了1臺服務器,本機是server也是agent。而後使用zabbix-get
進行測試
[root@linux-node1 zabbix_agentd.d]# yum list|grep zabbix
zabbix-agent.x86_64 3.0.4-1.el7@zabbix
zabbix-release.noarch 3.0-1.el7 installed
zabbix-server-mysql.x86_64 3.0.4-1.el7@zabbix
zabbix-web.noarch 3.0.4-1.el7@zabbix
zabbix-web-mysql.noarch 3.0.4-1.el7@zabbix
python-pyzabbix.noarch 0.7.3-2.el7 epel
uwsgi-stats-pusher-zabbix.x86_64 2.0.13.1-2.el7 epel
zabbix-get.x86_64 3.0.4-1.el7 zabbix
查看zabbix_get
[root@linux-node1 zabbix_agentd.d]# yum install -y zabbix-get
zabbix-get
使用參數以下:
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
-s 指定咱們要查看的服務器
-p 端口,能夠不加。默認是10050
-k 監控項的名稱(根據上面的配置來定義的)
更多參數:zabbix_get --help
若是出現以下錯誤,大體意思是拒絕鏈接
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
zabbix_get [24234]:Check access restrictions inZabbix agent configuration
解決方法:
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.11
由於咱們當時只容許本機127.0.0.1
進行鏈接。因此會出現這樣問題
[root@linux-node1 ~]# systemctl restart zabbix-agent
修改完配置文件都要重啓
提示: zabbix-agent的配置文件中指定容許那個server鏈接,那個才能夠進行鏈接。
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
1
正確結果如上!
提示:若是在zabbix-agent
上面修改了,還須要在網頁上進行修改
在/etc/zabbix/zabbix-agent.conf
上面指定的Server
是誰,就只會容許誰經過。若是有多個ip
可使用逗號進行分割
找到一個安裝zabbix-agent
,點擊
點擊items
而後添加Create item
(建立item)
Data type:
數據類型,這裏咱們選擇Decimal。其餘的基本上用不上
Units:
單位 超過1千就寫成1k了。 能夠在這裏作一個單位的設置。默認就能夠
Use custom multiplier:
若是這裏面設置了一個數,得出來的結果都須要乘以文本框設定的值
Update interval(in sec)
監控項刷新時間間隔(通常不要低於60秒)
Custom intervals
建立時間間隔(例如:1點-7點每隔多少秒進行監控)格式大體爲:周,時,分
History storage period
歷史數據存儲時間(根據業務來設置,默認就能夠)
Trend storage period
趨勢圖要保存多久
New application
監控項的組
application
選擇一個監控項組
Populates host inventory field
資產,能夠設定一個監控項。把獲取的值設置在資產上面
描述!必需要寫。 要不你就是不負責任
添加自定義監控項小結:
一、添加用戶自定義參數(在/etc/zabbix/zabbix.agent.d
/定義了一個nginx.conf
步驟如上)
二、重啓zabbix-agent
三、在Server端使用zabbix_get測試獲取
(命令如上)
四、在web界面建立item
(監控項)
Name:
名字
Width:
寬度
Height:
高度
Graph type:
圖形類型
其餘默認便可
而後咱們點擊Add
添加Items
監控項,找到咱們剛剛設置的服務器
而後找到咱們剛剛添加的監控項
還能夠選擇顏色,添加其餘的不少設置。不細說
點擊Prewview能夠進行預覽,若是出現字符亂碼能夠閱讀咱們另外一篇文章(zabbix默認不支持中文)
肯定沒有問題,選擇下方Add便可
出現咱們添加的
須要在Monitoring--->Graphs--->
選擇咱們添加的主機便可
接下來咱們須要進行測試
:
測試前:
使用ab
測試工具進行測試,設置100萬
併發進行訪問
[root@linux-node1 ~]# ab -c 1000-n 1000000 http://192.168.56.11:8080/
ThisisApacheBench,Version2.3<$Revision:1430300 $>
Copyright1996AdamTwiss,ZeusTechnologyLtd, http://www.zeustech.net/
Licensed to TheApacheSoftwareFoundation, http://www.apache.org/
Benchmarking192.168.56.11(be patient)
測試後:
咱們能夠查看zabbix監控圖標
咱們中間設置了間隔60秒,說明每隔60秒
咱們進行獲取一次
咱們能夠設置它的方式顯示
找到Graph
選擇類型,Stacked
是堆疊顯示,其餘的你們能夠自行百度。不細說
堆疊顯示以下:
若是咱們想加多個圖形都顯示在一張圖上,能夠進行以下操做
找到Graphs
找到咱們設置的圖形
點擊添加便可
咱們可讓多個圖標顯示在一個圖片上
點擊咱們建立一個聚合圖形(screens
)
點擊進去
點擊編輯
選擇item
添加的地方,由於上面建立聚合圖形的時候咱們選擇了2X2 因此這裏會顯示2個
找到相對應的添加便可
咱們能夠多添加幾個
結果如上圖顯示
除了顯示圖片還能夠顯示其餘內容
Action log:日誌 Clock:時間 Data overview:數據概述 Graph:圖形 History of events:歷史事件 Host group issues:主機組問題 Host issues:主機問題 Hosts info:主機信息 Plain text:文本 Map:架構圖 Screen:屏幕 Server info:服務器信息 Simple graph:簡單的圖 Simple graph prototype:簡單的原型圖 System status:系統狀態 Triggers info:觸發器信息 Tiggers overview:概述 URL:URL地址
咱們還能夠自定義一個Maps
,一張架構圖。操做以下:
第二步:選擇編輯Edit map
由於他默認圖片比較小,咱們能夠點擊下方,進行調整圖片大小。
點擊右上角編輯
,而後咱們點中圖中的服務器便可
咱們模擬有2臺服務器
而後咱們選中新添加的服務器進行修改
點擊Apply
就能夠了。
按住Ctrl
點中zabbix server
和另一
臺服務器
而後咱們點擊左上方的Link
:他們就鏈接起來了
舒適提示:修改完成後須要點擊保存[update
]若是不點後果就是重新在作一遍~
##########################################################################################
Zabbix server is running #Zabbix服務器是否運行 Number of hosts (enabled/disabled/templates) #主機數量(已啓用/已禁用/模板) Number of items (enabled/disabled/not supported) #監控項數量(已啓用/已禁用/不支持) Number of triggers (enabled/disabled [problem/ok]) #觸發器數量(已啓用/已禁用/問題/正常) Number of users (online) #用戶數(線上) Required server performance, new values per second #要求的主機性能,每秒新值
此處須要注意的事項以下:
一、須要時刻關注那些主機數量中已禁用的(例如:那一天有一臺監控有問題,順手關閉了。沒有打開 結果後期致使監控出現問題)
二、監控項數量裏面最好不要放置已禁用,要麼刪除這個監控項或者不讓他報警。儘可能不要給他禁用
三、觸發器只禁用幾個沒什麼大問題,可是若是一下禁用幾十個不方便進行管理
四、正式環境最好劃分主機組,能夠按照業務劃分,類型劃分。那個出現問題都方便查看處理
剛剛以前咱們一直使用的是一臺服務器,由於不方便解釋。咱們新添加一臺服務器
加入監控的幾個步驟:
一、安裝軟件
二、修改配置
一、設置yum源
[root@linux-node2 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
二、安裝軟件包
[root@linux-node2 ~]# yum install -y zabbix-agent
三、修改配置文件
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.11
ServerActive=192.168.56.11
#提示:這裏的IP地址改爲Server端的IP地址
四、啓動
[root@linux-node2 ~]# systemctl start zabbix-agent
[root@linux-node2 ~]# netstat -lntup|grep zabbix
tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
五、web界面設置
克隆~
步驟:咱們隨便點擊一個進去。拉到最下面有一個所有克隆
剩下的咱們就改一下就能夠了
模板修改
其餘的就沒有什麼能夠配置的,模板主要是添加Template OS Linux
。而後咱們選擇Add
便可
建立完成以下:
新添加的IP
如上述所示
上次只是簡單的鏈接線的設置,此次咱們進行深刻設置
路徑:Monitoring--->Maps--->Edit map
進行修改
咱們點擊Zabbix server
沒有設置主機的,選擇Host
修改linux-node2
。
提示:此處咱們修改了2
臺主機,這個能夠根據業務需求進行設置
咱們新添加一臺,而後進行鏈接。Ctrl + 主機
而後點擊Link:Add
例如咱們想查看他們的流量帶寬
首先,他們必需要鏈接在一塊兒,而後點擊Links
選項後面的Edit
進行編輯
咱們能夠在Label
表裏面寫監控項的值
咱們能夠在Configuration--->Hosts--->items
中查看到
括號內寫入發下:
{linux-node2.example.com:net.if.out[eth0].last(0)}
linux-node2.example.com=主機名
net.if.out=key值
last(0)=獲取最新的一個數據
如今咱們就能夠實時的監控流量
切記須要update
保存以下圖顯示
咱們能夠先打開Events
查看事件
zabbix
事件有不少類型
Trigger=
觸發器的事件
Disovery=
自動發現事件
還有內部的事件以及自動註冊的事件
咱們能夠選擇主機
,查看相對應的事件
Zabbix
的報警能夠當作事件通知,當這個事件發生時。zabbix
進行通知(報警)
事件報警分爲2
種方式:
一、怎麼通知
二、通知給誰
Zabbix
通知方式:
Zabbix通知方式經過Actions
進行通知
Zabbix
默認有一個,咱們能夠點開進行查看
條件設置
操做設置
舒適提示:保存的時候須要先點擊下方小的Update 不然就木有啦
這裏的步驟可讓報警郵件發送的級別、例如:先發送給運維、項目經理、項目總監
等
例如以下:
剛剛的填寫完成,如今提示的是1-2
發送的人 咱們能夠點擊下面的New
在添加幾個
模擬設置,當報警1-2
次時候發送給XX,2-4
次發送給XX
。 依次疊加
咱們須要配置報警媒介類型,用於發送郵件
舒適提示:3.0
以前發送郵件須要啓動郵件相關服務來進行安全認證,3.0
以後默認自帶安全認證
咱們以qq郵箱爲例
咱們還須要配置用戶
的郵箱,由於上面已經選擇發送給那個用戶
。接下來就改配置用戶的郵箱
咱們點開以後選擇Media
(報警媒介進行設置
)若是看不懂英文咱們能夠設置中文
而後咱們選擇下方的Add
設置收件人地址
小結:步驟就不截圖了,能夠調成中文,按照步驟來。
一、報警媒介 二、動做(active)配置(操做--編輯) 注意點小的update 三、建立用戶羣組(注意權限) 四、建立用戶(權限和報警媒介設置)權限只能按照用戶組分配(咱們能夠選擇用戶/管理員/超級管理員)
提示:添加新主機後,要注意確認權限分配
咱們的使用QQ郵箱須要開啓SNMP和一個受權碼。 填寫發件人密碼時須要設置受權碼爲密碼
郵件結果以下:
異常
由於咱們開啓了正常以後繼續發送郵件,因此正常以後郵件以下
提示:當異常時它會一直髮郵件,直到服務正常或者匹配規則到時
#################################################################################
交換機
Nginx
Tomcat
MySQL
一、使用SNMP監控交換機
二、使用IPMI監控服務器硬件
三、使用Agent監控服務器
四、使用JMX監控Java應用
五、監控MySQL
六、監控Web狀態
七、監控Nginx狀態
SNMP監控
1.1 在交換機上開啓Snmp
config t
snmp-server community public ro
end
提示:若是不知道咱們能夠百度
1.2 在Zabbix上添加SNMP監控
步驟:Configuration--->Hosts--->設置
1.3 Host頁面設置
1.4 Templates 模板設置
設置SNMP團體名稱Macros宏
這裏的設置要跟咱們建立的SNMP
的設置相同
由於Zabbix監控的時候依賴團體名稱
1.5 生產圖片
Zabbix會自動給咱們進行檢測端口,每一個端口都會添加一個網卡的流量圖,每一個端口都會加上一個觸發器。(端口的狀態
) 還會幫咱們添加VLAN
的一個監控
1.6 案例圖
含有有進口和出口流量
提示:此圖是Zabbix SNMP
模板自動生成的
IPMI監控
2.1 添加IPMI
Configuration--->Hosts--->選擇主機--->設置IPMI端口及主機--->用戶名密碼
由於IMP容易超時,建議使用自定義item,本地執行ipmitool命令來獲取數據
JMX監控
Zabbix默認提供了一個監控JMX
經過java gateway
來監控java
地址:https://www.zabbix.com/documentation/3.2/manual/appendix/config/zabbix_java
JAVA GATEWAY
須要獨立安裝,至關於一個網關,由於zabbix_server和zabbix-agent不能夠直接獲取java信息。因此須要一個代理來獲取
zabbix java Gateway
不存任何數據,只是一個簡單的代理
一、安裝
[root@linux-node1 ~]# yum install -y zabbix-java-gateway java-1.8.0
提示:java-gateway 須要java環境
二、配置
修改java-gateway
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
# LISTEN_IP="0.0.0.0" 監聽的IP地址
# LISTEN_PORT=10052 監聽的端口
PID_FILE="/var/run/zabbix/zabbix_java.pid"存放pid路徑
# START_POLLERS=5 開通幾個進程,默認是5。你有多少java進行能夠設置多少個,也能夠設置java進程的一半。
TIMEOUT=3超時時間1-30,若是網絡環境差,超時時間就修改長一點
咱們默認就能夠了,不進行修改
三、啓動
[root@linux-node1 ~]# systemctl start zabbix-java-gateway.service
四、端口、進程查看
咱們能夠進行進程的查看
[root@linux-node1 ~]# netstat -lntp
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:33060.0.0.0:* LISTEN 10439/mysqld
tcp 000.0.0.0:80800.0.0.0:* LISTEN 33484/nginx: master
tcp 000.0.0.0:220.0.0.0:* LISTEN 1054/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2484/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 76482/zabbix_agentd
tcp 000.0.0.0:100510.0.0.0:* LISTEN 34572/zabbix_server
tcp 00127.0.0.1:1990.0.0.0:* LISTEN 11143/snmpd
tcp6 00:::80:::* LISTEN 10546/httpd
tcp6 00:::22:::* LISTEN 1054/sshd
tcp6 00::1:25:::* LISTEN 2484/master
tcp6 00:::10050:::* LISTEN 76482/zabbix_agentd
tcp6 00:::10051:::* LISTEN 34572/zabbix_server
tcp6 00:::10052:::* LISTEN 13465/java
10052
zabbix-java-gateway
默認端口已經起來了!
它是一個java應用,須要安裝jdk
[root@linux-node1 ~]# ps -aux|grep java
root 134650.43.4224894434060?Sl19:170:01 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-3.0.4.jar-Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.timeout=3-Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
root 135840.00.0112648972 pts/0 S+19:210:00 grep --color=auto java
五、通知zabbix-server
咱們須要通知zabbix-server
,java-gateway在哪裏
修改配置文件
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf
編輯zabbix-server來指定zabbix-java-gateway
JavaGateway=192.168.56.11#IP地址是安裝java-gateway的服務器
# JavaGatewayPort=10052 端口,默認就能夠
StartVMwareCollectors=5預啓動多少個進程[zabbix--->java-gateway的數量]
六、重啓zabbix-server
[root@linux-node1 ~]# systemctl restart zabbix-server.service
七、準備apache
咱們安裝tomcat-8版本
官網:http://tomcat.apache.org
下載軟件包
[root@linux-node2 src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz
咱們將tomcat安裝在apache服務器上,來模擬監控jvm
[root@linux-node2 src]# tar xf apache-tomcat-8.5.5.tar.gz
[root@linux-node2 src]# mv apache-tomcat-8.5.5/usr/local/
[root@linux-node2 src]# ln -s /usr/local/apache-tomcat-8.5.5/ /usr/local/tomcat
[root@linux-node2 src]# yum install -y java-1.8.0#tomcat 須要在java環境運行
[root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
在web2上面查看運行狀態
[root@linux-node2 src]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
tcp6 00:::8080:::* LISTEN 25750/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
tcp6 00127.0.0.1:8005:::* LISTEN 25750/java
tcp6 00:::8009:::* LISTEN 25750/java
JMX三種類型:
1.無密碼認證
2.用戶面密碼認證
3.ssl
開啓JMX遠程監控
官方文檔:http://tomcat.apache.org/tomcat-8.0-doc/monitoring.html
咱們建立一個無密碼認證
[root@linux-node2 src]# vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888 #端口號
-Dcom.sun.management.jmxremote.ssl=false #SSL 關閉
-Dcom.sun.management.jmxremote.authenticate=false #用戶密碼驗證關閉
-Djava.rmi.server.hostname=192.168.56.12" #監控的主機
修改完成後重啓tomcat
可使用./shutdown.sh 或者使用kill的方式
[root@linux-node2 src]#/usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
中間可使用px -aux|grep java 查看是否被殺死
[root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
咱們JMX端口設置爲8888
[root@linux-node2 src]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
tcp6 00:::8080:::* LISTEN 26226/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00:::8888:::* LISTEN 26226/java
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
tcp6 00:::38532:::* LISTEN 26226/java
tcp6 00127.0.0.1:8005:::* LISTEN 26226/java
tcp6 00:::8009:::* LISTEN 26226/java
tcp6 00:::38377:::* LISTEN 26226/java
咱們能夠在windows上面安裝jdk ,使用命令行來監控java
咱們下載安裝,具體步驟不說了,而後咱們找到jconsole.exe
文件運行
填寫安裝JMX的服務器
由於在配置文件中咱們設置的是無密碼認證,因此這裏不須要輸入密碼直接鏈接。端口號咱們設置的是8888鏈接便可
這樣咱們就能夠在圖形化監控tomcat
提示:按照如今觀察,java-gateway已經安裝成功,咱們能夠加入到zabbix中
找咱們要添加的主機
填寫安裝java-gateway的主機
咱們還須要設置一個模板
這個模板就是咱們自帶的一個監控JMX
的模板,而後咱們點擊Update.更新
咱們須要等待一會才能夠出圖
提示:能夠在Zabbix-server上使用zabbix-get獲取某一臺機器的某一個key
效果圖以下:須要等待一會
手動檢測監控狀態
Zabbix-Server操做:
[root@linux-node1 ~]# yum install -y zabbix-get
Key:
咱們隨便找一個key,而後咱們複製後面的key
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k jmx["java.lang:type=Runtime",Uptime]
ZBX_NOTSUPPORTED:Unsupported item key.
提示:未支持的key,如今並不能獲取到這個key 由於沒有獲取到這個值,因此不會顯示。咱們能夠獲取別的試一下
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.079323
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.075377
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.075377
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.073547
小結: Zabbix其實就是經過zabbix_get 獲取到的這個值進行比較的
開啓zabbix debug模式
[root@linux-node2 tomcat]# systemctl restart zabbix-agent
### Option: DebugLevel
# Specifies debug level:
# 0 - basic information about starting and stopping of Zabbix processes
# 1 - critical information
# 2 - error information
# 3 - warnings
# 4 - for debugging (produces lots of information)
# 5 - extended debugging (produces even more information)
DebugLevel=4
若是及別是4
就是debug
模式,修改完配置文件以後須要重啓生效
1.開啓Nginx監控
2.編寫腳原本進行數據採集
3.設置用戶自定義參數
4.重啓zabbix-agent
5.添加item
6.建立圖形
7.建立觸發器
8.建立模板
1. 腳本編寫: 咱們這裏提供已經寫好的腳本
連接:https://pan.baidu.com/s/19JrCetaRZYGY_mvq4CyoJQ 密碼:94us
2. 須要修改一下zabbix-agent
的配置文件
vim /etc/zabbix/zabbix_agentd.conf
#修改Include設置,這樣咱們能夠把腳本放在這個目錄下。配置就是.conf結尾
Include=/etc/zabbix/zabbix_agentd.d/*.conf
3.添加權限及測試腳本
[root@linux-node1 zabbix_agentd.d]# chmod +x zabbix_linux_plugin.sh
[root@linux-node1 zabbix_agentd.d]# sh zabbix_linux_plugin.sh
Usage: zabbix_linux_plugin.sh {tcp_status key|memcached_status key|redis_status key|nginx_status key}
提示: 這個腳本要用zabbix用戶執行的權限,由於都是zabbix用戶在執行,監控TCP會在/tmp/目錄生成一個文件用於監控使用
4.修改nginx配置文件
提示:nginx 默認路徑是/usr/local/nginx 編譯安裝須要查看安裝路徑
[root@linux-node1 zabbix_agentd.d]# vim /usr/local/nginx/conf/nginx.conf
location /nginx_status {
stub_status on;
allow 127.0.0.1;
access_log off;
}
由於腳本的url是nginx_status
因此咱們配置文件也要這樣修改
測試腳本
[root@linux-node1 zabbix_agentd.d]# curl 192.168.56.11:8080/nginx_status
Active connections:1
server accepts handled requests
282368228236822821835
Reading:0Writing:1Waiting:0
[root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 active
1
[root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 reading
0
[root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 handled
2823688
設置Key
,首先是Key
的名稱
[root@linux-node1 zabbix_agentd.d]# cat linux.conf
UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1""$2""$3"
[*]表明一個傳參,能夠將後面的$1,$2,$3引入進行
,後面是腳步本的路徑
須要重啓agent
[root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent
咱們使用zabbix_get進行測試
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-k linux_status[nginx_status,8080,active]
1
[-k]就是指定key 不細說了
[*]*的做用在web界面配置item會顯示出來
5.Zabbix web界面設置
咱們須要添加item,由於要加好多。咱們就使用模板的方式進行添加
提示:咱們寫一下注釋而後選擇Add便可
找到咱們的模板
咱們建立item
建立
各參數前文都有講解不細說!
修改完成吼點擊Add
添加完成後咱們要複製不少個用來監控Nginx status
的全部狀態,因此咱們使用克隆
。來克隆多個進行設置
點進咱們的item,而後拖到最下面選擇克隆
填一些基本的修改便可,例以下:
添加完成以下圖:
item
添加完成咱們還須要添加一個圖形,用於展現,找到圖形路徑。點擊建立
由於咱們主機尚未加入咱們的模板,因此咱們這裏是沒有數據的
下面將模板加入到主機中
修改模板
查看結果以下:
6.導出模板
由於設置模板比較麻煩,咱們能夠將模板導出
導出以後咱們須要修更名稱就能夠了
7.導入模板
咱們須要導出天然須要導入,操做以下:
點擊添加便可
提示: 模板之間的名稱不能夠相同
8.導入TCP模板
加入模板的步驟跟剛剛加入Nginx
的同樣,這裏咱們就使用模板了。
下載連接:http://pan.baidu.com/s/1i54ULjJ 密碼:25lh
咱們導入模板便可
導入完成以後咱們能夠查看模板
在裏面咱們能夠見到TCP的11種狀態,這個item
是咱們須要根據咱們腳本進行同步的。
咱們能夠隨便點擊一個進行查看,其中這裏的key要和腳本的相同
咱們在兩臺服務器都加載這個模板
步驟和上面的同樣
添加完成
查看腳本須要等待1分鐘
,這主要看咱們設置的獲取值的時間而定。
咱們能夠查看圖形
###########################################################################################
上面咱們說到了監控TCP和Nginx狀態,可是光是監控是沒有任何做用的。監控完咱們不知道跟沒監控沒啥區別,下面咱們進行`監控項
的講解
首先咱們給Nginx添加觸發器
1.選擇Configuration--->Hosts
2.找到咱們相對應的主機進入
3.選擇主機中的Triggers
--->添加
(Create trigger
)
咱們設置一個事件
咱們選擇Insert
,而後選擇Add
便可
4.查看報警狀態
由於咱們設置的級別大於1就報警,默認Nginx是0,隨便訪問如下就是1.因此確定就會報警。報警郵件能夠根據咱們前面 [Zabbix 3.0 部署監控 [三]]文章進行設置
報警郵件以下:
咱們能夠查看這個事件的相關過程
以上就是咱們添加的一個觸發器報警步驟
Zabbix
默認觸發器的預值
比較低,咱們須要調大。這個在面試過程當中會被問到
咱們進行修改默認模板
路徑下圖:
咱們能夠看到默認是大於300
進行報警,咱們點進去修改便可
根據實際狀況進行修改,咱們設置600便可。同時觸發器支持多個條件進行報警,如or all
等,只須要在上面的值後面繼續添加便可。
咱們修改完以後
還有一個有警告顯示磁盤不夠,由於是虛擬機咱們不予理會,咱們能夠查看到恢復以後的郵件
提示: Zabbix郵件報警是3.0纔有的,之前不支持用戶名密碼。因此早期都是使用腳本進行發送郵件報警。
因爲時間關係咱們就不進行寫了請下載發送郵件的python
腳本:
連接:http://pan.baidu.com/s/1gfkGrgZ 密碼:6bsh
腳本註釋:
Python腳本中三個相關的參數
receiver = sys.argv[1]
#收件人地址
subject = sys.argv[2]
#發送郵件的主題
mailbody = sys.argv[3]
#發送郵件的內容
smtpserver ='smtp.exmail.qq.com'
#郵件服務器地址,本腳本使用的是企業郵箱
username ='username'
#用戶名
password ='password'
#密碼
sender = username
#發送人名稱
咱們若是要寫一個發送郵件的腳本,須要支持三
個參數
一、收件人
二、標題
三、內容
咱們也可使用shell
寫一個最簡單的
腳本存放路徑:咱們能夠在配置文件中查看
[root@linux-node1 web]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
提示: 這行配置文件定義了郵件腳本的存放路徑,由於它默認會從usr/lib/zabbix/alertscripts
查找郵件腳本
[root@linux-node1 web]# vim /usr/lib/zabbix/alertscripts/sms.sh
#!/bin/bash
ALTER_TO=$1
ALTER_TITLE=$2
ALTER_BODY=$3
echo $ALTER_TO >>/tmp/sls.log
echo $ALTER_TITLE >>/tmp/sms.log
echo $ALTER_BODY >>/tmp/sms.log
咱們能夠寫完以後進行檢測,若是這裏有信息說明已經調用這個腳本。 若是咱們有短信通道將裏面的內容換一下便可,短信通道都是有售後的
修改權限
[root@linux-node1 web]# chmod +x /usr/lib/zabbix/alertscripts/sms.sh
[root@linux-node1 web]# ll /usr/lib/zabbix/alertscripts/sms.sh
-rwxr-xr-x 1 root root 152Oct820:26/usr/lib/zabbix/alertscripts/sms.sh
咱們寫的腳本是短信報警,首先你須要有一個短信通道,咱們可使用阿里雲大魚
,本次咱們使用文件追加的形式來模擬.
點擊右上角建立報警介質
點擊最下面的Add
提示:先點擊小的Update
在點最下面的Update
咱們還須要修改報警媒介
找到相對應的用戶,點擊。
接下來就須要咱們觸發報警了
上面咱們設置的鏈接數是大於1,因此咱們多刷新幾回就能夠了
這裏顯示發送完成,咱們去日誌進行查看
13122323232爲發送的手機號
PROBLEM:爲主題信息NginxActive監控項
Original........:爲故障信息,2表明鏈接數是2
提示: 由於中國的短信收費是70個字符2毛,字母也算是。因此咱們發送郵件的報警信息就須要簡介明瞭一點
修改後以下:
設置完成以後最好數一下,不要超過70
個字符
http://www.alidayu.com/
有興趣的同窗能夠本身瞭解一下阿里大魚,能夠提供短信通道、語音、驗證碼等業務。
短信通道比較出名的幾款產品:
億美軟通 阿里大魚 騰訊雲也有
短信報警和郵件報警已經說過了,咱們簡單的說一下微信報警
由於在很早以前就說過,我的服務號和訂閱號不支持直接跟訂閱用戶進行溝通。若是是企業號能夠直接獲取到一個相似key,拿着這個key直接curl就能夠了發了。 具體內容能夠進行百度或者谷哥搜索。
擴展: 除了以上三種報警,還有釘釘報警
之前還有QQ報警
、飛信報警
,可是如今已經不開源了
提示: 上面那三行最好不要刪除,在生產環境中追加到一個文件中。記錄發送郵件的信息
#####################################################################################
Mysql監控
zabbix自帶了一個監控mysql的模板,可是真正監控mysql的並非zabbix自帶的模板。而是percona
公司的一個監控mysql模板
percona官網: www.percona.com
Percona組成介紹
一、php腳本 用來數據採集 二、shell腳本 用來調用採集信息 三、zabbix配置文件 四、zabbix模板文件
安裝文檔:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html
percona
利用的是php來獲取mysql
的相關信息,因此若是咱們想使用percona
插件監控mysql
就須要在agent
端安裝php
。在安裝文檔上有寫哦~
安裝步驟: 查看上面的連接也能夠進行安裝
咱們安裝在zabbix-server上,由於上面有一個MySQL
[root@linux-node1 web]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
[root@linux-node1 web]# yum install percona-zabbix-templates php php-mysql -y
#percona插件是經過php去獲取mysql的參數,因此咱們要安裝php和php-mysql
咱們能夠查看它都安裝了那些軟件
[root@linux-node1 web]# rpm -ql percona-zabbix-templates
/var/lib/zabbix/percona
/var/lib/zabbix/percona/scripts
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh #shell腳本
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php #php獲取mysql信息
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf #zabbix配置文件
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml #zabbix模板文件
在percona組成咱們已經說過了,此處只是略微介紹。
咱們將zabbix模板下載下來
[root@linux-node1 web]# sz /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml
而後咱們須要將模板經過web
界面導入到zabbix中
提示:若是出現錯誤,多是zabbix 3.0版本的問題。咱們這裏提供了一個生產的模板
下載連接:https://pan.baidu.com/s/1TgsPR3qjWyxjwKYQrz6fWQ 密碼:u09h
而後重新上傳便可
複製配置文件
[root@linux-node1 web]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@linux-node1 web]# ls /etc/zabbix/zabbix_agentd.d/
#安裝完軟件包後會在/var/lib/zabbix/percona/templates/目錄下產生一個配置文件,咱們將它拷貝,由於在前面的博文中,咱們已經修改過zabbix的配置文件[Include=/etc/abbix/zabbix_agentd.d/
]因此將配置文件放在這個目錄下,zabbix就會本身在這個目錄下查找相關信息
[root@linux-node1 web]# systemctl restart zabbix-agent.service
重啓一下!
下面就應該配置與MySQL的鏈接
在/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
建立一個文件
[root@linux-node1 ~]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
<?php
$mysql_user ='root';
$mysql_pass ='';
#用戶名密碼能夠本身建立,有密碼寫密碼,沒密碼爲空就行了
提示: 正常這裏的用戶咱們應該建立一個專門用來監控的,因爲我這裏是測試環境。就不浪費時間了
查看是否能夠獲取到值,隨便找一個測試
[root@linux-node1 ~]# cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf
選擇一個確定有值的key
[root@linux-node1 ~]# cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf|grep gm
UserParameter=MySQL.read-views,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gm
測試結果以下:
[root@linux-node1 ~]# cd /var/lib/zabbix/percona/scripts/
[root@linux-node1 scripts]#./get_mysql_stats_wrapper.sh gm
1
[root@linux-node1 scripts]#./get_mysql_stats_wrapper.sh gw
9736342
能夠獲取到值,說明沒有問題
舒適提示: shell腳本中數據庫的路徑是localhost
,若是咱們沒有受權localhost
會獲取不到值
[root@linux-node1 scripts]# cat get_mysql_stats_wrapper.sh
HOST=localhost
RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G'| egrep '(Slave_IO_Running|Slave_SQL_Running):'| awk -F:'{print $2}'| tr '\n'','`
#mysql是經過命令來獲取的,若是環境變量不同 也可能形成影響
Zabbix_Web界面配置
模板已經上傳到zabbix中,這時候咱們就須要進行設置了
提示: 咱們還須要受權/tmp下的一個文件,由於默認狀況下 zabbix在文件中獲取的值
修改完就能夠獲取值了,因此咱們還須要測試
結果以下圖
思想:
若是出現錯誤咱們須要先查看shell的腳本,由於shell是去調用php。 錯誤的因素有不少,最簡單的方法就是用shell 後面加上key 看看是否能夠有值。
其中報錯最多的地方就是php和mysql鏈接的問題,還有咱們mysql受權的一些問題。
#######################################################################################
Zabbix 默認自帶一個web
監控
咱們能夠從Monitoring--->Web
進行查看
首先咱們須要檢查192.168.56.12
是否有tomcat
,是否能夠運行。可否訪問
1.查看進程
[root@linux-node2 ~]# ps -ef|grep java
root 804825468010:31 pts/000:00:00 grep --color=auto java
root 4275710Sep26 pts/000:38:59/usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djdk.tls.ephemeralDHKeySize=2048-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.56.12-classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
2.查看端口
[root@linux-node2 ~]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 42757 root 48uIPv63793790t0 TCP *:webcache (LISTEN)
3.測試是否能夠訪問8080端口
[root@linux-node2 ~]# curl -I 192.168.56.11:8080
HTTP/1.1200 OK
Server: nginx/1.10.1
Date:Mon,10Oct201605:08:18 GMT
Content-Type: text/html
Content-Length:612
Last-Modified:Mon,19Sep201601:59:49 GMT
Connection: keep-alive
ETag:"57df4695-264"
Accept-Ranges: bytes
提示: 監控Web 不依賴於agent,是server直接發送請求的
提示: 這裏名字叫作Web場景,由於咱們能夠設置觸發上面3個選項後,才進行報警
提示: 字符串裏面能夠添加一些字符串,當請求下來有這個字符串就是正常,沒有就是不正常。可是最經常使用的仍是狀態
而後咱們選擇Add
比較坑的一點是,咱們新添加了一個Web監控。zabbix默認沒有給咱們安裝觸發器
Web監控中默認不含有觸發器,因此須要手動添加
點右上角,進行建立觸發器
一、停掉tomcat,要想返回值不是200 停掉tomcat是最簡單的
[root@linux-node2 ~]#/usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
檢查
[root@linux-node2 ~]# ps aux|grep tomcat
root 87230.00.0112648976 pts/1 R+12:210:00 grep --color=auto tomcat
報警以下:
回覆如上
郵件報警設置能夠訪問 Zabbix 3.0 生產案例 [五]
咱們還能夠優化動做[Actions]
Zabbix 就是一個萬能的什麼均可以監控,只要咱們有key。什麼均可以監控
key咱們可使用腳本,程序等等等
###########################################################################################
1.監控主機多,性能跟不上,延遲大
2.多機房,防火牆因素
Zabbix輕鬆解決以上問題,Nagios
不太好解決的問題。
Zabbix 模式介紹:
一、被動模式
二、主動模式
默認是被動模式,咱們能夠經過如下方式查看監控項是什麼模式
由於咱們使用的是模板,沒法進行修改。咱們能夠修改配置文件或者新建item的時候設置。
注意:
一、當監控主機超過300+,建議使用主動模式(此處是一個經驗值,要根據服務器的硬件來進行考慮)
二、還須要保證Queue對列裏面沒有延遲的主機
Queue 對列介紹
若是此處的延遲主機有點多的話,咱們就須要將被動模式修改成主動模式.
將192.168.56.12
監控設置爲主動模式
一、修改配置文件
爲了方便模擬,咱們將node2(192.168.56.12)從Zabbix刪除重新添加
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
#Server=192.168.56.11
#咱們須要註釋Server,由於這個是被動模式用的
StartAgents=0
#設置爲0以後就不會TCP端口,以前監聽TCP端口是由於Server要去問agent信息因此須要開啓
ServerActive=192.168.56.11
#此處能夠是IP或者是域名,他會鏈接10051端口
Hostname=linux-node2.example.com
#惟一識別符,咱們須要修改爲咱們本機的主機名。若是咱們不設置,它默認會經過item來獲取
[root@linux-node2 ~]# systemctl restart zabbix-agent.service
保存重啓
保存重啓以後咱們能夠查看咱們監聽的一些端口,由於咱們關閉的被動模式因此不會在監聽zabbix端口了
[root@linux-node2 ~]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp6 00:::44589:::* LISTEN 9052/java
tcp6 00:::8080:::* LISTEN 9052/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00:::8888:::* LISTEN 9052/java
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::39743:::* LISTEN 9052/java
tcp6 00127.0.0.1:8005:::* LISTEN 9052/java
tcp6 00:::8009:::* LISTEN 9052/java
咱們能夠查看日誌,進行檢查
[root@linux-node2 ~]# tailf /var/log/zabbix/zabbix_agentd.log
14932:20161011:084303.210****Enabled features ****
14932:20161011:084303.210IPv6 support: YES
14932:20161011:084303.210 TLS support: YES
14932:20161011:084303.210**************************
14932:20161011:084303.210 using configuration file:/etc/zabbix/zabbix_agentd.conf
14932:20161011:084303.210 agent #0 started [main process]
14933:20161011:084303.227 agent #1 started [collector]
14934:20161011:084303.227 agent #2 started [active checks #1]
14934:20161011:084303.271 no active checks on server [192.168.56.11:10051]: host [linux-node2.example.com]not found
14934:20161011:084503.415 no active checks on server [192.168.56.11:10051]: host [linux-node2.example.com]not found
日誌解釋:
zabbix—agent
設置完主動模式後,會去主動問server
需求。至關於入職剛入職運維須要老大進行分配任務。而且之後就會根據這個任務清單進行執行
由於咱們尚未配置server,因此如今會出現錯誤
Zabbix-web設置
咱們須要添加zabbix-agent
添加模板,zabbix
沒有提供主動模式的模板。因此咱們須要克隆一下OS Linux
找到OS Linux
模板,移動到最下面 點擊複製
咱們重新進行設置名稱
修改咱們剛剛添加的模板名爲OS Linux Active
咱們點擊剛剛建立模板的item
而後選擇最下方Update
結果以下:
在次查看模板,發現zabbix還依賴一個模板。咱們須要把它也改了或者是刪掉。
咱們添加主機
添加模板
#提示:咱們已經能夠獲取到數據了,可是發現zabbix 這個模塊發紅。多是因爲咱們沒有修改他的依賴形成的
以下圖:
可能是經過agent.ping
來獲取信息,沒有看過源碼 因此不太清楚,我研究它
zabbix主備模式完成
#########################################################################################
Zabbix Proxy
是一個相似於代理的服務,能夠代替Zabbix-server
獲取 zabbix-agent
信息。其中數據
存到本地(Proxy有本身的數據庫)而後在發送給Server,這樣能夠保證數據不丟失
Zabbix-server ----->Zabbix-Proxy ----->Zabbix-Server
地址:https://www.zabbix.com/documentation/3.0/manual/distributed_monitoring/proxies
經常使用於多機房狀況或者監控主機特別多,幾千臺左右。這時候使用Zabbix Proxy 能夠減輕服務器server
的壓力,還能夠減輕Zabbix的維護。
最經常使用的特色是適用於多機房
、網絡不穩定
的時候,由於若是直接由Zabbix-server發送信息可能agent沒有收到,可是直接使用Zabbix-Proxy
就不會遇到這個問題。
Zabbix官方說明(分佈式監控)
Proxy 有以下功能
地址: https://www.zabbix.com/documentation/3.0/manual/distributed_monitoring
NO - 中文解釋
1.沒有Web界面
2.自己不作任何告警通知(告警通知都是Server作)
小結:
Zabbix Proxy
能夠有多個,用來代理Zabbix server
來運行。Proxy
會將全部數據暫存於本地,而後同一轉發到Zabbix Server上
Proxy只須要一條TCP連接,能夠鏈接到Zabbix-server上便可。因此防火牆只須要添加一條Zabbix Proxy便可 咱們能夠參考上面的Zabbix Proxy圖
Proxy是須要使用單獨的數據庫
,因此不能將Server
和Agent
放在一塊兒
Proxy說明:https://www.zabbix.com/documentation/3.0/manual/distributed_monitoring/proxies
安裝文檔:https://www.zabbix.com/documentation/3.0/manual/installation/install
官方文檔使用的是源碼安裝,由於方便咱們使用yum安裝,由於咱們只有2臺,因此就用agent當作Proxy
[root@linux-node2 ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mariadb-server
咱們須要啓動MySQL
[root@linux-node2 ~]# systemctl start mariadb.service
咱們還須要建立一個庫
mysql
create database zabbix_proxy character set utf8;
grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy';
咱們須要導入數據
[root@linux-node2 ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.5/
[root@linux-node2 zabbix-proxy-mysql-3.0.5]# zcat schema.sql.gz | mysql -uzabbix_proxy -p zabbix_proxy
Enter password:
#密碼是:zabbix_proxy 是咱們數據庫受權的密碼
檢查數據庫
mysql
show databases;
use zabbix_proxy;
show tables;
#查看是否含有數據
咱們須要修改proxy
的配置文件
[root@linux-node2 zabbix-proxy-mysql-3.0.5]# vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.56.11
Hostname=Zabbix proxy
DBName=zabbix_proxy
#數據庫名稱
DBUser=zabbix_proxy
#用戶名
DBPassword=zabbix_proxy
#用戶密碼
配置文件中沒有配置的內容以下:(有須要能夠配置)
# ProxyLocalBuffer=0
#數據保留的時間(小時爲單位)
# ProxyOfflineBuffer=1
#連不上Server,數據要保留多久(小時爲單位,默認1小時)
# DataSenderFrequency=1
#數據的發送時間間隔(默認是1秒)
# StartPollers=5
#啓動的線程數
# StartIPMIPollers=0
#啓動IPMI的線程數
從這往下都是性能的監控,就不一次說明了。上面都有中文註釋
過濾修改過的配置以下:
[root@linux-node2 zabbix-proxy-mysql-3.0.5]# grep '^[a-Z]'/etc/zabbix/zabbix_proxy.conf
Server=192.168.56.11
Hostname=Zabbix proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
啓動
[root@linux-node2 ~]# systemctl start zabbix-proxy
查看proxy
進程
[root@linux-node2 ~]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:33060.0.0.0:* LISTEN 15685/mysqld
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp 000.0.0.0:100510.0.0.0:* LISTEN 15924/zabbix_proxy
tcp6 00:::44589:::* LISTEN 9052/java
tcp6 00:::8080:::* LISTEN 9052/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00:::8888:::* LISTEN 9052/java
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::39743:::* LISTEN 9052/java
tcp6 00:::10051:::* LISTEN 15924/zabbix_proxy
tcp6 00127.0.0.1:8005:::* LISTEN 9052/java
tcp6 00:::8009:::* LISTEN 9052/java
Zabbix-proxy 監控10051端口,由於是代理就必須跟Server的端口相同,對於Agent Proxy就是Server
Zabbix Web 添加
點擊Add便可
咱們須要將這臺主機的Server
設置爲Proxy
編輯192.168.56.12
這臺主機,須要將Server的IP地址修改爲本身的
由於如今是主動模式,咱們只須要修改主動模式的Server便可
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.56.12
#配置文件修改完須要重啓
[root@linux-node2 ~]# systemctl restart zabbix-agent
這時候咱們就能夠看到那個proxy
都管理了那些機器,作到方便管理的機制
proxy簡單的理解就是一個Server
全部的自動化均可以分爲2
種
1.自動註冊
Zabbix agnet 自動添加
2.主動發現
1.自動發現 Discover
2.zabbix api
由於咱們只有2
臺web
,爲了方便演示。咱們將原來添加的proxy
刪掉.
提示: 主動模式下設置自動註冊
agent配置文件修改
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
LogFileSize=0
StartAgents=0
Server=192.168.56.11
ServerActive=192.168.56.11
Hostname=192.168.56.11
HostMetadata=system.uname
#Server IP地址
HostMetadataItem=system.uname
#特徵
1.能夠咱們本身寫一個特徵
2.咱們執行一個key
#手寫級別大於執行key
過濾出咱們的配置[以下]
[root@CentOS6 zabbix]# egrep -v "#|^$" zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
Server=192.168.56.11
ServerActive=192.168.56.11
Hostname=192.168.56.12
HostMetadata=system.uname
Include=/etc/zabbix/zabbix_agentd.d/
咱們先不重啓,由於重啓就生效了。咱們須要設置一個規則.
注意自動發現必需要設置ServerActive讓客戶端啓動主動去尋找服務端
提示,zabbix-agent起來的時候去找server,這時候就會產生一個事件,而後咱們能夠基於這個事件來完成一個動做
提示: zabbix-agent起來的時候回去找Server,這時候就會產生一個事件,而後咱們能夠基於這個事件來完成一個動做。
咱們須要選中,而後在進行建立
若是選項匹配到Linux,爲何匹配Linux呢? 由於Linux 能夠在輸入任何命令均可以生成
[root@linux-node2 ~]# uname
Linux
[root@linux-node2 ~]# uname -a
Linux linux-node2.example.com 3.10.0-327.36.1.el7.x86_64 #1 SMP Sun Sep 18 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
提示: 須要點擊小的Add 才能夠繼續操做
設置操做
咱們先點擊Add
,在選擇Host
咱們在添加一個主機組,隨便選一個就能夠。
咱們在添加一個模板
解釋: 這樣設置後我發現你這臺主機我會給你設置一個主機組和一個模板。而且是Linux
最後咱們選擇Add
修改完以後咱們在重啓
一下
[root@linux-node2 ~]# systemctl restart zabbix-agent.service
若是尚未出來,咱們能夠稍等一會
自動註冊完!
----------分割線---------------
由於咱們的服務器只用了2
臺,因此昨晚自動註冊
咱們在把它停掉。要不總會影響咱們
咱們在刪除剛剛添加的主機
自動發現能夠去掃描IP地址範圍(須要手動設置)進行發現的動做
官方說明: https://www.zabbix.com/documentation/3.0/manual/discovery/network_discovery
建立Zabbix自動發現(生產通常不用)
惟一的標識咱們能夠設置IP地址,或者key值
而後咱們建立一個Action
(動做)
如今它本身就添加上去了
Zabbix
提供了一個豐富的API
,Zabbix
提供的API有2
種功能。
一個是管理
一個是查詢
請求方法 POST
咱們能夠進行訪問查看
沒法打開,咱們須要進行POST
請求才能夠。
官方說明文檔:https://www.zabbix.com/documentation/3.0/manual/api
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "zhangsan",
"password": "123456"
},
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
-d
請求的內容
-H
類型
id
名字,相似一個標識
user
咱們登錄用的是zhangsan 默認是Admin
password
默認是zabbix,咱們修改成123456了
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
> {
> "jsonrpc": "2.0",
> "method": "user.login",
> "params": {
> "user": "zhangsan",
> "password": "123456"
> },
> "id": 1
> }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
--------------------------分割線------------------------
下面是返回的結果!!!!!!!!!!!!!!!!!!!!!!
{
"id":1,
"jsonrpc":"2.0",
"result":"d8286f586348b96b6b0f880db3db8a02"
}
例如:咱們獲取全部主機的列表
官方文檔:https://www.zabbix.com/documentation/3.0/manual/api/reference/host/get
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
提示: auth裏面填寫的是咱們剛剛返回的result
裏面的值,若是咱們在["hostid"]
加上id就會顯示id。想全顯示主機名就直接寫host
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
{
"id":1,
"jsonrpc":"2.0",
"result":[
{
"host":"Zabbix server",
"hostid":"10084"
},
{
"host":"linux-node1.example.com",
"hostid":"10105"
},
{
"host":"linux-node1.example.com1",
"hostid":"10107"
},
{
"host":"linux-node2.example.com",
"hostid":"10117"
}
]
}
對比圖
例如:如何獲取模板
官方文檔:https://www.zabbix.com/documentation/3.0/manual/api/reference/template/get
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend"
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
默認太多不發了,看圖!
過濾
過濾主機有OS LINUX
的模板
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": [
"Template OS Linux"
]
}
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
效果圖以下!
咱們提供一個快速認證的Python
腳本
連接:http://pan.baidu.com/s/1gf0pQwF 密碼:m7dq
腳本內容以下
[root@linux-node1 ~]# cat zabbix_auth.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import json
url ='http://192.168.56.11/zabbix/api_jsonrpc.php'
post_data ={
"jsonrpc":"2.0",
"method":"user.login",
"params":{
"user":"zhangsan",
"password":"123123"
},
"id":1
}
post_header ={'Content-Type':'application/json'}
ret = requests.post(url, data=json.dumps(post_data), headers=post_header)
zabbix_ret = json.loads(ret.text)
ifnot zabbix_ret.has_key('result'):
print'login error'
else:
print zabbix_ret.get('result')
咱們能夠執行一下進行查看
提示: 須要修改裏面的用戶名
和密碼
!
#安裝python環境
[root@linux-node1 ~]# yum install python-pip -y
[root@linux-node1 ~]# pip install requests
You are using pip version 7.1.0, however version 8.1.2is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting requests
Downloading requests-2.11.1-py2.py3-none-any.whl (514kB)
100%|████████████████████████████████|516kB204kB/s
Installing collected packages: requests
Successfully installed requests-2.11.1
################################################
################################################
################################################
執行結果
[root@linux-node1 ~]# python zabbix_auth.py
5b21317186f2a47404214556c5c1d846
首先咱們須要刪除主機和自動發現
咱們使用API來實現自動添加監控主機
使用API添加主機:https://www.zabbix.com/documentation/3.0/manual/api/reference/host/create
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Zabbix agent 192",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.56.12",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "8"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "5b21317186f2a47404214556c5c1d846",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
用戶組ID獲取方法
模板IP查看方法
執行結果以下:
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
> {
> "jsonrpc": "2.0",
> "method": "host.create",
> "params": {
> "host": "Zabbix agent 192",
> "interfaces": [
> {
> "type": 1,
> "main": 1,
> "useip": 1,
> "ip": "192.168.56.12",
> "dns": "",
> "port": "10050"
> }
> ],
> "groups": [
> {
> "groupid": "8"
> }
> ],
> "templates": [
> {
> "templateid": "10001"
> }
> ]
> },
> "auth": "5b21317186f2a47404214556c5c1d846",
> "id": 1
> }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
{
"id":1,
"jsonrpc":"2.0",
"result":{
"hostids":[
"10118"
]
}
}
查看Zabbix 頁面
提示: 裏面的主機名/模板 都是咱們設置好的
Zabbix完!