全部产品
Search
文档中心

日志服务:接入无侵入服务观测

更新时间:Dec 25, 2023

Kubernetes数据面监控基于日志服务与龙蜥社区合作共建的无侵入监控能力,您可以直观地分析整个Kubernetes的数据流向与瓶颈问题,轻松应对复杂的云原生环境。

前提条件

  • 已创建全栈可观测实例。具体操作,请参见创建实例

  • 如果是控制台方式接入,需先安装监控组件。具体操作,请参见安装监控组件

使用限制

Kubernetes数据面监控要求主机为x86_64 Linux内核版本为4.19及以上版本或3.1.0版本(仅限centos7.6~7.9操作系统)。您可以通过uname -r命令查看内核信息。

控制台方式接入

  1. 登录日志服务控制台

  2. 日志应用区域的智能运维页签下,单击全栈可观测

  3. SLS全栈可观测页面,单击目标实例。

  4. 在左侧导航栏中,单击全栈监控

    首次在该实例中使用全栈监控时,还需单击立即开启

  5. 在左侧导航栏中,单击数据接入,然后在数据接入配置页面,找到Kubernetes监控区域的无侵入服务观测

    首次创建目标监控项的接入配置时,打开创建开关,可进入配置页面。如果您已创建过接入配置,则单击创建图标,可进入配置页面。

  6. 创建机器组:

    如已经安装,请跳过此步骤。

命令行方式接入

  1. 下载Logtail CRD 采集配置生成工具:

    操作方式

    描述

    集群外安装

    集群外部安装要求登录账户存在~/.kube/config配置文件(可以使用kubectl命令),且配置文件具有目标集群操作权限。

    集群内安装

    容器内安装基于已安装组件alibaba-log-controller权限操作CRD 创建,适用于无~/.kube/config配置文件或网络问题无法连接时进行操作

    集群外安装

    1. 登录集群,下载模板工具。

      • 中国地区

        curl https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
      • 海外地区

        curl https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
    2. 安装模板工具,安装成功后会在当前文件夹生成sls-crd-tool工具。

      tar -xvf /tmp/crd-tool.tar.gz -C /tmp &&chmod 755 /tmp/crd-tool/install.sh  && sh -x  /tmp/crd-tool/install.sh
    3. 执行./sls-crd-tool list命令验证工具是否安装成功,当存在返回值时,说明工具安装成功。

    容器内安装

    1. 登录集群,进入alibaba-log-controller容器。

      kubectl get pods -n kube-system -o wide |grep alibaba-log-controller | awk -F ' ' '{print $1}'
      kubectl exec -it {pod} -n kube-system bash
    2. 下载模板工具。

      • 如集群内可以下载公网资源,操作方法如下:

        • 中国地区

          curl https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
        • 海外地区

          curl https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
      • 如集群内无法下载公网资源,可以集群外下载,使用kubectl cp <source> <destination>或者ACK上传等功能将模板工具传输至上述容器。

    3. 安装模板工具,安装成功后会在当前文件夹生成sls-crd-tool工具。

      tar -xvf /tmp/crd-tool.tar.gz -C /tmp &&chmod 755 /tmp/crd-tool/install.sh  && sh -x  /tmp/crd-tool/install.sh
    4. 执行./sls-crd-tool list命令验证工具是否安装成功,当存在返回值时,说明工具安装成功。

  2. 使用Logtail CRD采集配置生成工具生成采集配置

    1. 查看模板定义:

      ./sls-crd-tool  get ebpfK8sPlugin
    2. 将当前实例ID替换REQUIRED参数,使用以下命令预览参数:

      ./sls-crd-tool  apply -f template-ebpfK8sPlugin.yaml --create=false
    3. 确认project参数是否为当前实例所绑定的project,如正确,请使用以下命令部署模板采集文件:

      ./sls-crd-tool  apply -f template-ebpfK8sPlugin.yaml
    4. 返回数据接入配置界面,如下图,安装成功,资源监控中的配置数加一,安装失败则不加一。

      image.png

