ZABBIX监控每秒业务状态

一、背景

有客户监控MySQL的公网延迟,细粒度到每秒,对你没听错是每秒,云平台级别的监控阿里云/腾讯云虽都支持自定义监控,但是限于数据的存储,粒度最小为每一分钟,阿里云免费云监控频率是5分钟,收费的粒度才可调至1分钟,对此想到利用ZABBIX来进行每一秒的数据上报,最终利用其绘图来进行展示。在此抛砖引玉,其他自定义监控均为此类方法,只需要简单修改脚本获取到需要上报的值即可。

二、部署

2.1 安装ZABBIX SENDER

安装与zabbix版本一样的zabbix sender
例如此处安装3.0的版本

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
yum install  zabbix-sender -y

其核心为利用zabbix_sender来发送数据

zabbix_sender
-z zabbix服务器的地址
-s 创建主机的主机名称
-k 键值名称
-o 上报的数据
-p zabbix 服务器的端口

2.2 编写脚本

在此只简单来监控公网地址的ping延迟

#!/bin/bash
#auth:kaliarch

# ping可执行路径
PINGCMD=/usr/bin/ping
# zabbix_sender可执行文件路径
SENDCMD=/usr/bin/zabbix_sender
# ping测主机ip地址
CHECKHOST=baidu.com
# zabbix服务器ip地址
ZABBIXSERVER=43.254.55.225
# zabbix服务器监听端口
ZABBIXPORT=10051
# zabbix添加这条监控主机名
LOCALHOST=checkping_monitor
# ping包的数量
PAG_NUM=1
# 添加监控项的键值
ZAX_KEY=ping_response

# 获取ping响应时间
check_ping() {
   RESPONSE_TIME=`$PINGCMD -c $PAG_NUM $CHECKHOST |head -2 |tail -1|awk ‘{print $7}‘|cut -d= -f2`
   if [ $? -eq 0 ];then
        echo $RESPONSE_TIME
   else
        echo 0
   fi
}

# 发送数据到zabbixserver
send_data() {
  DATA=`check_ping`
  $SENDCMD -z $ZABBIXSERVER -s $LOCALHOST -k $ZAX_KEY -o $DATA
}

while true
do
        send_data
        sleep 0.5
done

其中上报给zabbix server端的数据可以根据自己实际自定义需求上报即可
在服务器上将脚本在后台运行即可

nohup /bin/bash check_ping.sh &

2.3 ZABBIX WEB界面配置

  • 添加主机


注意:此处的主机名称为脚本中的-LOCALHOS

  • 添加监控项


注意:此处类型选择zabbix采集器,键值为脚本中的ZAX_KEY,下面填写允许上报的主机IP

  • 配置图像

2.3 图像查看


可以看到监控的粒度为1秒钟

三、总结

  • 其实对于监控数据上报频率控制在1分钟是比较理想的,不建议1秒钟就进行数据上报,对于大规模监控就需要进行分布式部署或使用zabbix proxy来分摊server的压力。
  • 本次只是对于一些特殊客户需求进行记录,同时抛砖引玉可以利用此方法来上报任何自定义的数据。

原文地址:http://blog.51cto.com/kaliarch/2165161

时间: 2024-12-18 05:30:19

ZABBIX监控每秒业务状态的相关文章

Zabbix 监控LVS连接的状态

一.这个监控的设置和我上一篇监控TCP状态类似,下面直接写监控脚本. # vim /usr/local/zabbix/scripts/ipvsadm_status #!/bin/bash  #shuidi #status about lvs forward  function Act1 {  /sbin/ipvsadm -Ln 2>/dev/null | grep '10.0.0.9:80' | sed '2d' | awk '{print $5}' }  function Act2 {  /s

zabbix 监控tcp连接的状态

Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想: 一.我的上一篇已经写了步骤,这里我只是列出脚本: #!/bin/bash #xiaoluo #scripts for tcp status function SYNRECV { /usr/sbin/

Zabbix监控Nginx 和PHP-FPM状态

Nginx自带监控模块ngx_http_stub_status_module提供Nginx的基本信息 在编译安装Nginx时加参数 --with-http_stub_status_module 安装好以后可以通过nginx -V|grep http_stub_status_module 查看状态模块是否已安装 PHP-FPM也自带监控,通过在php-fpm.conf中设置 pm.status_path = /php-fpm_status 就可以获取URL的方式获取PHP-FPM的状态 添加ngi

利用Shell生成Zabbix监控的数字报表

我们都知道Zabbix是一个非常强大的监控工具,我们公司呢也在用Zabbix监控所有网站的状态. 最近有一个需求,就是我们需要生成一份报告,报告里要包含前一天一整天的时间节点和对应的响应时间,这样的报告用来统计网站的可用性达到了什么水准. ? Zabbix本身自带报告功能,可是都是图像的,并没有数据格式的.虽然没有提供数据格式的报表,但是Zabbix提供了一套API,可以根据需求获取对应的数据(JSON格式),于是我就写了个脚本,用来把每个监控的网址的监控数据输出到一个CSV文件中.(后续可以用

企业级监控软件使用zabbix key监控nginx status各种状态

因业务需要需要用zabbix来监控nginx status,具体是如下的做法: 1. 首先在nginx的配置文件中添加如下内容,需要注意的是nginx的文件格式,在allow中我们需要注意的是需要添加zabbix server的IP地址,不然无法采集到数据, 2. 重启nginx服务器查看nginx服务器是否能正常打开, Nginx status状态说明: Active connections: 35 对后端发起的活动链接数 server accepts handled requests 186

Zabbix 监控 Nginx 状态

1.获取 Nginx 状态条件( 需要nginx安装模块) [localhost]#/usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_sta

Zabbix 监控 Mysql 状态

简介: 如何使用 Zabbix 来监控 Mysql 状态 ? Zabbix 有自带监控 Mysql 的模板,但是却不能直接使用.. 需要我们根据模板提供的 Key 自己写脚本获取数据 1.查看都有哪些 Key > Configuration -> Templates ## 在此模板页中,可以看到 Template App MySQL 模板中有 14 个 Items ,我们需要自己写脚本获取这 14 个值 ## 分别是:Com_select.Com_insert .Com_update .Com

zabbix监控业务进程变动

Zabbix 监控进程宕机 业务需求后端进程宕机以后能在短时间内迅速拉起,业务影响不大,但是开发需要查看coredump,要求能监控到pid变化:在现有构架下zabbix能监控并报警: 当然zabbix设置报警设置就不再一一 在每台服务器/etc/zabbix/zabbix_agentd.conf设置路径:此例只需要piddiff.sh UserParameter=checkpid,sh /usr/local/script/piddiff.sh UserParameter=test,sh /us

Zabbix监控Low level discovery实时监控网站URL状态

今天我们来聊一聊Low level discovery这个功能,我们为什么要用到loe level discovery这个功能呢? 很多时候,在使用zabbix监控一些东西,需要对类似于Itens进行添加,这些items具有一些共同特性, 如果说某些特定的参数是变量,而其他设置都一样,例如:一个程序有多个端口,需要多端口进行监控并配置Itmes,还有磁盘分区,·网卡名称等等, 都是具有不确定性,如果我们配置固定的Items的话,会出现无法通用的问题,所以呢,我们需要来了解一下low level