Telegraf-Influxdb-Grafana容器化部署拓展(Https、AD域、告警集成)并监控Cisco设备指标

news2025/1/12 0:49:42

前言:

还记得在去年的笔记中提到过使用python的pysnmp模块,配合Influxdb,Grafana收集Cisco设备指标。链接如下:https://blog.csdn.net/tushanpeipei/article/details/117329794 。在该实例中,我们通过python编写脚本收集设备信息,并将收集的信息格式化后发送到Influxdb进行存储,最后Grfana从Influxdb中读取数据做可视化呈现。总的来说,这种方式需要自己编写python的脚本,虽然灵活性很高,但是相对来说比较麻烦,并且需要一定的代码能力。

前段时间为了进一步提升监控套件的安全性和好用性,对之前的部署方案进行调整。使用Telegraf代替python实现了对设备信息的收集,并且进一步实现了Https加密,AD域用户和告警功能的集成。通过Telegraf-Influxdb-Grafana完成指标监控的这套解决方案也被称为TIG。借着这次机会,我也重新梳理了一下其中各个套件的用处以及与其他特性的集成的方式。

一、认识TIG套件

TIG套件是当下流行的一套设备指标监控解决方案,它由Telegraf-Influxdb-Grafana三个组件组合而成,它们的关系如图1所示:
在这里插入图片描述

图1:TIG组件

首先,Telegraf 是一个基于服务器的代理,用于从数据库、系统和物联网传感器收集和发送所有指标和事件。此外,Telegraf 是用 Go 编写的,可以编译成一个没有外部依赖项的二进制文件,并且需要非常小的内存占用。进一步说,Telegraf的组件如图2所示:
在这里插入图片描述

图2:Telegraf 组成

上图显示,Telegraf从有四种基本插件类型:Input、processor、aggregator 和 Output 。其中功能如下:

  1. Input:Telegraf 输入插件从系统、服务和第三方 API 收集指标。
  2. Processor:处理器插件在发送指标之前转换、修饰和过滤指标,允许收集的数据在数据到达时进行清理。
  3. Aggregator:聚合器插件创建聚合指标,例如收集和处理的指标的平均值、最小值和最大值。
  4. Output:输出插件写入各种数据存储、服务和消息队列,如 InfluxDB、Graphite、OpenTSDB、Datadog、Kafka、MQTT、NSQ 等。

