我用Prometheus + Grafana将Cisco ASA的吞吐量进行可视化

这篇文章的目的是什么?

最近在 Cisco ASA 系列中,我尝试进行吞吐量测量时遇到了一些困难,虽然在 Cisco Catalyst 系列中可以经常看到使用 snmp_exporter 进行吞吐量测量的文章。为了备忘起见,我将其记录下来。

顺便提一句,我们在Grafana Labs提供的这个东西进行了相当大的改动。

结论

当用Grafana生成仪表盘时,如果在Variables中定义的变量中包含特殊字符(例如空格或单引号),则绘制图表将失败。
为了正确提取数据,我们需要努力使用正则表达式。

环境以及前提条件

    • Prometheus

 

    • Grafana

 

    snmp_exporter

在使用Grafana创建仪表板之前,请确保在Prometheus(snmp_expoter)中能够正确获取值的应用程序已经在运行。

此外,可能还有一些与我的环境相关的部分,请根据实际情况做出相应的调整,谢谢。

创建仪表板

Prometheus配置设置

为了方便理解,在Prometheus的设置文件(prometheus.yml)中定义了一个新的job_name,命名为snmp_asa。

变量

image.png

具体的来说,以下是参数的具体内容。

* General
 * Name: Host
 * Type: Query
* Query Options
 * Query: query_result(sysName{job="snmp_asa"})
 * Regex: .*sysName="(.*?)".*
* General
 * Name: Device
 * Type: Query
* Query Options
 * Query: query_result(sysName{job="snmp_asa",sysName="$Host"})
 * Regex: .*instance="(.*?)".*
* General
 * Name: Interface
 * Type: Query
* Query Options
 * Query: query_result(ifInOctets{job="snmp_asa",instance="$Device"})
 * Regex: .*ifDescr=.*'(.*?)'.*
* Selection Option
    * Multi-value
image.png

仪表板一侧

要么添加面板,要么将此先前介绍的仪表板导入并开始进行调整。

image.png

让我们给每个传说加上“进”和“出”的标志。

### Input側
irate(ifInOctets{job='snmp_asa',instance='$Device',ifDescr=~'.*$Interface.*'}[5m]) * 8 

### Output側
irate(ifOutOctets{job='snmp_asa',instance='$Device',ifDescr=~'.*$Interface.*'}[5m]) * 8 

而且,如果在“General”选项卡中将“Title”设置为“Adaptive Security Appliance $Interface接口”,则会显示如下图所示。

image.png

此外,如果使用General标签中的重复功能进行复制,以下可能会是结果。

image.png