环境centos6.8

zabbix版本3.2.4

需求:

要远程监控一台服务器A,但只能通过远程服务器连接本地服务器B,但B不能主动连A(因为A没有固定公网ip)

使用了zabbix_agent的active模式,但这种模式不能使用ping方式确定agent是否存活,使用触发规则nodata测试

A服务器网络不稳定,很容易误触发规则(若有大神评论区教教我,是不是我哪里设置错了)

最后

究其原因,主要是使用触发器失败,改用了这种方法,当做心跳线使用

zabbix官方文档:https://www.zabbix.com/documentation/3.2/manual/config/triggers/expression

实施例8

最近3分钟内没有心跳

使用函数nodata():

{zabbix.zabbix.com:tick.nodata(3m)}=1

'tick'必须有“Zabbix trapper”类型。为了使此触发器工作,必须定义项目'tick'。主机应使用zabbix_sender定期发送此参数的数据。如果在180秒内没有收到数据,则触发值成为问题。


一、zabbix-sender介绍

zabbix_sender是一个命令行工具,可以用来发送Zabbix服务器处理性能数据。该工具通常用于长时间运行的用户脚本,用于定期发送可用性和性能数据。

zabbix获取key值有超时时间,如果自定义的key脚本一般需要执行很长时间,这根本没法去做监控,那怎么办呢?

使用zabbix监控类型zabbix trapper,需要配合zabbix_sender给它传递数据。关于trapper的用法,我们来弄个实例。

执行超长时间脚本,如:脚本去几十台服务器拉去数据,每个日志都上G,然后日志整合在一起,统计出返回值。这种脚本比如超时,所以我们必须改成让客户端提交数据的方式。

这里是zabbix-sender设计的初衷,被我这样用也是无奈!!

二、zabbix_sender命令详解

[root@localhost]# ./zabbix_sender
usage: zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i <file> -r} [-c <file>]
参数说明:
-c --config <file> 配置文件绝对路径
-z --zabbix-server <server> zabbix server的IP地址
-p --port <server port> zabbix server端口.默认10051
-s --host <hostname> 主机名,zabbix里面配置的主机名(不是服务器的hostname),不能使用ip地址
-I --source-address <IP address> 源IP
-k --key <key> 监控项的key
-o --value <key value> key值
-i --input-file <input file> 从文件里面读取hostname、key、value 一行为一条数据,使用空格作为分隔符,如果主机名带空格,那么请使用双引号包起来
-T --with-timestamps 一行一条数据,空格作为分隔符: <hostname> <key> <timestamp> <value>,配合 --input-file option,timestamp为unix时间戳
-r --real-time 将数据实时提交给服务器
-v --verbose 详细模式, -vv 更详细

三、zabbix_sender应用实例

zabbix获取数据有超时时间,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种情况,zabbix增加了Trapper功能,客户端自己提交数据给zabbix,这个通道便是trapper.

使用trapper的步骤如下:

  • 在zabbix中配置trapper监控项
  • 传递数据到zabbix中

1、进入zabbix web界面选择一台主机(或模板)--items--Create item 定义一个key用来接受客户端的sender,如下图:

(1)我采用的是模板添加,方便以后统一添加

(2)也可以采用hosts添加items

这里的几幅图看不清楚,博客园貌似图片有限制加上小图

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

之前百度了许多关于sender的内容,但都是2.2或2.4版本,比较老,3.2.4还是有些不一样的

到这里创建items成功

(这里的key是自定义的,在使用sender时需要用到,大概是秘钥配对的感觉,不知道对不对)

2、回到客户端使用以下命令sender数据

zabbix_sender -s "" -z 192.168.1.104 -p  -k "trap" -o 1

这里

  • -s后面跟的参数是agent端的hostname
  • -z后面跟的参数是server端的ip
  • -p后面跟的参数是server端的端口(不写默认为10051)
  • -k就是刚刚建items时自定义的key值-o是你想发送的数据(要是选择的txt接收模式,也可以为字符)
[root@localhost.localdomain 五 4月  :: ~]# zabbix_sender -s "" -z 192.168.1.104 -k "trap" -o
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000050"
sent: ; skipped: ; total:

