zabbix 3.4.4监控apache

 
一、Apache开启状态页面

[root@oneapm-test scripts]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Apr 20 2018 18:10:38
[root@oneapm-test scripts]# cat /etc/httpd/conf/httpd.conf   //httpd.conf文件增加如下内容
<Location /server-status>
      setHandler server-status
      Require all granted
</Location>
ExtendedStatus On
 
[root@oneapm-test scripts]# systemctl restart httpd  //重启httpd服务
 
访问apache状态页面
[root@oneapm-test scripts]# curl http://localhost:82/server-status?auto
Total Accesses: 28
Total kBytes: 27
Uptime: 7300
ReqPerSec: .00383562
BytesPerSec: 3.7874
BytesPerReq: 987.429
BusyWorkers: 1
IdleWorkers: 5
Scoreboard: _W____..........................................................................................................................................................................................................................................................
 
二、脚本编写
#! /bin/bash
#
# Name: zapache
#
# Checks Apache activity.
#
# Version: 1.5
# zapachever="1.5"
rval=0
value=""
cache_seconds="60"
[ "$TMPDIR" ] || TMPDIR=/tmp function usage()
{
echo "zapache version: $zapachever"
echo "usage:"
echo " $0 [<url>] TotalAccesses - Check total accesses."
echo " $0 [<url>] TotalKBytes - Check total KBytes."
echo " $0 [<url>] CPULoad - Check CPU load."
echo " $0 [<url>] Uptime - Check uptime."
echo " $0 [<url>] ReqPerSec - Check requests per second."
echo " $0 [<url>] BytesPerSec - Check Bytes per second."
echo " $0 [<url>] BytesPerReq - Check Bytes per request."
echo " $0 [<url>] BusyWorkers - Check busy workers."
echo " $0 [<url>] IdleWorkers - Check idle workers."
echo " $0 [<url>] version - Version of this script."
echo " $0 [<url>] ping - Check if Apache is up."
echo " $0 [<url>] WaitingForConnection - Check Waiting for Connection processess."
echo " $0 [<url>] StartingUp - Check Starting Up processess."
echo " $0 [<url>] ReadingRequest - Check Reading Request processess."
echo " $0 [<url>] SendingReply - Check Sending Reply processess."
echo " $0 [<url>] KeepAlive - Check KeepAlive Processess."
echo " $0 [<url>] DNSLookup - Check DNSLookup Processess."
echo " $0 [<url>] ClosingConnection - Check Closing Connection Processess."
echo " $0 [<url>] Logging - Check Logging Processess."
echo " $0 [<url>] GracefullyFinishing - Check Gracefully Finishing Processess."
echo " $0 [<url>] IdleCleanupOfWorker - Check Idle Cleanup of Worker Processess."
echo " $0 [<url>] OpenSlotWithNoCurrentProcess - Check Open Slots with No Current Process."
}
########
# Main #
########
if [[ $# == 1 ]];then
#Agent Mode
STATUS_URL="http://localhost:82/server-status?auto"
CASE_VALUE="$1"
elif [[ $# == 2 ]];then
#External Script Mode
STATUS_URL="$1"
case "$STATUS_URL" in
http://*|https://*) ;;
*) STATUS_URL="http://$STATUS_URL/server-status?auto";;
esac
CASE_VALUE="$2"
else
#No Parameter
usage
exit 0
fi
case "$CASE_VALUE" in
'version')
echo "$zapachever"
exit 0;;
esac
umask 077
# $UID is bash-specific
cache_prefix="zapache-$UID-${STATUS_URL//[^a-zA-Z0-9_-]/_}"
cache="$TMPDIR/$cache_prefix.cache"
cache_timestamp_check="$TMPDIR/$cache_prefix.ts"
# This assumes touch from coreutils
touch -d "@$((`date +%s` - ($cache_seconds - 1)))" "$cache_timestamp_check"
if [ "$cache" -ot "$cache_timestamp_check" ]; then
curl="`which curl`"
if [ "$curl" ]; then
fetch_url() { $curl --insecure --silent --location -H "Cache-Control: no-cache" "$@"; }
else
wget="`which wget`"
if [ "$wget" ]; then
fetch_url() { $wget --no-check-certificate --quiet --header "Cache-Control: no-cache" -O - "$@"; }
else
echo "ZBX_NOTSUPPORTED"
exit 1
fi
fi
fetch_url "$STATUS_URL" > "$cache"
rval=$?
if [ $rval != 0 ]; then
echo "ZBX_NOTSUPPORTED"
exit 1
fi
fi
case "$CASE_VALUE" in
'ping')
if [ ! -s "$cache" -o "$cache" -ot "$cache_timestamp_check" ]; then
echo "0"
else
echo "1"
fi
exit 0;;
esac
if ! [ -s "$cache" ]; then
echo "ZBX_NOTSUPPORTED"
exit 1
fi case "$CASE_VALUE" in
'TotalAccesses')
value="`awk '/^Total Accesses:/ {print $3}' < \"$cache\"`"
rval=$?;;
'TotalKBytes')
value="`awk '/^Total kBytes:/ {print $3}' < \"$cache\"`"
rval=$?;;
'CPULoad')
value="`awk '/^CPULoad:/ {print $2}' < \"$cache\"`"
rval=$?;;
'Uptime')
value="`awk '/^Uptime:/ {print $2}' < \"$cache\"`"
rval=$?;;
'ReqPerSec')
value="`awk '/^ReqPerSec:/ {print $2}' < \"$cache\"`"
rval=$?;;
'BytesPerSec')
value="`awk '/^BytesPerSec:/ {print $2}' < \"$cache\"`"
rval=$?;;
'BytesPerReq')
value="`awk '/^BytesPerReq:/ {print $2}' < \"$cache\"`"
rval=$?;;
'BusyWorkers')
value="`awk '/^BusyWorkers:/ {print $2}' < \"$cache\"`"
rval=$?;;
'IdleWorkers')
value="`awk '/^IdleWorkers:/ {print $2}' < \"$cache\"`"
rval=$?;;
'WaitingForConnection')
value="`awk '/^Scoreboard:/ {print split($2,notused,"_")-1}' < \"$cache\"`"
rval=$?;;
'StartingUp')
value="`awk '/^Scoreboard:/ {print split($2,notused,"S")-1}' < \"$cache\"`"
rval=$?;;
'ReadingRequest')
value="`awk '/^Scoreboard:/ {print split($2,notused,"R")-1}' < \"$cache\"`"
rval=$?;;
'SendingReply')
value="`awk '/^Scoreboard:/ {print split($2,notused,"W")-1}' < \"$cache\"`"
rval=$?;;
'KeepAlive')
value="`awk '/^Scoreboard:/ {print split($2,notused,"K")-1}' < \"$cache\"`"
rval=$?;;
'DNSLookup')
value="`awk '/^Scoreboard:/ {print split($2,notused,"D")-1}' < \"$cache\"`"
rval=$?;;
'ClosingConnection')
value="`awk '/^Scoreboard:/ {print split($2,notused,"C")-1}' < \"$cache\"`"
rval=$?;;
'Logging')
value="`awk '/^Scoreboard:/ {print split($2,notused,"L")-1}' < \"$cache\"`"
rval=$?;;
'GracefullyFinishing')
value="`awk '/^Scoreboard:/ {print split($2,notused,"G")-1}' < \"$cache\"`"
rval=$?;;
'IdleCleanupOfWorker')
value="`awk '/^Scoreboard:/ {print split($2,notused,"I")-1}' < \"$cache\"`"
rval=$?;;
'OpenSlotWithNoCurrentProcess')
value="`awk '/^Scoreboard:/ {print split($2,notused,".")-1}' < \"$cache\"`"
rval=$?;;
*)
usage
exit 1;;
esac
if [ "$rval" -eq 0 -a -z "$value" ]; then
case "$CASE_VALUE" in
# Theese metrics are output only if non-zero
'CPULoad' | 'ReqPerSec' | 'BytesPerSec' | 'BytesPerReq')
value=0
;;
*)
rval=1
;;
esac
fi if [ "$rval" -ne 0 ]; then
echo "ZBX_NOTSUPPORTED"
fi echo "$value"
exit $rval #
# end zapache

 

