學習zabbix(三)

前言:php

學習zabbix以前,不得不瞭解的是SNMP協議node

SNMP:簡單網絡管理協議(Simple Network Protocol)mysql

Snmp由兩部分組成,監控端和被監控端linux

監控模式:ios

主動模式:NMSagent採集數據,監控端到被監控端採集數據nginx

被動模式:agentNMS報告數據,被監控端到監控端報告數據web

這便意味着監控端和被監控端工做在不一樣套接字上sql

一旦被監控端發出特殊指令時,監控端會發送指令修改被監控端狀態數據庫


SNMP組件: apache

MIBmanagement  information  base(管理信息庫)

監控端可以向被監控發送請求採集數據,被監控經過MIB

MIB定義監控到到被監控的雙方採集規範

SMIMIB表示機制

SNMP:協議自己,實現網絡管理

 

NMS可發起的操做:

Get:獲取數據

GetNext:獲取更多參數

Set:設定

Trap:陷阱操做

 

SNMP基於UDP工做

NMS監聽端口:161

Agent監聽端口:162

 

SNMP是沒有數據存儲的定義,一般完成數據採集後人爲的判斷數據是否存在問題!

 

這裏不得不提到cactinagios

Cacti相似於zabbox自己可以經過腳本,對每個監控端經過snmp協議發起數據採集請求。數據採集完成後會存儲在cacti的數據庫當中,cacti是由php開發的,它可以使用php強大的功能完成數據展現,這便意味着他可以從數據庫中提取出數據,即時繪製出數據走勢圖。Cacti也可讓用戶定義一個關注指標的閾值然後,一旦數據超出合理範圍也能完成報警操做!可是,他的報警能力較弱!

Cacti自己能夠完成強大的數據採集展現,可是他的報警功能薄弱。好比:cacti監控一臺nginx服務,當nginx出現故障時,通常狀況,會重啓nginx服務,當仍然不能正常工做時,監控會發起軟狀態和硬狀態的狀態探測切換,當第一次採集時發現異常,監控不會當即判斷爲故障,當採集超過幾回後,仍是異常,則爲硬狀態,爲了不誤判它會屢次採樣。而cacti自己不具有報警功能,須要第三方插件實現,而且報警的功能不能很是及時,尤爲是對狀態轉換的服務類應用,報警能力略顯薄弱

 

Nagios:強大的報警機制

當關注的指標超過閾值後,從軟狀態轉換硬狀態後當即執行報警操做,支持多種多樣報警,如:短信網關發短信,郵件發郵件,MSN窗口發信息,電子鈴,閃光燈等等!因而可知Nagios報警是很是靈活的。

Nagios的各組件依賴關係!

可是nagios不太適合大型環境衆多指標同時監控,主機若是有100臺,它的工做仍是客觀的,若是一旦達到數百臺,nagios效率低下,它不能完成分佈式工做

在早些,cactinagios同時工做是很常見的!而Zabblx即可以實現cactinagios的功能

 

其餘著名開源監控工具:zabbixzennosopennmscactinagiosicinga,ganglia

 

監控功能的實現:agentsshSNMP

SNMP協議版本在v1中是一款簡單協議,在v1中沒有認證功能,v2cNMS-à agent v1v2是基於UDP來實現,機制也相同!而v3v2,v1不一樣的是,v3實現認證加密和解密功能,可是在應用中v1使用是最多的。

 

MIB:全部的能夠被監控被管理的對象的集合,定義對象的一系列屬性,每個agetn端都有本身的MIB庫,mib庫中定義了不少指標來實現接口的數據交互

 

MIB視圖:MIB片斷。SNMP是支持讀寫操做,對Mib庫操做進行讀寫操做均可實現。咱們能夠限定MIB庫的讀操做任何人均可以實現,寫操做再定義團體名。像這種能把mib庫中的子集,經過MIB某一個團體相關聯起來並定義其所能執行操做的機制就叫作MIB視圖,這裏可能須要查看下MIB樹狀結構!

 

在衆多開源軟件監控工具中zabbix是專用的agent的監控工具

監控的主機由:linux,windows,freebsd…..

網絡設備:snmp,ssh(並不是全部)

 

