Istio- 可观测性【九】

网格可观测性:

    网格层:
        指标:服务间的通信指标,Envoy Stats指标,控制平面的专有指标
        日志:访问日志,Envoy自身的程序日志
        链路追踪:Envoy启动传播机制

    应用程序需要完成的功能:
        指标:应用程序自身的指标的暴露
        日志:应用程序自身的日志
        链路追踪:应用程序自身要提供兼容到跟踪系统的埋点

    配置逻辑:主要在网格上进行定义的;
        指标: 
            Envoy Stats指标:Envoy内置了该功能
                非常多,应该只抓关键指标
            服务间的通信指标:
                Envoy实例本身没有内置该功能
                    Telemetry V1: Mixer 
                    Telemetry v2: 插件化扩展出这类功能
                        插件:
                            硬编码内置插件
                            WASM插件
        日志: 
            启用日志,并指定日志格式(存在默认格式)
            输出到控制台

        链路跟踪:
            前提:业务代码必须得支持目标跟踪系统

            启用链路跟踪功能
            入向网关,为每个请求生成一个request id 

    Provider:
        指标:Prometheus/Grafana
        日志:ELFK
        跟踪系统:取决于业务代码埋点的支持

    如何配置可观测性功能:
        (1)集群部署文件,profile,MeshConfig段
        (2)Telemetry CRD 
            定义在根名称空间:全网格生效
            定义业务所在名称空间:生效一个名称空间
            使用workloadSelector:生效其所在的名称空间下的特定的工作负载实例上

    默认暴露的stats指标:
kubectl exec -it $POD.$NAMESPACE -c istio-proxy -- pilot-agent request GET /stats/prometheus

 

#    配置的要抓取的指标:
istioctl proxy-config bootstrap demoappv10-54757f48d6-lvtn9 | jq .bootstrap.statsConfig

 "statsMatcher": {
                "inclusionList": {
                    "patterns": [
                        {
                            "prefix": "reporter="
                        },
                        {
                            "prefix": "cluster_manager"
                        },
                        {
                            "prefix": "listener_manager"
                        },
                        {
                            "prefix": "server"
                        },
                        {
                            "prefix": "cluster.xds-grpc"
                        },
                        {
                            "prefix": "wasm"
                        },
                        {
                            "suffix": "rbac.allowed"
                        },
                        {
                            "suffix": "rbac.denied"
                        },
                        {
                            "suffix": "shadow_allowed"
                        },
                        {
                            "suffix": "shadow_denied"
                        },
                        {
                            "safeRegex": {
                                "regex": "vhost\\.*\\.route\\.*"
                            }
                        },
                        {
                            "prefix": "component"
                        },
                        {
                            "prefix": "istio"
                        }
                    ]
                }
            }
        },
#    在bootstrap文件生成时进行配置的,因而只会对配置后创建的Pod有效。    
meshConfig:
            outboundTrafficPolicy:
            mode: REGISTRY_ONLY
            accessLogFile: /dev/stdout
            defaultConfig:
            proxyMetadata: {}
            proxyStatsMatcher:
                inclusionPrefixes:
                - "upstream_rq_retry"
                - "upstream_cx"
    服务级指标:
        服务质量相关的指标

        Google SRE 服务质量的四个黄金指标
            延迟
            流量 
            错误
            饱和度

        借助特定的WASM扩展进行:被动指标收集
            stats: 固定定义了几个扩展出来的指标 
            metadata-exchange:标签上的数据通过连接属性进行获取,这双方交换这些元数据

        配置服务级指标:
            添加标签:

            移除标签

        定义告警规则,借助alertmanager完成告警。

    日志: 
        全局配置方式:
            meshConfig:
                accessLogFile: /dev/stdout 
                accessLogFormat: 支持Envoy原生的格式字串或者格式字典
                accessLogEncoding: 编码格式,TEXT,JSON 
            
    分布式跟踪:
        启用或禁用跟踪
            meshCOnfig.enableTracing: true|false 

            额外需要配置的参数是采样率:
                默认是100% 

            需要对接自定义的跟踪系统时,Envoy原生支持SkyWalking,额外的依赖是代码本身内置了SkyWalking的跟踪器

        在istio上将SkyWalking定义为一个Provider

        随后定义Telemetry CRD,设定应用将跟踪数据发往该Provider即可。

 

posted @ 2023-06-08 17:21  しみずよしだ  阅读(64)  评论(2)    收藏  举报