iLogtail 是阿里云自研的轻量级高性能日志采集 Agent,现已开源并更名为 LoongCollector,广泛用于服务器、容器、K8s 等环境,日处理数十 PB 数据,支撑阿里双 11 等核心场景。该文章分为核心概念、架构、安装配置、核心功能、实战与常见问题。


一、iLogtail 核心认知

1. 是什么

iLogtail(现 LoongCollector)是阿里云日志服务(SLS)的可观测数据采集器,负责采集日志、指标、链路追踪(Trace),并支持过滤、解析、聚合后投递到 SLS、Kafka等后端。

2. 核心优势
  • 轻量高性能:C++ 核心,资源占用极低,比 Filebeat 等快 5–20 倍。

  • 全场景覆盖:主机、容器、K8s、嵌入式;支持文件、Stdout、Syslog、OpenTelemetry 等输入。

  • 稳定可靠:本地缓存、断点续传、流量控制,网络波动不丢数据。

  • 插件化扩展:输入 / 处理 / 输出全插件,支持自定义开发。

  • 远程集中管理:控制台一键下发配置,支持百万级节点运维。

3. 发展简史
  • 2013:诞生于阿里飞天 5K,用于大规模日志统一采集。

  • 2015:支撑阿里上云,增强稳定性与容器支持。

  • 2023:开源,更名 LoongCollector,兼容旧版配置。

  • 2024:发布 2.0,支持流水线化配置、更丰富的插件生态。


二、架构与工作原理

1. 整体架构

采用模块化流水线设计:输入(input)→ 处理(process)→ 输出(output)

  • 输入插件:文件、Docker Stdout、K8s 日志、Syslog、HTTP、OTel 等。

  • 处理插件:正则解析、JSON 提取、字段过滤、脱敏、聚合、脚本处理。

  • 输出插件:阿里云 SLS、Kafka、Elasticsearch、Flink、文件、HTTP。

2. 采集流程(以文件日志为例)
  1. 监听文件:通过 inotify 监听日志文件新增 / 滚动,实时读取增量数据。

  2. 数据处理:按配置解析(如 JSON / 正则)、过滤、脱敏、添加元数据(主机名、IP、时间)。

  3. 本地缓存:网络异常时,数据缓存本地磁盘,恢复后续传,防止丢失。

  4. 批量投递:异步批量发送到后端(如 SLS),提升吞吐、降低延迟。

3. K8s 部署模式
  • DaemonSet(推荐):每节点部署一个,采集全节点容器日志;运维简单、资源省。

  • Sidecar:每个 Pod 内部署,隔离性好、适合多租户;资源占用高。

  • Deployment:全局部署一个,适合 PVC 挂载日志目录场景。


三、安装与部署(Linux 主流)

1. 环境要求
  • 系统:Linux(CentOS/RHEL 7+、Ubuntu 16.04+)

  • 架构:x86_64、ARM64

  • 权限:root 或 sudo

  • 网络:能访问 SLS 内网 / 公网 Endpoint

2. 一键安装(推荐,阿里云 ECS)
# 替换 <region> 为你的地域(如 cn-hangzhou)
wget http://logtail-release-<region>.oss-<region>-internal.aliyuncs.com/linux64/logtail.sh -O logtail.sh
chmod 755 logtail.sh
sudo ./logtail.sh install <region>
3. 手动安装(通用,含非阿里云机器)
# 下载(以 2.0 最新版为例,可替换为最新包)
wget https://loongcollector-community-edition.oss-cn-shanghai.aliyuncs.com/2.0.0/loongcollector-2.0.0.linux-amd64.tar.gz

# 解压
tar -zxvf loongcollector-2.0.0.linux-amd64.tar.gz
cd loongcollector-2.0.0

# 配置系统参数(指定 SLS 项目/Endpoint/密钥)
vi conf/instance_config/local/loongcollector_config.json

配置文件核心内容:

{
  "data_server_list": [
    {"endpoint": "cn-hangzhou.log.aliyuncs.com", "project": "your-project"}
  ],
  "access_key_id": "your-ak",
  "access_key_secret": "your-sk"
}
4. 启停命令
# 启动
sudo /etc/init.d/ilogtaild start

# 停止
sudo /etc/init.d/ilogtaild stop

# 重启
sudo /etc/init.d/ilogtaild restart

# 状态
sudo /etc/init.d/ilogtaild status
5. 容器部署(Docker)
# 拉取镜像
docker pull sls-registry.cn-beijing.cr.aliyuncs.com/sls/ilogtail:2.0.0

# 运行
docker run -d \
  -v /var/log:/var/log \
  -v /etc/ilogtail:/etc/ilogtail \
  --name ilogtail \
  sls-registry.cn-beijing.cr.aliyuncs.com/sls/ilogtail:2.0.0

