zabbix的安装(一)监控os资源:内存,cpu,io,负载,带宽
一、Linux下開源監(jiān)控系統(tǒng)簡單介紹
1)cacti:存儲數(shù)據(jù)能力強,報警性能差
2)nagios:報警性能差,存儲數(shù)據(jù)僅有簡單的一段可以判斷是否在合理范圍內(nèi)的數(shù)據(jù)長度,儲存在內(nèi)存中。比如,連續(xù)采樣數(shù)據(jù)存儲,有連續(xù)三次不在合理范圍內(nèi)的數(shù)據(jù)就報警
3)zabbix:結(jié)合上面兩種工具的優(yōu)點,又可以存儲數(shù)據(jù),又可以報警。
Zabbix是一個基于Web界面提供分布式系統(tǒng)監(jiān)視及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級開源解決方案。借助Zabbix可很輕松地減輕運維人員們繁重的服務(wù)器管理任務(wù),實現(xiàn)業(yè)務(wù)系統(tǒng)持續(xù)運行。
下面會逐步介紹Zabbix分布式監(jiān)控系統(tǒng)的部署及使用記錄
二、zabbix特性
1)數(shù)據(jù)采樣:通過snmp、ssh、telnet、agent、ipmi、jmx等通道采集被監(jiān)控主機的數(shù)據(jù)。可以自定義檢測機制和自定義時間間隔
2)實時繪圖:展示,讀取數(shù)據(jù)繪圖,支持graph,map,screen,幻燈片(slide show)
3)告警:(升級告警,規(guī)定時間內(nèi)內(nèi)解決不了的事情往上傳)
4)數(shù)據(jù)存儲:數(shù)據(jù)庫有mysql,pgsql,時間序列數(shù)據(jù)庫等等
三、程序構(gòu)成
1)zabbix_server:服務(wù)端守護進程
2)zabbix_agented:agent端守護進程
3)zabbix_proxy:代理服務(wù)器(可選,分布式才用到)
4)zabbix_get:命令行工具,手動測試數(shù)據(jù)采集
5)zabbix_sender:命令行工具,運行于agent端,手動向server端發(fā)送數(shù)據(jù)
6)zabbixjavagateway:java網(wǎng)關(guān)
Zabbix的監(jiān)控流程可以簡單描述為:
數(shù)據(jù)采集-->數(shù)據(jù)存儲-->數(shù)據(jù)分析-->數(shù)據(jù)展示-->監(jiān)控報警
其中:
數(shù)據(jù)采集:Zabbix通過SNMP、Agent、ICMP、SSH、IPMI等進行數(shù)據(jù)采集
數(shù)據(jù)存儲:Zabbix存儲在MySQL上,也可以存儲在其他數(shù)據(jù)庫
數(shù)據(jù)展示:web界面展示、(移動APP、java_php開發(fā)一個web界面也可以)
數(shù)據(jù)報警:郵件報警、微信報警、短信報警、報警升級機制
Zabbix的監(jiān)控配置流程可以簡單描述為:
告警是由一系列的流程組成,首先是觸發(fā)器達到閥值,產(chǎn)生一個事件,接下來由Action對事件信息進行處理,其中包括兩部分:
第一部分是發(fā)送消息,即將告警信息發(fā)送給用戶。
第二部分是執(zhí)行命令,即將事件用命令進行處理,達到對事件故障自動嘗試恢復(fù)的效果。
Host groups(主機組)-->Hosts(主機)-->template(模板)-->Applications(監(jiān)控項組)-->Items(監(jiān)控項)-->graph(圖形) -->screen (圖形分組)-->Triggers(觸發(fā)器)-->Event(事件)-->Actions(處理動作)-->Media types(告警升級|1.執(zhí)行遠程命令2.發(fā)送告警郵件)-->User groups(用戶組)-->Users(用戶)-->Medias(告警郵件)
在實際生產(chǎn)使用的時候,Items、Trigger、Graph采用模板來進行監(jiān)控,模板特點就是可以重復(fù)的事情一次完成,修改了模板等于修改了所有調(diào)用此模板的主機,這樣可解放運維的雙手.
Graph不是必需的,因為沒有配置圖形,數(shù)據(jù)獲取并不影響,獲取數(shù)據(jù)是Items的功能。但是對于使用ZabbixWeb界面用戶來說,沒有圖形等于沒有數(shù)據(jù),因此重要的Items必須添加必要的圖形以做可視化展示。如果想集中查看圖形,可以通過screen功能。
四、zabbix主動模式和被動模式
zabbix使用proxy代理插件的好處:
一方面可以監(jiān)控不可達的遠程區(qū)域; 另一方面當監(jiān)控項目數(shù)以萬計的時候使用代理可以有效分擔zabbix server壓力,也簡化分布式監(jiān)控的維護。 說明: 主動、被動模式都是相對于proxy來說的。 proxy主動發(fā)送數(shù)據(jù)就是主動模式; proxy等待server的請求,再發(fā)送數(shù)據(jù)就是被動模式。 因為主動模式可以有效減輕zabbix server壓力,需要監(jiān)控的東西很多時一定要把監(jiān)控模式更改為主動監(jiān)控 被動模式流程,被動模式一定要記得設(shè)置Server = ServerIP 被動模式工作流程: Server 打開一個TCP連接 Server發(fā)送一個key 為agent.ping Agent接受這個請求,然后響應(yīng)< HEADER >< DATALEN > Server對接受到的數(shù)據(jù)進行處理 TCP連接關(guān)閉 主動模式流程,主動模式一定要記得設(shè)置ServerActive=ServerIP Agent向Server建立一個TCP連接 Agent請求需要檢測的數(shù)據(jù)列表 Server響應(yīng)Agent,發(fā)送一個Items列表 Agent允許響應(yīng) TCP連接完成本次會話關(guān)閉 Agent開始周期性地收集數(shù)據(jù) 五、基礎(chǔ)環(huán)境LNMP部署1)配置好IP、DNS 、網(wǎng)關(guān),確保使用遠程連接工具能夠連接服務(wù)器 im /etc/sysconfig/iptables?
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ? ? ? ? ??
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT ? ? ?
特別提示:很多網(wǎng)友把這兩條規(guī)則添加到防火墻配置的最后一行,導(dǎo)致防火墻啟動失敗,正確的應(yīng)該是添加到默認的22端口這條規(guī)則的下面
添加好之后防火墻規(guī)則如下所示:
---------------------------------------------------------------------------------------------------
# Firewall configuration written by system-config-firewall?
# Manual customization of this file is not recommended.?
*filter?
:INPUT ACCEPT [0:0]?
:FORWARD ACCEPT [0:0]?
:OUTPUT ACCEPT [0:0]?
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT?
-A INPUT -p icmp -j ACCEPT?
-A INPUT -i lo -j ACCEPT?
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT?
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT?
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT?
-A INPUT -j REJECT --reject-with icmp-host-prohibited?
-A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
---------------------------------------------------------------------------------------------------
[root@Zabbix-server ~]# /etc/init.d/iptables restart ? ? ? ? ? ? ? ? ? ??
3)關(guān)閉SELINUX?
[root@Zabbix-server ~]# vim /etc/selinux/config?
#SELINUX=enforcing ? ? ? ? ????
#SELINUXTYPE=targeted ? ? ?
SELINUX=disabled ??? ? ? ? ? ??
[root@Zabbix-server ~]# reboot ? ? ?//重啟后永久生效,或者使用setenforce 0臨時生效
4)系統(tǒng)約定?
軟件源代碼包存放位置:/usr/local/src?
源碼包編譯安裝位置:/usr/local/軟件名字
此處參照:nginx1.10.3+php5.6+mysql5.7.0
測試完成后,確保nginx,php,mysql都能正常啟動,能夠訪問php頁面
?
下面正式配置zabbix-3.0.3
環(huán)境說明
zabbix-server:192.168.1.1 ? ? #zabbix的服務(wù)端(若要監(jiān)控本機,則需要配置本機的Zabbix agent)
zabbix-agent:192.168.1.2 ? ? #zabbix的客戶端(被監(jiān)控端,需要配置Zabbix agent)
一、zabbix-server端的操作記錄(192.168.1.1)
1 創(chuàng)建zabbix運行的用戶2 安裝libcurl和net-snmp
3 安裝Fping
4 安裝zabbix server
5 Zabbix Server配置與啟動
6 Nginx配置 和 php.ini配置
groupadd zabbix
useradd -g zabbix zabbix
yum -y install libcurl net-snmp
cd /usr/local/src
wget -c http://fping.org/dist/fping-3.4.tar.gz
./configure
make && make install
chown root:zabbix /usr/local/sbin/fping
chown 4710 /usr/local/sbin/fping
安裝zabbix server
wget -c http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent? --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --enable-java
編譯時最好帶上--enable-java這個參數(shù),方便以后監(jiān)控tomcat用
zabbix server配置和啟動
創(chuàng)建zabbix數(shù)據(jù)庫和mysql用戶
>create schema zabbix character set utf8;
>create user 'zabbix'@'%' identified by '123456';
>grant all on zabbix.* to 'zabbix'@'%';
導(dǎo)入Zabbix初始數(shù)據(jù):
cd /usr/local/src/zabbix-3.0.3/database/mysql
這個下面有三個sql的文檔:data.sql images.sql schema.sql
登錄mysql,進行zabbix初始數(shù)據(jù)導(dǎo)入:
use zabbix;
set sql_log_bin=0;
source ./schema.sql;
source ./images.sql;
source ./data.sql;
set sql_log_bin=1;
?
編輯/usr/local/zabbix/etc/zabbix_server.conf:
[root@Zabbix-server ~]#vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=192.168.1.1
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
FpingLocation=/usr/local/sbin/fping
該配置文件定義了php的安裝的log的目錄,用戶名,密碼端口,數(shù)據(jù)庫名稱
從安裝目錄拷貝zabbix_server腳本,并編輯:
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# cd zabbix-3.0.3
[root@Zabbix-server zabbix-3.0.3]# cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/
[root@Zabbix-server zabbix-3.0.3]# mkdir -p /usr/local/zabbix/logs
[root@Zabbix-server zabbix-3.0.3]# chown -R zabbix:zabbix /usr/local/zabbix
[root@Zabbix-server zabbix-3.0.3]# vim /etc/init.d/zabbix_server
[root@Zabbix-server zabbix-3.0.3]# cat /etc/init.d/zabbix_server
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
CONF_FILE="/usr/local/zabbix/etc/zabbix_server.conf"
...
start() {
...
daemon $ZABBIX_BIN -c $CONF_FILE
...
}
?
調(diào)整防火墻規(guī)則(開放端口10051):
[root@Zabbix-server ~]# vim /etc/sysconfig/iptables
...
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT
...
?
[root@Zabbix-server ~]# /etc/init.d/iptables restart
?
啟動Zabbix Server:
[root@Zabbix-server ~]# service zabbix_server start ? ? ? ? ? ? ? ? ?
#也可以直接/usr/local/zabbix/sbin/zabbix_server方式啟動
配置開機自動啟動:
[root@Zabbix-server ~]# chkconfig --add zabbix_server
[root@Zabbix-server ~]# chkconfig --level 35 zabbix_server on
Zabbix的Web前端
在安裝目錄將frontends拷貝到指定的web root:
[root@Zabbix-server ~]# mkdir -p /data/www/zabbix
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# cd zabbix-3.0.3
[root@Zabbix-server zabbix-3.0.3]#cp -a frontends/php/* /data/www/zabbix/
[root@Zabbix-server zabbix-3.0.3]# chown -R www:www /data/www/zabbix
Nginx配置:
[root@Zabbix-server ~]# cat /usr/local/nginx/conf/vhost/zabbix.conf
server {listen 80;server_name zabbix.zrwm.com;location / {root /data/www/zabbix;index index.php index.html index.htm ;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}location ~ \.php$ {root /data/www/zabbix;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}
php.ini配置:
[root@Zabbix-server ~]# cat /usr/local/php5/etc/php.ini
...
memory_limit = 128M
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
session.auto_start = 0 ; ? ? ? ? ? ? ? ? ??//必須為0
mbstring.func_overload = 0
date.timezone = Asia/ShangHai
?
注:PHP需要至少開啟擴展:gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
如下,查看是否包括了上面所提到的擴展模塊
[root@Zabbix-server ~]# /usr/local/php5/bin/php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
?
訪問Web界面http://zabbix.zrwm.com,進行相關(guān)web配置,配置完成后使用默認用戶admin(密碼:zabbix)登陸即可.
?
在登錄web界面后出現(xiàn)一些可能的報錯
1)PHP option "max_execution_time" 120 300 failed # vim /data/php/lib/php.ini max_execution_time = 300 //修改為300 然后重啟nginx(若是apache+php,就重啟apache)2)PHP bcmath off failed 解決辦法:安裝php的bcmath擴展 # yum install *bcmath* --skip-broken # cd /data/software/php-5.6.30/ext/bcmath/ # /data/php/bin/phize # ./configure --with-php-config=/data/php/bin/php-config # make && make install # vim /data/php/lib/php.ini 添加下面內(nèi)容 ..... extension=/data/php/lib/php/extensions/no-debug-zts-20131226/bcmath.so然后重啟php(若是apache+php,就重啟apache)3)about always-populate-raw-post-data must be set -1 的問題:PHP option "always_populate_raw_post_data" on off failed 解決辦法: # vim /data/vhosts/zabbix/include/classes/setup/CFrontendSetup.php 添加下面這一行 .......public function checkPhpAlwaysPopulateRawPostData() {$current = ini_get('always_populate_raw_post_data');$current = -1; //添加這一行內(nèi)容return ['name' => _s('PHP option "%1$s"', 'always_populate_raw_post_data'),'current' => ($current != -1) ? _('on') : _('off'),'required' => _('off'),'result' => ($current != -1) ? self::CHECK_FATAL : self::CHECK_OK,'error' => _s('PHP option "%1$s" must be set to "%2$s"', 'always_populate_raw_post_data', -1)];?
二、zabbix客戶端的操作記錄(192.168.1.2)
安裝Zabbix,配置Zabbix agent:
[root@bastion-IDC ~]# cd /usr/local/src/
[root@bastion-IDC src]# wget -c wget -c http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz/download
[root@bastion-IDC src]# cd zabbix-3.0.3
[root@bastion-IDC zabbix-3.0.3]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@bastion-IDC zabbix-3.0.3]# make && make install
[root@bastion-IDC zabbix-3.0.3]# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
配置zabbix_agentd:
[root@bastion-IDC ~]# groupadd zabbix
[root@bastion-IDC ~]# useradd -g zabbix zabbix
[root@bastion-IDC ~]# mkdir -p /usr/local/zabbix/logs
[root@bastion-IDC ~]# chown zabbix:zabbix -R /usr/local/zabbix/
[root@bastion-IDC ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
[root@bastion-IDC ~]# cat /usr/local/zabbix/etc/zabbix_agentd.conf
...
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.1.1
ListenPort=10050
ServerActive=192.168.1.1
Hostname=192.168.1.2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
[#在192.168.1.2本機的/etc/hosts里做主機映射:“ip ?hostname”][也可以設(shè)置公網(wǎng)ip]
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
...
配置Zabbix Agent啟動腳本:
[root@bastion-IDC ~]# cat /etc/init.d/zabbix_agentd
...
prog="Zabbix Agent"
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONF_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
...
daemon $ZABBIX_BIN -c $CONF_FILE
...
}
...
開啟防火墻端口10050:
[root@bastion-IDC ~]# cat /etc/sysconfig/iptables
...
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
...
[root@bastion-IDC ~]# /etc/init.d/iptables restart
啟動zabbix_agentd:
[root@bastion-IDC ~]# /etc/init.d/zabbix_agentd start
Starting Zabbix Agent: [ OK ]
配置開機自動啟動:
[root@bastion-IDC ~]# chkconfig --add zabbix_agentd
[root@bastion-IDC ~]# chkconfig --level 35 zabbix_agentd on
測試下zabbix agent是否正常工作:
[root@bastion-IDC ~]# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf -t system.uptime
system.uptime [u|68301]
?
登錄zabbix,先在“配置”-“主機”里添加主機監(jiān)控,監(jiān)控os資源:內(nèi)存,cpu,io,負載,帶寬等
注意:下圖中的“主機名稱”要和zabbix_agentd.conf文件中設(shè)置的“Hostname”后面的名稱一致!
配置一段時間,看效果圖
?
在zabbix界面中,默認要查看多個主機的監(jiān)控數(shù)據(jù)時需要不停的切換。其實可以在一個頁面中批量查看多個主機的監(jiān)控項的數(shù)據(jù),這就需要使用Screen方法(Screen 的方法是將每個item的graph放到一個屏幕上,即在聚合圖形里選擇要放在一個screen里的圖形,事先創(chuàng)建一個拓撲圖。注意選擇磁盤空間監(jiān)控項的圖形時,圖形樣式調(diào)整“層積“顯示),但是看起來不夠明晰;最好是將各機器的同一item放到同一個graph里。比如一個Nginx的組里有10臺機器,將這10臺機器的內(nèi)存使用率放到一個graph里,方便在測試時查看。
在zabbix的前端要創(chuàng)建此類的graph只能通過手工一個一個的加,不能創(chuàng)建此類的templates。在網(wǎng)上有批量創(chuàng)建Screen的針對API的python腳本。
-------------------------------------------------------------------------------------------------------------------------
zabbix監(jiān)控獲取數(shù)據(jù)的途徑有簡單檢查,zabbix agent,snmp。可以通過zabbix agent獲取客戶機的cpu、內(nèi)存、磁盤io等監(jiān)控數(shù)據(jù);但是對于交互機(打印機,路由器等網(wǎng)絡(luò)設(shè)備)的監(jiān)控就要用到snmp協(xié)議,snmp通過特定的oid值來獲取對應(yīng)的數(shù)據(jù)。交換機需要開啟snmp協(xié)議,通過snmpwalk 可以抓取到數(shù)據(jù)就可以了(snmpwalk -v 2c -c public *.*.*.*)
------------------------------------------------------------------------------------------------------------------------
使用zabbix的ICMP Ping模版實現(xiàn)對客戶端網(wǎng)絡(luò)狀態(tài)的監(jiān)控
如上正確安裝及配置fping,然后在服務(wù)端進行zabbix用戶測試fping命令
[root@Zabbix-server ~]# /usr/local/sbin/fping www.baidu.com
www.baidu.com is alive //說明命令返回成功。
接著在zabbix監(jiān)控界面里添加主機設(shè)置,并選擇添加模版template icmp ping。然后點開這個模塊,可以選擇想要的監(jiān)控項的圖形
-----------------------------------------Zabbix監(jiān)控項CPU Load數(shù)值與服務(wù)器上uptime的實際值不符合--------------------------------------
現(xiàn)象說明:
zabbix監(jiān)控項cpu load的數(shù)值跟被監(jiān)控機本地uptime顯示的負載值對不上,前者數(shù)值小于后者。
產(chǎn)生原因:
現(xiàn)在服務(wù)器的cpu基本都是多核的,但zabbix監(jiān)控項cpu load參數(shù)里默認顯示的是一個核心的參數(shù),
而不是總和,所以兩者數(shù)值對不上。
解決辦法:
"配置"->"模板"->"Template OS Linux"->"監(jiān)控項"->"Processor load (1 min average per core)"
點開,將system.cpu.load[percpu,avg1]改為system.cpu.load[all,avg1],即將percpu改為all。
其余5 min和15 min的load監(jiān)控項的改法一樣!保存等幾分鐘即可顯示。
-----------------------------------添加網(wǎng)絡(luò)監(jiān)控項的觸發(fā)器(報警設(shè)置)--------------------------------
注意:
網(wǎng)絡(luò)監(jiān)控的默認單位是bps,監(jiān)控報警一般看的是Mbps,需要轉(zhuǎn)為為bps。比如超過8M報警,那觸發(fā)器的值即為8*1024*1024=8388608
轉(zhuǎn)載于:https://www.cnblogs.com/fengzhongzhuzu/p/9036289.html
總結(jié)
以上是生活随笔為你收集整理的zabbix的安装(一)监控os资源:内存,cpu,io,负载,带宽的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker安装postgres
- 下一篇: 视频--Pr 第一个剪辑