基于 ASM 简化可观测管理、提升业务洞察力(2)

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
日志服务 SLS,月写入数据量 50GB 1个月
简介: 基于 ASM 简化可观测管理、提升业务洞察力

02 日志

在 Service Mesh 中,日志的采集是实现可观测性的重要手段之一。通过将所有服务的日志聚合到一处,可以便于统一管理和检索。为了实现这个目标,需要将每个服务的日志打印到 stdout 或 stderr,并使用日志代理将它们收集到中心日志系统中。阿里云服务网格 ASM 提供了日志过滤和日志格式化功能,可以根据需要对日志进行过滤和格式化,以便更好地进行检索和分析。


日志格式规则配置

在实际应用中,需要考虑到不同服务的日志格式可能不同,因此需要设置生成规则来控制日志的生成方式。部署在数据平面(即加入网格的 Kubernetes 集群)的 Envoy Proxy 可以输出所有访问日志。ASM 支持自定义 Envoy Proxy 输出的访问日志内容。

基于 Telemetry CRD,阿里云服务网格 ASM 提供了如下图所示的图形化界面,简化用户定义日志数据格式的配置。

image.png

对应地,生成的定义内容如下:

envoyFileAccessLog:
    logFormat:
      text: '{"bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%","downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%","duration":"%DURATION%","istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%","method":"%REQ(:METHOD)%","path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","protocol":"%PROTOCOL%","request_id":"%REQ(X-REQUEST-ID)%","requested_server_name":"%REQUESTED_SERVER_NAME%","response_code":"%RESPONSE_CODE%","response_flags":"%RESPONSE_FLAGS%","route_name":"%ROUTE_NAME%","start_time":"%START_TIME%","trace_id":"%REQ(X-B3-TRACEID)%","upstream_cluster":"%UPSTREAM_CLUSTER%","upstream_host":"%UPSTREAM_HOST%","upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%","user_agent":"%REQ(USER-AGENT)%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","authority_for":"%REQ(:AUTHORITY)%","upstream_response_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","xff":"%REQ(X-FORWARDED-FOR)%","app_service_name":"%UPSTREAM_CLUSTER%"}'
    path: /dev/stdout

以及描述了过滤条件的配置内容:


accessLogging:
- disabled: false
  filter:
    expression: response.code >= 400
  providers:
  - name: envoy


数据面日志采集设置

此外,需要设置采集规则来控制日志的采集方式和储存有效期。

image.png

容器服务 ACK 集成了日志服务功能,可对服务网格数据平面集群的 AccessLog 进行采集。


采集控制平面日志及设置告警

ASM 支持采集控制平面日志和日志告警,例如采集 ASM 控制平面向数据平面 Sidecar 推送配置的相关日志。ASM 控制面组件的主要功能之一是推送网格的规则配置到数据面的 Sidecar 代理或者网关中。如果用户配置的网格规则内容存在一些冲突导致推送失败,代理或者网关就接收不到最新的配置内容。虽然代理或网关在不重启的情况下,可以使用已经接收到的配置继续运行,但是一旦这些 Pod 重启,很有可能导致 Sidecar 代理或网关启动失败。在很多实际场景中,经常出现用户误配置引发的网关或代理不可用的问题,因此启用控制面的日志告警,及时发现并解决问题十分必要。


03 监控指标

监控指标是 Service Mesh 中的另一个重要可观测性维度,用于描述请求的处理情况、服务之间的通信状况等等。Istio 采用 Prometheus 进行监控指标的采集和存储,每个服务的代理(Envoy)会生成大量的监控指标。这些指标可以用于实时监控服务的运行情况和性能指标,还可以用于异常检测和自动伸缩等场景。


指标数据生成规则配置
启用服务网格数据平面监控指标可以使服务网格数据平面(网关以及 Sidecar 代理)生成与其运行状态相关的指标数据,您可以通过将指标采集到阿里云 ARMS Prometheus 来直接查看监控报表(采集指标可能产生费用),或是自建 Prometheus 并从 ASM 数据平面抓取监控指标。

基于 Telemetry CRD,阿里云服务网格 ASM 提供了如下图所示的图形化界面,简化用户自定义指标配置。

image.png

对应地,生成的定义内容如下:

metrics:
- overrides:
  - disabled: true
    match:
      metric: ALL_METRICS
      mode: CLIENT
  - disabled: false
    match:
      metric: ALL_METRICS
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: REQUEST_COUNT
      mode: CLIENT
  - disabled: false
    match:
      metric: REQUEST_COUNT
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: REQUEST_DURATION
      mode: CLIENT
  - disabled: false
    match:
      metric: REQUEST_DURATION
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: REQUEST_SIZE
      mode: CLIENT
  - disabled: false
    match:
      metric: REQUEST_SIZE
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: RESPONSE_SIZE
      mode: CLIENT
  - disabled: false
    match:
      metric: RESPONSE_SIZE
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: GRPC_REQUEST_MESSAGES
      mode: CLIENT
  - disabled: false
    match:
      metric: GRPC_REQUEST_MESSAGES
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: GRPC_RESPONSE_MESSAGES
      mode: CLIENT
  - disabled: false
    match:
      metric: GRPC_RESPONSE_MESSAGES
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: TCP_SENT_BYTES
      mode: CLIENT
  - disabled: false
    match:
      metric: TCP_SENT_BYTES
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: TCP_RECEIVED_BYTES
      mode: CLIENT
  - disabled: false
    match:
      metric: TCP_RECEIVED_BYTES
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: TCP_OPENED_CONNECTIONS
      mode: CLIENT
  - disabled: false
    match:
      metric: TCP_OPENED_CONNECTIONS
      mode: SERVER
    tagOverrides: {}
  - disabled: true
    match:
      metric: TCP_CLOSED_CONNECTIONS
      mode: CLIENT
  - disabled: false
    match:
      metric: TCP_CLOSED_CONNECTIONS
      mode: SERVER
    tagOverrides: {}
  providers:
  - name: prometheus


注意的是,第一次开启时的指标设置:

为了避免这些指标产生费用较大,第一次开启时的指标设置中全局范围内只开启 SERVER 侧指标,未开启 CLIENT 侧指标。请根据需要,自行进行开启,例如需要针对网关进行监控,则需要进行开启 CLIENT 侧指标。需要注意的是,如果已经开启过,重新开启之后的指标设置将保留使用上一次的设置规则。

ASM 网格拓扑功能相关的指标设置:

ASM 网格拓扑功能依赖于 Sidecar 上报的监控指标,若您开启了网格拓扑,关闭部分监控指标会对网格拓扑功能造成影响甚至不可用。

  • 如果不启用 REQUEST_COUNT 的 SERVER 侧指标,将无法生成 HTTP/gRPC 服务的拓扑图。
  • 如果不启用 TCP_SENT_BYTES 的 SERVER 侧指标,将无法生成 TCP 服务的拓扑图。
  • 关闭 REQUEST_SIZE 和 REQUEST_DURATION 的 SERVER 侧,REQUEST_SIZE 的 CLIENT 侧指标会导致部分拓扑图节点的监控信息无法展示。
目录
相关文章
|
4月前
|
人工智能 自然语言处理 安全
使用阿里云服务网格高效管理LLM流量:(一)流量路由
ASM支持通过LLMProvider和LLMRoute资源管理大型语言模型流量。LLMProvider负责注册LLM服务,LLMRoute负责设定流量规则,应用可灵活切换模型,满足不同场景需求。
|
6月前
|
存储 机器学习/深度学习 负载均衡
模型服务网格:云原生下的模型服务管理
模型服务网格:云原生下的模型服务管理
78530 12
模型服务网格:云原生下的模型服务管理
|
存储 Prometheus 运维
基于 ASM 简化可观测管理、提升业务洞察力
基于 ASM 简化可观测管理、提升业务洞察力
|
监控 Cloud Native 微服务
基于 ASM 简化可观测管理、提升业务洞察力(4)
基于 ASM 简化可观测管理、提升业务洞察力
99 0
基于 ASM 简化可观测管理、提升业务洞察力(4)
|
存储 Prometheus 运维
基于 ASM 简化可观测管理、提升业务洞察力(3)
基于 ASM 简化可观测管理、提升业务洞察力
121 0
基于 ASM 简化可观测管理、提升业务洞察力(3)
|
存储 数据采集 监控
基于 ASM 简化可观测管理、提升业务洞察力(1)
基于 ASM 简化可观测管理、提升业务洞察力
68 0
|
监控 安全 Cloud Native
构建无缝的服务网格体验:分享在生产环境中构建和管理服务网格的最佳实践
构建无缝的服务网格体验:分享在生产环境中构建和管理服务网格的最佳实践
64 0
|
6月前
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
328 2
|
29天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
6月前
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例