摘要:问题搭建完监控集群后发现没有相关的数据源码版本搭建参考定位过程是否没有记录容易搜索到因为的高占用需要实际上并非如此不带任何参数情况下本地启动在浏览器中打开可以看到中带有是否写入了打开
问题
搭建完cAdvisor InfluxDB Grafana监控集群后, 发现没有tcp相关的数据.
https://github.com/google/cad...
git commit hash:9db8c7dee20a0c41627b208977ab192a0411bf93
https://botleg.com/stories/mo...
定位过程 是否cadvisor没有记录tcp state?容易搜索到, 因为cadvisor的高cpu占用, 需要--disable_metrics=""
https://github.com/google/cad...
实际上并非如此.
不带任何参数情况下, 本地启动cadvisor.
~/gopath/src/github.com/google/cadvisor(master*) » sudo ./cadvisor -logtostderr
在浏览器中打开 http://127.0.0.1:8080/containers/ 可以看到response中, 带有TcpState.
打开influx db shell
InfluxDB shell 0.9.6.1 > show databases name: databases --------------- name _internal mydb cadvisor > use cadvisor Using database cadvisor > show tag keys name: cpu_usage_system ---------------------- tagKey container_name machine
可以看到, 这些tagKey对应grafana中的select column.
那么, 是否cadvisor没有写入influxdb呢?
cadvisor/storage/influxdb/influxdb.go:174
func (self *influxdbStorage) containerStatsToPoints( cInfo *info.ContainerInfo, stats *info.ContainerStats, ) (points []*influxdb.Point) { // CPU usage: Total usage in nanoseconds points = append(points, makePoint(serCpuUsageTotal, stats.Cpu.Usage.Total)) // CPU usage: Time spend in system space (in nanoseconds) points = append(points, makePoint(serCpuUsageSystem, stats.Cpu.Usage.System)) // CPU usage: Time spent in user space (in nanoseconds) points = append(points, makePoint(serCpuUsageUser, stats.Cpu.Usage.User)) // CPU usage per CPU for i := 0; i < len(stats.Cpu.Usage.PerCpu); i++ { point := makePoint(serCpuUsagePerCpu, stats.Cpu.Usage.PerCpu[i]) tags := map[string]string{"instance": fmt.Sprintf("%v", i)} addTagsToPoint(point, tags) points = append(points, point) } // Load Average points = append(points, makePoint(serLoadAverage, stats.Cpu.LoadAverage)) // Memory Usage points = append(points, makePoint(serMemoryUsage, stats.Memory.Usage)) // Working Set Size points = append(points, makePoint(serMemoryWorkingSet, stats.Memory.WorkingSet)) // Network Stats points = append(points, makePoint(serRxBytes, stats.Network.RxBytes)) points = append(points, makePoint(serRxErrors, stats.Network.RxErrors)) points = append(points, makePoint(serTxBytes, stats.Network.TxBytes)) points = append(points, makePoint(serTxErrors, stats.Network.TxErrors)) self.tagPoints(cInfo, stats, points) return points }结论
需要修改cadvisor代码, 将自己需要的metrics加上.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27795.html
摘要:是一个时序数据库,专门用于存储时序相关数据,很适合存储的数据。容器监控数据存储配置和运行是一个开源的分布式时序数据库,使用语言开发。的特色功能作为时序数据库,相比传统数据库它有很多特色功能,比如独有的一些特色函数和连续查询功能。 本文已获得原作者__七把刀__授权。 随着线上服务的全面 docker 化,对 docker 容器的监控就很重要了。SA 的监控系统是物理机的监控,在一个物理...
摘要:是一个时序数据库,专门用于存储时序相关数据,很适合存储的数据。容器监控数据存储配置和运行是一个开源的分布式时序数据库,使用语言开发。的特色功能作为时序数据库,相比传统数据库它有很多特色功能,比如独有的一些特色函数和连续查询功能。 本文已获得原作者__七把刀__授权。 随着线上服务的全面 docker 化,对 docker 容器的监控就很重要了。SA 的监控系统是物理机的监控,在一个物理...
摘要:本文已获得原作者霸都民工哥授权。对于容器的监控方案可谓多种多样,本身自带命令。今天民工哥要介绍的是一款开源方案。所以我们要使用将这些实时监控到的信息存放起来。 本文已获得原作者霸都民工哥授权。 showImg(https://segmentfault.com/img/bVbdbrr?w=709&h=300); 为什么需要监控?? 对于一个物理机上运行多个容器应用时,容器的运行情况如:C...
摘要:本文已获得原作者霸都民工哥授权。对于容器的监控方案可谓多种多样,本身自带命令。今天民工哥要介绍的是一款开源方案。所以我们要使用将这些实时监控到的信息存放起来。 本文已获得原作者霸都民工哥授权。 showImg(https://segmentfault.com/img/bVbdbrr?w=709&h=300); 为什么需要监控?? 对于一个物理机上运行多个容器应用时,容器的运行情况如:C...
showImg(https://segmentfault.com/img/remote/1460000014421849); 概述 一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应...
阅读 3241·2021-11-22 12:07
阅读 1882·2021-10-12 10:11
阅读 1046·2019-08-30 15:44
阅读 2945·2019-08-30 12:45
阅读 2198·2019-08-29 16:41
阅读 1641·2019-08-29 16:35
阅读 2629·2019-08-29 12:57
阅读 1154·2019-08-26 13:51