四、核心配置详解

1. 配置文件结构(2.0 流水线模式)

路径:conf/pipeline_config/local/*.json

{
  "pipeline": {
    "inputs": [
      {
        "type": "file",
        "path": "/var/log/nginx/*.log",
        "read_from_head": false
      }
    ],
    "processors": [
      {
        "type": "regex",
        "pattern": "(\\S+) (\\S+) (\\S+) \\[(\\S+)\\] \"(\\S+) (\\S+) (\\S+)\" (\\d+) (\\d+)",
        "keys": ["ip", "uid", "time", "method", "url", "status", "size"]
      }
    ],
    "outputs": [
      {
        "type": "sls",
        "project": "your-project",
        "logstore": "nginx-log",
        "topic": "nginx"
      }
    ]
  }
}
2. 常用输入配置
  • 文件日志

    {"type": "file", "path": "/var/log/*.log", "read_from_head": false}
    • Docker Stdout

      {"type": "docker", "container_id": "all", "stdout": true, "stderr": true}
      • K8s 日志

        {"type": "k8s", "namespace": "default", "pod_name": "web-*"}
        3. 常用处理插件
        • JSON 解析{"type": "json", "source": "content"}

        • 正则提取:如上面 Nginx 示例

        • 字段过滤

          {"type": "filter", "condition": "status == 200"}
          • 脱敏

            {"type": "desensitize", "field": "phone", "pattern": "(\\d{3})(\\d{4})(\\d{4})", "replace": "$1****$3"}

            五、实战:采集 Nginx 日志到 SLS

            1. 准备工作
            • 阿里云账号,创建 SLS Project(如 log-demo)和 Logstore(如 nginx-log

            • 服务器安装 Nginx,日志路径 /var/log/nginx/access.log

            • 服务器安装 iLogtail,配置好 AK/SK/Endpoint

            2. 编写采集配置

            文件:conf/pipeline_config/local/nginx.json

            {
              "pipeline": {
                "inputs": [
                  {
                    "type": "file",
                    "path": "/var/log/nginx/access.log",
                    "read_from_head": false,
                    "max_file_size": "100MB"
                  }
                ],
                "processors": [
                  {
                    "type": "regex",
                    "pattern": "^(\\S+) \\S+ \\S+ \\[(\\S+)\\] \"(\\S+) (\\S+) \\S+\" (\\d+) (\\d+) \"(\\S+)\" \"(\\S+)\"$",
                    "keys": ["client_ip", "time", "method", "url", "status", "body_size", "referer", "user_agent"]
                  },
                  {
                    "type": "filter",
                    "condition": "status != 404"
                  }
                ],
                "outputs": [
                  {
                    "type": "sls",
                    "project": "log-demo",
                    "logstore": "nginx-log",
                    "topic": "nginx-access"
                  }
                ]
              }
            }
            3. 重启生效
            sudo /etc/init.d/ilogtaild restart
            4. 控制台查看数据
            1. 登录阿里云 → 日志服务 → 进入 log-demo 项目

            2. 进入 nginx-log Logstore → 查询分析

            3. 选择时间范围,即可看到结构化的 Nginx 日志


            六、常见问题与避坑

            1. 日志采集不到
            • 配置错误:检查 loongcollector_config.json 的 Endpoint/AK/SK,以及流水线配置路径

            • 权限不足:iLogtail 运行用户需有日志文件读权限,chmod +r /var/log/nginx/*.log

            • 路径匹配问题:通配符 * 匹配层级有限,复杂路径用多配置或递归配置

            • 日志轮转:确保新日志文件权限正确,iLogtail 会自动跟踪新文件

            2. 数据丢失
            • 本地缓存未开启:默认开启,缓存目录 /etc/ilogtail/cache,确保磁盘空间充足

            • 网络波动:检查网络连通性,调整批量发送大小(batch_size)和间隔(flush_interval

            • 资源耗尽:限制 CPU / 内存,避免 OOM,配置 resource_limit

            3. 性能调优
            • 批量发送:增大 batch_size(默认 1024 条)、延长 flush_interval(默认 3s)

            • 过滤前置:在输入后立即过滤无用日志,减少处理压力

            • 资源限制

              { "resource_limit": { "cpu_limit": 0.5, "mem_limit": "512MB" } }

              七、总结

              iLogtail(LoongCollector)是企业级日志采集的首选工具,轻量、高性能、稳定、易扩展,完美适配云原生与大规模场景。掌握它的安装、配置与调优,是构建可观测平台的基础。

              Logo

              AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

              更多推荐