资讯专栏INFORMATION COLUMN

用cAdvisor InfluxDB Grafana监控docker容器的TcpState

Yi_Zhi_Yu / 465人阅读

摘要:问题搭建完监控集群后发现没有相关的数据源码版本搭建参考定位过程是否没有记录容易搜索到因为的高占用需要实际上并非如此不带任何参数情况下本地启动在浏览器中打开可以看到中带有是否写入了打开

问题

搭建完cAdvisor InfluxDB Grafana监控集群后, 发现没有tcp相关的数据.

源码版本:

https://github.com/google/cad...
git commit hash:9db8c7dee20a0c41627b208977ab192a0411bf93

搭建cAdvisor InfluxDB Grafana参考

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.

是否写入了influxdb?

打开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 化,对 docker 容器的监控就很重要了。SA 的监控系统是物理机的监控,在一个物理...

    aboutU 评论0 收藏0
  • Docker 容器监控系统初探

    摘要:是一个时序数据库,专门用于存储时序相关数据,很适合存储的数据。容器监控数据存储配置和运行是一个开源的分布式时序数据库,使用语言开发。的特色功能作为时序数据库,相比传统数据库它有很多特色功能,比如独有的一些特色函数和连续查询功能。 本文已获得原作者__七把刀__授权。 随着线上服务的全面 docker 化,对 docker 容器的监控就很重要了。SA 的监控系统是物理机的监控,在一个物理...

    cyixlq 评论0 收藏0
  • 打造高逼格、可视化Docker容器监控系统平台

    摘要:本文已获得原作者霸都民工哥授权。对于容器的监控方案可谓多种多样,本身自带命令。今天民工哥要介绍的是一款开源方案。所以我们要使用将这些实时监控到的信息存放起来。 本文已获得原作者霸都民工哥授权。 showImg(https://segmentfault.com/img/bVbdbrr?w=709&h=300); 为什么需要监控?? 对于一个物理机上运行多个容器应用时,容器的运行情况如:C...

    Meathill 评论0 收藏0
  • 打造高逼格、可视化Docker容器监控系统平台

    摘要:本文已获得原作者霸都民工哥授权。对于容器的监控方案可谓多种多样,本身自带命令。今天民工哥要介绍的是一款开源方案。所以我们要使用将这些实时监控到的信息存放起来。 本文已获得原作者霸都民工哥授权。 showImg(https://segmentfault.com/img/bVbdbrr?w=709&h=300); 为什么需要监控?? 对于一个物理机上运行多个容器应用时,容器的运行情况如:C...

    xietao3 评论0 收藏0
  • Docker容器可视化监控中心搭建

    showImg(https://segmentfault.com/img/remote/1460000014421849); 概述 一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应...

    yunhao 评论0 收藏0

发表评论

0条评论

Yi_Zhi_Yu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<