咱们这个系列是讲解 Kubernetes 监控,Kubernetes 自身也是要跑在机器上的,那机器的监控自然也是整个体系的一环。机器层面的监控分为两部分,带内网络和带外网络,通过带内网络做监控主要是在OS里部署 agent 的方式,获取 OS 的 CPU、内存、磁盘、IO、网络、进程等相关监控指标。带外监控,主要是走带外管理卡,通过 IPMI、SNMP 协议,获取硬件健康状况。

带内监控

带内监控的 agent 有很多,大家可能会面临选型问题,这里我对常见 agent 做一个基本介绍。

Telegraf

Telegraf 来自 InfluxData,InfluxData 就是做 InfluxDB 那家公司,Telegraf 是 MIT 协议,非常开放,有非常多贡献者,社区繁荣。Telegraf 重点关注的是指标数据采集,不处理日志和链路数据,Telegraf 可以和 InfluxDB 丝滑集成,但是和 Prometheus 的集成就略微没有那么顺畅了。为啥呢?

  1. Telegraf 会采集很多字符串类型的数据,而 Prometheus 生态的时序库,是无法存储字符串类型的数据的。当然,作为 Telegraf 老炮也可以解决,把这类指标 Drop 掉即可。
  2. 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-宿主监控概述的更多相关文章

  1. Zabbix监控平台搭建部署与概述

    zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位 ...

  2. Kubernetes Ingress 日志分析与监控的最佳实践

    摘要: Ingress主要提供HTTP层(7层)路由功能,是目前K8s中HTTP/HTTPS服务的主流暴露方式.为简化广大用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingr ...

  3. 性能测试三十三:监控之Linux系统监控命令大全

    1.top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top - 01:06:48 up 1: ...

  4. 性能测试之监控--zabbix通过jmx监控tomcat

    前提: 已经安装好了zabbix server 实验环境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安装JDK tar -zxvf jdk-8u181-linux- ...

  5. DB监控-Riak集群监控

    公司的Riak版本是2.0.4,目前已根据CMDB三级业务部署了十几套集群,大部分是跨机房部署.监控采集分为两个大的维度,第一个维度是单机,也就是 「IP:端口」:第二个维度是集群,也就是所有节点指标 ...

  6. 探索Windows Azure 监控和自动伸缩系列3 - 启用Azure监控扩展收集自定义监控数据

    上一篇我们介绍了获取Azure的监控指标和监控数据: http://www.cnblogs.com/teld/p/5113376.html 本篇我们继续:监控虚拟机的自定义性能计数器. 随着我们应用规 ...

  7. 分布式监控系统Zabbix3.2监控数据库的连接数

    在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置 ...

  8. 指导手册02:伪分布式安装Hadoop(ubuntuLinux)

    指导手册02:伪分布式安装Hadoop(ubuntuLinux)   Part 1:安装及配置虚拟机 1.安装Linux. 1.安装Ubuntu1604 64位系统 2.设置语言,能输入中文 3.创建 ...

  9. centos 7中监控mysql 数据库脚本(监控端口)

    centos 7中监控mysql 数据库脚本(监控端口) 监控mysql数据库的方法如下: 1.监控端口 netstat -nltp |grep 3306 2.监控进程 ps -ef |grep 33 ...

  10. 采用link方式解决zabbix对于备份监控和ORACLE日志监控由于路径不统一的问题

    #对于备份监控和ORACLE日志监控由于路径不统一,我们可以采用link的方式如:#ln -s 原路径 新路径(/zabbix/logs)#新路径统一放在/zabbix/logs下具体看模板指定. # ...

随机推荐

  1. NICA 校际交流赛#2 游记

    \(1\!:\!15\) 到达考场,检测好网络和电脑. 分配任务,sxshm 打前 \(5\) 题,tcy01_QAQ_ 打 \(6,\!7\) 两题,我打后面的题. \(1\!:\!30\) 显得无 ...

  2. 基于MaxCompute分布式Python能力的大规模数据科学分析

    ​简介: 如何利用云上分布式 Python 加速数据科学. 如果你熟悉 numpy.pandas 或者 sklearn 这样的数据科学技术栈,同时又受限于平台的计算性能无法处理,本文介绍的 MaxCo ...

  3. [Contract] truffle-flattener 合并 Solidity 文件的依赖到一个文件

    使用 $ npm install truffle-flattener -g $ truffle-flattener <solidity-files> > output.sol 为什么 ...

  4. VisualStudio 如何快速添加一个 Git Tag 推送

    在 VisualStudio 的团队管理功能,提供了方便的添加 Tag 的方法,可以新建一个 Tag 添加 Tag 信息,同时推送某个特定的 Tag 到服务器.配合推 Tag 打包 NuGet 的方法 ...

  5. CMDB开发(一)

    一.CMDB前戏 # 项目开发流程 1.需求分析 产品经理 开发人员 客户等三方会议 2.架构设计 框架的选择 语言选择 数据库选择 3.分组开发 小组成员各自开发各自的功能(可能也会有交集) 4. ...

  6. Windows下绑定线程到指定的CPU核心

    在某些场景下,需要把程序绑定到指定CPU核心提高执行效率.通过微软官方文档查询到Windows提供了两个Win32函数:SetThreadAffinityMask和SetProcessAffinity ...

  7. 【爬虫数据集】滇西小哥YouTube频道TOP10热门视频的热评数据,共2W条!

    目录 一.背景介绍 二.爬取目标 三.结果展示 四.演示视频 五.附完整数据 一.背景介绍 滇西小哥是一位来自中国云南省的视频博主,他在YouTube上拥有超过1000万的订阅者和上亿的观看量.他的视 ...

  8. NumPy 数组创建方法与索引访问详解

    NumPy 创建数组 NumPy 中的核心数据结构是 ndarray,它代表多维数组.NumPy 提供了多种方法来创建 ndarray 对象,包括: 使用 array() 函数 array() 函数是 ...

  9. 智能调度_AIRIOT智能车队管理解决方案

    客运.货运.汽车租赁.出租运营等行业对车辆管理.车队管理以及司乘人员的管理方式,逐渐向数字化和智能化转型.传统的依赖人工调度.记录和跟踪的管理模式已经难以满足业务发展需要,存在如下痛点: 实时监控与定 ...

  10. AIRIOT可视化组态引擎如何应用于物联业务场景中

    在物联网的业务应用场景中,可视化组态是一个必不可少的功能需求.不同的行业场景,都需要将物联设备采集的数据和业务场景状态进行直观的可视化展示,供使用者进行分析或决策.如工艺流程用能监测.3D场景构建.能 ...