當了解了這些基礎後,在開始看zabbix概述

一般咱們在監控時須要監控哪些?

1,軟件/設備

設備:軟件,路由器,交換機,i/o系統

軟件:操做系統自己(OS),網絡,應用程序

2,偶發性故障

Down機,服務不能夠,主機不可達

3,嚴重事件

主機性能數據

4,趨勢圖

時間序列數據

5

  

補充內容:

cacti數據存儲使用的是特殊數據庫(rrd ),而zabbix支持mysql,pgssql(關係型數據庫)

RRDround   robin  database,環裝數據庫,因此他不會持久保存數據,一旦環走到盡頭,便覆蓋以前的數據從頭開始。cacti一旦數據初始化完成後是不會自動增加的,固然,若是定義n個數據指標,產生n個環裝數據,那也是不小的。而zabbix是插一條是一條,可是zabbix也是能夠定義的,可使用守護進程去清理數據。固然,也能夠永久保存,

 CactiRRD是一個開源組件,cacti使用snmp收集數據,收集完成使用rrd保存數據,而rrd本身就有繪圖能力。全部cacti無非就是將rrd中所關注的數據繪成圖,在用php頁面展現出來而已。由此能夠cacti是一個很強大的集成工具。

  

Zabbix分佈式

Zabbix徹底開源,企業級監控,支持目前主流操做系統,Zabbix可監控10萬設備,20萬個指標(在對mysql切片優化後),可監控database,可監控web monitoring,web響應代碼,響應時間等,可定義監控指標,可監控日誌,文件內容等等!

 

中心zabbix不作任何操做,讓每個代理收集監控各項指標,假設zabbix6000條指標,每一個代理監控2000個指標,每一個代理將監控數據保存在代理監控主機數據庫。然後中心zabbix按期從代理取數據,當取完數據後,即可以刪除。代理zabbix只需保存按期時間的數據,按期傳輸便可。主zabbix壓力一定減小!

 報警支持,短信,郵件,執行命令等!

 

Zabbix架構

Zabbix組件:

Zabbix-server:是c語言研發

監控端OSzabbix-agent,一樣c研發

Zabbix-databasemysql,pgsql(postgreSQL),oracledb2sqlite

Zabbix-web GUI:展現工具,設置工具

Zabbix-proxy:分佈式專用組件,只應用於較大場景

 #############################################################################################

 

 

Zabbix進程描述:

Poller:此進程可能會被啓動多個,應對更多請求

Httppoller:監控web頁面專用poller

Discoverer:發現進程 佔用資源較大

Alerter:警報工做

Housekeeper:指明數據保存時間,清理數據

Watchdog:監控主機進程是否關閉,並激活

Escalator:報警生成器

Timer:時間,計時器

Nodewatchel:監控節點

 

Pingerping操做監控節點是否在線的獨特機制

Db_config_syncer:同步配置,分佈式場景

Db_data_syncer: 同步時間,分佈式場景

  

安裝和部署:

在安裝zabbix以前,須要部署database,在部署lap平臺

Hardware Examples官方說明:

20臺機器:PII 350MHZ+256MB+sqlite

500臺:AMD Athion3200+2GB+mysql innodb

小於1000臺:Intel Core 6300 +4GB+RAUD 10 Mysql innodb or postgressql

小於10000臺:xeon 2xcpu+8GB +Fast RAID 10 Mysql innodb or postgressql

 Zabbix產生的數據主要由四部分組成:

1,  配置數據

2,  歷史數據:50bytes

3,  歷史趨勢數據 :128bytes

4,  事件數據:130bytes

Zabbix支持衆多數據庫,通常而言預留多少存儲數據,每一次的數據收集有 50字節,歷史趨勢數據128字節,事件數據130字節,假設5分鐘收集一次,保存時間,相乘計算出存儲數據的預留空間

 

1,安裝mysql

下載mariadb-5.5.44.tar.gz

[root@[node108] ~]# yum groupinstall "Development Tools" "Server Platform Development" –y

[root@[node108] ~]#yum   -y  install   cmake

[root@[node108] ~]# groupadd -r -g 306 mysql

[root@[node108] ~]# useradd -r -g 306 -u 306 mysql

