Kubernetes监控手册02-宿主监控概述
咱们这个系列是讲解 Kubernetes 监控,Kubernetes 自身也是要跑在机器上的,那机器的监控自然也是整个体系的一环。机器层面的监控分为两部分,带内网络和带外网络,通过带内网络做监控主要是在OS里部署 agent 的方式,获取 OS 的 CPU、内存、磁盘、IO、网络、进程等相关监控指标。带外监控,主要是走带外管理卡,通过 IPMI、SNMP 协议,获取硬件健康状况。
带内监控
带内监控的 agent 有很多,大家可能会面临选型问题,这里我对常见 agent 做一个基本介绍。

Telegraf
Telegraf 来自 InfluxData,InfluxData 就是做 InfluxDB 那家公司,Telegraf 是 MIT 协议,非常开放,有非常多贡献者,社区繁荣。Telegraf 重点关注的是指标数据采集,不处理日志和链路数据,Telegraf 可以和 InfluxDB 丝滑集成,但是和 Prometheus 的集成就略微没有那么顺畅了。为啥呢?
- Telegraf 会采集很多字符串类型的数据,而 Prometheus 生态的时序库,是无法存储字符串类型的数据的。当然,作为 Telegraf 老炮也可以解决,把这类指标 Drop 掉即可。
- Telegraf 有些指标的标签是非稳态结构,比如一个 HTTP 目标的探测监控,能连通的时候,指标中会打上一个标签
result=success,连不通的时候,标签就变成了result=failed,这就很麻烦了,因为这俩数据标签变化,Prometheus 类型的时序库会当做两个时间线(Series),对告警非常不友好。当然,有一些办法可以解决,比如在 Telegraf 上通过配置 Drop 掉这种标签,或者在 PromQL 这层,通过一些聚合函数实现,但是这个成本就高了,最好是采集器默认就处理了这种情况。
Grafana-Agent
Grafana 做可视化那是鼎鼎有名,近期,Grafana 也做了一个 Agent,目标是 All-in-one,不止处理指标数据,也能收集日志和链路数据。
Grafana-Agent 作为后来者,是如何快速集成各类采集能力的呢?Grafana-Agent 写了个框架,方便导入各类 Exporter,把各个 Exporter 当做 Lib 使用,常见的 Node-Exporter、Kafka-Exporter、Elasticsearch-Exporter、Mysqld-Exporter 等,都已经完成了集成。这样我们就不用到处去找各类 Exporter 了,只使用Grafana-Agent这一个二进制就可以搞定众多采集能力。
Grafana-Agent 这种集成 Exporter 的方式,完全兼容 Exporter 的指标体系,比如 Node-Exporter。如果我们的场景不方便使用PULL的方式来抓取数据,就可以换成Grafana-Agent采用PUSH的方式推送监控数据,完全兼容Node-Exporter的指标。当然,Exporter种类繁多,Grafana-Agent不可能全部集成,对于默认没有集成进去的Exporter,Grafana-Agent也支持PULL的方式去抓取其他Exporter的数据,然后再通过Remote Write的方式,将采集到的数据转发给服务端。
Datadog-Agent
Datadog 市值几百亿美金,做了十几年了,鼎鼎有名的 SaaS 公司,主要服务欧美市场,Datadog 也开源了自己的 Agent,不过 Datadog 的 Agent 采集了数据之后,是通过一个私有协议传输给服务端,所以开源社区用 Datadog-Agent 的较少。
我们做夜莺监控的时候,适配了 Datadog-Agent 的传输协议,也就是说,你可以使用 Datadog-Agent 做为采集器,采集到监控数据之后传输给夜莺。
Datadog-Agent 老版本主要是采用 Python 编写,新版本慢慢换成了 Go,不过还有很多代码仍然是 Python 的,内置了一个 Python 解析器,包比较大,不过个人认为,相比他的强大的采集能力,包大一点没啥大不了的。大家可以试用一下。如果使用 Datadog-Agent 采集数据,要把监控数据推给夜莺的服务端模块,地址例子:http://N9E-SERVER/datadog
Node-Exporter
这个大家比较熟悉了,专注在机器层面的指标监控,并且只专注机器层面的指标监控,因为是 Prometheus 生态的组件,使用 Prometheus 的用户初次入行,大概率会采用这个采集器。如果可以接受PULL模式并且只是处理机器监控,Node-Exporter 是完全够用的。
Categraf
Categraf 是 Flashcat 开源的一款监控采集器,开源协议是MIT,非常开放。
你可能会想,已经有这么多采集器了,为何还要再造一个轮子呢?我们的定位是类似 Grafana-Agent,支持 metrics、logs、traces 的采集,未来也会支持 events 的采集,对于同类监控目标的多个实例的场景,又希望做出 Telegraf 的体验,同时对于所有的采集插件,不但会提供采集能力,也会提供监控大盘、告警规则,让社区开箱即用。
Categraf 偏重 Prometheus 生态,标签是稳态结构,只采集数值型时序数据,通过 Remote Write 方式推数据给后端存储,所有支持 Remote Write 协议的时序库都可以对接,比如 Prometheus、VictoriaMetrics、M3DB、Thanos 等等。
对于习惯使用 Prometheus 的用户,Categraf 也支持直接读取 prometheus.yml 中的 scrape 规则,对接各类服务发现机制,实现上就是把 Prometheus agent mode 的代码引入进来了。
带外监控
带外监控走的是带外网络,协议走的是IPMI和SNMP协议。
IPMI可用于监控硬件的物理参数,如系统温度、风扇速度、电源电压等。可以有效地利用IPMI监控硬件温度、功耗、启动/关闭服务器和系统以及进行日志记录。IPMI的一个主要亮点是,它的功能独立于服务器的CPU和操作系统。IPMI可用于管理各种远程位置的服务器,而不管安装的操作系统是什么,因为固件直接在服务器主板上运行。
BMC也可以开启SNMP的支持,通过SNMP Trap做硬件监控,是一个挺好的思路,不过目前没有看到很好的产品,可能一些老牌的国外的监控产品可以做,因为那些产品都偏老套且收费昂贵,我也没有研究。等后面我研究一下,再给大家分享。不过现在大都在上公有云,传统的SNMP Trap的监控,已经是一个存量需求了,不懂也不用太过焦虑,哈哈。
总结
这个博客主要是介绍了机器层面的监控,OS内部的agent以及带外手段,带外监控在公有云市场环境下是不需要的,大家可以重点关注OS内的监控。
关于作者
本文作者秦晓辉,快猫星云合伙人,文章内容是快猫技术团队共同沉淀的结晶,作者做了编辑整理,我们会持续输出监控、稳定性保障相关的技术文章,文章可转载,转载请注明出处,尊重技术人员的成果。
Kubernetes监控手册02-宿主监控概述的更多相关文章
- Zabbix监控平台搭建部署与概述
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位 ...
- Kubernetes Ingress 日志分析与监控的最佳实践
摘要: Ingress主要提供HTTP层(7层)路由功能,是目前K8s中HTTP/HTTPS服务的主流暴露方式.为简化广大用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingr ...
- 性能测试三十三:监控之Linux系统监控命令大全
1.top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top - 01:06:48 up 1: ...
- 性能测试之监控--zabbix通过jmx监控tomcat
前提: 已经安装好了zabbix server 实验环境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安装JDK tar -zxvf jdk-8u181-linux- ...
- DB监控-Riak集群监控
公司的Riak版本是2.0.4,目前已根据CMDB三级业务部署了十几套集群,大部分是跨机房部署.监控采集分为两个大的维度,第一个维度是单机,也就是 「IP:端口」:第二个维度是集群,也就是所有节点指标 ...
- 探索Windows Azure 监控和自动伸缩系列3 - 启用Azure监控扩展收集自定义监控数据
上一篇我们介绍了获取Azure的监控指标和监控数据: http://www.cnblogs.com/teld/p/5113376.html 本篇我们继续:监控虚拟机的自定义性能计数器. 随着我们应用规 ...
- 分布式监控系统Zabbix3.2监控数据库的连接数
在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置 ...
- 指导手册02:伪分布式安装Hadoop(ubuntuLinux)
指导手册02:伪分布式安装Hadoop(ubuntuLinux) Part 1:安装及配置虚拟机 1.安装Linux. 1.安装Ubuntu1604 64位系统 2.设置语言,能输入中文 3.创建 ...
- centos 7中监控mysql 数据库脚本(监控端口)
centos 7中监控mysql 数据库脚本(监控端口) 监控mysql数据库的方法如下: 1.监控端口 netstat -nltp |grep 3306 2.监控进程 ps -ef |grep 33 ...
- 采用link方式解决zabbix对于备份监控和ORACLE日志监控由于路径不统一的问题
#对于备份监控和ORACLE日志监控由于路径不统一,我们可以采用link的方式如:#ln -s 原路径 新路径(/zabbix/logs)#新路径统一放在/zabbix/logs下具体看模板指定. # ...
随机推荐
- 【实用教程】在配备持久内存的实例上部署Redis应用
简介:配备持久内存的实例(例如re7p.r7p.re6p)提供了超大CPU内存配比,Redis应用运行在这类实例上可以大幅度降低单GiB内存的成本.本文以部分操作系统为例,介绍如何在这类实例上快速部署 ...
- [GPT] Linux 如何查看 crontab 的运行记录
要查看crontab的运行记录,可以使用以下命令: $ grep CRON /var/log/syslog 或者 $ tail /var/log/syslog 这将在 /var/log/syslo ...
- VisualStudio 调试时会不断刷新 WPF 应用渲染
在 VisualStudio 附加调试和没有用 VisualStudio 附加调试时,对应用程序是有不同的影响,如 VisualStudio 设计器将会在附加调试 WPF 应用的时候,不断刷新 WPF ...
- django-rest-framework框架(一)
1.Web开发模式 # web开发模式 #前后端混合开发(前后端不分离):返回的是html的内容,需要写模板 #前后端分离:只专注于写后端接口,返回json,xml格式数据 # xml格式 <x ...
- sql计算列中并非零值的平均值
avg不考虑空值 AVG (NULLIF(Value, 0)) NULLIF(expression, expression) 如果两个 expression 相等,则返回 NULL,该 NULL 为第 ...
- Linux上执行内存中的脚本和程序
在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序. 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一 ...
- 密码学—重合指数法Python程序
重合指数(Ic) 计算重合指数就是用来验证在Kasiski测试法中猜测出来的各种密钥长度哪一个才是最接近真实密钥长度的. 计算重合指数步骤 按照Kasiski测试法猜测的密钥长度分组 ↓ 分好组之后将 ...
- 在 ThinkPad E470 上安装 Ubuntu 16.04 无线网卡驱动
目录 文章目录 目录 安装 安装 # 查看无线网卡驱动类型,E470 一般为 RTL8821CE lspci # 安装必要工具 sudo apt-get install build-essential ...
- kubernets之横向伸缩pod与集群节点
一 pod的自动伸缩容的应用背景 在面对负载并发过高的时候,我们或许希望能够提高RS,RC以及Deployment等的replicas的参数来增加pod的cpu,mem等,或者是通过提高每个容器的r ...
- golang select 和外层的 for 搭配
select语句通常与for循环搭配使用,但并不是必须的. 在某些情况下,select可能会直接放在一个独立的goroutine中,没有外层的for循环. 这通常发生在你知道只会有一次或有限次操作的情 ...