这里会提示是否正确发送,若failed是1,表示有一个失败,即发送消息失败,这里s跟k参数最好都加上引号,之前就是这个原因一直失败

3、再回到zabbix web端选择前面的主机--点击Latest data 如下图:

这时看见在这里是没有数据的,这里就跟2.4版本不一样了

我只用数字1表示有信号

这里就告一段落了

4、添加触发器

这里的触发规则,具体的我也不会,我只是套用了模板,使用trap这个key键,语句是nodata,然后再设置对应的参数,这里具体的要看官方文档了

到这里就设置好了server端

5、客户端添加脚本

再到agent端

zabbix_sender -s "" -z 192.168.1.104 -k "trap" -o 

添加执行权限

chmod +x zabbix_sender.sh

添加定时计划

* * * * * /usr/local/src/zabbix_sender.sh

然后就能运行了

这样就算一个完整的报警了,虽然很烂

zabbix_sender用法实例的更多相关文章

  1. php中的curl使用入门教程和常见用法实例

    摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...

  2. 上传文件及$_FILES的用法实例

    Session变量($_SESSION):�php的SESSION函数产生的数据,都以超全局变量的方式,存放在$_SESSION变量中.1.Session简介SESSION也称为会话期,其是存储在服务 ...

  3. C++语言中cin cin.getline cin.get getline gets getchar 的用法实例

    #include <iostream> #include <string> using namespace std; //关于cin cin.getline cin.get g ...

  4. Union all的用法实例sql

    ---Union all的用法实例sqlSELECT TOP (100) PERCENT ID, bid_user_id, UserName, amount, createtime, borrowTy ...

  5. 【转】javascript入门系列演示·三种弹出对话框的用法实例

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  6. php strpos 用法实例教程

    定义和用法该strpos ( )函数返回的立场,首次出现了一系列内部其他字串. 如果字符串是没有发现,此功能返回FALSE . 语法 strpos(string,find,start) Paramet ...

  7. 【JSP】三种弹出对话框的用法实例

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  8. python多线程threading.Lock锁用法实例

    本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...

  9. jQuery中on()方法用法实例详解

    这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能及各种常见的使用技巧,并对比分析了与bind(),live(),delegate()等方法的区别,需要的朋友可以参考下 本 ...

随机推荐

  1. python实现类jq的json路径过滤

    开发过程中访问接口时经常用到jq来过滤json,用着觉得不是很爽,于是自己搞一个舒服的 ^_^ 先说需求: 输入:参数1:被过滤对象(json.dict.list), 参数2:过滤路径 输出:过滤结果 ...

  2. 使用jemeter手工编写注册、登陆脚本 运用 fiddler (三)

    手工注册脚本的录制 我们可以发现  编写手工脚本 需要用到两个软件一起合作才能编写成功 工作亦是如此  养成良好的团队合作精神 是必不可少的 现在我们来看手工编写注册脚本 第一步 :我们先进入网站首页 ...

  3. MATLAB数字图像处理学习笔记

    我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 %im ...

  4. 关于ODP.NET连接数监控及相应的windbg分析提示

    1.关于ODP.NET的Windows计数器问题 使用微软的缺省驱动时,可以通过windows性能监视器很方便的监控数据库连接数,选择.NET Data Provider for Oracle/Sql ...

  5. unison+inotify实现数据双向同步

    unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH.RSH和Socket等网络协议进行同步.更棒的是,unison支持双向同步操作 ...

  6. MongoDB(一)环境搭建与初始配置

    前言 最近的项目中需要用到MongoDB,所这段时间需要学习知道怎么去使用这个数据库. 这里我先简单的介绍一下什么是MongoDB,后面还会详细的介绍: MongoDB 是一个面向文档的通用型数据库, ...

  7. 【Java学习笔记之二十】final关键字在Java继承中的用法小结

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...

  8. POJ3264-Balanced Lineup-线段树

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 53721   Accepted: 25244 ...

  9. 并查集-HDU1232-畅通工程

    转的其他人的.不知道谁的. 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的.最后要解决的是整幅图的连通性问题.比如随意 ...

  10. poj_2115C Looooops(模线性方程)

    题目链接:http://poj.org/problem?id=2115 C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...