LoongCollector管理(Kubernetes)

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

完成LoongCollector安装后,您可以参考本文对其进行配置修改、升级和卸载等生命周期管理操作。

核心组件

所属命名空间(NameSpace)

名称

类型

功能

kube-system

loongcollector-operator

Deployment

中心控制器,负责监听CR资源,自动化管理,SLS 资源创建。

kube-system

loongcollector-ds

DaemonSet

运行在各节点上的采集代理,负责执行日志采集与发送。

loongcollector-operator

资源类型:Deployment,作为单实例控制器运行,负责管理整个日志采集系统的配置和协调工作。

核心职责:

  • 集中化配置管理:监听自定义资源的创建、更新和删除。

  • 动态配置下发:将 CR 规则转化为具体配置并发送到日志服务。

loongcollector-ds

资源类型:DaemonSet,集群中每个节点上都会自动部署并运行一个loongcollector-ds Pod。当新节点加入集群时,会自动部署,当节点离开时,Pod会被清理。

核心职责:

  • 日志采集: 通过挂载主机目录,可以读取节点上的容器日志和主机文件。

  • 状态持久化: 将采集进度(checkpoint)保存在节点的主机路径上,避免因 Pod 重启、漂移等造成日志丢失或重复。

  • 配置热加载: 自动从日志服务拉取并应用采集配置,无需重启 Pod。

ConfigMap配置

所属命名空间(NameSpace)

名称

功能

kube-system

alibaba-log-configuration

存储连接 SLS 的基础元数据。

kube-system

loongcollector-config

LoongCollector的核心连接配置文件,定义了配置服务和数据上传的端点。

跨账号或跨地域采集ACK集群日志

重要

暂不支持跨账号使用CR管理SLS资源。

通过阿里云容器服务ACK控制台安装的LoongCollector,默认采集集群容器日志到同账号同地域的日志服务Project中。如果您需要跨阿里云账号或跨地域采集,请参考如下步骤进行修改:

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

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

    集群与Project

    需要修改的配置

    同账号,不同地域

    region:Project所在地域对应的RegionID

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

    不同账号,同地域

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

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

    不同账号,不同地域

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

    region:Project所在地域的RegionID

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

修改网络传输方式(公网/内网)

ACK集群

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

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

    • Internet:公网

    • Intranet:内网

  3. 在左侧导航栏,单击配置管理 > 配置项,在kube-system命名空间下,单击alibaba-log-configuration,查看log-endpoint的值是否更新:

    • 如果您配置的是Internet公网传输,则log-endpoint对应的值为${regionId}.log.aliyuncs.com

    • 如果您配置的是Intranet内网传输,则log-endpoint对应的值为${regionId}-intranet.log.aliyuncs.com

自建集群

  1. 修改配置文件:登录到存放LoongCollector安装包的服务器,进入安装目录loongcollector-custom-k8s-package,修改配置文件./loongcollector/values.yaml中的ne参数,根据您的需求进行修改:

    • Internet:公网

    • Intranet:内网

  2. 应用更新:保存退出后执行如下命令更新LoonCollector:

    bash k8s-custom-install.sh update
  3. 验证生效:执行如下命令,验证配置修改生效:

    kubectl get configmap alibaba-log-configuration  -n kube-system -o yaml

    确认log-endpoint字段是否更新:

    • 如果您配置的是Internet公网传输,则log-endpoint对应的值为${regionId}.log.aliyuncs.com

    • 如果您配置的是Intranet内网传输,则log-endpoint对应的值为${regionId}-intranet.log.aliyuncs.com

