我用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。
变量
具体的来说,以下是参数的具体内容。
* 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
仪表板一侧
要么添加面板,要么将此先前介绍的仪表板导入并开始进行调整。
让我们给每个传说加上“进”和“出”的标志。
### 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接口”,则会显示如下图所示。
此外,如果使用General标签中的重复功能进行复制,以下可能会是结果。