LoongCollector安装(Kubernetes)

LoongCollector是阿里云日志服务(SLS)推出的新一代日志采集 Agent,是 Logtail 的升级版。在采集集群容器日志之前,需要先在Kubernetes上安装LoongCollector组件。本文介绍如何在K8s集群上安装LoongCollector。

核心概念

在开始配置日志采集前,请先了解阿里云日志服务(SLS)的核心资源概念以及LoongCollectorKubernetes环境中的运行模式。

什么是Project

Project是阿里云日志服务中的资源管理单元,用于隔离和控制不同项目或应用的日志数据。一个Project可以包含多个Logstore。

什么是Logstore

Logstore是日志数据的存储单元,用于存储日志。在Project内,您可以根据业务需求创建多个Logstore存储不同类型的日志,如使用两个Logstore分别存储Nginx访问日志和应用错误日志。

LoongCollector 运行模式

特性

DaemonSet模式

Sidecar模式

部署方式

每个节点部署1个采集容器

每个Pod部署1个采集容器

资源消耗

低(共享节点资源)

较高(每个Pod单独占用)

适用场景

节点级统一日志采集

特定应用独立隔离采集

隔离性

节点级共享

Pod级独立

前提条件

创建Project

若您无可用Project,请参考此处步骤创建一个基础Project,如需详细了解创建配置请参见管理Project

登录日志服务控制台单击创建Project完成下述基础配置,其他配置保持默认即可:

  • 所属地域:请根据日志来源等信息选择合适的阿里云地域,创建后不可修改。

  • Project名称:设置名称,名称在阿里云地域内全局唯一,创建后不可修改。

创建Logstore

若您无可用Logstore,请参考此处步骤创建一个基础Logstore,如需详细了解创建配置请参见管理Logstore

  1. 登录日志服务控制台,在Project列表中单击目标Project。

  2. 日志存储 > 日志库页签中,单击+图标。

    image

  3. 填写Logstore名称,其余配置保持默认无需修改。

检查网络连通性