配置LoongCollector采集加速

  1. 开启Project的传输加速域名

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

    2. 单击Project名称右侧的image进入项目概览页面,开启传输加速域名,单击确认修改

  2. 验证网络联通性:登录到已安装LoongCollector组件的集群节点上,使用以下命令验证传输加速的网络连通性,传输加速功能仅对已开通传输加速的 Project 有效。

    curl ${your-project}.log-global.aliyuncs.com

    返回以下结果,则表示网络连通正常:

    {"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"XXXXXXXXXXXXXXXXXXX"}}
    返回Error信息是因为访问链接缺少必要参数。当前测试仅验证网络连通性,未使用完整链接,因此在网络正常的情况下会显示Error的提示信息。
  3. 修改LoongCollector配置

    ACK集群

    1. 登录容器服务管理控制台,在集群列表页面单击目标集群名称。

    2. 在左侧导航栏,单击工作负载 > 守护进程集,在kube-system命令空间下,按关键字loongcollector-ds进行搜索,单击查询结果中loongcollector-ds名称。

    3. loongcollector-ds基本信息页面,单击右上角的编辑,在环境变量区域,配置ALICLOUD_LOG_ENDPOINT值为log-global.aliyuncs.com

    4. 配置完成,单击更新

    自建集群

    1. 在已安装并配置kubectl工具的服务器上,执行如下命令修改loongcollector-config

      kubectl edit configmap loongcollector-config -n kube-system
    2. data_servers参数中的endpoint_list一行替换为log-global.aliyuncs.com

      # $cat /usr/local/ilogtail/ilogtail_config.json
      
      {
          "primary_region" : "cn-beijing",
          "config_servers" :
          [
              "http://logtail.cn-beijing.log.aliyuncs.com"
          ],
          "data_servers" :
          [
              {
                  "region" : "cn-beijing",
                  "endpoint_list": [
                      "log-global.aliyuncs.com"
                  ]
              }
          ]
      }                                                                                                                                                                                   1,1           All
    3. 滚动重启loongcollector-ds,使配置生效:

      kubectl rollout restart daemonset loongcollector-ds -n kube-system

升级LoongCollector

若您是在阿里云容器服务ACK中安装的loongcollector,请参考如下步骤进行组件升级:

说明

自建集群安装的LoongCollector暂不支持直接升级,请参考LoongCollector安装文档重新安装LoongCollector组件,即可完成自动升级。

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

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

  3. 日志与监控页签中,找到 loongcollector,然后单击升级

  4. 升级组件对话框中,单击确定

卸载LoongCollector

ACK集群

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

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

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

  4. 根据界面提示单击确定,完成卸载。

自建集群

  1. 执行如下命令,卸载LoongCollector及其相关资源:

    重要

    此命令默认不会删除由 Chart 安装的 CRD资源。

    helm uninstall loongcollector -n kube-system
  2. 验证与 LoongCollector 相关的动态资源已经被清理干净:
    kubectl get pods -A | grep loongcollector

    若没有任何输出,表示卸载成功。

查看LoongCollector状态

运行如下命令,查看LoongCollector状态。

kubectl get po -n kube-system | grep loongcollector-ds

返回结果示例如下:

loongcollector-ds-7r8w9                                    1/1     Running     0          3h13m
loongcollector-ds-gnbwp                                    1/1     Running     0          3h12m
loongcollector-ds-wmjnt                                    1/1     Running     0          3h13m

查看LoongCollector版本

LoongCollector将版本信息存储在/usr/local/ilogtail/app_info.json文件的loongcollector_version字段中。您可以通过以下命令查看LoongCollector版本信息。

loongcollector-ds-7r8w9Pod名称,请根据实际名称替换。

kubectl exec loongcollector-ds-7r8w9 -n kube-system cat /usr/local/ilogtail/app_info.json

返回结果示例如下:

{
        "compiler" : "GCC 9.3.1",
        "host_id" : "i-2ze40dgx0trvod9bky2u",
        "hostname" : "cn-hangzhou.172.*.*.253",
        "instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_172.20.4.2_1517810940",
        "ip" : "172.23.125.253",
        "loongcollector_version" : "3.0.12",
        "os" : "Linux; 5.10.134-18.al8.x86_64; #1 SMP Fri Dec 13 16:56:53 CST 2024; x86_64",
        "update_time" : "2025-06-20 03:31:54"
}

参数说明

loongcollector-ds环境变量

重要

如果您通过环境变量和配置文件修改了LoongCollector启动参数,以环境变量为准。

LOONG_REGION String

日志服务Project所属地域网络传输类型

网络类型包括:

  • internet:公网

  • intranet:阿里云内网

loongcollector-ds.yaml

# Source: loongcollector/templates/loongcollector-ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: loongcollector-ds
  namespace: kube-system
  labels:
    k8s-app: loongcollector-ds
spec:
  selector:
    matchLabels:
      k8s-app: loongcollector-ds
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 30%
    type: RollingUpdate
  template:
    metadata:
      labels:
        k8s-app: loongcollector-ds
        kubernetes.io/cluster-service: "true"
    spec:
      serviceAccountName: loongcollector-ds
      affinity: 
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: NotIn
                values:
                - virtual-kubelet
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchLabels:
                k8s-app: logtail-ds
            topologyKey: kubernetes.io/hostname
      nodeSelector:
        beta.kubernetes.io/os: linux
      
      containers:
      - name: loongcollector
        imagePullPolicy: Always
        image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/loongcollector:v3.1.1.0-20fa5eb-aliyun         
        resources:
          limits:
            cpu: "2"
            memory: "2048Mi"
          requests:
            cpu: 100m
            memory: 256Mi
        livenessProbe:
          httpGet:
            path: /liveness
            port: 7953
            scheme: HTTP
          initialDelaySeconds: 30
          periodSeconds: 60
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /liveness
            port: 7953
            scheme: HTTP
          initialDelaySeconds: 35
          periodSeconds: 60
          successThreshold: 1
          timeoutSeconds: 1

        securityContext:
          allowPrivilegeEscalation: false
          seccompProfile:
            type: RuntimeDefault
          privileged: false
          procMount: Default
        env:
          - name: LOONG_REGION
            value: cn-beijing-internet
          - name: HTTP_PROBE_PORT
            value: "7953"
          - name: "ALIYUN_LOGTAIL_USER_ID"
            value: "15508*******1544"
          - name: "ALICLOUD_LOG_ECS_FLAG"
            value: "true"
          - name: "ALICLOUD_LOG_K8S_FLAG"
            value: "true"
          - name: "ALICLOUD_LOG_DEFAULT_PROJECT"
            value: "yilu-sls-0811"
          - name: "ALICLOUD_LOG_ENDPOINT"
            value: "cn-beijing.log.aliyuncs.com"
          - name: "ALICLOUD_LOG_DEFAULT_MACHINE_GROUP"
            value: "k8s-group-c63e2dea*****************8343e81e"
          - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
            value: "$(ALICLOUD_LOG_DEFAULT_MACHINE_GROUP),"
          - name: "ALIYUN_LOGTAIL_CONFIG"
            value: "/usr/local/ilogtail/ilogtail_config.json"
          - name: "_node_name_"
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
          - name: "_node_ip_"
            valueFrom:
              fieldRef:
                fieldPath: status.hostIP
          - name: working_ip
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: status.hostIP
          - name: working_hostname
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.nodeName
          - name: _cluster_id_
            value: "c63e2dea*****************8343e81e"
          # resource limit for logtail self process
          - name: "LOONG_CPU_USAGE_LIMIT"
            value: "2"
          - name: "LOONG_MEM_USAGE_LIMIT"
            value: "2048"
          - name: "ALICLOUD_LOG_DOCKER_ENV_CONFIG"
            value: "true"
          - name: LOONG_MAX_BYTES_PER_SEC
            value: "209715200"
          - name: LOONG_SEND_REQUEST_CONCURRENCY
            value: "15"
          - name: LOONG_PROCESS_THREAD_COUNT
            value: "1"
          - name: ALIYUN_LOG_ENV_TAGS
            value: "_node_name_|_node_ip_|_cluster_id_"
          - name: LOONG_USER_CONFIG_FILE_PATH
            value: "/etc/ilogtail/checkpoint/user_log_config.json"
          - name: LOONG_DOCKER_FILE_CACHE_PATH
            value: "/etc/ilogtail/checkpoint/docker_path_config.json"
          - name: LOONG_CHECK_POINT_FILENAME
            value: "/etc/ilogtail/checkpoint/logtail_check_point"
          - name: LOONG_CHECK_POINT_DUMP_INTERVAL
            value: "60"
          - name: LOONG_BUFFER_FILE_PATH
            value: "/etc/ilogtail/checkpoint"
        volumeMounts:
        - name: run
          mountPath: /var/run/
        - name: root
          mountPath: /logtail_host
          readOnly: true
          mountPropagation: HostToContainer
        - mountPath:  /etc/ilogtail/checkpoint
          name: checkpoint
        - mountPath: /etc/ilogtail/config
          name: pipelineconfig
        - mountPath: /etc/ilogtail/instance_config
          name: instanceconfig
        - mountPath: /usr/local/ilogtail/ilogtail_config.json
          name: loongcollector-config
          subPath: ilogtail_config.json
        - mountPath: /run/nscd
          name: empty
        - name: addon-token
          mountPath: "/var/addon"
          readOnly: true
      terminationGracePeriodSeconds: 30
      tolerations:
      - operator: "Exists"
      dnsPolicy: "ClusterFirstWithHostNet"
      priorityClassName: system-cluster-critical
      volumes:
      - name: run
        hostPath:
          path: /var/run/
      - name: root
        hostPath:
          path: /
      - name: pipelineconfig
        hostPath:
          path: /var/lib/kube-system-logtail-ds/config
          type: DirectoryOrCreate
      - name: instanceconfig
        hostPath:
          path: /var/lib/kube-system-logtail-ds/instance_config
          type: DirectoryOrCreate
      - name: checkpoint
        hostPath:
          path: /var/lib/kube-system-logtail-ds/checkpoint
          type: DirectoryOrCreate
      - name: loongcollector-config
        configMap:
          defaultMode: 420
          name: loongcollector-config
      - name: empty
        emptyDir: {}
      - name: addon-token
        secret:
          secretName: addon.log.token
          optional: true
          items:
          - key: addon.token.config
            path: token-config

HTTP_PROBE_PORT integer

健康检查端口,默认为7953。

ALIYUN_LOGTAIL_USER_ID String

用户标识,配置阿里云主账号ID,标识该账号有权限采集集群容器日志。

ALICLOUD_LOG_ECS_FLAG boolean

是否在阿里云ECS环境中运行。

  • true:运行在阿里云ECS服务器上。

  • false:运行在非阿里云ECS服务器上。

ALICLOUD_LOG_K8S_FLAG boolean

是否在Kubernetes环境中运行。

  • true:运行在Kubernetes环境。

  • false:运行在非kubernetes环境。

ALICLOUD_LOG_DEFAULT_PROJECT String

默认的日志服务Project。

ALICLOUD_LOG_ENDPOINT String

日志服务访问端点。

ALICLOUD_LOG_DEFAULT_MACHINE_GROUP String

默认的机器组名称。

ALIYUN_LOGTAIL_USER_DEFINED_ID String

用户自定义标识。创建自定义标识机器组时需要与该环境变量的值保持一致。

ALIYUN_LOGTAIL_CONFIG String

启动参数配置文件路径,文件类型为JSON,详细信息请参考启动参数配置文件

ALIYUN_LOG_ENV_TAGS String

指定要自动注入日志的元数据标签,与环境变量_node_name,_node_ip_ ,_cluster_id_组合使用。

_node_name_ String

Pod所在的节点名称。

_node_ip_ String

Pod所在节点的IP地址。

_cluster_id_ integer

Kubernetes集群的唯一ID。

working_ip String

loongcollector上报心跳、自监控数据时的IP地址,与_node_ip_值相同。

working_hostname String

loongcollector上报心跳、自监控数据时所在节点名称,与_node_name_的值相同。

LOONG_CPU_USAGE_LIMIT double

CPU使用阈值,以单核计算。

取值范围:0.1~当前机器CPU核心数。

警告

该项为软限制,实际占用的内存可能超过限制值,超限5分钟后将触发熔断保护自动重启。

LOONG_MEM_USAGE_LIMIT integer

内存使用阈值,默认值为2048。取值范围:128 MB ~ 8192 MB,采集速率、监控目录和文件数量、发送阻塞程度与该参数有关。更多请参见Logtail限制说明

警告

该项为软限制,实际占用的内存可能超过限制值,超限5分钟后将触发熔断保护自动重启。

ALICLOUD_LOG_DOCKER_ENV_CONFIG boolean

是否允许通过容器环境变量创建采集配置。

  • true:允许通过环境变量创建采集配置。

  • false:不能通过环境变量创建采集配置。

LOONG_MAX_BYTES_PER_SEC integer

每秒钟发送原始数据的流量限制,默认值为20971520 Byte/s。取值范围:1024 Byte/s ~ 52428800 Byte/s。

重要

设置的值超过20971520 Byte/s(20MB/s),表示不限速。

例如设置为2097152,表示发送数据的速率为2 MB/s。

LOONG_SEND_REQUEST_CONCURRENCY integer

异步并发的个数,取值范围:1 ~ 50。

如果写入TPS很高,可以设置更高的异步并发个数。可以按照一个并发支持0.5 MB/s~1 MB/s网络吞吐来计算,实际根据网络延时而定。

LOONG_PROCESS_THREAD_COUNT integer

处理数据的线程数,默认值为1, 取值范围:1~64。

一般情况下,可以处理极简模式下24 MB/s的数据写入或完整正则模式12 MB/s的数据写入。默认情况下无需调整该参数取值。

LOONG_USER_CONFIG_FILE_PATH String

LoongCollector采集配置文件,记录LoongCollector日志服务获取的采集配置信息,文件类型为JSON,每次Logtail采集配置更新时会同步更新该文件。可通过此文件确认采集配置是否已经下发到服务器。若采集配置文件存在,且内容与日志服务上的采集配置一致,表示采集配置已下发。详细信息请参考采集配置文件

重要

除手动配置AccessKey信息、数据库密码等敏感信息外,不建议修改该文件。

LOONG_DOCKER_FILE_CACHE_PATH

容器路径映射文件,用于记录容器文件和宿主机文件的路径映射关系,文件类型为JSON。详细信息请参考容器路径映射文件

说明

docker_path_config.json文件为记录文件,任何修改操作均不会生效。删除后会自动创建,不影响业务的正常运行。

LOONG_CHECK_POINT_FILENAME String

CheckPoint文件保存路径。

LOONG_CHECK_POINT_DUMP_INTERVAL integer

更新Checkpoint文件的周期,单位:秒。

LOONG_BUFFER_FILE_PATH String

缓存文件存放目录。

alibaba-log-configuration

log-project String

日志服务Project名称,Project命名规则如下:

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

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

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

alibaba-log-configuration.yaml

# Source: loongcollector/templates/legacy/alicloud-log-configuration.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: alibaba-log-configuration
  namespace: 
  labels:
    logtail-deployment: v2
data:
    log-project: "your-project-name"
    log-endpoint: "cn-beijing.log.aliyuncs.com"    
    log-machine-group: "k8s-group-c63e2*********************8343e81e"
    log-ali-uid: "1550********1544"
    log-config-path: "/etc/ilogtail/conf/cn-beijing/ilogtail_config.json"

log-endpoint String

日志服务SLS服务接入点。

log-machine-group String

机器组名称,机器组命名规则如下:

  • 名称Project内唯一。

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

  • 只能包含小写字母、数字、连字符(-)和下划线(_),长度为3~128字符。

log-ali-uid integer

阿里云主账号ID,标识该账号有权限采集集群容器日志。

log-config-path String

LoongCollector配置文件路径。

loongcollector-config

primary_region String

日志服务Project所在地域对应的RegionID

loongcollector-config.yaml

# Source: loongcollector/templates/loongcollector-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:  
  name: loongcollector-config
  namespace: kube-system
data:
  ilogtail_config.json: |
    {
        "primary_region" : "cn-beijing",
        "config_servers" :
        [
            "http://logtail.cn-beijing.log.aliyuncs.com"
        ],
        "data_servers" :
        [
            {
                "region" : "cn-beijing",
                "endpoint_list": [
                    "http://cn-beijing.log.aliyuncs.com"
                ]
            }
        ]
    }

config_servers String

配置服务端点,LoongCollector从此端点获取采集配置。

data_servers

数据上传端点,LoongCollector采集日志的数据接收端。

region

数据接收端所在的地域

endpoint_list

数据接收端的服务端点。

后续步骤

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