调用链追踪 SkyWalking

记录服务接口间的调用关系以及集群中的各种指标

特别说明

  • 因平台使用 OpenSearch 记录容器中的日志,所以 SkyWalking 中的日志功能是关闭的

使用场景说明

平台的控制台是一个平台内预先设置租户,名称为 newcsl,在此租户下安装了 SkyWalking 服务。文档中除特别说明,都是指的此租户的 SkyWalking

除了平台的 SkyWalking,用户在自己的租户内也可以部署 SkyWalking 服务,用于监控自己租户内的应用的“常规服务监控”

用户租户内 SkyWalking 说明

用户租户下的 SkyWalking 服务,也会在自己的 K8S 名字空间下部署 cadvisor 守护进程集。因在 newcsl 的名字空间下已经有了 cadvisor 守护进程集,用户名字空间下的 cadvisor 将无法启动。用户需要将之删除。同时,用户可以删除或注释掉配置字典中的“kubernetes-cadvisor”等项目,以降低负载,或者直接将 otel-deployment-kubernetes-monitor 部署伸缩成0,因为平台下的 SkyWalking 已经收集了这些监控指标。

用户租户内 SkyWalking 不需要额外的配置,主要关注的应该是“常规服务监控”,其它指标监控应该使用平台的 SkyWalking

SkyWalking 的入口

用 system 登录控制台,在运维管理菜单下点击集群监控

常规服务监控

指的是 SkyWalking 服务所在的名字空间下的服务的监控,它的指标来源于 SkyWalking Agent

点击上图中的某个服务,可以查看服务的各种监控指标

点击服务中的 Trace 可以查看服务中的接口调用,及服务间接口的调用关系

点击服务中的 Topology 可以查看租户下服务的拓扑结构

Kubernetes 集群监控

点击左侧菜单栏中的 Kubernetes 下的集群或服务,可以打开对应的监控页面

Kubernetes 集群监控中的指标来源于 Kube-state-metrics

如果平台中安装了 KubeSphere,KubeSphere 中自带了 Kube-state-metrics,它的版本与 Kubernetes 的版本不一致,因此 Kubernetes 集群监控中会没有数据

基础设施监控

点击左侧菜单栏中的基础设施下的 Linux,打开集群中节点的监控页面

基础设施监控中的指标来源于 node-exporter,需要在 newdao-common 名字空间下安装 node-exporter 守护进程集,并更新 SkyWalking 的配置信息(下面章节介绍)

Kube-state-metrics

Kube-state-metrics 的版本要与 Kubernetes 的版本一致,下面引用自 [Github] (https://github.com/kubernetes/kube-state-metrics)

kube-state-metrics uses client-go to talk with Kubernetes clusters. The supported Kubernetes cluster version is determined by client-go. The compatibility matrix for client-go and Kubernetes cluster can be found here. All additional compatibility is only best effort, or happens to still/already be supported.

Compatibility matrix At most, 5 kube-state-metrics and 5 kubernetes releases will be recorded below. Generally, it is recommended to use the latest release of kube-state-metrics. If you run a very recent version of Kubernetes, you might want to use an unreleased version to have the full range of supported resources. If you run an older version of Kubernetes, you might need to run an older version in order to have full support for all resources. Be aware, that the maintainers will only support the latest release. Older versions might be supported by interested users of the community.

kube-state-metrics Kubernetes client-go Version
v2.8.2 v1.26
v2.9.2 v1.26
v2.10.1 v1.27
v2.11.0 v1.28
v2.12.0 v1.29
main v1.30

指标收集配置

SkyWalking 系统结构简介

  • SkyWalking 由下面几个子系统组成
    • OAP
      • 负责接收来自应用程序的性能指标数据,并将其存储和分析
    • OTEL
      • 收集系统中的各种指标,通过 otlp 协议发送给 OAP 进行处理
    • Java Agent
      • 在不修改源代码的情况下,对应用程序进行增强和监控
      • 下图中的跟踪记录来源于此

- Kong plugin
    - skywaking 插件,服务间接口调用关系的跟踪数据来源于此
    - metrics 插件,kong   的性能指标
- UI
    - 数据展现

指标收集配置

这里的配置指的是 OTEL 的配置。在 K8S 的租户名字空间下的配置字典中,有一个名为 otel-collector-conf-kubernetes-monitor 的配置字典,需要根据系统的实际需要进行修改。

img

需要修改的部份有:

  • job_name: 'vm-monitoring'
    • 数据来源于 newdao-common 名字空间下的守护进程集 node-exporter
    • 因集群的组成不同,因此需要根据集群的实际监控需要,修改它的配置
    • 没有提供界面修改,只能手工修改 otel-collector-conf-kubernetes-monitor 的配置字典中的 vm-monitoring 部份的 targets 的内容
    • 多个目标之间用逗号分隔,如:
    ['192.168.10.11:9110','192.168.10.21:9110']
  • job_name: 'nginx-monitoring'
    • 数据来源于 Kong 的 metrics 插件
    • 提供了配置界面

界面中的端口8001是 kong 的端口,58001是 kong2 的端口(只有门户服务有);前面的域名是服务的内网域名;

用户想监控哪个服务,将那个服务加入即可

因为8001,58001是容器中的端口,并没有通过服务暴露给外面(因安全考虑,未使用80,50080端口)。因此要使上面的使用8001,58001端口的配置生效,还需要通过下面的界面打开服务的8001,58001端口

用租户管理员帐号登录,在应用/服务管理界面中,选择要修改的服务的更多菜单中的运维插件菜单,找到自定义 Kong/Kong2 端口的配置项,将它打开即可

results matching ""

    No results matching ""