在安装 LoongCollector 之前,建议您在 Kubernetes 集群的工作节点(Worker Node)上验证与阿里云日志服务(SLS)服务接入点(Endpoint)的网络连通性。

  1. 查看SLS服务接入点(Endpoint):

    1. 登录日志服务控制台,在Project列表中,单击目标Project。

    2. 单击Project名称右侧的image进入项目概览页面。

    3. 在基础信息中可查看当前Project的地域及公网、内网的Endpoint,地域名称对应RegionID请参考RegionID

      地域代表云服务资源的物理数据中心所在的地理位置RegionID 是云服务地域的唯一标识符。
  2. 执行连通性测试:登录到将要安装LoongCollector组件的集群节点上,执行以下 curl 命令进行测试。请根据实际情况替换以下变量:

    • ${Project名称}:替换为实际的Project 名称。

    • ${SLS_ENDPOINT}:替换为上一步确定的Endpoint(例如:cn-beijing.log.aliyuncs.com)。

    curl https://${Project名称}.${SLS_ENDPOINT}
  3. 查看测试结果:返回类似信息{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5D****09"}},说明网络畅通。否则检查目标地址是否被拦截以及其他网络方面的检查(例如DNS配置、安全组等)。

    返回Error信息是因为访问链接缺少必要参数。当前测试仅验证网络连通性,未使用完整链接,因此在网络正常的情况下会显示Error的提示信息。

安装并配置kubectl

  1. 安装 kubectl:在需要管理集群的机器上安装kubectl,请确保该机器与目标 Kubernetes 集群网络连通。

  2. 获取 KubeConfig 文件:从目标 Kubernetes 集群获取 KubeConfig 文件。

  3. 配置KubeConfig:在安装了Kubectl的机器上配置 KubeConfig,将集群的kubeconfig文件内容添加到默认路径~/.kube/config文件中,若.cube不存在,请手动创建。

  4. 验证连通性:执行kubectl命令以验证集群的连通性,以查询命名空间为例:

    kubectl get namespace

    若返回命名空间列表,则表示配置成功。

选择合适的安装方式

请根据您的集群类型和需求,选择下表中对应的安装方式:

安装方式

适用场景

ACK集群安装(DaemonSet模式)

采集同阿里云账号、同地域下的 ACK 托管与专有集群日志。

自建集群安装(DaemonSet模式)

  • 跨阿里云账号或跨地域采集阿里云 ACK 集群日志。

  • 采集部署在自建 IDC 机房中的 Kubernetes 集群日志。

  • 采集部署在其他云服务商上的 Kubernetes 集群日志。

Sidecar模式安装

需要对特定业务应用进行日志采集,且有以下需求的场景:

  • 资源隔离:避免 DaemonSet 模式影响节点上其他 Pod。

  • 精细化采集:为每个应用单独配置采集源、过滤规则、输出目标等。

ACK集群安装(DaemonSet模式)

说明

目前,仅阿里云ACK托管与专有集群支持安装Lonngcollector,LoongCollectorLogtail不能同时存在。如果您当前正在使用logtail-ds,并希望升级到 LoongCollector,请先卸载logtail-ds再安装LoongCollector。

通过阿里云ACK容器服务控制台一键安装LoongCollector,默认将集群容器日志采集到同账号同地域的Project,如需跨账号或跨地域采集请参考自建集群安装(DaemonSet模式)

为已有ACK托管集群安装

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理

  3. 日志与监控页签中,找到loongcollector,单击安装

  4. 安装完成后,日志服务会自动在ACK所属地域下创建如下资源,您可登录日志服务控制台查看

    资源类型

    资源名称

    作用

    Project

    k8s-log-${cluster_id}

    资源管理单元,隔离不同业务日志。

    机器组

    k8s-group-${cluster_id}

    loongcollector-ds的机器组,主要用于日志采集场景。

    k8s-group-${cluster_id}-cluster

    loongcollector-cluster的机器组,主要用于指标采集场景。

    k8s-group-${cluster_id}-singleton

    单实例机器组,主要用于部分单实例采集配置。

    Logstore

    config-operation-log

    重要

    请勿删除此Logstore。

    用于存储LoongCollector组件中的alibaba-log-controller日志,其收费标准与普通Logstore完全相同,具体请参见按写入数据量计费模式计费项建议不要在此Logstore下创建采集配置。

新建ACK托管集群时安装

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 单击创建集群,在组件配置页面,勾选使用日志服务。支持创建新Project使用已有Project。

    本文只描述日志服务相关配置,关于更多配置项说明,请参见创建ACK托管集群
  3. 当您选择创建新Project时,日志服务会默认创建如下资源,您可登录日志服务控制台查看

    资源类型

    资源名称

    作用

    Project

    k8s-log-${cluster_id}

    资源管理单元,隔离不同业务日志。

    机器组

    k8s-group-${cluster_id}

    loongcollector-ds的机器组,主要用于日志采集场景。

    k8s-group-${cluster_id}-cluster

    loongcollector-cluster的机器组,主要用于指标采集场景。

    k8s-group-${cluster_id}-singleton

    单实例机器组,主要用于部分单实例采集配置。

    Logstore

    config-operation-log

    重要

    请勿删除此Logstore。

    用于存储LoongCollector组件中的alibaba-log-controller日志,其收费标准与普通Logstore完全相同,具体请参见按写入数据量计费模式计费项建议不要在此Logstore下创建采集配置。

自建集群安装(DaemonSet模式)

适用场景

  • 自建 IDC 机房中的 Kubernetes 集群

  • 部署在其他云厂商的 Kubernetes 集群

  • 跨账号或跨地域采集阿里云 ACK 集群容器日志

说明

请确保您的自建集群满足Kubernetes 1.6及以上版本。

操作指南

在确认满足前提条件后,您可参考如下步骤手动安装并配置LoongCollector。

  1. 下载并解压安装包:在安装并配置了kubectl的机器上,根据集群所在地域选择命令下载LoongCollector及其他依赖组件。

    #中国地域
    wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh
    
    #海外地域
    wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh
  2. 修改配置文件values.yaml:进入loongcollector-custom-k8s-package目录,修改配置文件./loongcollector/values.yaml

    参数说明

    values.yaml

    # ===================== 必需要补充的内容 =====================
    # 本集群要采集的Project名,例如 k8s-log-custom-sd89ehdq
    projectName: ""
    # Project所属地域,例如上海:cn-shanghai
    region: ""
    # Project所属主账号uid,请用引号包围,例如"123456789"
    aliUid: ""
    # 使用网络,可选参数:公网Internet,内网Intranet,默认使用公网
    net: Internet
    # 主账号或者子账号的AK,SK
    accessKeyID: ""
    accessKeySecret: ""
    # 自定义集群ID,命名只支持大小写,数字,短划线(-)。
    clusterID: ""
    
    # ...省略非必填参数...

    projectName String (必填)

    Project名称,LoongCollector将上传日志到该Project中。命名规则如下:

    • 项目名称仅支持小写字母、数字和连字符(-)。

    • 必须以小写字母开头,以小写字母和数字结尾。

    • 名称长度为3~63个字符。

    region String (必填)

    Project所属地域ID,请参考地域查看Project所在地域的ID。

    aliUid String (必填)

    Project所属的阿里云主账号ID

    net String (必填)

    日志数据传输使用的网络类型

    • Internet(默认值):公网。

    • Intranet:内网。

    accessKeyID  String (必填)

    Project所属账号的AccessKey ID。推荐使用RAM用户的AccessKey,并授予RAM用户AliyunLogFullAccess系统策略权限。RAM相关概念请参见RAM用户概览

    accessKeySecret String (必填)

    Project所属账号的AccessKey Secret。

    clusterID String (必填)

    自定义集群ID,命名只支持大小写字母、数字、短划线(-)。

    重要

    不同的Kubernetes集群,请勿配置相同的集群ID。

  3. 执行安装脚本:在loongcollector-custom-k8s-package目录下执行如下命令,安装LoongCollector及其他依赖组件。

    bash k8s-custom-install.sh install
  4. 验证安装结果:安装完成后,执行如下命令查看组件状态:

    # 检查Pod状态
    kubectl get po -n kube-system | grep loongcollector-ds

    返回结果示例:

    loongcollector-ds-gnmnh   1/1     Running   0    63s

    若组件未成功启动(非Running):

    1. 检查配置:请确认values.yaml配置项是否正确。

    2. 检查镜像:通过如下命令查看Events确认容器镜像是否成功拉取。

      kubectl describe pod loongcollector-ds -n kube-system
  5. 组件安装成功后,日志服务会自动创建如下资源,您可登录日志服务控制台查看

    资源类型

    资源名称

    作用

    Project

    values.yaml文件中自定义的projectName的值

    资源管理单元,隔离不同业务日志。

    机器组

    k8s-group-${cluster_id}

    日志采集节点集合。

    k8s-group-${cluster_id}-cluster

    loongcollector-cluster的机器组,主要用于指标采集场景。

    k8s-group-${cluster_id}-singleton

    单实例机器组,主要用于部分单实例采集配置。

    Logstore

    config-operation-log

    重要

    请不要删除该Logstore。

    用于存储LoongCollector组件中的alibaba-log-controller日志,其收费标准与普通Logstore完全相同,具体请参见按写入数据量计费模式计费项。建议不要在此Logstore下创建采集配置。

Sidecar模式安装

当您需要进行应用级别的、精细化的日志采集时,可以通过 Sidecar 模式安装LoongCollector,此模式将LoongCollector作为容器注入到您的业务 Pod 中。

  • 优点:资源隔离性好,配置灵活,对其他应用无影响。

  • 缺点:相比 DaemonSet 模式,需要手动修改应用的部署YAML 文件,配置和维护相对复杂。

操作步骤

在确认满足前提条件后,您可参考如下步骤安装并配置LoongCollector。

  1. 可选部署测试demo:如果您暂无合适的业务容器,或希望先快速验证采集功能,可以使用以下Deployment模板来快速部署一个专用的测试容器。

    test-demo-deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      annotations:
        deployment.kubernetes.io/revision: '1'
      labels:
        app: deployment-file
        cluster_label: CLUSTER-LABEL-A
      name: deployment-file
      namespace: default
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: deployment-file
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: deployment-file
            cluster_label: CLUSTER-LABEL-A
        spec:
          containers:
            - name: timestamp-test
              image: 'mirrors-ssl.aliyuncs.com/busybox:latest'
              args:
                - >-
                  while true; mkdir -p /root/log; do date '+%Y-%m-%d %H:%M:%S'
                  >>/root/log/timestamp.log; echo 1 >>/root/log/timestamp.log; echo
                  2 >>/root/log/timestamp.log; echo 3 >>/root/log/timestamp.log;
                  echo 4 >>/root/log/timestamp.log; echo 5
                  >>/root/log/timestamp.log; echo 6 >>/root/log/timestamp.log;
                  echo 7 >>/root/log/timestamp.log; echo 8
                  >>/root/log/timestamp.log; echo 9 >>/root/log/timestamp.log;
                  sleep 10; done
              command:
                - /bin/sh
                - '-c'
                - '--'
              env:
                - name: cluster_id
                  value: CLUSTER-A
              imagePullPolicy: IfNotPresent
              resources: {}
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
  2. 获取您当前应用的部署YAML:连接待采集容器日志的集群,通过如下命令导出需要采集日志的业务PodYAML文件;

    # 请将test-demo-deployment替换实际日志来源的容器名称
    kubectl get deploy test-demo-deployment -o yaml > current-config.yaml
  3. 修改 YAML 文件,注入 Sidecar 容器和共享卷:在YAML文件中参考如下配置示例及参数说明进行修改:

    关键参数说明

    注入Loongcollector容器所需YAML配置

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: your-app-deployment # 这是您的应用部署
    spec:
      # ... 您现有的其他 spec 配置 ...
      template:
        spec:
          containers:
            # ===================================================================
            # 步骤 1: 修改您现有的业务容器
            # 在您自己的应用容器定义下,找到或添加 volumeMounts 部分。
            # ===================================================================
            - name: your-business-app-container # <--- 这是您的业务容器
              image: your-app-image:latest
              # ... 您业务容器的其他配置 ...
              volumeMounts:
                # ... 您可能已有的其他挂载点 ...
                # --- Begin: 添加以下内容 ---
                - name: ${shared_volume_name}
                  mountPath: ${shared_volume_path} # 挂载共享存储卷到容器的日志目录
                - name: tasksite
                  mountPath: /tasksite # 与 Loongcollector容器通信的共享目录
                # --- End: 添加内容 ---
    
            # ===================================================================
            # 步骤 2: 新增 Loongcollector Sidecar 容器
            # 在 containers 列表的末尾,粘贴以下完整的 Sidecar 容器定义。
            # ===================================================================
            - name: loongcollector
              image: ${loongcollector_image}
              command: ["/bin/sh", "-c"]
              args:
                - >-
                  /etc/init.d/ilogtaild start;
                  sleep 10;
                  touch /tasksite/cornerstone;
                  until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
                  sleep 10;
                  /etc/init.d/ilogtaild stop;
              livenessProbe:
                exec:
                  command:
                    - /etc/init.d/ilogtaild
                    - status
                initialDelaySeconds: 30
                periodSeconds: 30
              env:
                # 设置时区。请根据kubernetes集群所在地域,配置时区,格式为"地区/城市"。
                # 如果没有正确配置时区,可能导致原始日志与处理日志的时间标签不匹配。
                - name: TZ
                  value: "${timezone}"
                - name: ALIYUN_LOGTAIL_USER_ID
                  value: "${your_aliyun_user_id}"
                - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
                  value: "${your_machine_group_user_defined_id}"
                - name: ALIYUN_LOGTAIL_CONFIG
                  value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"
                # 追加 Pod 环境信息作为日志标签
                - name: "ALIYUN_LOG_ENV_TAGS"
                  value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
                # 获取 Pod 和 Node 的信息
                - name: "_pod_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                - name: "_pod_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.podIP
                - name: "_namespace_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: "_node_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: "_node_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.hostIP
              volumeMounts:
                # Loongcollector 容器的日志目录挂载到共享存储卷
                - name: ${shared_volume_name}
                  mountPath: ${dir_containing_your_files}
                # 与业务容器交互的挂载点
                - name: tasksite
                  mountPath: /tasksite
    
          # ===================================================================
          # 步骤 3: 定义共享卷
          # 在 spec.template.spec 下,与 containers 同级的位置,添加 volumes 定义。
          # ===================================================================
          volumes:
            # 定义空的共享存储卷用于日志存储
            - name: ${shared_volume_name}
              emptyDir: {}
            # 定义存储卷用于容器间通信
            - name: tasksite
              emptyDir:
                medium: Memory

    ${timezone}

    容器时区,请参考支持时区进行配置。

    ${your_aliyun_user_id}

    日志服务所属账号的阿里云主账号ID。

    ${your_machine_group_user_defined_id}

    机器组的自定义标识,用于创建自定义机器组。

    重要

    请确保该标识在您的Project所在地域内唯一。

    ${your_region_config}

    请根据日志服务Project所在地域和网络访问类型填写,格式如下,以Project位于华东1(杭州)为例:

    • 阿里云内网访问时:该配置为cn-hangzhou

    • 公网访问时:该配置为cn-hangzhou-internet

    地域ID请参考地域进行替换。

    ${logtail_image}

    Loongcollector镜像地址,请将镜像地址中的${region-id}替换为集群所在的地域对应的RegionID

    镜像地址:

    aliyun-observability-release-registry.${region-id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun

    ${shared_volume_name}

    自定义设置卷的名称。

    重要

    volumeMounts节点下的name参数与volumes节点下的name参数需设置为一致,即确保Logtail容器和业务容器挂载相同的卷上。

    ${dir_containing_your_files}

    设置挂载路径,即容器待采集文本日志所在目录。

  4. 应用更新后的配置:执行如下命令,更新应用。

    kubectl apply -f current-config.yaml
  5. 验证Loongcollector是否安装成功:执行如下命令,检查新创建的 Pod,确保业务容器和 LoongCollector容器都处于 Running 状态。

    kubectl describe pod <YOUR-POD-NAME>

    LoongCollector容器状态为Running表示安装成功,正常运行。

    image

  6. 创建机器组

    1. 登录日志服务控制台,单击目标Project。

    2. 在左侧导航栏中,选择image资源 > 机器组,单击机器组右侧的机器组 > 创建机器组

    3. 创建机器组对话框中,配置如下参数,然后单击确定

      1. 设置机器组名称。

      2. 机器组标识:选择用户自定义标识

      3. 用户自定义标识:您在修改配置文件时定义的${your_machine_group_user_defined_id}的值。

    4. 创建完成后,在机器组列表,单击新建的机器组,在机器组配置 > 机器组状态区域,查看心跳状态。如果心跳为OK则表示创建成功。若心跳失败,请检查用户标识与用户自定义标识内容是否正确。

常见问题

ACK托管集群如何修改LoongCollector配置以实现跨账号或跨地域采集?

如果您通过阿里云ACK容器服务控制台安装了loongcollector,默认将采集集群容器日志到同账号的日志服务Project下。此时您可以通过以下两种方式实现集群容器日志的跨账号或跨地域采集:

方法一:卸载后重新安装。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理

  3. 日志与监控页签中,找到loongcollector,单击卸载

  4. 参考自建集群安装(DaemonSet模式)重新安装即可。

方法二:更新Helm配置,重新部署loongcollector。

  1. 登录容器服务管理控制台,在左侧导航栏,选择应用 > Helm

  2. Helm应用管理页面,找到loongcollector,单击其右侧操作列中的更新按钮,进入更新发布页面,参考如下表格修改相关配置,其他配置保持不变,单击确定

    集群与Project

    需要修改的配置

    同账号,不同地域

    region:Project所在地域对应的RegionID

    net:Internet,不同地域之间无法通过内网互通,请使用公网传输数据。

    不同账号,同地域

    aliUid:日志服务所属的主账号ID,多个账号之间使用半角逗号(,)相隔。

    net:Intranet,同地域建议优先使用内网传输数据。

    不同账号,不同地域

    aliUid:日志服务所属的主账号ID,多个账号之间使用半角逗号(,)相隔。

    region:Project所在地域的RegionID

    net:Internet,不同地域之间无法通过内网互通,请使用公网传输数据。

  3. 创建机器组

    1. 登录日志服务控制台,单击目标Project。

    2. 在左侧导航栏中,选择image资源 > 机器组,单击机器组右侧的机器组 > 创建机器组

    3. 创建机器组对话框中,配置如下参数,然后单击确定

      1. 设置机器组名称。

      2. 机器组标识:选择用户自定义标识

      3. 用户自定义标识:k8s-group-${cluster_id},请将${cluster_id}替换集群实际的clusterID

    4. 创建完成后,在机器组列表,单击新建的机器组,在机器组配置 > 机器组状态区域,查看心跳状态。如果心跳为OK则表示创建成功。若心跳失败,请检查用户标识与用户自定义标识内容是否正确。

  4. 修改完成后,单击 更新 使配置生效。


如何采集阿里云ACK Edge、ACK One、ACS、ACK Serverless 集群容器日志?

后续步骤

安装完LoongCollector后,您可以查看Kubernetes集群容器日志采集须知了解Kubernetes容器日志采集的核心原理、关键流程、选型建议和最佳实践,并选择合适的方式创建采集配置:

相关参考

地域

  1. 登录日志服务控制台,在Project列表中,单击目标Project。

  2. 单击Project名称右侧的image进入项目概览页面。

  3. 在基础信息中可查看当前Project的地域名称,地域名称对应RegionID请参考下表。

    地域代表云服务资源的物理数据中心所在的地理位置RegionID 是云服务地域的唯一标识符。

    地域名称

    RegionID

    华北1(青岛)

    cn-qingdao

    华北2(北京)

    cn-beijing

    华北3(张家口)

    cn-zhangjiakou

    华北5(呼和浩特)

    cn-huhehaote

    华北6(乌兰察布)

    cn-wulanchabu

    华东1(杭州)

    cn-hangzhou

    华东2(上海)

    cn-shanghai

    华东5(南京-本地地域)

    cn-nanjing

    华东6(福州-本地地域)

    cn-fuzhou

    华南1(深圳)

    cn-shenzhen

    华南2(河源)

    cn-heyuan

    华南3(广州)

    cn-guangzhou

    菲律宾(马尼拉)

    ap-southeast-6

    韩国(首尔)

    ap-northeast-2

    马来西亚(吉隆坡)

    ap-southeast-3

    日本(东京)

    ap-northeast-1

    泰国(曼谷)

    ap-southeast-7

    西南1(成都)

    cn-chengdu

    新加坡

    ap-southeast-1

    印度尼西亚(雅加达)

    ap-southeast-5

    中国香港

    cn-hongkong

    德国(法兰克福)

    eu-central-1

    美国(弗吉尼亚)

    us-east-1

    美国(硅谷)

    us-west-1

    英国(伦敦)

    eu-west-1

    阿联酋(迪拜)

    me-east-1

    沙特(利雅得)

    me-central-1

Loongcollector网络传输类型

服务入口(Endpoint)表示日志服务对外服务的访问域名,是访问一个项目(Project)及其内部日志数据的URL,与Project所在的地域相关。日志服务提供私网域名、公网域名与传输加速域名。可通过如下操作查看域名:

  1. 登录日志服务控制台,在Project列表中,单击目标Project。

  2. 单击Project名称右侧的image进入项目概览页面。

  3. 在访问域名中可查看当前Project的域名信息,不同的网络传输方式对应不同的域名。合适的网络传输方式有利于日志数据的传输更快速稳定。

网络类型

对应域名类型

描述

适用场景

阿里云内网

私网域名

阿里云内网为千兆共享网络,日志数据通过阿里云内网传输比公网传输更快速、稳定,内网包括VPC和经典网络。

ECS实例和日志服务Project属于同一地域或自建服务器打通内网的情况。

说明

推荐在ECS所在地域创建日志服务Project,通过阿里云内网采集ECS中日志,不消耗公网带宽。

公网

公网域名

使用公网传输日志数据,不仅会受到网络带宽的限制,还可能会因网络抖动、延迟、丢包等影响数据采集的速度和稳定性。

以下两种情况,可以选择公网传输数据。

  • ECS实例和日志服务Project属于不同地域。

  • 服务器为其他云厂商服务器或自建IDC。

传输加速

传输加速域名

利用阿里云CDN边缘节点进行日志采集加速,相对公网采集在网络延迟、稳定性上具有很大优势,但流量需额外计费。 

如果业务服务器、日志服务Project分别属于国内地域和国外地域,使用公网传输数据可能会出现网络延迟高、传输不稳定等问题,您可以选择传输加速传输数据。更多信息,请参见传输加速

Loongcollector运行模式

特性

DaemonSet模式

Sidecar模式

部署方式

每个节点部署1个采集容器

每个Pod部署1个采集容器

资源消耗

低(共享节点资源)

较高(每个Pod单独占用)

适用场景

节点级统一日志采集

特定应用独立隔离采集

隔离性

节点级共享

Pod级独立

DaemonSet模式原理

在集群的每个Node节点上部署一个 LoongCollector,负责采集该节点上所有容器的日志;特点:运维简单、资源占用少、配置方式灵活;但是隔离性较弱。

  • DaemonSet模式中,Kubernetes集群确保每个节点(Node)只运行一个LoongCollector容器,用于采集当前节点内所有容器(Containers)的日志。

  • 当新节点加入集群时,Kubernetes集群会自动在新节点上创建LoongCollector容器;当节点退出集群时,Kubernetes集群会自动销毁当前节点上的LoongCollector容器。通过DaemonSet的自动扩缩容机制以及标识型机器组,无需手动管理LoongCollector实例。

image

Sidecar模式原理

每个 Pod 中伴随业务容器注入一个 LoongCollector Sidecar容器,并将业务容器的日志目录通过K8sVolume机制(如emptyDir、hostPath、PVC等)挂载为共享卷。这样,日志文件会同时出现在业务容器和Sidecar容器的挂载路径下,LoongCollector就能直接读取这些日志文件;特点:多租户隔离性好、性能好;但资源占用较多,配置与维护较复杂。

  • Sidecar模式中,每个容器组(Pod)运行一个LoongCollector容器,用于采集当前容器组(Pod)所有容器(Containers)的日志。不同Pod的日志采集相互隔离。

  • 为了采集同一Pod中其他容器的日志文件,需要通过共享存储卷的方式来完成,需要将同一份存储卷分别挂载到业务容器和LoongCollector容器。

  • 当一个节点上的 Pod 数据量异常庞大,远超出 Daemonset 的采集性能上限时,Sidecar模式允许我们为LoongCollector分配特定的资源,从而提升其日志采集的性能和稳定性。

  • 在 Serverless 容器中缺乏节点的概念,传统的 Daemonset 部署模式无法应用。此时,SideCar 模式能够有效地与无服务器架构结合,保证日志采集过程的灵活性和适应性。

image