SONiC(4)-Telemetry可视化

之前写这样的文章,总是分步骤贴log,这次想从类似方法论的角度来记录。毕竟我们要做的事情很多,难以穷尽,但是思路/方法/方向很多却是通用的。

获益开源

面对的第一个问题,就是如何将SONiC的Telemetry发出的gNMI信息转到数据库中。首先找到的是思科的pipeline。一番尝试之后,觉得这个工具还是主要为了配合思科自己的Telemetry使用。后来发现的了Telegraf,框架非常赞,靠不同的input和output起到数据格式读取/转化/写入的功能。尝试着用它的gnmi-plugin对接Arista EOS的Telemetry,数据是可以写入influxDB的,但是对接SONiC的Telemetry就不行了。

好在有人也有同样的需求。在GitHub上找到了有人专门为sonic写的telegraf的plugin。那种被“雪中送炭”的感觉真的很好。不过他给出的telegraf.conf有些问题,经过查看telemetry的实现代码,做了修正。看到一条条数据被写进DB,嗯,就是这个feeling。

问题是原来的库没有开issue选项,无法反馈。还有一个方法,就是自己fork一下这个库,然后在自己的库里把这个conf给修正。这样就可以帮助别的人少走弯路了。

使用docker

可视化过程中遇到了很多开源的工具。现在已经养成的习惯,一般不会去搜索如何安装这些软件,而是会去Docker Hub去翻有没有对应的docker镜像。其实这些组件不外乎通过监听端口接收数据,然后将处理的好的数据传给别处或者本地图形化。通过指定端口映射,最多再加一下文件夹挂载,几秒钟就可以开始直接用了。如果遇到问题,直接干掉docker然后重新启动就好,避免了很多的工作。

如果够细心,还能找到一些已经搭配好的docker镜像。例如有这样的一个docker镜像,InfluxDB/ChronoGraf/Grafana都已经放到一起了,使用起来非常方便。即便是多个docker,因为彼此都连在docker0这个bridge上,可以用docker0分配的172网段地址直接通信。

尝试与放弃

因为获取的数据是端口计数,本身这个数值是一直递增的,还是需要转换成端口速率才有监控的意义。

开始数据是通过telegraf写入influxDB,在网上搜索到可以通过Continuous Query来向一个新建的measurement写入数据,而且计算rate要用到influxDB的derivative函数。经过很多的尝试,要么没有数据,要么得到的结果总是不准确。

后来telegraf的output改为Prometheus,找到了它的rate/irate函数。开始的时候还是没有什么数据,后来发现因为计算周期是5分钟,要耐心地等待一些时间,积累了足够多的数据,线条就绘出了。

定位问题

调试总归不会是一帆风顺的。有两个方法还是挺管用的。

  • docker启动失败,可以通过id搜索docker的log路径,然后查看有什么报错
docker inspect --format '{{.LogPath}}' xxxxxxxxxxxxx
  • telegraf的conf里可以将debug设置为true,至少可以看到每过多长时间,向output的client写入了多少metrics
[agent]
  debug = true
  • Prometheus自己的WebUI就支持数据图形化呈现,可以确认有了,再定位对接Grafana。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值