前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Zabbix前端创建主机的一个简单控制台?

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

作者头像
Zabbix
发布2022-02-10 08:43:17
6640
发布2022-02-10 08:43:17
举报
文章被收录于专栏:Zabbix中国官方Zabbix中国官方

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

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

1.配置缓存

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

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

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

代码语言:javascript
复制
    grep CacheUpdateFrequency= /etc/zabbix/zabbix_server.conf

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

代码语言:javascript
复制
    grep ConfigFrequency= /etc/zabbix/zabbix_proxy.conf

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

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

代码语言:javascript
复制
    ps auxww | egrep -o "[s]ynced.*sec"

输出将产生如下一行:

代码语言:javascript
复制
    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规则:

代码语言:javascript
复制
    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规则:

代码语言:javascript
复制
 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"主机组:

代码语言:javascript
复制
 sudo /usr/sbin/zabbix_server -R config_cache_reload 

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

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

对于"Zabbix proxies"主机组:

代码语言:javascript
复制
 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成员尝试一下。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.配置缓存
  • 2.设置脚本
  • 3.前端作为控制面板
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档