`
m635674608
  • 浏览: 5062630 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

kubernetes+docker监控之简介

 
阅读更多
https://my.oschina.net/fufangchun/blog/714530
摘要: Docker的监控原则:根据docker官方声明,一个容器不建议跑多个进程,所以不建议在容器中使用agent进行监控(zabbix等),agent应该运行在宿主机,通过cgroup或是docker api获取监控数据。

kubernetes+docker监控

   Docker的监控原则:根据docker官方声明,一个容器不建议跑多个进程,所以不建议在容器中使用agent进行监控(zabbix等),agent应该运行在宿主机,通过cgroup或是docker api获取监控数据。

 

1、监控分类介绍:

 

①、自行开发:

  通过调用docker的api接口,获取数据、处理、展示,这里不做介绍。

  例如:

   1)、爱奇艺参照cadvisor开发的dadvisor,数据写入graphite等同于cadvisor+influxdb爱奇艺的dadvisor并没有开源

②、Docker——cadvisor:

    Google的 cAdvisor 是另一个知名的开源容器监控工具。

    只需在宿主机上部署cAdvisor容器,用户就可通过Web界面或REST服务访问当前节点和容器的性能数据(CPU、内存、网络、磁盘、文件系统等等),非常详细。

    默认cAdvisor是将数据缓存在内存中,数据展示能力有限;它也提供不同的持久化存储后端支持,可以将监控数据保存、汇总到Google BigQuery、InfluxDB或者Redis之上。

    新的Kubernetes版本里,cadvior功能已经被集成到了kubelet组件中

    需要注意的是,cadvisor的web界面,只能看到单前物理机上容器的信息,其他机器是需要访问对应ip的url,数量少时,很有效果,当数量多时,比较麻烦,所以需要把cadvisor的数据进行汇总、展示,就看【cadvisor+influxdb+grafana

 

③、Docker——Cadvisor+InfluxDB+Grafana:

    Cadvisor   :将数据,写入InfluxDB

    InfluxDB   :时序数据库,提供数据的存储,存储在指定的目录下

    Grafana   :提供了WEB控制台,自定义查询指标,从InfluxDB查询数据,并展示

此组合仅是监控Docker,不含kubernetes

 

④、Kubernetes——Heapster+InfluxDB+Grafana:

    Heapster:在k8s集群中获取metrics和事件数据写入InfluxDB,heapster收集的数据比cadvisor多,却全,而且存储在influxdb的也少。

    InfluxDB:时序数据库,提供数据的存储,存储在指定的目录下。

    Grafana:提供了WEB控制台,自定义查询指标,从InfluxDB查询数据,并展示

 

2、Cadvisor+Heapster+InfluxDB+Grafana的注意事项:

①、Cadvisor注意事项:

    Cadvisor,只需要在kubelet命令中,启用Cadvisor,和配置相关信息,即可。

    不需要作为pod或是命令启动

--cadvisor-port=4194 --storage-driver-db="cadvisor" --storage-driver-host="localhost:8086"

 

②、InfluxDB注意事项:

1)、Influxdb必须是0.8.8版本的,否则,Cadvisor的日志会出现:

E0704 14:29:14.163238 05655 memory.go:94] failed to write stats to influxDb - Server returned (404): 404 page not found

http://blog.csdn.net/llqkk/article/details/50555442

    说是Cadvisor不支持Influxdb的0.9版本,所以这里使用0.8.8的,【ok了】

 

不同版本的Cadvisor和Influxdb对照表(测试ok):

Cadvisor版本

Influxdb版本

0.7.1

0.8.8

0.23.2

0.9.6(以上)

Cadvisor和Influxdb的版本不对应,就可以在Cadvisor看到404的报错

2)、influxdb的数据,需要定期清理,单台Cadvisor,半天的数据就有600M

#单位:【小时:h】【天:d】

#删除一小时

delete from /^stats.*/ where time > now() - 1h 

#删除一小时

delete from /^stats.*/ where time < now() - 1h

3)、关于influxdb可用性的问题,可以写脚本,定期检查是否有相关的数据库和表,没有就出现创建

#检查是否有某个库

curl -G 'http://192.168.16.100:8086/db?u=root&p=root&q=list+databases&pretty=true'

curl -G 'http://192.168.16.100:8086/db?u=root&p=root&q=show+databases&pretty=true'

#检查某库中的表【points部分】

curl -G 'http://192.168.16.100:8086/db/cadvisor/series?u=root&p=root&q=list+series&pretty=true'

#创建库

库名:cadvisor

curl "http://www.perofu.com:8086/db?u=root&p=root" -d "{\"name\": \"cadvisor\"}"

③、Grafana注意事项:

    Grafana的数据检索,很需要花功夫,可以查看官网相关的语句,也可以直接借用其他人的模板

    Influxdb查询语句:

https://docs.influxdata.com/influxdb/v0.8/api/query_language/

 

④、Heapster注意事项:

    对于较大规模的k8s集群,heapster目前的cache方式会吃掉大量内存

    因为要定时获取整个集群的容器信息,信息存储在内存会成为问题,再加上heaspter要支持api获取临时metrics。

    如果将heapster以pod方式运行,很容易出现OOM。所以目前建议关掉cache,并以standalone的方式独立出k8s平台,建议每个node都单独运行容器

    heapster最大的好处是其抓取的监控数据可以按pod,container,namespace等方式分组

这样就能进行监控信息的隐私化,即每个k8s的用户只能看到自己的应用的资源使用情况。

    heapster收集的数据比cadvisor多,却全,而且存储在influxdb的也少,虽是Google的,但是作用却不尽相同

    Heapster容器单独启动时,会连接influxdb,并创建k8s数据库

heapster收集的数据metric的分类有两种,【grafana搜索时,要注意】

    1)、cumulative :聚合的是【累计值】,包括cpu使用时间、网络流入流出量,

    2)、gauge :聚合的是【瞬时值】,包括内存使用量

参考:https://github.com/kubernetes/heapster/blob/master/docs/storage-schema.md

 

描述

分类

cpu/limit

cpu预设值,yaml文件可设置

瞬时值

cpu/node_reservation

kube节点的cpu预设值,类似cpu/limit

瞬时值

cpu/node_utilization

cpu利用率

瞬时值

cpu/request

cpu请求资源,yaml文件可设置

瞬时值

cpu/usage

cpu使用

累计值

cpu/usage_rate

cpu使用速率

瞬时值

filesystem/limit

文件系统限制

瞬时值

filesystem/usage

文件系统使用

瞬时值

memory/limit

内存限制,yaml文件可设置

瞬时值

memory/major_page_faults

内存主分页错误

累计值

memory/major_page_faults_rate

内存主分页错误速率

瞬时值

memory/node_reservation

节点内存预设值

瞬时值

memory/node_utilization

节点内存使用率

瞬时值

memory/page_faults

内存分页错误

瞬时值

memory/page_faults_rate

内存分页错误速率

瞬时值

memory/request

内存申请,yaml文件可设置

瞬时值

memory/usage

内存使用

瞬时值

memory/working_set

内存工作使用

瞬时值

network/rx

网络接收总流量

累计值

network/rx_errors

网络接收错误数

不确定

network/rx_errors_rate

网络接收错误数速率

瞬时值

network/rx_rate

网络接收速率

瞬时值

network/tx

网络发送总流量

累计值

network/tx_errors

网络发送错误数

不确定

network/tx_errors_rate

网络发送错误数速率

瞬时值

network/tx_rate

网络发送速率

瞬时值

uptime

容器启动时间,毫秒

 

瞬时值

分享到:
评论

相关推荐

    基于SpringCloud+Oauth2+MyBatis+ES+Docker+Kubernetes的商城系统项目源码数据.rar

    基于SpringCloud+Oauth2+MyBatis+Elasticsearch+Docker+Kubernetes的商城系统项目源码+数据 核心功能: 平台管理端:商品管理、订单管理、会员管理、促销管理、店铺管理、运营管理、统计分析、系统设置、日志系统。 ...

    Kubernetes+in+Action.rar

    Docker作为轻量级虚拟化技术,为Kubernetes提供了容器化的基础,使得应用程序可以在不同环境中一致地运行。 在书中,作者详细介绍了Kubernetes的核心概念和工作原理,涵盖了从安装和配置Kubernetes集群,到部署和...

    二进制部署 + kubernetes + 1.25.5

    1. Kubernetes简介:Kubernetes是一个开源的容器编排平台,由Google设计并贡献给CNCF(Cloud Native Computing Foundation)。它提供了一种标准化的方式来部署、扩展和管理分布式应用程序,支持多种容器引擎,如...

    利用Keepalived实现Nginx高可用

    - **监控Nginx**:创建一个监控Nginx状态的脚本(如`/root/monitor_nginx.sh`),确保Nginx服务正常运行,Keepalived会定期执行这个脚本来检测服务状态。 - **启动和测试**:启动Keepalived服务,可以通过`...

    Kubernetes+in+Action中文版.pdf

    Docker 和 Kubernetes 的关系 Docker 的出现降低了容器技术的使用门槛,引爆了容器技术,一场轰轰烈烈的由容器带来的新计算革命开始了。Kubernetes 项目刚刚开始,还是在规格设计阶段,但七牛云团队已经开始了 QCOS...

    基于Kubernetes和Docker技术的企业级容器云平台解决方案.docx

    【基于Kubernetes和Docker技术的企业级容器云平台解决方案】 企业级容器云平台是现代互联网CS领域中的一个重要组成部分,它利用先进的技术如Kubernetes(K8s)和Docker,解决传统IT基础设施面临的资源浪费、灵活性...

    Jenkins docker Kubernetes持续集成(CI)持续部署(CD) (1).png

    本次分享主要从 Jenkins+Docker+Kubernetes流程入手,通过实例演示为大家介绍我们的实践之路。 内容概览 使用 Jenkins和容器解决之前测试环境需要测试人员按照文档全手工命令行部署,流程复杂易出错,上线部署...

    Docker+Kubernetes(k8s)微服务容器化实践1

    【Docker+Kubernetes(k8s)微服务容器化实践】是关于现代软件开发和部署方式的探讨,其中重点介绍了Docker和Kubernetes在构建微服务架构中的作用。本实践分为多个章节,从基础概念到具体实践,全面解析了微服务架构的...

    大数据集群在+Kubernetes+上服务化实践-SACC2021年中国系统架构师大会.pdf

    标题《大数据集群在Kubernetes上服务化实践-SACC2021年中国系统架构师大会》中所蕴含的知识点主要围绕着在Kubernetes环境下实现大数据集群的服务化,以及这个过程中遇到的挑战和解决方案。下面将详细阐述这些知识点...

    实战Docker到Kubernetes技术系列PPT教程(共14个PPT,Docker介绍的非常详细).zip

    03.Docker实战之自定义容器镜像 04.Docker实战之容器互联实战 05.Docker实战之容器网络机制(上) 06.Docker实战之容器网络机制(下) 07.Docker图形化管理和监控 08.Kubernetes横空出世背后的秘密 09.Kubernetes...

    云计算应用开发实践指导书---docker+k8s大型分布式集群环境部署11

    在云计算领域,Docker 和 Kubernetes(k8s)已经成为现代应用程序开发和部署的关键技术。Docker 提供了轻量级的容器化机制,允许开发者将应用程序及其依赖打包成独立的可移植单元,而 Kubernetes 则是用于管理和编排...

    kubereum:Kubernetes +以太坊= Kubereum !!!

    目标是使用Docker和Kubernetes快速建立私有的以太坊区块链。 支持功能: 专用网络链。 矿工监控。 区块链统计仪表板。 Solidity浏览器服务。 我实验室中的示例:图片制作状态坚固性民族网ethstats 汽车同行要求...

    k8s-fordocker-desktop-v1.29.1

    11. **监控与日志**:Kubernetes提供了一套监控和日志收集的框架,可以集成Prometheus、Grafana等工具,实时查看集群状态。 12. **社区与生态系统**:Kubernetes拥有庞大的开发者社区,提供了丰富的第三方插件和...

    Docker到Kubernetes之技术实战全过程指导

    07.Docker图形化管理和监控 08.Kubernetes横空出世背后的秘密 09.Kubernetes架构深度解析 10.Kubernets集群入门 11.Kubernetes集群部署实践 12.Kubernetes的分布式网络实践 13.Kubernetes Service的负载均衡和网络...

    实战Docker到Kubernetes技术系列 文档.rar

    07. Docker图形化管理和监控 08 Kubernetes横空出世背后的秘密 09 Kubernetes架构深度解析 10 Kubernets集群入门 11.Kubernetes 渫集群部署实践 2 Kubernetes的分布式网络实践 13 Kubernetes Service的负载均衡和网 ...

    实战Docker到Kubernetes技术系列视频教程.zip

    07.Docker图形化管理和监控 08.Kubernetes横空出世背后的秘密 09.Kubernetes架构深度解析 10.Kubernets集群入门 11.Kubernetes集群部署实践 12.Kubernetes的分布式网络实践 13.Kubernetes Service的负载均衡和网络...

    spring boot 、spring cloud 、docker 微服务实战

    同时,你会了解到如何利用Docker构建和部署这些微服务,包括编写Dockerfile、使用Docker Compose进行多容器编排,以及如何在Kubernetes或Docker Swarm等集群管理系统中运行微服务。 《Spring Cloud微服务实战》则...

    prometheus docker 容器监控 k8s kubernetes

    prometheus docker 容器监控 k8s kubernetes 好东西 岗岗的

    实战Docker到Kubernetes技术视频.zip

    07.Docker图形化管理和监控 08.Kubernetes横空出世背后的秘密 09.Kubernetes架构深度解析 10.Kubernets集群入门 11.Kubernetes集群部署实践 12.Kubernetes的分布式网络实践 13.Kubernetes Service的负载均衡和网络...

Global site tag (gtag.js) - Google Analytics