授权脚本运行权限
[root@oneapm-test scripts]# ll zapache.sh 
-rwxr-xr-x. 1 root root 6114 7月  16 13:19 zapache.sh
 
[root@oneapm-test scripts]# tail -1 ../etc/zabbix_agentd.conf
UserParameter=zapache[*],/usr/local/zabbix/scripts/zapache.sh \$1
在Zabbix服务器监控项测试
[root@Zabbix ~]# /zabbix/bin/zabbix_get  -s  172.19.47.225 -p 20050 -k 'zapache[ping]'
1
[root@Zabbix ~]# /zabbix/bin/zabbix_get  -s  172.19.47.225 -p 20050 -k 'zapache[version]'
1.5
 
三、Zabbix导入模板

服务器关联模板:

监控项图形

zabbix监控Apache的更多相关文章

  1. zabbix 监控apache

    现在是客户端 1.安装zabbix的rpm源 1 rpm -ivh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4 ...

  2. Zabbix 3.4.11监控 apache服务,ftp服务的配置

    一 zabbix 的安装部署 略 二监控 apache服务的配置 首先在本机下载模板:https://github.com/rdvn/zabbix-templates/archive/m aster. ...

  3. Zabbix 监控MySQL、Apache、Nginx应用监控

    zabbix对第三方应用软件的监控,主要有两个工作难点,一个是编写自定义监控脚本,另一个是在编写模板并导入zabbix web中,编写脚本这个要根据 监控需求定制即可,而编写模板文件有些难度,不过网上 ...

  4. Linux实战教学笔记51:Zabbix监控平台3.2.4(三)生产环境案例

    https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix生产环境监测案例概述 1.1 项目规划 [x] :主机分组 交换机 Nginx To ...

  5. zabbix监控阅读目录

    一.zabbix安装 点击查看:http://www.cnblogs.com/hwlong/p/5820321.html 二.解决乱码问题 点击查看:http://www.cnblogs.com/hw ...

  6. CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 (1).配置Zabbix监控Apache服务 主机名:yo ...

  7. zabbix监控tomcat

    服务端配置修改 编译zabbix的时候需要添加参数--enable-java --enable-java 修改zabbix_java配置文件 vim /usr/local/zabbix-2.4.6/s ...

  8. Zabbix监控和分布式部署实施方案

    最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每 个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到 ...

  9. Tomcat 常规配置并通过zabbix 监控 jvm状态

    一:jdk和tomcat基础 apache有两种方式运行php,一是使用模块,二是使用fastcgi nginx也可以通过fastcgi处理动态请求,也可以转发至tomcat tomcat监控主要是监 ...

