云原生 第十二章 可观测性:监控与日志

监控类型

  • 资源监控:cpu、内存、网络等。
  • 性能监控:apm监控,一般是通过一些 Hook 的机制在,在虚拟机层、字节码执行层通过隐式调用,或者是在应用层显示注入,获取更深层次的一个监控指标,一般是用来应用的调优和诊断的。
  • 安全监控:对安全进行的一系列的监控策略,类似像越权管理、安全漏洞扫描等。
  • 事件监控:normal的事件变成-warning事件

Heapster

  • 每一个 Kubernetes 节点上有一个 cadvisor,是负责数据采集的组件。当 cadvisor 把数据采集完成,Kubernetes 会把 cadvisor 采集到的数据进行包裹,暴露成相应的 API。以下是三种API接口
    • summary接口
    • kubelet接口
    • Prometheus接口
  • Heapster支持summary和kubelet接口,定期去节点拉取数据,然后暴露成service。
  • k8s的dashboard或者hpa-controller获取到监控数据,实现相对应的弹性收缩等。

metrics-service取代了Heapster

  • 需要采集更多其他的资源信息,但Heapster的可扩展性有限
  • Heapster为了保证数据的离线能力,提供了很多sink,后期这些缺乏维护,导致Heapster项目出现了很多问题

Heapster架构

  • core:上层是http和https向外暴露的API接口
  • source:采集数据暴露的不同接口
  • processor:数据转换及数据聚合
  • sink:数据离线【influxdb、socket、factory、manager…】

Metrics-Service内部组成

  • core
  • source
  • API
  • API Registration:将相应的数据接口注册到k8s的API Server。用户通过API server访问API注册层,再到metrics-server

k8s监控接口标准

  • resource metrice:资源监控,包含节点、pod、namespace、class,通过metrics.k8s.io接口获取到
  • custom metrics:通过custom.metrics.k8s.io接口获取到,主要实现的Prometheus,提供的是资源监控和自定义监控(应用层自己定义,然后通过标准的Prometheus的client,暴露出相应的metrics,且被Prometheus采集)
  • External metrics:获取云产品的监控指标

Promethues

  • 很多开源项目以Prometheus作为监控标准
  • 针对数据库和中间件,有对应的Prometheus采集客户端,比如说etcd、zookeeper、mysql和postgresql
  • 数据采集链路
    • push到gateway,Prometheus通过pull拉取数据,防止短时间数据业务漏采。因为pull有周期,如果周期时间大于任务运行时间,单纯直接从任务上pull会遗失数据
    • 标准pull,直接去对应的数据任务上拉取数据
    • Prometheus之间的数据同步
  • 数据源配置
    • 标准的静态配置
    • 支持service discovery【配置annotation】
  • Operator:Prometheus Operator 可能是目前所有 Operator 里面做的最复杂的,但是它里面也是把 Prometheus 这种动态能力做到淋漓尽致的一个 Operator,如果在 K8s 里面使用 Prometheus,比较推荐使用 Prometheus Operator 的方式来去进行部署和运维。

阿里的事件离线工具kube-events

日志

  • 主机内核的日志

    • 网栈的异常: iptables mark
    • 驱动异常的日志
    • 文件系统异常日志
    • 节点异常,kernel panic 或者oom(out of memory)
  • Runtime的日志

    • Docker的一些日志,排查类似像删除pod hang的问题
  • 核心组件的日志

    • 外置的中间件:数据库etcd、网络Ingress
    • 内置的组件:API server、kube-scheduler、controller-manager、kubelet
  • 应用日志

    • 宿主机文件:日志文件写到宿主机,通过宿主机的日志轮转的策略进行日志的轮转,通过宿主机的agent进行采集
    • 容器内文件:通过sidecar的streaming的container,转写到stdout,通过stdout写到相应的log-file,然后通过本地的日志轮转,以及外部的agent采集
    • 容器标准/错误输出:agent采集stdout或者API获取数据
  • 举例

    • Fluentd在每个节点上起一个agent,agent会将数据汇聚到fluentd的server,server可以把数据离线到es,通过kibana展示

监控日志相关的四个产品

  • sls:阿里云日志服务(数据采集LogHub、查询分析Search、数据仓库LogShipper)
  • arms:应用性能监控(诊断和调优)
  • ahas:架构感知监控
  • cloud monitor:node和pod等监控指标的展现和告警

https://edu.aliyun.com/roadmap/cloudnative?spm=5176.13345299.1392477.3.641af1531kkPWm

测试题目

以下哪些是 Kubernetes 中常见的监控场景?(多选题)ABCD

  • A. 资源监控
  • B. 性能监控
  • C. 安全监控
  • D. 事件监控

从功能性的角度而言,Heapster 的 Sink 机制比 Metrics-Server 更强大。(单选题)A

  • A. TRUE
  • B. FALSE

Metrics-Server 的核心产生原因是为了实现监控接口的标准化。(单选题)A

  • A. TRUE
  • B. FALSE

以下哪个不是 Kubernetes 中的监控接口标准?(单选题)D

  • A. Resource Metrics API
  • B. Custom Metrics API
  • C. External Metrics API
  • D. Event Metrics API

kube-eventer 是一个开源的 Kubernetes 事件告警的工具,主要面向的场景是报警通道。(单选题) B

  • A. TRUE
  • B. FALSE

以下哪个不是 Prometheus 的优势?(单选题) A

  • A. Prometheus 的采集性能优越
  • B. Prometheus 的采集方式丰富
  • C. Prometheus 的接入方式简单
  • D. Prometheus的插件丰富

以下哪些是 Kubernetes 中日志的来源?(多选题)ABCD

  • A. 核心组件
  • B. Docker Engine
  • C. 业务 Pod
  • D. 系统内核日志

以下哪些是阿里云容器服务的监控方案内容?(多选题)ABCD

  • A. 云监控
  • B. ARMS 性能监控
  • C. AHAS 架构感知监控
  • D. 托管 Prometheus 资源监控

以下哪些是阿里云容器服务的日志方案的优势?(多选题)ABCD

  • A. 丰富的数据采集方式
  • B. 多种的数据展现与集成能力
  • C. 数据分析与增值服务
  • D. 开源场景的整合

监控和日志是大型分布式系统的基础设施,可以帮助开发者快速定位应用问题,调优性能。(单选题)A

  • A. TRUE
  • B. FALSE

相关概念:Hook

https://blog.csdn.net/qq_36381855/article/details/79962673

  • 钩子(Hook):是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
  • 钩子的种类很多,每种钩子可以截获相应的消息,如键盘钩子可以截获键盘消息,外壳钩子可以截取、启动和关闭应用程序的消息等。钩子可以分为线程钩子和系统钩子,线程钩子可以监视指定线程的事件消息,系统钩子监视系统中的所有线程的事件消息。因为系统钩子会影响系统中所有的应用程序,所以钩子函数必须放在独立的动态链接库(DLL) 中。

相关概念:JVM GC

  • JVM的内存空间,从大的层面上来分析包含:新生代空间(Young)和老年代空间(Old)。新生代空间(Young)又被分为2个部分(Eden区域、Survivous区域)和3个板块(1个Eden区域和2个Survivous区域)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值