控制台方式接入

  1. 单击使用现有机器组

    安装监控组件后,日志服务自动创建名为k8s-group-${your_k8s_cluster_id}的机器组,您可以直接使用该机器组。

  2. 选中目标机器组(k8s-group-${your_k8s_cluster_id}),将该机器组从源机器组移动到应用机器组,单击下一步

    重要

    如果机器组心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。

  3. 数据源设置中,配置如下参数,然后单击完成

    参数名称

    说明

    一般配置

    配置名称

    自定义设置Logtail采集配置的名称。

    集群

    自定义设置集群的名称。

    设置该参数后,日志服务会为通过该Logtail采集配置采集到的监控数据添加cluster=集群名称的标签。

    重要

    请确保该集群名称唯一,否则可能出现数据冲突。

    协议处理

    打开协议处理开关后,Logtail将解析应用层的网络协议数据,例如HTTP、MySQL、Redis等。

    网络指标统计间隔

    统计L4网络数据的间隔,此间隔内的数据会被聚合输出,单位:秒。建议不超过600秒。

    协议指标统计间隔

    统计L7协议网络数据的间隔,此间隔内的数据会被聚合输出,单位:秒。建议不超过60秒。

    协议采样率

    设置网络数据的采样率,仅针对七层网络数据过滤,不影响网络统计值。

    协议白名单

    选择需要解析的应用层协议。

    K8s选择器

    Namespace白名单

    输入匹配Namespace名称的正则表达式,用于指定待采集的命名空间。

    Namespace黑名单

    输入匹配Namespace名称的正则表达式,用于排除不需要采集的命名空间。

    Pod白名单

    输入匹配Pod名称的正则表达式,用于指定待采集的Pod。

    Pod黑名单

    输入匹配Pod名称的正则表达式,用于排除不需要采集的Pod。

    容器白名单

    输入匹配容器名称的正则表达式,用于指定待采集的容器名称。

    容器黑名单

    输入匹配容器名称的正则表达式,用于排除不需要采集的容器名称。

    Label白名单

    用于指定待采集的容器。

    设置LabelKey为具体名称,LabelValue为正则表达式。例如设置LabelKeyio.kubernetes.container.name,设置LabelValue^(nginx|cube)$,表示匹配名为nginx、cube的容器。

    多个白名单之间为或关系,即只要容器Label满足任一白名单即可被匹配。

    Label黑名单

    用于排除不需要采集的容器。

    设置LabelKey为具体名称,LabelValue为正则表达式。例如设置LabelKeyio.kubernetes.container.name,设置LabelValue^(nginx|cube)$,表示排除名为nginx、cube的容器。

    多个黑名单之间为或关系,即只要容器Label满足任一黑名单即可被排除。

    环境变量白名单

    用于指定待采集的容器。

    设置EnvKey为具体名称,EnvValue为正则表达式。例如设置EnvKeyNGINX_SERVICE_PORT,设置EnvValue^(80|6379)$,表示匹配服务端口为80、6379的容器。

    多个白名单之间为或关系,即只要容器的环境变量满足任一键值对即可被匹配。

    环境变量黑名单

    用于排除不需要采集的容器。

    设置EnvKey为具体名称,EnvValue为正则表达式。例如设置EnvKeyNGINX_SERVICE_PORT,设置EnvValue^(80|6379)$,表示排除服务端口为80、6379的容器。

    多个黑名单之间为或关系,即只要容器的环境变量满足任一键值对即可被排除。

    高级配置

    丢弃本地网络数据包

    打开丢弃本地网络数据包丢弃本地网络数据包开关后,Logtail将丢弃对端地址为本地的INET域网络请求。

    丢弃Unix 网络数据包

    打开丢弃Unix网络数据包丢弃Unix网络数据包开关后,Logtail将丢弃Unix域网络请求。

    Unix域常用于本地网络交互。

    丢弃未知数据包

    打开丢弃未知数据包开关后,Logtail将丢弃非INET域或Unix域的网络请求。

    容器信息读取间隔

    设置全量读取容器元信息的时间间隔,单位:秒。建议不超过60秒。

    Socket 信息读取间隔

    设置读取Socket元信息的时间间隔,单位:秒。建议不超过30秒。

    协议聚合窗口

    设置协议指标统计间隔内进程级别数据聚合窗口大小,用于控制资源消耗,避免大量的不同调用导致Logtail内存上升。默认客户端为500,服务端为5000。

    设置完成后,日志服务将自动生成Metricstore等资产。更多信息,请参见资产说明

后续步骤

接入Kubernetes数据面监控数据后,全栈可观测应用会自动生成专属仪表盘。您可以通过仪表盘分析监控数据。更多信息,请参见查看仪表盘

创建机器组:如已经安装,请跳过此步骤。阿里云ack集群创建机器组,请参见创建IP地址机器组。自建K8s集群创建机器组,请参见创建用户自定义标识机器组。