使用zabbix_sender

1、zabbix_sender是用来给zabbix_server端发送数据的命令。zabbix_server的捕获信息工具会根据捕获的信息创建对应项目,传入的数据仅仅会被指定主机item使用。

当你需要运行一些统计脚本或者在另一台机器获取数据,却想把监控统一做到一台机器,就要用到zabbix_sender。

2、用法:

[[email protected] ~]# /usr/local/zabbix/bin/zabbix_sender -h
usage:
  zabbix_sender [-v] -z server [-p port] [-I IP-address] -s host -k key
                -o value
  zabbix_sender [-v] -z server [-p port] [-I IP-address] [-s host] [-T] [-r]
                -i input-file
  zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
                [-s host] -k key -o value
  zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
                [-s host] [-T] [-r] -i input-file

-c --config                             指定配置文件

-z --zabbix_server                 zabbix_server的主机名或ip地址

-p --port                                 指定zabbix_server的trapper的端口,默认为10051

-s --host  <hostname>            指定主机名,zabbix_agent配置文件中定义的hostname

-I --source-address                 指定源地址

-k --key                                   指定item key

-o --value                                item key的值,可以是具体的值,也可以是执行脚本的结果

-i --input-file                           从指定的文件加载value。按行获取标准的输入,空格是分隔符

格式: <host> <key> <value>

-T --with-timestamps              如果想在文件中指定key的时间,可以使用这个选项,这里的时间是unix的                                                    时间戳。格式:<host> <key> <timestamp> <value>

-r --real-time                            发送的key以真实时间为标准,不用指定值

3、一个例子

根据需求,需要每天统计一次某项目的“总人数”,“每天活跃用户”,“最大同时在线人数”,“新增玩家数”。

(1) 通过脚本获取值,是通过查询数据库获取数据的,可能不太合理,仅仅是个例子:

[[email protected] ~]# cat /etc/zabbix/scripts/test_count.sh
#!/bin/bash

# Shell Env
USER="test"
PASSWD="test"
HOST="localhost"
DAY=$(date -d"yesterday" +"%F")

# Shell Usage
shell_usage(){
    echo "Usage $0: [ total_players | daily_active | new_player | max_online ]"
}

Total_players(){
    mysql -u $USER -h $HOST -p$PASSWD -e "select count(*) from test.player" | grep [0-9]
}

Daily_active_players(){
    mysql -u $USER -h $HOST -p$PASSWD -e "select count(*) from test.player where LastLoginTime >= unix_timestamp(‘$DAY 00:00:00‘) and LastLoginTime <= unix_timestamp(‘$DAY 23:59:59‘)" | grep [0-9]
}

Newly_added_player(){
    mysql -u $USER -h $HOST -p$PASSWD -e "select count(*) from test.Player where RegisterTime >= unix_timestamp(‘$DAY 00:00:00‘) and RegisterTime <= unix_timestamp(‘$DAY 23:59:59‘)" | grep [0-9]
}

Max_online_number(){
    mysql -u $USER -h $HOST -p$PASSWD -e "select onlinecount from test.onlinelog where datetime >= unix_timestamp(‘$DAY 00:00:00‘) and datetime <= unix_timestamp(‘$DAY 23:59:59‘) order by onlinecount desc limit 1" | grep [0-9]
}

main(){
    case $1 in
        total_players)
            Total_players;
        ;;
        daily_active)
            Daily_active_players;
        ;;
        new_player)
            Newly_added_player;
        ;;
        max_online)
            Max_online_number;
        ;;
        
        
        *)
            shell_usage;
    esac

}

main $1

尝试运行一次脚本:

[[email protected] ~]# /etc/zabbix/scripts/test_count.sh 
Usage /etc/zabbix/scripts/test_count.sh: [ total_players | daily_active | new_player | max_online ]
[[email protected] ~]# /etc/zabbix/scripts/test_count.sh total_players
296

(2) 在使用zabbix_sender向server端发送数据之前,需要在zabbix页面创建对应的items,否则会发送失败。

Name: 指定item的名字

Type:需要选择“zabbix_trapper”

Key:

Applications:将统计数据统一放到一个“applications”中

(3) 计划在每天的凌晨2时,统计一次数据。将多条zabbix_sender放在一个脚本,在凌晨2时执行,这样只需要在crontab中写一条计划就可以了:

[[email protected] ~]# cat /etc/zabbix/test_cron.sh 
#!/bin/bash