随机推荐

  1. 多选框取值checkbox

    取值//js var obj = document.getElementsByName("NAME"); var s=''; for(var i=0;i<obj.length ...

  2. ubuntu14/16 安装python3-opencv3_百度经验

    http://jingyan.baidu.com/article/e4511cf348dac52b845eafc8.html

  3. python入门之小栗子

    1 点球小游戏: from random import choice score=[0,0]direction=['left','center','right'] def kick(): print ...

  4. Tensorflow实战系列之三:

    博主也是初学,能力有限,这个完全没想好..

  5. 团队作业3——alpha阶段冲刺

    1.博客链接集合 敏捷冲刺1 敏捷冲刺2 敏捷冲刺3 敏捷冲刺4 敏捷冲刺5 敏捷冲刺6 敏捷冲刺7 测试随笔 冲刺总结随笔 2.项目git地址 git地址 3.项目成员贡献比例 成员 比例 张艺琳( ...

  6. 总结java IDE (eclipse)快捷键

    Eclipse快捷键 10个最有用的快捷键:Eclipse中10个最有用的快捷键组合:一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码 ...

  7. lsmod语法

    lsmod——显示已载入系统的模块 lsmod 其实就是list modules的缩写,即 列出所有模块. 功能说明:显示已载入系统的模块. 语法:lsmod 说明:执行lsmod指令,会列出所有已载 ...

  8. 微信小程序实际开发中学习

    三个概念 微信:就是一个聊天工具 微信公众号:企业或个人用于管理其粉丝/用户的应用(类似于APP) 微信小程序:不需要下载安装直接可以使用的软件/应用/APP 小程序与公众号的区别: 定位不同(小程序 ...

  9. 2018-4-25 html基础知识

    HTML 理解HTML元素以及构成 1.理解HTML元素以及构成 HTML是一种标记语言,是由一个一个的标记组成的,用于告诉浏览器怎么构建网页的.就像人体里面的DNA一样,控制着人体的组成.同时,也正 ...

  10. Anagram字符串处理(STL真方便啊。。)

    题意:给出一些字符串,认为各个字符个数相同的字符串就是相同的,不区分大小写,找出这些字符串中不与其他字符串相同的字符串并挨个输出 用char orgin[][]把每个字符串保存起来,然后对每个字符串都 ...