[root@[node108] ~]# cd mariadb-5.5.44

[root@[node108] ~]# tar xf mariadb-5.5.44.tar.gz

[root@[node108] ~]# cd mariadb-5.5.44

[root@[node108] ~]# cmake  

-DCMAKE_INSTALL_PREFIX=/usr/local/Nmariadb-5.5.44

-DMYSQL_DATADIR=/mydata/data

-DSYSCONFDIR=/etc

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_READLINE=1

-DWITH_SSL=system

-DWITH_ZLIB=system

-DWITH_LIBWRAP=0

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

[root@[node108] ~]# make

[root@[node108] ~]# make install

[root@[node108] ~]#mkdir  /mydata

[root@[node108] mariadb-5.5.44]# cd /usr/local/ Nmariadb-5.5.44/

[root@[node108] Nmariadb-5.5.44]# scripts/mysql_install_db --user=mysql --datadir=/mydata

[root@[node108] Nmariadb-5.5.44]# cp support-files/my-large.cnf /etc/mysql/my.cnf

[root@[node108] Nmariadb-5.5.44]# vim /etc/mysql/my.cnf

[mysqld]裏面添加以下

datadir = /mydata/data   安裝目錄指定

innodb_file_per_table = NO

skip_name_resolve = NO     跳過名稱解析的

[root@[node108] Nmariadb-5.5.44]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

[root@[node108] Nmariadb-5.5.44]# chmod +x /etc/rc.d/init.d/mysqld

[root@[node108] Nmariadb-5.5.44]# chkconfig --add mysqld

[root@[node108] Nmariadb-5.5.44]# chkconfig mysqld on        

[root@[node108] Nmariadb-5.5.44]# service mysqld start

Starting MySQL.......                                      [  OK  ]

[root@[node108] Nmariadb-5.5.44]# ss -tlp |grep :mysql

LISTEN     0      50                      *:mysql                    *:*        users:(("mysqld",43871,14))

[root@[node108] Nmariadb-5.5.44]#

root用戶添加密碼,而且刪除用戶

[root@localhost mysql]# /usr/local/mysql/bin/mysql_secure_installation

[root@[node108] profile.d]# vim /etc/profile.d/mysqld.sh

export PATH=/usr/local/Nmariadb-5.5.44/bin/:$PATH

[root@[node108] profile.d]# . /etc/profile.d/mysqld.sh

[root@[node108] profile.d]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 3

Server version: 5.5.44-MariaDB-log Source distribution

 

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

建立數據庫zabbix

MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8;

Query OK, 1 row affected (0.00 sec)

建立zbuser用戶,受權此用用戶能夠經過172.16.x.x訪問zabbix庫,密碼zbuser

請注意:這裏因爲是做用在一臺主機,全部受權是localhost,若是不是同一個主機受權的多是主機名

 

MariaDB [(none)]> GRANT ALL on zabbix.* TO 'zbuser'@'172.16.%.%' IDENTIFIED BY 'zbuser';

Query OK, 0 rows affected (0.01 sec)

 

MariaDB [(none)]> GRANT ALL on zabbix.* TO 'zbuser'@'localhost' IDENTIFIED BY 'zbuser';

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [(none)]> \q

Bye

[root@[node108] ~]#

使用本機測試下受權

[root@[node108] ~]# mysql -uzbuser -h172.16.249.22 -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 5

Server version: 5.5.44-MariaDB-log Source distribution

 

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

MariaDB [(none)]>\q

Bye

 

2,下載zabbix安裝

指定官方yum源,www.zabbix.com

Wget  http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

下載zabbix-release-2.4-1.e16.noarch.rpm包,就會自動建立本地yum

若是不裝把連接也到repo中便可

 

編譯安裝serveragent,並支持將數據放入mysql數據中,可以使用相似以下配置命令:

./configure  --enable-server  ---enable-agent  --with-mysql   --enable-ipv6   --with-net-snmp   --with-libcurl   --with-ssh2

若是僅安裝server,並支持將數據庫放入mysql數據庫中,可以使用相似以下配置命令:

./configure  --enable-server  --with-mysql    --with-net-snmp     --with-libcurl