首先是Input插件(详情请参考:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/snmp),Telegraf支持多多种Input插件,例如inputs.snmp。此外,Telegraf可以通过2种方式获取目标设备的指标信息,一种是Pull,另外一种则是Push (Traps)。以SNMP插件为例子,在Pull模型中,监控代理会定期向目标设备上运行的 SNMP 代理发送 SNMP 请求。设备上的 SNMP 代理使用特定请求的指标进行响应。在Push模式下,通信从另一端开始。受监控设备(通过 SNMP 代理)将状态消息(Traps)发送到监控系统的Traps接收器。这种模式下没有周期性调度,Traps消息在生成时发送,提供系统和网络性能问题的实时视图。当Telegraf收集到信息后,通过Processor和Aggregator对输入信息进行处理和聚会,并将最终的数据通过Output插件(详情请参考:https://github.com/influxdata/telegraf/tree/master/plugins/outputs)输出到存储端,例如常见与之配套使用的Influxdb数据库。

第二个组件是Influxdb。Influxdb 类似于 SQL 数据库,但在许多方面有所不同。进一步说,Influxdb 专为时间序列数据而构建的高性能数据库。关系数据库可以处理时间序列数据,但并未针对常见的时间序列工作负载进行优化。Influxdb 旨在存储大量时间序列数据并快速对该数据进行实时分析。具体来说,Influxdb会为在每次收集数据时记录对应的时间戳,其记录的数据通常如图3:
在这里插入图片描述

图3:Influxdb数据

参数解释如下:

  1. InfluxDB 测量 ( foodships) 类似于 SQL 数据库表。
  2. InfluxDB 标签(park_id和planet)就像 SQL 数据库中的索引列。
  3. InfluxDB 字段 ( #_foodships) 就像 SQL 数据库中的未索引列。
  4. InfluxDB 点(例如,2015-04-16T12:00:00Z 5)类似于 SQL 行。

补充:与Influxdb相似的时序性监控系统叫做Prometheus(普罗米修斯)。它们有一些不同之处。简而言之,这两个产品都是优秀的时间序列数据库。它们的默认模式不同(InfluxDB 为推送,Prometheus 为拉取)。有些人认为 PromQL,Prometheus 的语言,比 InfluxDB 使用的语言更简单,但总而言之,使用一种工具或另一种工具的决定可能取决于具体的用例。如果监控是我们最感兴趣的,那么 Prometheus 是最安全的选择,因为它具有许多集成和可扩展模型。如果我们更有可能将时间序列数据库用于 IoT、传感器或分析,那么我们可能希望选择 InfluxDB。具体请参考:https://logz.io/blog/prometheus-influxdb/#:~:text=InfluxDB is a push-based,and Prometheus fetches them periodically.

最后一个插件是Grafana,Grafana可谓时当下最受欢迎的开源交互式数据可视化平台,由Grafana Labs 开发,它允许用户通过统一到一个仪表板(或多个仪表板)中的图表和图形来查看他们的数据,以便于解释和理解。仪表盘示例如图4所示:
在这里插入图片描述

图4:Grafana Dashboard

此外,Grafana还可以设置告警,一旦设置的告警规则被触发,Grafana则可以发送报警给运维人员。需要注意的是,Grafana仅仅作为数据呈现端,它需要连接数据库并从中提取数据。例如,Influxdb,Prometheus都可以作为Grafana的数据存储端。

二、TIG容器化部署

实验目的:
通过TIG收集Cisco设备的指标信息,并存放在Influxdb数据库中,最后通过Grafana的Dashboard做呈现。此外,考虑到安全性和好用性,本次实验中集成了Https、AD域以及告警功能。

提前准备:

  1. 搭建AD服务器。
  2. 搭建CA服务器。
  3. 搭建SMTP服务器。
  4. 在Cisco ASA设备上开启SNMP v2c。

TIG套件代码分析:
在这里插入图片描述

图5:TIG套件代码

图5展示了TIG容器化部署所需要的代码和文件。首先是三个json的模板,这三个模板其实是通过json文件编写的针对于Cisco设备指标呈现的Dashboard。Dashboard可以自己编写,或者在网上搜索别人共享的文件。接下来Docker-compose.yml,该文件是TIG套件容器化的配置文件。然后是grafana.ini和ldap.toml文件,它们分别是Grafana的配置和AD域集成文件。下一个重要的文件是telegraf.conf文件,我们可以通过配置该文件,从目标设备中获取各种指标信息。最后的2文件个则与Https的证书相关,分别是Grafana Web页面的证书和私钥。接下来是对一些重要文件的解读:

telegraf.conf:
该文件记录了对Telegraf组件的配置信息,其中值得注意的配置有input和output插件。在本次实验中,通过inputs.snmp插件,主动拉取目标设备的指标,如图6所示:
在这里插入图片描述

图6:Telegraf inputs.snmp 插件代码

图6中的配置显示了Telegraf通过snmpv2,对IP地址为10.1.102.254的ASA设备的内存,CPU,接口速率等信息进行采集。具体的参数和采集指标可以自行调整。第二个需要配置的是Output插件,由于最终输出的目标是influxdb,所以最终使用的是outputs.influxdb。代码如图7所示:
在这里插入图片描述

图7:Telegraf outputs.infuxdb 插件代码

我们需要在此处定义连接的influxdb数据库地址以及登录该数据库的账号密码。

接下来,我们需要对Grafana进行三个配置,分别是配置Https,AD域以及告警。首先是Grafana Web界面的Https的配置。配置Https需要两个关键文件,分别是Grafana Web的证书和私钥。具体来说,私钥和证书都可以通过openssl工具生成,或者通过openssl生成私钥和证书请求文件,再由现有的CA机构签发证书。获得2个文件后,就可以在grafana.ini中开启https并加载上述两个文件,如图8所示:
在这里插入图片描述

图8:Grafana https 代码

第二步则是配置集成AD域,首先创建文件ldap.toml定义连接AD域的各种参数,如图9所示:
在这里插入图片描述

图9:Grafana AD域参数

由上图可只,集成AD域的参数包含AD服务器地址,端口号,绑定的DN等配置。具体的配置可以根据自己的AD域配置进行修改。紧接着,我们需要将grafana.ini文件中加载AD域配置,如图10所示:
在这里插入图片描述

图10:Grafana AD域加载

最后,我们还需要在Grafana中集成告警信息的发送者。该操作同样在grafana.ini文件中进行配置即可,如图11所示。这个SMTP服务器可以是知名的邮件服务商,也可以是自己环境中所搭建的。
在这里插入图片描述

图11:Grafana smtp 配置

到此位置,我们将TIG套件的配置已经完成。接下来,需要将其容器化,相关配置在docker-compose.yml文件中进行完成。该文件配置如图12所示:
在这里插入图片描述

图12:TIG docker-compose文件

具体来说,在该文件中定义了三个套件所用的容器image,influxdb的数据库名称,数据库管理员账户,端口映射,以及将三个套件的配置文件等信息通过卷挂载的形式映射到了容器中。此外,TIG三个套件还需要通过定义的TIG_net桥接网络进行通信。

完成上述配置后,仅需要在进入docker-compose.yml文件所在目录,输入命令:docker-compose up -d 即可容器化部署TIG。

代码下载地址: https://github.com/Prin-Meng/telegraf_influxdb_grafana

三、TIG套件应用示例

首先,我们可以使用https://IP地址:3000登录Grafana的Web界面,如图13所示:
在这里插入图片描述

图13:Grafana登录界面

接下来,在Grafana的Data Source界面添加influxdb,如图14所示。其中需要配置的是influxdb的url,以及连接该数据库管理员的账号密码。
在这里插入图片描述

图14:Grafana连接Influxdb数据库

添加成功后,我们导入监控设备的Dashboard文件。本次实验的目的是收集Cisco ASA的指标,则只需要在图15的界面导入准备好的ASA SNMP monitor.json文件即可即可:
在这里插入图片描述

图15:Grafana导入Dashboard

完成上述步骤后,即可等待Telegraf收集数据并通过Grafana做呈现了,如图16所示,可以看到目前收集到的Cisco ASA的内存利用率,CPU利用率,接口速率等信息。
在这里插入图片描述

图16:TIG 监控 Cisco ASA

最后,我们需要在Grafana的alert界面配置Grafana 的告警信息,配置页面如图17所示。
在这里插入图片描述

图17:Grafana告警配置

需要注意的是,Grafana 8以后的告警界面和之前的Grafana有较大的区别,功能更新强大但相对复杂。我们需要设置的内容包括:告警的规则,告警信息的内容,告警的联系方式,管理员联系地址,通知策略等。进一步说,告警示意图架构如图18所示:
在这里插入图片描述

图18:Grafana告警架构

具体的告警配置步骤可以参考:
https://www.youtube.com/watch?v=UtmmhLraSnE,https://grafana.com/docs/grafana/latest/alerting/

参考资料

SNMP 代理协议监控: https://www.influxdata.com/integration/snmp/
比较 InfluxDB 和 SQL 数据库: https://docs.influxdata.com/influxdb/v1.8/concepts/crosswalk/
Prometheus 与 InfluxDB:监控比较:https://logz.io/blog/prometheus-influxdb/#:~:text=InfluxDB is a push-based,and Prometheus fetches them periodically.
乾颐堂现任明教教主教主技术进化论 2020第21期.InfluxDB Python实战: https://www.bilibili.com/video/BV1SV41127HU?from=search&seid=13988085653859648559

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一节 Maven核心程序解压与配置

1、Maven 官网地址 首页: Maven – Maven Repositories (apache.org)https://maven.apache.org/repositories/index.html下载页面: Maven – Download Apache Mavenhttps://maven.apache.org/download.cgi下载链接: 具体下载地址&#xff…

【微信小程序】列表渲染wx:for

&#x1f3c6;今日学习目标&#xff1a;第十二期——列表渲染wx:for &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰预计时间&#xff1a;20分钟 &#x1f389;专栏系列&#xff1a;我的第一个微信小程序 文章目录前言效果图< block…

同花顺_代码解析_交易系统_J01_08

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 J_01 MACD系统 J_02 布林带系统 J_03 趋向指标 J_04 乖离系统 J_05 KDJ系统 J_07 容量比率系统 J_08 威廉系统 J_01 MACD系统 分析MACD柱状线&#xff0c;由绿变红(负变正)&…

Bootstrap实例(四)

目录&#xff1a; &#xff08;1&#xff09;bootstrtap实例&#xff08;轮廓&#xff09; &#xff08;2&#xff09;bootstrap三列布局 &#xff08;3&#xff09;bootstrap&#xff08;标签页&#xff09; &#xff08;4&#xff09;bootstrap&#xff08;end&#xff0…

56.Django的admin后台管理使用方法

准备 Django框架提供了一个自动化后台管理功能&#xff0c;对网站数据的后台维护&#xff0c;仅仅需要进行非常简单的配置和编写极少的代码即可实现。 首先创建一个Django项目admin_study&#xff0c;然后创建连接数据库&#xff0c;在数据库中创建好表数据库后&#xff0c;进…

[附源码]java毕业设计小区物业管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础

头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础一、用Python实现自己的区块链1、任务描述2、评测步骤(1)打开终端&#xff0c;输入两行代码即可评测通过二、支持以太坊的…

MySQL的高阶学习:索引、B+树

1.索引 索引是一种数据结构&#xff0c;如果没有索引&#xff0c;查找一个数据就需要从第一页开始全局检索直至找到需要的数据&#xff0c;有了索引可以先在目录中根据拼音查找到该数据所在的页数&#xff0c;因此通过索引可以大大减少了查询时间。 索引有两种存储类型&#xf…

金融科技赋能 互融云手机回租系统 实现资产全流程在线运营管理

在共享单车、充电宝等共享商业的兴起与成熟之后&#xff0c;“信用租赁”的模式悄然诞生&#xff0c;租房、租衣、租数码等已成常态。信用租赁系统的出现&#xff0c;带活了一大批租赁经济&#xff0c;尤其是手机行业。 伴随手机零售业的增长以及新品发布速度的提高&#xff0…

CY8C5888AXQ-LP096 CY8C5888AXI-LP096,IC MCU 32BIT

PSoC 5LP是一种真正的可编程嵌入式片上系统&#xff0c;集成了可配置的模拟和数字外设&#xff0c;内存和单芯片上的微控制器。PSoC 5LP架构通过以下方式提高性能&#xff1a; 32位Arm Cortex-M3核心加上DMA控制器和数字滤波处理器&#xff0c;最高可达80mhz 超低功率&#xff…

China SAFe Day 2022中国规模化敏捷大会圆满落幕!

China SAFe Day 202211月5日&#xff0c;2022 China SAFe Day暨第三届中国规模化敏捷大会在上海圆满落幕。 本届大会由Scrum中文网和SAI&#xff08;Scaled Agile Inc.&#xff09;联合主办&#xff0c;围绕 “敏捷企业与数字化变革” 这一主题展开&#xff0c;内容涵盖工业敏…

RSA加密原理与RSA公钥加密系统、数字签名

通过公钥加密系统&#xff0c;可以对传输于两个通信单位之间的消息进行加密&#xff0c;即使窃听者窃听到加密之后的消息&#xff0c;也不能对其破译。 1、RSA公钥加密原理 1.1 几个核心概念 公钥P与公钥函数P()密钥S与密钥函数S() 可以简单理解&#xff0c;一个公钥对应一个…

【数据结构】—— 单链表的增删改查

❤️一名热爱Java的大一学生&#xff0c;希望与各位大佬共同学习进步❤️ &#x1f9d1;个人主页&#xff1a;周小末天天开心 各位大佬的点赞&#x1f44d; 收藏⭐ 关注✅&#xff0c;是本人学习的最大动力 感谢&#xff01; &#x1f4d5;该篇文章收录专栏—数据结构 目录 方…

BUUCTF web之随便注

启动靶场访问如下&#xff0c;输入1&#xff0c;报错&#xff0c;可知是字符型注入&#xff0c;变量由单引号包裹 输入1 and 11 --&#xff0c;显示正常 先直接用sqlmap注入一下&#xff0c;显示存在注入&#xff0c;但是始终注入不出来数据库&#xff0c;“[ERROR] unable to …

Arnold渲染器适合什么样的电脑配置

Arnold 是 Solid Angle 和 Sony Pictures Imageworks 联合打造的顶级光线追踪 3D 渲染器。该程序是 Sony Imageworks 的主要渲染器&#xff0c;被全球 300 多家工作室使用。Arnold 6.0 及更高版本支持 GPU 渲染。Arnold GPU 的硬件建议是什么&#xff1f; 1. Arnold GPU 硬件推…

OpenKylin适配和虚拟打印机

最近在测国产OS客户端部分。首先客户端程序在CentOS全部使用没毛病&#xff0c;但是CentOS桌面体验比较差。然后就试了UOS&#xff0c;在UOS上测试到打印这块花了很多时间&#xff0c;碰到问题是CUPS有反应&#xff0c;但是没生成PDF文件&#xff0c;各种试了好久没解决。就寻思…

Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据

单Activity多Fragment&#xff0c;Navigation实现Fragment跳转&#xff0c;Fragment之间通过ViewModel共享数据1、MainActivity2、HomeFragment, DetailFragment2.1、HomeFragment2.2、DetailFragment3、MyViewModel参考1、MainActivity 1、activity_main.xml <?xml vers…

ovs-vswitchd的启动分析

ovs-vswitchd的启动分析&#xff08;无修改源码&#xff09; &#xff08;一&#xff09;主要数据结构和概念了解 1.概念 在 OVS 中, 有几个非常重要的概念&#xff1a; Bridge: Bridge 代表一个以太网交换机&#xff08;Switch&#xff09;&#xff0c;一个主机中可以创建一…

Metabase学习教程:提问-4

Metabase中的表连接 如何在简单和自定义问题中使用查询编辑器连接Metabase中的表。 当涉及到分析数据时&#xff0c;必须要使用连接是一个事实&#xff0c;在Metabase&#xff0c;我们试图使您的问题的答案尽可能简单&#xff0c;即使这需要一些更复杂的策略。在本文中&#…

Spring中拦截器重复注册的问题排查

注册器JpushInterceptor 功能&#xff1a;新版的Java推送服务&#xff0c;将部分请求转发到老版node 查看日志发现拦截器日志重复 同一个链路&#xff0c;发现&#xff0c;经过同一个拦截器两次 debug发现注册器重复注册 第一个通过registry.addInterceptor注册 是通过We…