如何在Zabbix前端创建主机的一个简单控制台?

图片
张金龙 | 宏时数据技术工程师

在不同的场景中,通过在不同的Zabbix组件上定义和执行脚本的功能是非常强大的。我们可以在许多不同的用例中执行这些脚本,以修复问题、将告警转发给外部系统等等。在这篇文章中,我们将介绍一个不太为人所知的用例:创建一个可以直接从前端执行不同脚本的控制台。

1.配置缓存
在这个用例中需要使用两个常用的Zabbix运行时命令"zabbix_server -R config_cache_reload"命令和"zabbix_proxy -R config_cache_reload"命令。可以使用这些命令强制Zabbix server和Zabbix proxy组件重新加载配置缓存。

首先,让我们讨论一下这些命令是如何工作的:

这一切都从配置缓存频率开始,它是为中央Zabbix server配置的。看看输出:

grep CacheUpdateFrequency= /etc/zabbix/zabbix_server.conf

在Zabbix proxy端,也有类似的设置。让我们来看看:

grep ConfigFrequency= /etc/zabbix/zabbix_proxy.conf

在现有安装中,我们为zabbix-server配置了"CacheUpdateFrequency=60",为zabbix-proxy设置了"ConfigFrequency=3600"。这个参数表示Zabbix组件接收我们在GUI中所做的配置更改的速度有多快。

除了频率,我们还有另一个变量:运行一个配置同步周期实际需要的时间。要找到精确的时间值,我们可以使用这个命令:

ps auxww | egrep -o "[s]ynced.*sec"

输出将产生如下一行:

synced configuration in 14.295782 sec, idle 60 sec

这意味着从数据库加载配置缓存大约需要14秒。然后休息60秒。在那之后,重复这个过程。

当监控设施规模变大时,我们需要对" CacheUpdateFrequency"和"ConfigFrequency"使用更大的值。通过减少配置的重新加载频率,我们可以减轻数据库负载。最佳的性能配置是在"zabbix_server.conf"中设置"CacheUpdateFrequency=3600",并在"zabbix_proxy.conf"中设置"ConfigFrequency=3600"(这是默认值)。

这样的配置会产生一些影响。当我们使用这么大的值时,将会有一个小时的延迟,直到新创建的实体被监控或更改应用到现有的实体。

2.设置脚本
我想介绍一种通过GUI强制重新加载配置的方法。
必须配置一些前提条件:

1.确保"Zabbix server"主机属于"Zabbix servers"主机组。

2.在运行zabbix-server服务的服务器上,配置一个新的sudoers规则:

cd /etc/sudoers.d
echo 'zabbix ALL=(ALL) NOPASSWD: /usr/sbin/zabbix_server -R config_cache_reload' | sudo tee zabbix_server_config_cache_reload
chmod 0440 zabbix_server_config_cache_reload

sudoers文件是必需的,因为开箱即用的服务"zabbix-server"运行于用户"zabbix",而用户"zabbix"没有访问本地系统的权限。

3.我们还将创建代表Zabbix proxy的Zabbix主机。这些主机必须属于"Zabbix proxies"主机组。

图片

请注意,在屏幕截图中,主机"127.0.0.1"正在使用"Monitored by proxy"。这是非常重要的,因为在使用代理的用例中我们不关心代理接口,接口可以包含任意地址/DNS名称。我们关心的是"Monitored by proxy"字段。我们的命令将在这里选择的代理上执行。

4.在运行zabbix-proxy服务的服务器上,配置一个新的sudoers规则:

cd /etc/sudoers.d
echo ‘zabbix ALL=(ALL) NOPASSWD: /usr/sbin/zabbix_proxy -R config_cache_reload’ | sudo tee zabbix_proxy_config_cache_reload
chmod 0440 zabbix_proxy_config_cache_reload
5.在"/etc/zabbix/zabbix_proxy.conf"代理配置文件中做如下修改: “EnableRemoteCommands=1”.
然后重新启动"zabbix-proxy"服务。

6.打开"Administration" => “Scripts”,并定义以下命令:
对于"Zabbix servers"主机组:

sudo /usr/sbin/zabbix_server -R config_cache_reload
因为这是我们将要执行的自定义命令,所以脚本的类型将是"script"。第一个脚本将在Zabbix server上执行→通过此命令强制Zabbix server服务器重新加载它的配置缓存。在本例中,所有对Zabbix服务器主机具有"Read"访问权限的用户都能够执行该脚本。您可以根据内部Zabbix策略对其进行限制。

下面你可以看到它该如何配置:

图片

对于"Zabbix proxies"主机组:

sudo /usr/sbin/zabbix_proxy -R config_cache_reload
对于proxy脚本,唯一改变的是"Command"和"Execute on"参数,因为现在命令将在Zabbix proxy上执行,Zabbix proxy正在监控目标主机:

图片

3.前端作为控制面板
我更喜欢添加一个附加的主机组"Control panel",其中包含中央Zabbix server服务器和所有Zabbix proxy。

现在,当我们需要重新加载配置缓存时,我们可以打开"Monitoring" => “Hosts”,如果添加了主机组"Control panel"可以直接筛选出。然后点击有问题的代理主机,选择"config cache reload proxy":

图片

它需要5秒钟来完成,然后我们将看到脚本执行的结果。执行成功在会输出-"command sent successfully’:

图片

顺便说一下,我们也可以把这个页面添加书签。

使用这种方法,您可以为不同类型的任务创建"Control panel"主机组和脚本,您可以直接从Zabbix前端执行这些任务!这使得我们不仅可以使用Zabbix前端进行配置和数据概述,还可以将其作为主机的控制面板。

如果你有任何问题,欢迎评论,同时希望可以分享你在前端使用脚本的用例-请留下评论!您的用例可能会激励许多其他Zabbix成员尝试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值