若是僅安裝proxy,並支持將數據放入mysql數據庫中,可以使用相似以下配置命令:

./configure   --profix=/usr    --enable-proxy   --with-net-snmp   --with-mysql     --with-ssh2

若是僅安裝agent,可以使用相似以下配置命令:

./configure  --enable-agent

然後編譯安裝zabbix便可:

#make

#make install

 

 

 

服務端安裝:

[root@[node108] zabbix-2.4.5]yum install zabbix-server-2.4.5-1.el6.x86_64.rpm zabbix-server-mysql-2.4.5-1.el6.x86_64.rpm  zabbix-get-2.4.5-1.el6.x86_64.rpm zabbix-2.4.5-1.el6.x86_64.rpm zabbix-web-2.4.5-1.el6.noarch.rpm zabbix-web-mysql-2.4.5-1.el6.noarch.rpm zabbix-agent-2.4.5-1.el6.x86_64.rpm zabbix-sender-2.4.5-1.el6.x86_64.rpm

 

 

/etc/httpd/conf.d目錄下由zabbix.conf文件,因此每次配置完成後必須重載httpd

啓動zabbix以前須要導入數據到mysql

[root@[node108] zabbix]# cd  /usr/share/doc/zabbix-server-mysql-2.4.5/ create/

[root@[node108] create]#ls

data.sql  images.sql  schema.sql

導入順序從右到左

[root@localhost create]# mysql zabbix -uroot < schema.sql

[root@localhost create]# mysql zabbix -uroot < images.sql

[root@localhost create]# mysql zabbix -uroot < data.sql

 

 

配置文件:

LogFileSize=0  日誌滾動選項,0爲不滾動

默認爲Debuglevel=3級別

DBHost=localhost 指定數據庫

DBUser=zbuser        用戶

DBPassword=zbuser         密碼

DBSocket=/tmp/mysql.sock sock位置

# StartPollers=5  進程啓動5

# StartDiscoverers=1啓動發現

# StartTimers=1 計時器進程

# MaxHousekeeperDelete=500最多刪除個數

# StartDBSyncers=4報警

# StartDBSyncers=4同步進程

# HistoryCacheSize=8M歷史數據緩存

# TrendCacheSize=4M歷史文本緩存

AlertScriptsPath=/usr/lib/zabbix/alertscripts 報警腳本存放路徑

ExternalScripts=/usr/lib/zabbix/externalscripts外部腳本存放路徑

# SSHKeyLocation= ssh監控

其餘是proxy

[root@localhost zabbix]# service zabbix-server start

Starting Zabbix server:                                    [  OK  ]

[root@localhost zabbix]# ss -tnl |grep :10051

LISTEN     0      128                      :::10051                   :::*    

LISTEN     0      128                       *:10051                    *:*    

[root@localhost zabbix]#ss  -tnlp能夠看到zabbix啓動了不少進程

在瀏覽器中輸入ip地址/zabbix便可看到安裝界面



在下一步以前須要修改時區

[root@localhost zabbix]# vim /etc/php.ini

date.timezone = Asia/Shanghai

Reloading httpd:

[root@localhost zabbix]# service httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                             [  OK  ]

[root@localhost zabbix]#



若是這裏報錯以下

Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock

su mysql用戶下

[root@localhost mysql]# su mysql

bash-4.1$ ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

 

然後下一步



默認管理員帳戶密碼:admin   zabbix

zabbix監控本身,包已經安裝過了

[root@localhost mysql]# vim /etc/zabbix/zabbix_agentd.conf

受權IP地址

Server=127.0.0.1,172.16.249.22

主動發送server   ip(若是監控的是本身,127.0.0.1是不能夠去掉的)

ServerActive=127.0.0.1,172.16.249.22

自動聯繫,推送數據,這裏的hostname必須全局惟一

Hostname=Zabbix server

[root@localhost mysql]# service zabbix-agent start

Starting Zabbix agent:                                     [  OK  ]

[root@localhost mysql]#

 

 

 

添加一臺主機監控

安裝如下包

[root@PC1 zabbix-2.4.5]# yum install zabbix-2.4.5-1.el6.x86_64.rpm zabbix-agent-2.4.5-1.el6.x86_64.rpm zabbix-sender-2.4.5-1.el6.x86_64.rpm

