当前位置: 首页 > news >正文

Istio_04_Istio可观测性

Istio_04_Istio可观测性

  • Observability
    • Metric
    • Tracing
    • Log

Observability

Observaility(可观测性): 收集、分析和展示服务网格的实时数据

  1. 本质: 以数据面代理Envoy的Filter扩展机制, 直接对接各指标数据
  2. 配置方式: IstioOperator、MeshConfig、EnvoyFilter、Telemetry API

如: Istio可观测性机制

image

  1. 指标数据需通过Exporter暴漏以便拉取
  2. 日志可设定输出到指定标准文件, 或gRPC标准接口上报
  3. 调用链是数据面代理Envoy埋点后直接上报到配置的调用链后端

Telemetry: 以单独部署独立资源管理可观测性数据(指标、日志和调用链)


Telemetry常用配置清单:

apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:name: <String>namespace: <String>
spec:selector: <Object>targetRef: <Object>       # Kubernetes网关, 与selector字段互斥metrics: <[]Object>       # 指标数据tracing: <[]Object>       # 调用链数据accessLogging: <[]Object> # 日志数据
  1. 若省略spec.selector, 则作用于Telemetry所在NS下的所有服务
  2. spec.targetRef指定的Kubernetes网关, 必须与Telemetry位于相同的NS

Metric

Metric(指标): 服务网格内服务不同维度的特征

  1. 本质: 每个数据面代理都开放标准的Exporter暴漏指标数据

如: Metric监控架构

image

  1. 数据面代理Envoy拦截服务访问, 完成管理和生成访问的指标数据
    • 并通过metadata_exchange交换元数据信息以形成完整的指标数据
    • 最后通过Exporter接口暴漏指标数据(数据面代理单独暴漏)
  2. Prometheus通过各个Exporter接口拉取访问指标数据
  3. Prometheus/Grafana检索访API分析指标数据

可自定义Pod额外指标数据:

reporter
source_namespace, source_workload, source_workload_namespace, source_principal, source_app, source_version, source_cluster
destination_namespace, destination_workload, destination_workload_namespace, destination_service_name, destination__service_namespace, destination_port, destination_cluster
request_protocol, request_operation, request_host
response_flags
grpc_response_status
connection_security_policy
source_canonical_service, source_canonical_revision
destination_canonical_service, destination_canonical_revision
  1. 需配置Pod的sidecar.istio.io/extraStatTags配置(多个值之间逗号相隔)

Tracing

Tracing(调用链): 服务网格内各服务之间调用埋点和数据上报

  1. 本质: 数据面代理拦截应用的请求, 并代替应用进行调用链埋点
  2. 调用链完整功能需应用修改少量代码(传递调用跟踪信息)
  3. Trace: 完整的分布式调用跟踪链路
  4. Span: 跨服务的一次调用

如: Istio中调用链原理(日志同理)

image

  1. 拦截出流量
    • 请求头中没有调用跟踪信息, 创建Trace和根Span
    • 反之从请求头中提取Trace的上下文信息并传递给应用服务
  2. 拦截入流量
    • 请求头中没有调用跟踪信息, 创建根Span
    • 反之从请求头中提取Span相关信息, 并基于该Span创建子Span合并在请求头中传递给应用服务

如: 调用链示例

image

  1. TraceId: Trace的ID, 关联多个请求的Span(首个Span创建时生成)
  2. SpanId: Span请求中的一段调用(Span创建时分配)
  3. ParentSpanId: 父SpanId(Span的前个阶段)

Log

Log(日志): 服务网格内的服务请求/访问的记录

  1. 本质: 数据面代理Envoy生成服务日志并直接上报给后端
  2. 日志通用配置: 采集路径、日志结构、日志格式、ALB服务

如: 日志流程和各个阶段

image

  1. 可在不同访问阶段输出日志, Istio将访问阶段分为6个

日志的默认格式:

[%START_TIME%] \"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%\" %RESPONSE_CODE% %RESPONSE_FLAGS% %RESPONSE_CODE_DETAILS% %CONNECTION_TERMINATION_DETAILS%
\"%UPSTREAM_TRANSPORT_FAILURE_REASON%\" %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% \"%REQ(X-FORWARDED-FOR)%\" \"%REQ(USER-AGENT)%\" \"%REQ(X-REQUEST-ID)%\"
\"%REQ(:AUTHORITY)%\" \"%UPSTREAM_HOST%\" %UPSTREAM_CLUSTER% %UPSTREAM_LOCAL_ADDRESS% %DOWNSTREAM_LOCAL_ADDRESS% %DOWNSTREAM_REMOTE_ADDRESS% %REQUESTED_SERVER_NAME% %ROUTE_NAME%\n


http://www.mrgr.cn/news/62590.html

相关文章:

  • Netron:神经网络模型可视化工具指南【全网最详细】
  • C#实现视频会议录制(支持Windows、Linux、银河麒麟、统信UOS)
  • DDRPHY数字IC后端设计实现系列专题之后端设计导入,IO Ring设计
  • SCSS在Vue中切换主题颜色示例(mixin + scss方式,简单高效)
  • Python基础学习------第一天
  • 无迹卡尔曼滤波器(UKF)
  • 一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统
  • vue3使用vite设置 @ 路径别名指向src 目录
  • mac-ubuntu虚拟机(扩容-共享-vmtools)
  • 如何预防Kubernetes安全漏洞
  • 如何创建一个网站?
  • 【hacker送书第14期】AI训练师算法与模型训练从入门到精通
  • 9、node.js和Lowdb
  • 知网中的复合影响因子和综合影响因子解析
  • 鸿蒙-三分栏中控制二栏和三栏展示
  • leaflet矢量瓦片vetorgrid显示聚合和图标裁剪显示不全的问题
  • 论文中涉及的数学定义
  • 新闻列表以及详情页面梳理
  • Java基础面试题--
  • 特征提取:AI 挖掘数据关键信息的技巧
  • 分类算法——XGBoost 详解
  • JAVA开源项目 学生宿舍管理系统 计算机毕业设计
  • AFSim 基础总结一 代码总结(1)
  • TVB被嘲讽工资低,张兆辉得体且高情商的回应,赢得网友赞赏
  • 新能源行业必会基础知识---电力现货问答---第11问---什么是实物合约和金融合约?什么是差价合约?
  • o1背后的秘密:6种推理模式解析!