for key in total_players daily_active new_player max_online
    do
        /usr/local/zabbix/bin/zabbix_sender -s salt-master -z 1.1.1.1 -k "test_count[$key]" -o `/etc/zabbix/scripts/pdk_count.sh $key`
    done

尝试运行一次test_cron.sh脚本:

[[email protected] ]# sh /etc/zabbix/scripts/test_count.sh 
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000035"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000053"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000037"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000027"

添加计划任务:

[[email protected] ~]# crontab -l
0 2 * * * sh /etc/zabbix/test_cron.sh
时间: 2024-10-12 16:51:05

使用zabbix_sender的相关文章

使用zabbix_sender收集监控信息

1.zabbix_sender的使用 zabbix_sender程序主要用于那些执行时间比较长的自定义脚本间隔发送状态或性能数据到zabbix server. $ /usr/local/zabbix/bin/zabbix_sender --help Zabbix Sender v2.2.3 (revision 44105) (7 April 2014) usage: zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i <file> -r} [-c 

8、zabbix_get和zabbix_sender命令的使用

Zabbix_get命令: zabbix_get是zabbix中的一个程序,用于zabbix-server到zabbix-agent获取数据.通常用来检测agent的配置是否正确. [[email protected] ~]# zabbix_get -h Zabbix get v2.2.11 (revision 56693) (12 November 2015) usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I

zabbix 命令 zabbix_sender

zabbix 获取key值有超时时间,如果自定义的 key脚本一般需要执行很长时间,这根本没法去做监控,那怎么办呢? 使用 zabbix 监控类型 zabbix trapper,需要配合 zabbix_sender 给它传递数据. 在Zabbix server 创建Items 2. 在客户端执行 -s "Zabbix server" 是/usr/local/zabbix/etc/zabbix_agentd.conf 文件中的Hostname=Zabbix server cd /usr/

zabbix_sender主动上传k/v监控nginx日志状态码

目前的zabbix监控了900台左右服务器,大概有11万items,zabbix在工作时根据agent的工作特点分为主动模式和被动模式,实际上一般开启兼容模式.在items多了后,有一些速度慢的items如果不采用主动模式,会把server端拖死,而zabbix_sender其实是一种变相的主动模式,配合计划任务,主动将k/v上传到zabbix,现将nginx日志zabbix_sender实现状态码的监控抛砖引玉做下介绍. 一.agent端编写脚本和计划任务 需求是监控nginx日志的200.4

zabbix_sender高效模式

1.zabbix_sender介绍 zabbix获取key值有超时时间,如果自定义的key脚本一般需要执行很长时间,这根本没法去做监控,获取数据有超时时间,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种情况,zabbix增加了Trapper功能,客户端自己通过zabbix_sender提交数据给zabbix,这个通道便是trapper.使用zabbix监控类型zabbix trapper,需要配合zabbix_sender给它传递数据.执行超长时间脚本,如:

python 版本zabbix_sender

python版本的zabbix_sender: 使用方法:    1.导入 : from zbx_send import info        2.实例化: test=info()     3.支持方法:         添加信息: add_data("主机名",'Key_',"报警内容"),可以添加多次               例:  test.add_data("cluster",'cluster.core.waring',"

如何通过bat脚本与zabbix_sender实时监控应用进程是否正在运行

为什么要使用zabbix_sender?zabbix获取数据有超时时间,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种情况,zabbix增加了Trapper功能,客户端自己提交数据给zabbix,这个通道便是trapper.思路解析:在window主机上,编写一个每隔5秒就会执行tasklist查看进程的bat脚本,如果该脚本找到了指定的进程就通过zabbix_sender发送"is running"到zabbix_server服务器,此时对应的z

zabbix 监控nginx语法错误

由于一些自动化工具原因nginx 配置的时间会出现域名错误,只是在reload的时间才报错,很耽误时间,晚上还要起来处理. ngx的机器安装zabbix_sender #! /bin/sh ## 通过zabbix sender 上报nginx 配置文件的检查结果,避免配置文件长时间语法错误 ip=`/sbin/ifconfig | grep 'inet addr:' | grep -v "127.0.0.1" | awk -F ":" '{print $2}' | 

zabbix agent安装脚本

为了以后批量部署,节省时间和人力就把zabbix_agent的安装方法改成源码的,仅供参考 #!/bin/bash #zabbix server 端IP 地址 SERVER="10.10.99.78"   #zabbix 版本号,也就是源码包.tar.gz前面的部分 VER="/usr/local/src/zabbix-2.4.4" groupadd zabbix useradd  -g zabbix zabbix -s /sbin/nologin    tar x