尽管Tungsten Fabric具有不错的监视/警报功能,但可能需要将它们集成到完整的监视系统中。
让我举例说明如何将它们与Promethesus和EFK集成。
Prometheus
(编者按:Prometheus 是一个开源监控系统,几乎所有云原生系统都以 Prometheus的指标格式输出运行时的监控信息。)
为了监视和可视化Tungsten Fabric系统中发生的情况,prometheus将是一种可能的选择。
• 一些工具(例如zabbix)支持抓取prometheus格式,因此在监视工具中作为通用格式也很有用:
https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes/prometheus
要按prometheus进行抓取,需要以Prometheus的格式从Tungsten Fabric导出相关指标,有两种方法可以实现此目的:
1. 直接从内省HTTP Server导出指标(此功能目前不可用)
2. 从analytics或从analytics UVE导出值(此功能目前可用)
第一步,我尝试了一个短脚本(WIP)将值导出到prometheus。
• 当前,有限的vRouters指标可以被导出,例如报文,字节数,流数量,丢弃报文数量
• https://github.com/tnaganawa/tf-analytics-exporter
这些值还可以用于从prometheus发送警报,而不是从analytics-alarms发送警报。
EFK
(编者按:EFK由ElasticSearch、Fluentd和Kiabana三个开源工具组成,用于进行日志收集和管理。)
由于Tungsten Fabric具有多个系统日志(文件或docker标准输出),因此可以很容易地通过fluentd进行收集。
• https://www.fluentd.org/guides/recipes/docker-logging
如果节点数量相当大,对于管理来说会很有用。
另一个有趣的主题是vRouter也支持流导出,在某种意义上类似于ipfix或有状态防火墙的allow / deny日志。
• https://github.com/Juniper/contrail-controller/wiki/Flow-Sampling
• https://github.com/Juniper/contrail-specs/blob/master/security_logging_object.md
要启用此功能,你可以在Tungsten Fabric webui中的Configure > Global Config > edit > Flow Export Rate中设置flow-export-rate > 0(例如100)。
默认情况下,它将被发送到Tungsten Fabric webui或者像contrail-flow、contrail-sessions这样的命令来查询分析,但它也可以直接导出到本地文件,发送给其他日志采集器,如EFK,以备以后使用。
要启用本地流日志记录,可以使用这些参数。
如果设置了此参数,则vrouter-agent的日志文件(例如/var/log/contrail/contrail-vrouter-agent.log)将具有如下的日志输出:
通过fluentd将这些参数用json化,并通过ES查询kibana,可以更容易地看到vRouters之间或物理交换机之间的数据包依次经过的情况。
拓扑视图
以我的理解,统计信息(stats)、日志(logs)和拓扑(topologies)是用于软件监视的三个不同组件。
Prometheus和EFK部分已经包含了统计信息和日志管理,但据我所知,对于拓扑并没有通用的工具,我将在Tungsten Fabric webui中描述拓扑可视化功能。
IT系统之间存在很多拓扑,但是对于Tungsten Fabric而言,overlay拓扑和underlay拓扑这两个最重要。
1. overlay:
• 哪个VNF通过服务链连接到了哪个VN
• 哪个物理设备具有哪个VN扩展
2. underlay:
• 哪个虚拟机位于哪个vRouter上
• vRouter到leaf交换机的连接
• leaf交换机到spine交换机的连接
对于overlay可视化,Monitor > Networking > Networks提供了一些详细视图,说明哪些VNF通过服务链连接到VN。
• 据我所知,无法查看哪个物理设备已进行了VN扩展
对于underlay可视化,Tungsten Fabric具有通过SNMP收集lldp信息的功能,并描绘了leaf、spine及vRouters和VM之间的视图。
• http://www.opencontrail.org/wp-content/uploads/2014/11/overlay_to_physical_blogpost_image2.png
• http://www.opencontrail.org/wp-content/uploads/2014/11/overlay_to_physical_blogpost_image3.png
• vRouter到leaf交换机的连接似乎也是基于leaf交换机中的arp表来进行可视化的。
要在ansible-deployer安装中启用此功能,需要添加此角色。
roles:
analytics_snmp
添加后,将snmp-collector和拓扑两个容器添加到分析节点中,http://(analytics-ip):8081/analytics/uves/prouter/*将通过PRouterLinkEntry参数填充,描述ldp检测到的interface_name。
• http://www.opencontrail.org/wp-content/uploads/2014/11/overlay_to_physical_blogpost_image1.png
• 要启用此功能,需要勾选Configure > Physical Device > (edit) > 'SNMP Enabled'