如何在代理上运行命令?

时间:2014-06-14 16:43:58

标签: sysadmin zabbix

在服务器上配置并进行配置。但要在代理商上运行:

  • 一些简单的unix命令,用于获取我们的报告数据。
  • 当代理方需要进行某些处理时。

似乎有各种各样的方法被讨论。那么如何在zabbix代理上执行这样的命令呢?

2 个答案:

答案 0 :(得分:6)

直接从新项目运行服务器命令。

首先,在代理conf文件中设置:EnableRemoteCommands=1(适用于所有代理)。启用此功能。

创建一个新项目。 "新项目"上的字段页面上写着' key'。输入:

system.run[command]

作为'键'串。其中command是要下载并在代理上运行的命令。这是一个例子:

system.run[sysctl dev.cpu.0.temperature | cut -d ' ' -f 2 | tr -d C]

也许你需要运行一个更复杂的东西,太长而不适合那里?然后,您将需要制作自定义脚本。将自定义脚本放在本地Web服务器上或Web上的某个位置。

您可以将项目的关键设置为:

system.run[ command -v script && script || wget script_url -O /path/to/script && script]

在第一次执行代理时,将缺失的脚本提取并下载到代理。然而,这是一个相当粗糙的黑客。不是很优雅。

更好的方法是进入"管理" - > "脚本"在菜单中。从那里,您可以创建一个新脚本,用于可以配置为在任何代理上运行的项目。

定制一个特殊的自定义项目以定期重新运行脚本(如cron作业)。特殊脚本项的作用是使用其他所需自定义脚本的集合更新代理。

当然,您可以直接将所有自定义脚本编写到zabbix的MYSQL数据库中。这样做非常诱人。但请注意,如果您的zabbix数据库被炸毁或损坏/丢失,那么它们将会丢失并易受攻击。 Zabbix数据库总是习惯于变得庞大,笨拙和失控。所以不要这样做。将它们分别存储在其他地方并在版本控制下(git或subversion)。

一旦这些全部排序,我们终于可以继续创建更多自定义项目来运行自定义脚本。再次使用:

system.run[script]

作为项目的关键点和以前一样。哪里'脚本'是命令(加上任何参数),用于在代理上本地执行自定义脚本。

答案 1 :(得分:1)

  1. 在客户端定义用户参数(zabbix代理所在的位置) 位于/etc/zabbix/zabbix_agentd.conf。关键应该是 独特。我使用lsof作为例子。

    UserParameter = open_file,lsof | wc -l <​​/ p>

  2. 重新启动代理“service zabbix-agent restart”

  3. 使用zabbix_get实用程序测试密钥是否正常工作。来自zabbix 服务器调用以下内容。在这种情况下它应该返回一个数字。

    / usr / local / bin / zabbix_get -s -k OPEN_FILE

  4. 在模板的zabbix服务器上使用密钥创建项目 水平。应正确定义返回类型,否则为zabbix 不接受它:

    类型:Zabbix代理(活动),密钥:open_file,信息类型: 数字(无符号),数据类型:十进制

  5. 您可以使用项目创建图表来监控值 定期间隔。

  6. 这是官方documentation

相关问题