修改配置文件

[root@PC1 zabbix-2.4.5]# cp /etc/zabbix/zabbix_agentd.conf{,.bak}

[root@PC1 zabbix-2.4.5]# vim /etc/zabbix/zabbix_agentd.conf

ServerActive=172.16.249.22  指向zabbix監控主機

Hostname=PC1                           設置主機名

Server=172.16.249.22              指向zabbix監控主機

[root@PC1 zabbix-2.4.5]# service zabbix-agent start

Starting Zabbix agent:                                     [  OK  ]

[root@PC1 zabbix-2.4.5]#

 

PS:若是這裏有iptables,這裏須要放行zabbix

web_gui界面添加主機

Templates:模板

Macros:主機宏,一次修改屢次有效的喲

Host inventory:資產清單

  ###############################################################################################

zabbbx-agent
安裝agent

yum -y install zabbix-agent zabbix
vim /etc/zabbix/zabbix_agentd.conf 
Server=10.0.0.120

添加UserParameter斷

vim /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql_alive, mysqladmin ping|grep -c alive

可以使用zabbix_get -s 10.0.0.53 -k mysql_alive查看
web頁面建立主機組

添加主機到主機組

建立mysqlitems

添加觸發器

graphs出圖

預覽

##############################################################################################################3

[root@zabbix ~]# /etc/init.d/postfix start
[root@zabbix ~]# vim /etc/mail.rc 
#######set mail
set from=usertzc@163.com smtp=smtp.163.com
set smtp-auth-user=usertzc smtp-auth-password=password smtp-auth=login
[root@zabbix ~]# mail -s linuxea 734943463@qq.com < /etc/rc.local

測試腳本

[root@zabbix alertscripts]# vim /usr/lib/zabbix/alertscripts/mail.sh
#!/bin/sh
MAIL_TITLE=$2
MAIL_CON=$3
echo "$MAIL_CON" | /bin/mail -s "$MAIL_TITLE" $1

建立用戶,管理---用戶---建立用戶


媒介

然後在動做中可執行命令和發送郵件,選擇郵件便可(演示效果)

模擬一次mysql掛掉

###################################################################################################33

1.在client的httpd.conf中添加以下

sudo vim /alidata/server/httpd/conf/httpd.conf
<Location /server-status>
    SetHandler server-status
    Allow from 127.0.0.1
    Order deny,allow
    Deny from all
</Location>
ExtendedStatus On

若是你有rewrite規則,則須要在.htaccess中加上一條,以下:

RewriteCond %{REQUEST_URI} !server-status須要寫在index.php以前
sudo vim /alidata/www/jds.jince.com/.htaccess
# ThinkPHP Rewrite規則
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_URI} !server-status
   RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

#禁止顯示目錄列表
Options -Indexes
2,重加載apache配置
Check uptime並重啓apache

sudo /etc/init.d/httpd configtest 無錯誤後
sudo /etc/init.d/httpd graceful

可使用curl 127.0.0.1/server-status測試
3,在zabbix-agent上建立目錄和腳本

sudo mkdir /etc/zabbix/scripts
sudo vim /etc/zabbix/scripts/check_apache.sh

