前言:php
学习zabbix以前,不得不了解的是SNMP协议node
SNMP:简单网络管理协议(Simple Network Protocol)mysql
Snmp由两部分组成,监控端和被监控端linux
监控模式:ios
主动模式:NMS向agent采集数据,监控端到被监控端采集数据nginx
被动模式:agent到NMS报告数据,被监控端到监控端报告数据web
这便意味着监控端和被监控端工做在不一样套接字上sql
一旦被监控端发出特殊指令时,监控端会发送指令修改被监控端状态数据库

SNMP组件: apache
MIB:management information base(管理信息库)
监控端可以向被监控发送请求采集数据,被监控经过MIB
MIB定义监控到到被监控的双方采集规范
SMI:MIB表示机制
SNMP:协议自己,实现网络管理
NMS可发起的操做:
Get:获取数据
GetNext:获取更多参数
Set:设定
Trap:陷阱操做
SNMP基于UDP工做
NMS监听端口:161
Agent监听端口:162
SNMP是没有数据存储的定义,一般完成数据采集后人为的判断数据是否存在问题!
这里不得不提到cacti和nagios
Cacti相似于zabbox自己可以经过脚本,对每个监控端经过snmp协议发起数据采集请求。数据采集完成后会存储在cacti的数据库当中,cacti是由php开发的,它可以使用php强大的功能完成数据展现,这便意味着他可以从数据库中提取出数据,即时绘制出数据走势图。Cacti也可让用户定义一个关注指标的阈值然后,一旦数据超出合理范围也能完成报警操做!可是,他的报警能力较弱!
Cacti自己能够完成强大的数据采集展现,可是他的报警功能薄弱。好比:cacti监控一台nginx服务,当nginx出现故障时,通常状况,会重启nginx服务,当仍然不能正常工做时,监控会发起软状态和硬状态的状态探测切换,当第一次采集时发现异常,监控不会当即判断为故障,当采集超过几回后,仍是异常,则为硬状态,为了不误判它会屡次采样。而cacti自己不具有报警功能,须要第三方插件实现,而且报警的功能不能很是及时,尤为是对状态转换的服务类应用,报警能力略显薄弱
Nagios:强大的报警机制
当关注的指标超过阈值后,从软状态转换硬状态后当即执行报警操做,支持多种多样报警,如:短信网关发短信,邮件发邮件,MSN窗口发信息,电子铃,闪光灯等等!因而可知Nagios报警是很是灵活的。
Nagios的各组件依赖关系!
可是nagios不太适合大型环境众多指标同时监控,主机若是有100台,它的工做仍是客观的,若是一旦达到数百台,nagios效率低下,它不能完成分布式工做
在早些,cacti和nagios同时工做是很常见的!而Zabblx即可以实现cacti和nagios的功能
其余著名开源监控工具:zabbix,zennos,opennms,cacti,nagios(icinga),ganglia
监控功能的实现:agent,ssh,SNMP
SNMP协议版本在v1中是一款简单协议,在v1中没有认证功能,v2c:NMS-à agent ,v1和v2是基于UDP来实现,机制也相同!而v3和v2,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(关系型数据库)
RRD:round robin database,环装数据库,因此他不会持久保存数据,一旦环走到尽头,便覆盖以前的数据从头开始。cacti一旦数据初始化完成后是不会自动增加的,固然,若是定义n个数据指标,产生n个环装数据,那也是不小的。而zabbix是插一条是一条,可是zabbix也是能够定义的,可使用守护进程去清理数据。固然,也能够永久保存,
Cacti的RRD是一个开源组件,cacti使用snmp收集数据,收集完成使用rrd保存数据,而rrd本身就有绘图能力。全部cacti无非就是将rrd中所关注的数据绘成图,在用php页面展现出来而已。由此能够cacti是一个很强大的集成工具。
Zabbix分布式
Zabbix彻底开源,企业级监控,支持目前主流操做系统,Zabbix可监控10万设备,20万个指标(在对mysql切片优化后),可监控database,可监控web monitoring,,web响应代码,响应时间等,可定义监控指标,可监控日志,文件内容等等!
中心zabbix不作任何操做,让每个代理收集监控各项指标,假设zabbix有6000条指标,每一个代理监控2000个指标,每一个代理将监控数据保存在代理监控主机数据库。然后中心zabbix按期从代理取数据,当取完数据后,即可以删除。代理zabbix只需保存按期时间的数据,按期传输便可。主zabbix压力一定减小!
报警支持,短信,邮件,执行命令等!
Zabbix架构
Zabbix组件:
Zabbix-server:是c语言研发
监控端OS:zabbix-agent,一样c研发
Zabbix-database:mysql,pgsql(postgreSQL),oracle,db2,sqlite
Zabbix-web GUI:展现工具,设置工具
Zabbix-proxy:分布式专用组件,只应用于较大场景
#############################################################################################
Zabbix进程描述:
Poller:此进程可能会被启动多个,应对更多请求
Httppoller:监控web页面专用poller
Discoverer:发现进程 占用资源较大
Alerter:警报工做
Housekeeper:指明数据保存时间,清理数据
Watchdog:监控主机进程是否关闭,并激活
Escalator:报警生成器
Timer:时间,计时器
Nodewatchel:监控节点
Pinger:ping操做监控节点是否在线的独特机制
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中便可
编译安装server和agent,并支持将数据放入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
###################################################################################################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服务监控可参考以下:

