Zabbix:网络拓扑清晰自动

管理比本地主机更大的网络?不控制,但想学习?我们邀请您参加“ Linux。 5级。Zabbix。监视企业的IT基础架构在鲍曼莫斯科国立技术大学的专家培训中心的免费研讨会上,您将学习如何教Zabbix自动监视网络:找到现有节点并添加新节点,绘制并更新拓扑。



该研讨会将由MSTU网络的主要系统管理员Bauman MSTU的“专家”中心的主要老师主持。 N.E.鲍曼·维亚切斯拉夫·亚历山德罗维奇·洛赫图罗夫。注册(或查看录音)以获取我们的免费研讨会

大家好!我叫Vyacheslav Lokhturov。我在鲍曼莫斯科国立技术大学担任工程师。自1997年毕业以来,我一直是工程师。同时,我在第一培训中心“专家”中任教-这是一家友好的MSTU公司。还有许多其他老师和员工在那儿工作。

网络研讨会的主题将是我作为工程师工作的一部分-一个出色的监控系统...

网络拓扑:背景,Baumanka Wikipedia,来源


您可以通过以下链接查看网络研讨会录像:https ://wiki.val.bmstu.ru-Wiki格式。我的电子邮件地址是:val@bmstu.ru,val@specialist.ru。我用作工程师的教程。有很多不同的材料。如果您不喜欢它,互联网上有很多关于您的主题的资料(“ Zabbix”)。

从教材和教学的角度来看,我使用“阅读课程方法的材料”部分:



并且有一个网络研讨会部分。对于我的每一次阅读,这里都有一个记录:



我立即说:“如果这样做,让我们做最酷的事情!让我们展示一下如何在Zabbix中自动构建网络拓扑。在45分钟内,我必须告诉这个。
关于网络拓扑:Bauman MSTU拥有庞大的网络;因此,网络拓扑是我们长期以来真正需要的。从历史上看,Zabbix并不是我们最初使用的系统。像计算机科学,管理,计算机系统,综合体和网络等部门的所有人一样,我们都喜欢自己编程,现在我们进行了编程……

我们有一个小型Wikipedia用于工作。在这个Wikipedia的元素中,有一部分专门讨论网络交换。小型VPN仍然无法访问此Wikipedia:



现在,我将向您展示我们大学的网络拓扑结构。值得一看;然后与结果进行比较:



在我看来,一切都清楚了:所有的交换机及其到根交换机的路径;如果缺少某些内容,我们将从此文本文件中快速恢复。网络拓扑是每天构建的。当然一切都很好,但并不壮观。很难卖。因此,我们在大学有这样的计划。

当某些交换机消失时,需要网络拓扑。了解他在哪里联系


我们将尝试看到更壮观的事物。在论坛上的这篇文章对我们将要做的事情有一定的参考:





它告诉我们,有一种用我以前最喜欢的语言Perl编写的奇妙脚本,网络设备会对其进行轮询,这使得结论,并以某种方式奇迹般地将结果提供给Zabbix。但是我们不会使用Perl,但是会使用其他东西。

我们告别我们拥有的。让我们继续练习。



如果您可以在家复制所有内容并尝试为此做好一切准备,我将很高兴。网络研讨会结束后,您将需要重复所有操作,并首先需要部署Zabbix,虚拟机和网络。这个怎么做?

在家里,您键入ipconfig命令,您会发现家里有这样的IP网络(可能是一个不同的网络,但最常见的是这个网络):我在



这里第五个地址(192.168.1.5),可以有第20个或第30个地址...当然,有一个发布这些地址的Wi-Fi路由器。因此,我现在将根据您家中的房屋绘制一个拓扑,以便您可以复制它:



  • 您有一个WIFI路由器。
  • 您要在其中播放网络研讨会的系统。
  • 192.168.1/24 – 1- WI-FI-, 5-, , – .
    . , – , 2, 10, 20 , . , linux-, «». , 100. , 192.168.1.100.

在哪里买车?没有什么可以阻止Linux发行版的。我是这个发行版的忠实粉丝。我们不会滋生各种口味-我爱他,我选择他,我在课程中使用他。您可以从该站点进行安装:



为了避免花45分钟安装Debian,我将准备一个现成的预安装映像。谁需要它-写信给我,我会将此图像发送给您,尽管其中没有特别突出的内容(以免浪费时间安装):



安装后,您可以查看手册中的部分...

展位部署


有一个关于ipconfig命令的故事:



然后,当机器转过身时:



您可以在设置中指定一个名称,为其分配更多的RAM:有



不同的虚拟化功能-VirtualBox适合家庭使用。在企业中,我们和我的朋友使用VSphere(我们对来自VMware的产品感到非常满意),但是VirtualBox的课程远远不够。

网络:



因为我们说这台机器将连接到我们的网络,所以我们可以使用它-它必须通过网桥连接到物理适配器。我将重新生成Mac地址。我启动我们的虚拟机:



在开始之后,我进行配置。手册列出了需要编辑的文件:为计算机分配一个名称,最好编辑主机文件,resolv.conf(负责DNS客户端)和我们选择的ip地址-这四个文件必须进行编辑。我将尝试尽快完成。

Zabbix部署


该用户(root)的密码将立即在映像中设置-切勿在实践中使用它!为了节省时间,我使用一个特权帐户:



手册列出了需要编辑的文件。



接下来,给我们的机器(Zabbix监视服务器)命名:



主机文件:



将地址更改为第100个,然后将其命名为我们发明的域的名称(课程中的每个侦听器都有自己的个人,例如具有域的网络):



还剩下什么? Resolv.conf(DNS客户端):



Corp1.un将停靠简称,您的WIFI路由器通常将用作DNS服务器:



还剩下什么?最重要的大文件是网络/接口。这是不同课程,许多界面的模板:



但是我们的汽车将只有一个接口。这将是具有第100个地址的监视服务器,并通过第1个地址进入Internet:



也许不是必需的,但是使用所有文件的速度更快-重新启动计算机。

在Debian中安装和启动服务


Zabbiks可以通过多种方式安装。根据Zabbix的介绍,有一个出色的网站提供了文档(顺便说一下,俄语版支持活动部分)。因此,此处提供了各种选项。我大力支持从常规存储库安装软件。这并非巧合,这就是我选择Debian的原因:





顺便说一句,如果一切顺利,那么现在我应该可以连接到我的系统了。让我们尝试去做。我选择了我最喜欢的SSH客户端,并连接到192.168.1.100系统:



幸运:



再次,在这里允许使用root用户不是很正确:



永远不要在企业中这样做!这只是节省时间。



现在我们必须安装Zabbix。作为对基本软件使用的热爱者和支持者,以及反对连接任何第三方存储库的反对者,我将介绍此Debian中的版本。再次感谢“ Debian”的作者-只需拨打安装这样一个软件包的安装程序即可:我



还记得一件事!我们刚刚安装了系统-我们需要同步存储库(apt更新):



因此,只要安装了许多组件(安装几分钟,就需要在SQL中键入zabbix-server安装命令并支持您信息的数据库(DB))。 :



Zabbix由什么组成


Zabbix包含以下组件:

  • “ Zabbix”服务器;
  • 他正在积极地进行配置,我们将手动和自动进行配置。
  • , ; MySQL ( – ), ( «» – PostgreSQL, Oracle ).

为了使我们能够使用Zabbix,我们使用了所谓的前端。前端Zabbix是一个可能是用PHP编写的应用程序(可能不是全部,而是大多数)。因此,应用程序本身使用Web服务器。到目前为止,仅放置了这部分(现在我们将等待其安装):已



完成。现在,由于Zabbix使用数据库,因此我们需要按照文档进行创建。为了创建数据库,我将使用一个简单的脚本:



我不会详细说明什么命令意味着什么。如果有人使用DBMS,他们会看到一些熟悉的东西-数据库名称,依此类推...



现在,我使用此脚本创建数据库:



并用元数据填充此数据库。有迹象表明,描述哪些表应该是,它的属性,参数,等等(这一切完成后,再根据文档)的几个文件:



也就是说,现在在MySQL中,我们正在打桩的是的zabbix将使用存储配置和结果的元数据:



无我将花些时间看一下他将在那里创建的内容(将创建大量的表)。 Zabbix作为产品已经发展了十多年,并且一直在努力变得越来越好,因此那里的数据结构非常繁重。但这一切都是“内幕”。作为管理员,我们将使用外部前端应用程序,使用该应用程序,一切将变得简单,清晰且可访问。

根据文档,由于某种原因,存在多个文件。但是,既然他们这样做了,那就意味着他们知道他们需要什么!数据库已准备就绪:



现在,根据文档,需要解释此组件:



解释它应与数据库一起使用,并以特定的登录名和密码进行连接。这是通过配置文件完成的:文件



末尾插入





在这里我们描述数据库服务器在我们的帐户下:



“ Debian”-“ Zabbix”的软件包并不意味着自动启动。这是一个出色而可怕的SystemD团队,其中涉及许多诱因:



它使服务器启动后自动启动Zabbix。启动Zabbix:



这两个组件正在运行:



您已经可以监视,填写配置。但是在设置好前端之前很难做点好事...但是,起初-错过了阶段...

Zabbix部署 时区本地化


我展开了图像,并显示了错误的时间:



日期正确。我们的时区是错误的,因此我一口气纠正了它:



到达前端。安装和启动Web界面


Debian应该安装这样的软件包(在安装Apache Web服务器之后):将安装



PHP,PHP是一个用PHP连接用MySQL编写的程序的库。总的来说,我正在启动:



您不需要长时间执行任何操作,所有操作都会自动完成:



现在,我们将这个组件放在这里-Zabbix前端;一个Web服务器,我们将向他解释他需要与Zabbix服务器和DBMS一起工作:



通过Web服务器,我们将管理Zabbix,并通过它来查看他在那里监视的内容。

它几乎已经建立,现在我们将看到它与我国有着密切的关系。它是作为某人在银行工作的应用程序而开发的。他决定设置监视程序并接受它并编写了程序,而不是使用完成的程序。他在里加(Riga)工作,您和我在莫斯科(Moscow):



在此文件中↑PHP初始化是必需的↓为此,





我将不进一步介绍如何在Debian中配置Web应用程序。连接来自Zabbix软件包的配置并重新启动Apache网络服务器就足够了:



连接到前端以配置Zabbix


几乎准备好连接到前端。仅向他解释数据库服务器的位置。有两个选项,我们将通过向导进行操作。为此,您需要一个用于写入配置的文件:



Web服务器必须对此文件具有写入权限:



之后,您可以尝试在浏览器中进行连接。您可以按IP地址。我的DNS已经配置好了,所以我将借此机会:



我们有了Zabbix向导,在这里我将单击``下一步'',因为大多数人已经安装了它:













我们的Zabbix可以连接了。我们输入用户名和密码:



配置,主机...不监视任何主机-如果我们安装了Zabbix代理,“ Zabbix”仅准备监视自身。



扩展交换机云


但是我们的网络研讨会将没有Zabbix代理。这太简单了,没意思!您和我将监视分布式网络,通讯交换机链,因此我们需要此交换机链。在哪里买?

我建议使用Virtual Box虚拟化。它允许您模拟PC(计算机),现在,我将向您介绍另一个在我们的课程中也使用过的模拟器。一款出色的产品称为图形网络模拟器(GNS):



此模拟器可让您模拟Cisco设备。在这里,我们将部署交换机云。有必要再次提出项目的名称(让我们保存配置,如果明天需要的话):



如果您想在家中学习如何使用Cisco设备,请自己安装此GNS并按照在研讨会上的操作进行操作,即,我们现在将部署交换机云。问题在于GNS没有交换机(此处没有仿真),只有路由器仿真。因此,我们必须放置路由器(用鼠标光标拖动):



并以某种方式使其成为交换机。如何在GNS中进行交换机仿真?我们需要使用第36系列的路由器。您可以将其称为开关(右键单击该开关):



您可以绘制一个开关:







看起来像吗?但是,只有在其中添加这样的板时,它才会成为真正的开关:



在这一系列Cisco路由器中,您可以放置​​一个16端口以太网板。对于与开关有关的大量实验室工作,该板非常合适。
我们必须有一个开关云,因此现在让我来制作这个云(更改名称,图片并插入面板)。让我们从三个开关开始,如果有时间的话,我们



添加第四个开关:我们将连接,而不是特别瞄准目标位置。我们的拓扑将必须自动构建:





完成:



现在,我开始这项业务:



祝贺那些第一次关注Cisco工作原理的人-您可以快速配置Cisco交换机。同时,他们从我们

这里开始... 这是我们的Windows系统(Windows 7)和Debian:



这里是GNS3虚拟化和交换机云:



现在很清楚发生了什么:在一台计算机的框架内使用了两个虚拟化系统。 PC系统的虚拟化(右侧)和Cisco系统的虚拟化(左侧):



必须使服务器监视设备:



为了能够对其进行监视,该设备应该在同一网络中具有地址:



因此,不用长时间考虑,我我决定给这些交换机地址(分别为第一,第二和第三交换机的点101、102、103)。第100个是我们的Linux:



您可以按以下方式进行配置:进入授权的Cisco课程,他们将告诉您便宜的价格。

为了使交换机可用于管理,您需要进行以下设置-进入配置模式,输入合适的名称,为接口分配IP地址并将结果复制到长期存储中:



我将准备好鱼,以免花费大量时间在上面。第一个交换机称为switch1,IP地址为第101个。我将此配置复制到交换机:



双击所需的交换机(现在为-switch1):





设置switch1。现在-第二个交换机的配置:称为switch2,IP-102:相应地





,我们使用第三个交换机。

好吧,如果不仅可以从我们的Windows计算机上获得我们的服务器,而且还可以从我们现在配置的服务器上获得它,那将非常酷:



GNS3是一个很好的系统。我之所以强调,是因为它有足够的问题:有一点点小问题,但是……为了学习,就足够了。这种停顿让我感到震惊-我希望一切都会好起来,一段时间后我们的交换机会回答:但是



,无论我等待多少,它都不会回答!我们的计算机和GNS之间的通信不够。GNS本身,因此缺少另一个元素:



连接云


为了使这些开关可用,您必须使用Cloud对象:



今天,Cloud以完全不同的方式使用它。 GNS的作者是互联网服务提供商。在此对象的设置中,我可以将其连接到我的网卡:



看上去很吓人,但这是同一张网卡:





我放了Cloud。现在您需要将其中一台交换机连接到云(只有这样才能出现连接):我



怀疑在我们这种情况下,重新启动交换机的速度更快,以便一切正常。我唯一要确保已保存其配置的东西。顺便说一句,在ping交换机内部应该已经存在:



真正的Cisco!第一个包消失,其他所有内容都在这里:



实际上,这里不是使用自然仿真,而是使用iOS。因此,我停止第一个开关,然后重新启动:





如果一切正常,那么我们应该可以通过云看到连接-我的Windows 7将通过网卡连接到该设备(该设备的IP地址与Windows处于同一网络) 。通常,这是GNS与Windows之间的连接点。让我们



检查一下是否存在联系:让我们看看他的感觉……他在这里回应:他妈的



!您会发现,这种联系已经出现:



我喜欢GNS,因为它是免费的,它可以工作...但是,并非一切都简单!这是一个有趣的情况:我们的Linux响应Windows系统,我们的交换机响应Windows,但是该交换机不响应Linux系统:



这样老师可以变灰!您正在上一堂课,但是这个摊位对人们不起作用...恩,没什么,我们会说服!免费,便宜又开朗。

经验表明:为了使连接到全部三个要素之间(从Windows -到Linux,从Linux的-到GNS),你需要去的网卡设置,选择陌生的选项- “无声模式”(“允许所有”):





来到虚拟化!在所有决策中(以及在“ Sphere”中),都是这种不加区分的模式。它与以太网数据包,mac地址等的传递相关联。上虚拟化课程吧,详细信息在那儿。

我们再次启动系统,希望可以恢复连接:



只有现在才可以从Zabbix配置对交换机的监视。让我们看看这是怎么发生的:



奠定基础。如果我们现在有连接,那么一切准备就绪。在“ Zabbix”中有很多“ Tsiska”,它们巧妙地连接在一起-您可以开始监视。我们使用密码连接到root用户并检查ping:





一切就绪:



作为本地DNS的管理员,我还使得可以通过ping名称发送。

Zabbix如何监视Cisco设备?


无法在Cisco设备上安装代理。你们中许多人都知道,使用SNMP可以完美地监视Cisco设备。现在我们将为此做好准备。

现在我们将为此做好准备。要使用SNMP协议监视设备,首先,您需要在监视服务器本身上安装SNMP支持:



Zabbix不包含此支持,它使用了这些软件包中包含的外部库:



我不会告诉您什么管理信息库-参加有关Lunux和Cisco交互的课程,这里有详细介绍。现在,我们只需要在Linux上进行监视所需的软件包即可:





并在Cisco上放置配置元素,使我们可以依次监视它们。



在这里,SNMP服务器仅以以下密码开头:



并且我们在所有三个交换机上都进行了加密:



完成这些步骤之后,我们将检查监视服务器是否可以通过SNMP访问Cisco设备(这些交换机中的任何一个),例如,找出一些东西。这里有测试选项:



您可以使用所谓的OID(对象标识符)轮询我们的交换机。在这里我们查询交换机(我们请求switch1参数的值):



并且我们看到这个Oid指的是交换机的名称,也就是说,我们可以从每个交换机中提取其名称(这对于拓扑非常有用):



并且您可以使用更多人工的,文本的-我们从交换机请求sysName(可以从switch2等询问相同的名称):



安装SNMP控制台


另一个动作并不明显:







根据许可协议,您需要注释掉该文件中的行。这是一个很棒的啄木鸟命令,它清除了文件的内容,其中说:“要确认许可证,请注释掉其中的所有内容”。

因此,必须重新启动Zabbix服务器,因为我们已经安装了将要使用的库:





许多人都知道,现在足以进入主机部分,创建主机并选择SNMP协议。指定IP地址:





但是我们不是在这里。让我们尝试让Zabbix自动找到我们所有的开关。我们有三个,在鲍曼卡有一百多个(看来是120个)。添加100台交换机并不是那么有趣,所以这是一个额外的好处:我们将看到Zabbix如何找到我们的交换机。

自动将设备添加到Zabbix


页面“自动将设备添加到Zabbix”:



为此,我们将转到“配置”部分(“发现”子部分),我们不会在此处创建新规则,但将使用现有规则:

  • 这正确地表明您需要扫描此网络...您认识我们的网络吗?为了不等待太久,我将显示100-110的有限范围(对我来说足够了)。
  • 每小时扫描一次有点多;放置-每60秒一次。
  • 在扫描的设备上,我们的Zabbix现在正在寻找Zabbix代理。我保证您和我将没有任何代理,因此将其删除。
  • 我说,实际上,我们的设备可以通过SNMPv2(社区-公共)访问。我们请求了这样的OID:
  • , . , . ( ):

现在,Zabbix每分钟都会通过这些IP地址运行,并通过SNMP询问设备的名称。如果有设备并且支持SNMP协议,它将回答:



这不足以使我们的设备出现在此列表中:您



需要配置操作。我们将创建一个新的(我将其命名,从培训手册中复制出来):





条件:请求必须返回有关此开关的信息。通过“幸运的巧合”,我们将所有开关称为开关(switch1,switch2,switch3),因此接收到的值应类似于switch上的(类似):



所有这些都在培训手册中。它仍然表明如何处理它-“操作”:



首先,您需要将其添加到某个组中。我将使用现成的发现主机组:





以下,最重要的是,我们必须解释在此设备上监视什么。在这种情况下,我们将使用适合大量各种SNMP设备的现成模板:















如果一切都正确完成,那么一段时间后,我们的Zabbix中将奇迹般地出现3个开关。我们等。它们将显示在“主机”部分中。有一个连接(以防万一,请检查):



出现:



如果我们有100台交换机,则会出现100台交换机。现在我们可以讨论主要主题-网络拓扑的自动构建。

创建网络图


在“监视”部分的“ Zabbix”中-“网络映射”小节。您可以使用任意名称创建自己的地图(在手册中称为“开关”地图,我将其称为):







您可以在该地图中添加设备:



我们在这里添加数百个开关的操作相当无聊:我添加了一个



新元素,并告诉系统该设备已开启实际上是您正在监视的主机;主机交换机1:





人们经常问这个过程是否可以自动完成。答:“有可能!”。但是随后我们需要解决一个引人入胜的问题:“我们如何理解将哪些开关放在哪里?”那就是几何。可能的解决方案:您可以在开关中指定一个地理位置标记(例如“您正站在AZLK大楼6楼,666礼堂的位置),绘制教育实验室大楼,其所有听众...总的来说,这对第四名学生来说是个好学生计算课程。我们对此没有计划!

现在,我将手动添加所有3个开关,但是我保证我不会在它们之间画线。您添加了101st开关,我们会自动将其添加到Zabbix-如果您要用笔在地图上绘制它。令人不愉快的时刻,但还有一个地方。对于这个问题,没有简单的解决方案可以肯定地持续45分钟。我们得到的东西对我来说似乎很有趣。

我迅速添加3个开关:



我说我不会添加线吗?我会的,但只有这样,以后我们才能了解如何绘制它们。我将连接这两个开关(我们不



1st开关连接到3rd):我将连接它们(switch1和switch3突出显示):



我们的系统必须解决此问题:



重要的是不要忘记保存结果:





顺便说一下,关于GNS-您可以做的很漂亮...隐藏其主机名,使其成为交换机,然后将其置于另一个之下,从而形成一堆交换机:











我们如何构建拓扑?配置自动创建和更新通讯线路


为了自动构建拓扑,我们需要自动接收有关它的信息。在大学里,我们使用Cisco设备,因此我们爱上了称为Cisco发现协议的协议-只需在任何设备上键入show cdp neighbors,它就会告诉您switch1连接到了第5个接口:





cdp的替代品是lldp(我们有一个网段“吓人的”公司北电的交换机-那里lldp)。您会看到有两个开关:



Zabbix服务器必须以某种方式提取此信息(我在Cisco上看到了此信息)。有很多方法。最快但最愚蠢的方法之一是使用RSH协议。一个非常密集的协议,我只因为我的年龄才知道:





普通的RSH人们不知道,但是您可以快速地使用它来与Cisco进行远程连接。或者,如果我们谈论的是没有陌生人的某种管理网络,那么您可以在生产中使用它。但是,安全要点仍然是一个完整的接缝!

因此,我设置了从该IP地址访问我的Cisco服务器的RSH协议的支持:



现在,我可以在服务器上安装RSH客户端了





……并演示了按照我们刚才直接连接到Cisco设备所遵循的说明进行操作现在多么容易。从管理站开始-在switch1上,我将按照以下说明进行操作:





因此,它应出现在switch2上:



来自监视服务器的连接


进一步。经理写信给我:“维亚切斯拉夫,听众已经收到了一个请求。他想深入了解Bash,Csh,Sed和Awk。”这些是人们在糟糕的一年中都知道的密集的Unix实用程序。现在会有一些密集的Unix。我们将安装此软件包(我们需要格式化输出以使输出结构更好):



整个团队将像这样:



我不会说Dos中的返回码与Unix有何不同。接下来,我将仅过滤掉包含开关的行,删除多余的空格,并通过空格剪切必要的字段:





让我们看看结果,您将看到它与上一个有何不同。多一点的“魔术” Unix。处理信息到结构化的转换(例如,switch2)。代替此非结构化信息(很多空格,一些奇怪的键):



显示输出:



Switch2通过接口Fas 0/6(来自switch2)和Fas 0/5(来自switch3)连接到switch3。该表显示:某种交换机,通过该交换机与之相连的接口。
在此协议上,RSH和CDP离开。现在,我们已经收到了此信息,并在所有交换机上绘制了这些链接。为此,我们需要有关连接到哪些交换机的信息。您可以获得一个文本文件,其中列出了所有开关...但这不是体育运动!

我们只需要物理地添加开关,Zabbix应该会自动检测到它。我们已经在Zabbix中拥有交换机的数据库。应用程序如何从Zabbix获取有关交换机的信息?

Zabbix API


Zabbix API使用“很棒的” JSON协议编写。我在还没有JSON的那些日子里完成了编程,因此对我来说,对于管理员来说……如今,没有这种垃圾了!这是给我的文本文件-这很正常,但是JSON ...(
只是在开玩笑JSON就是JSON!

JSON是用于与Web服务器交换数据的格式,而cURL实用程序是方便使用的实用程序之一,它允许您向Web服务器发送任何请求:





我不会详细介绍POST请求,GET请求和我会简单地说。在Zabbix中,它可以在这里工作:



该应用程序来自:



可以在“吓人的”花括号(这是JSON)中接受这样的请求:



该请求指示我要使用Zabbix做什么,并指示参数:



Zabbix给出答案。这是一个示例,上面写着:“ Zabbix”,请给我一个验证字符串,以便我向您发送进一步的请求。” 我用登录名和密码确认我的凭据:



这样的JSON请求现在将向我们返回JSON响应:



并且在此JSON响应中将显示以下行:



这是可用于其余请求的身份验证器。

处理宿主对象


我们回想起为什么我们开始研究JSON:我们想从Zabbix获得switch数据库。哪个开关可以询问?让我们出去吧!

了解:Zabbix-API包括host.get:



Host 方法-这些是我们的主机。得到是一种付出。然后我指出:给我主持人信息!



在参数中,我说:输出关于主机的所有信息:



但是,我必须在请求中加上以下内容:



让我们演示。为了方便我,我将



复制此请求:然后插入Zabbix返回给我的身份验证器:



因此,Zabbix Api:我们研究了如何向Zabbix请求身份验证器进行访问。然后,我演示如何使用此身份验证器获得某种答案:



我认为一切都清楚了。您甚至可以查看是否带了放大镜。您能识别switch1吗?某个地方有一个switch2 ...



我很久没睁开眼睛了,然后决定在命令行上阅读如何使用此JSON。建议之一是:使用JSON查询。她非常健康,想出了答案,请看:





首先,一切都变色了-已经很好了;其次,在这里可以清楚地看到switch2,switch1:



此外,稍微修改一下JSON查询,我们将看到很多有趣的东西。为了不每次都从笔记本复制这些“鳄鱼”,我建议确定在使用“ Zabbix”时我们将如何编程工作。有一个Zabbix API-这是JSON,有一堆编程语言。JSON似乎是指Java脚本,但实际上,其他语言最常与Zabbix一起使用-例如,Perl,Perl脚本可以执行某些操作。

以Bash脚本的形式发出请求


Perl如今已不是一种流行的语言,已经过时了。如果我重新开始生活,我可能会开始学习Pyton。众所周知,在“ Python”下有一个方便的库可用于“ Zabbix”。但是,由于我们已经聚集在这里,并且不会偏爱任何一种语言,因此我使用以下语言:



系统管理员的语言,也就是我-Bash!因此,我将向Zabbix发出这些请求: 我将以



脚本的形式发出这些请求



脚本已准备好,我将其复制。他们看起来像地狱。我认为好的Python代码将更具可读性。但是,由于我本人不知道“ Python”并且不想给出任何偏好,因此我将写一篇接近系统管理员核心的文章:



我不会告诉您这些反斜杠是什么(上帝保佑他们)。但是身份验证字符串将以我们之前需要导出的变量的形式构成:





它对我们有什么价值?现在,无需复制长行,我只需运行脚本即可:



脚本返回完整的接缝。使用JSON Query,您可以得到以下效果:





记住任务:获取Zabbix中的交换机数据库!

我将立即得出结果。我不会说很久了,而是绕道而来。我们有一项艰巨的任务:



这是一个结果,请查看其中包含的内容。它说在这里我们在Zabbix中有这样的开关,而这个(10105、10106、10107)是内部的“ Zabbiksk”开关标识符:



结果是一个平面文件。添加每个新开关时,必须运行此脚本来创建文件。为了使我们没有这样的“鳄鱼”,我将在脚本本身中包括以下内容:





并且它将返回一个整洁的表格视图。现在我将展示。我运行脚本,它将显示并立即保存该文件:



tee实用程序是一个很好的实用程序,可以将结果写入文件并传递结果。现在,我们有3个交换机,并且有一个文本文件,其中列出了所有交换机:



现在您可以通过RSH查询这些交换机中的每一个,并找出谁与什么连接。
这样,我们得到了switch数据库。我们的最终目标是地图!

从Zabbix获取地图及其元素的列表


如何使用卡片?让我们学习如何从Zabbix中读取有关卡的信息。我将复制此脚本:





任何喜欢它的人都可以使用所有这些脚本。我试图尽可能简化它们-这样做并不容易。如果您找到简化方法,请写,我将对其进行纠正:



此脚本↑转到带有map.get请求的Zabbix,并说:“向我介绍链接,并告诉我这些链接相互连接的元素。”

现在,我运行此脚本:



并且显示结果:



就像有关主机的信息一样,从Zabbix获取有关卡的信息也很容易。每张卡都有其名称:



以下是该卡中的元素。你知道这个号码吗?这是Zabbix的内部元素:



最不愉快的是,在Zabbix中,元素再次被编号。左侧是id元素,右侧是映射内的元素编号:



也就是说,在Zabbix中,每个主机都有一个数字,而在映射上还有另一个数字-已获得此链。也就是说,switch1开关在Zabbix中被称为10105,在地图上被称为2(获得了一些复杂的任务)。

我们通过CDP和RSH将所有内容整合在一起,找出带有接口的交换机的连接


该脚本的最后一部分是我必须获取信息,即Zabbix的哪些标识符与地图上的哪些标识符相关联。看,在“ Zabbix”中,此标识符(10105、10106等)在地图上为2、3等。



传统上,我将其保存在文本文件中:



现在,我们几乎拥有了所有内容。该文件中包含哪些开关的信息(在Zabbix中使用了哪些标识符):



并且我们掌握了卡上的哪个标识符与哪个Zabbix标识符相关联(例如,switch1在Zabbix中的编号为10105,以及卡号10105的标识符为2):





那不是我的错!伙计们在Zabbix中写了这个。但是我敢肯定,为什么他们没有在地图上使用直接标识符是有原因的。也许是因为同一对象可以在地图上显示多次,并且必须具有唯一的标识符。因此,链条更长。

在这里,我可能会评论一下这个地狱般的小地方。播放:



在循环中,我读取了描述哪个交换机与哪个Zabbix标识符的行







通过RSH从Zabbix连接到每个交换机:我读取了它所连接的主机。我将结果重定向到另一个循环:



反过来,该循环读取标识符并找出与谁连接的人:我将



显示此脚本的结果(chmod + x):



在地图上,第二个开关通过相应的接口(Fas 0/5-第二个,Fas 0/6-第三个↑)连接到第三个开关(请记住,地图上的标识符)。我们必须在链接上绘制这些名称,然后创建。

如果直到现在我们只从Zabbix读取信息(读取主机,卡等),现在我们将不得不向Zabbix写入信息。

让我们保存结果:



在Zabbix中绘制通信线路


我决定写一个简单的脚本来更改Zabbix中的某些内容。坦白地说,我是通过这种方式研究API的-对我来说,简单的工作很重要:





第一个脚本不会与任务相关-它将更改地图的名称(以查看其完成方式)。如果要在Zabbix中进行更改,则还必须通过POST请求进行应用,并使用JSON描述它,但要使用map.update方法。在这些参数中,我们必须明确指出:MAPID,它将找到所需的地图;以及MAPNAME,它将更改地图的名称:



这是最小的参数集。这些参数本身:



通过脚本参数传递变量。我使脚本可执行(chmod + x):



按照培训手册中的说明运行它。如果一切正确,则该卡应称为Super MAP:



监视-地图-瞧:



易于更改-超级MAP2:



一切正常:



但是我们的任务很复杂-更改通讯线路!



必须生成JSON,以描述我们的地图和所有通信线路。为此,我创建了另一个脚本:





我有许多脚本这一事实并不意味着应在企业中完成此操作。在企业中,您需要采用一种已知的普通语言(“ Python”,“ Pearl”或其他),然后使用一种普通语言对此处的内容进行编程。这些积木很简单,可以理解什么,为什么以及如何做。

另一个脚本可以帮助您理解需要做什么,而不是复制(我不会在这里将制成品卖给您),





该脚本将读取以下文件:



哪个陈述了地图上的哪个元素与它通过哪个接口连接的地图上的哪个元素。更准确地说,我们将在地图上使用一个元素,在地图上使用一个元素,并使用一个标签。这是地图上的元素:



此签名应为:



我正在阅读此文件。我对地图上的所有元素进行了排序:我



编写链接-以JASON的形式描述链接。最终请求如下所示:更新地图(卡号↓):



将在此变量中描述链接:



在此循环中形成(枚举卡的所有元素和签名):



同样,我们有一项艰巨的任务,并在Shell上进行详细描述...当然,你们中许多人没有在Shell上编程。您只需要查看这些文本并根据自己喜欢的方式进行编程即可。

我期望现在一切都会发生。启动了一个脚本:



重新加载“地图”页面:



嗯,如何?至少有效!让我们添加另一个开关并再次运行脚本。

我们将开关命名为switch4:



我们 其称为开关:





Configure



根据需要进行连接(带有星号,您可以绘制香肠):我们配置了



开关。我启动:



我们之前所做的一切(只是更改为switch4,地址为104):



双击该开关(粘贴您复制的内容):



同样,重新启动第三个开关(switch3)会更快,保存配置:



同时,它会重新启动,请检查它是否可以通过SNMP在我们的新交换机上使用。当Zabbik找到它时,首先要询问的是主机名SNMP。因此,我们将此设计添加到新的交换机中:





现在,我们等待交换机可用。 101、102可用,103重启:



103



响应104响应。通过SNMP4检查SNMP是否可用:



可用!我们有机会在主机列表中看到它。让我们等待一分钟(每分钟都会扫描一次网络):



一旦出现,我们将返回第一个脚本。他从我们这里卸载了一些信息,这些信息通常是:



您的电缆工人跑了,他们插入了一个新的开关,您抬起了链接,它自动出现在Zabbix中。因此,在这里我们应该看到出现了第四个开关:



我们的数据库已自动填充。

我们修复材料(添加switch4),执行最终脚本


然后,不幸的是,您必须逃跑并在地图上显示我们的交换机:



不仅您的电缆接线员在运行,不仅您在配置链接-您还必须到这里说:“我们正在添加新的交换机。”



找到应有的位置并指示我们拥有主机switch4,并绘制此开关的内容:



并进行更新(尚未绘制通信线路!):



现在我们回想起我们的通信线路脚本是基于CDP协议构建的。为了从交换机获取CDP信息,您需要配置对它的RSH访问。还记得我决定使用这种方法吗?





如果一切正常,则可以尝试,然后可以尝试RSH-向第4交换机请求有关其连接的信息。他在这里说:“我连接到我的第三个接口-第十个接口,而第八个接口。”



他们将其添加到卡中,然后我们在Zabbix中的标识符和卡中的标识符之间建立了对应表(请参见地图上的第5个):他们





提出了RSH。现在我们可以建立连接:哪些开关通过哪些链接连接(我们获得了文本文件):





让我们尝试运行最终脚本,该脚本将读取该文本文件并生成JASON请求以更新地图,并在地图上重新绘制所有链接:







嗯,如何?印象深刻?我没有在计划的45分钟内进行管理,但仍然很快(大约75分钟)-可能不会更快。

所有!我是非常快乐的朋友-取得了成功。培训手册在这里:https : //wiki.val.bmstu.ru如果找不到,请写邮件至:val@bmstu.ru,val@specialist.ru-我会很乐意发送。一个在线研讨会将出现在expert.ru上-我将对此进行确认。

最重要的是,我的朋友们,所有这些都不是徒劳的,而是一个诱人的目的,是说服您或您的同事参加我们的为期2天的课程,该课程了解与Zabbix相关的许多任务:低级检测和调整...您现在可以做到的不是现在的顶部,而是实验室的细节,您会做的:在您这样做之前,我不会放过您。
我将很高兴见到您,您的同事!写信。

再见!


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰,我们有2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

Source: https://habr.com/ru/post/undefined/


All Articles