check_apache.sh放入client的/etc/zabbix/scripts

 1 #! /bin/bash  2 #  3 # Name: zapache  4 #  5 # Checks Apache activity.  6 #  7 # Author: Alejandro Michavila  8 # Modified for Scoreboard Values: Murat Koc, murat@profelis.com.tr  9 # Modified for using also as external script: Murat Koc, murat@profelis.com.tr  10 # Modified for outputting usage or ZBX_NOTSUPPORTED: Alejandro Michavila  11 # Modified to do cacheing for performance, dmitry.frolov@gmail.com  12 #  13 # Version: 1.5
 14 #  15  
 16 zapachever="1.5"
 17 rval=0
 18 value=""
 19 cache_seconds="30"
 20 [ "$TMPDIR" ] || TMPDIR=/tmp  21 function usage()  22 {  23     echo "zapache version: $zapachever"
 24     echo "usage:"
 25     echo " $0 [<url>] TotalAccesses - Check total accesses."
 26     echo " $0 [<url>] TotalKBytes - Check total KBytes."
 27     echo " $0 [<url>] CPULoad - Check CPU load."
 28     echo " $0 [<url>] Uptime - Check uptime."
 29     echo " $0 [<url>] ReqPerSec - Check requests per second."
 30     echo " $0 [<url>] BytesPerSec - Check Bytes per second."
 31     echo " $0 [<url>] BytesPerReq - Check Bytes per request."
 32     echo " $0 [<url>] BusyWorkers - Check busy workers."
 33     echo " $0 [<url>] IdleWorkers - Check idle workers."
 34     echo " $0 [<url>] version - Version of this script."
 35     echo " $0 [<url>] ping - Check if Apache is up."
 36     echo " $0 [<url>] WaitingForConnection - Check Waiting for Connection processess."
 37     echo " $0 [<url>] StartingUp - Check Starting Up processess."
 38     echo " $0 [<url>] ReadingRequest - Check Reading Request processess."
 39     echo " $0 [<url>] SendingReply - Check Sending Reply processess."
 40     echo " $0 [<url>] KeepAlive - Check KeepAlive Processess."
 41     echo " $0 [<url>] DNSLookup - Check DNSLookup Processess."
 42     echo " $0 [<url>] ClosingConnection - Check Closing Connection Processess."
 43     echo " $0 [<url>] Logging - Check Logging Processess."
 44     echo " $0 [<url>] GracefullyFinishing - Check Gracefully Finishing Processess."
 45     echo " $0 [<url>] IdleCleanupOfWorker - Check Idle Cleanup of Worker Processess."
 46     echo " $0 [<url>] OpenSlotWithNoCurrentProcess - Check Open Slots with No Current Process."
 47 }  48 
 49 ########  50 # Main #  51 ########  52 
 53 if [[ $# ==  1 ]];then  54  #Agent Mode  55     STATUS_URL="http://localhost/server-status?auto"
 56     CASE_VALUE="$1"
 57 elif [[ $# == 2 ]];then  58  #External Script Mode  59     STATUS_URL="$1"
 60     case "$STATUS_URL" in
 61         http://*|https://*) ;;
 62         *) STATUS_URL="http://$STATUS_URL/server-status?auto";;  63  esac  64     CASE_VALUE="$2"
 65 else
 66  #No Parameter  67  usage  68     exit 0
 69 fi  70 
 71 case "$CASE_VALUE" in
 72 'version')  73     echo "$zapachever"
 74     exit 0;;  75 esac  76 
 77 cache_prefix="zapache-${STATUS_URL//[^a-zA-Z0-9_-]/_}"
 78 cache="$TMPDIR/$cache_prefix.cache"
 79 cache_timestamp_check="$TMPDIR/$cache_prefix.ts"
 80 # This assumes touch from coreutils  81 touch -d "@$((`date +%s` - ($cache_seconds - 1)))" "$cache_timestamp_check"
 82 
 83 if [ "$cache" -ot "$cache_timestamp_check" ]; then  84     curl="`which curl`"
 85     if [ "$curl" ]; then  86         fetch_url_cmd="$curl --insecure --silent --location"
 87     else
 88         wget="`which wget`"
 89         if [ "$wget" ]; then  90             fetch_url_cmd="$wget --no-check-certificate --quiet -O -"
 91         else
 92             echo "ZBX_NOTSUPPORTED"
 93             exit 1
 94  fi  95  fi  96 
 97     $fetch_url_cmd "$STATUS_URL" > "$cache"
 98     rval=$?
 99     if [ $rval != 0 ]; then 100         echo "ZBX_NOTSUPPORTED"
101         exit 1
102  fi 103 fi 104 
105 case "$CASE_VALUE" in
106 'ping') 107     if [ ! -s "$cache" -o "$cache" -ot "$cache_timestamp_check" ]; then 108         echo "0"
109     else
110         echo "1"
111  fi 112     exit 0;; 113 esac 114 
115 if ! [ -s "$cache" ]; then 116     echo "ZBX_NOTSUPPORTED"
117     exit 1
118 fi 119  
120 case "$CASE_VALUE" in
121 'TotalAccesses') 122     value="`awk '/^Total Accesses:/ {print $3}' < \"$cache\"`"
123     rval=$?;; 124 'TotalKBytes') 125     value="`awk '/^Total kBytes:/ {print $3}' < \"$cache\"`"
126     rval=$?;; 127 'CPULoad') 128     value="`awk '/^CPULoad:/ {print $2}' < \"$cache\"`"
129     rval=$?;; 130 'Uptime') 131     value="`awk '/^Uptime:/ {print $2}' < \"$cache\"`"
132     rval=$?;; 133 'ReqPerSec') 134     value="`awk '/^ReqPerSec:/ {print $2}' < \"$cache\"`"
135     rval=$?;; 136 'BytesPerSec') 137     value="`awk '/^BytesPerSec:/ {print $2}' < \"$cache\"`"
138     rval=$?;; 139 'BytesPerReq') 140     value="`awk '/^BytesPerReq:/ {print $2}' < \"$cache\"`"
141     rval=$?;; 142 'BusyWorkers') 143     value="`awk '/^BusyWorkers:/ {print $2}' < \"$cache\"`"
144     rval=$?;; 145 'IdleWorkers') 146     value="`awk '/^IdleWorkers:/ {print $2}' < \"$cache\"`"
147     rval=$?;; 148 'WaitingForConnection') 149     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "_" }; { print NF-1 }'`"
150     rval=$?;; 151 'StartingUp') 152     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "S" }; { print NF-1 }'`"
153     rval=$?;; 154 'ReadingRequest') 155     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "R" }; { print NF-1 }'`"
156     rval=$?;; 157 'SendingReply') 158     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "W" }; { print NF-1 }'`"
159     rval=$?;; 160 'KeepAlive') 161     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "K" }; { print NF-1 }'`"
162     rval=$?;; 163 'DNSLookup') 164     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "D" }; { print NF-1 }'`"
165     rval=$?;; 166 'ClosingConnection') 167     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "C" }; { print NF-1 }'`"
168     rval=$?;; 169 'Logging') 170     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "L" }; { print NF-1 }'`"
171     rval=$?;; 172 'GracefullyFinishing') 173     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "G" }; { print NF-1 }'`"
174     rval=$?;; 175 'IdleCleanupOfWorker') 176     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "I" }; { print NF-1 }'`"
177     rval=$?;; 178 'OpenSlotWithNoCurrentProcess') 179     value="`awk '/^Scoreboard:/ {print $2}' < \"$cache\" | awk 'BEGIN { FS = "." }; { print NF-1 }'`"
180     rval=$?;; 181 *) 182  usage 183     exit 1;; 184 esac 185 
186 if [ "$rval" -eq 0 -a -z "$value" ]; then 187     rval=1
188 fi 189  
190 if [ "$rval" -ne 0 ]; then 191     echo "ZBX_NOTSUPPORTED"
192 fi 193  
194 echo "$value"
195 exit $rval 196  
197 # 198 # end zapache
check_apache.sh

 

給腳本執行權限

sudo chmod +x /etc/zabbix/scripts/check_apache.sh

4.將userparameter_apache.conf放入client的/etc/zabbix/zabbix_agentd.d,內容以下:

sudo vim /etc/zabbix/zabbix_agentd.d/userparameter_apache.conf
UserParameter=zapache[*],/bin/bash /etc/zabbix/scripts/check_apache.sh $1

5.重啓agentd

/etc/init.d/zabbix-agent restart
$ sudo /etc/init.d/zabbix-agent restart

測試

sudo sh /etc/zabbix/scripts/check_apache.sh CPULoad
2.06619

修改權限

sudo  chown zabbix.zabbix /tmp/zapache-http___localhost_server-status_auto.*

文件以下:

-rw-r--r-- 1 zabbix zabbix       440 Mar 17 14:29 zapache-http___localhost_server-status_auto.cache
-rw-r--r-- 1 zabbix zabbix         0 Mar 17 14:29 zapache-http___localhost_server-status_auto.ts

6.在zabbix server 中建立Template App Apache service模板,添加items, 關聯須要監控的apache主機便可


apache服務監控可參考以下:

相關文章
相關標籤/搜索