iLogtail 从核心概念到实战的完整教程
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. 采集流程(以文件日志为例)
监听文件:通过 inotify 监听日志文件新增 / 滚动,实时读取增量数据。
数据处理:按配置解析(如 JSON / 正则)、过滤、脱敏、添加元数据(主机名、IP、时间)。
本地缓存:网络异常时,数据缓存本地磁盘,恢复后续传,防止丢失。
批量投递:异步批量发送到后端(如 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 status5. 容器部署(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 restart4. 控制台查看数据
登录阿里云 → 日志服务 → 进入
log-demo项目进入
nginx-logLogstore → 查询分析选择时间范围,即可看到结构化的 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)是企业级日志采集的首选工具,轻量、高性能、稳定、易扩展,完美适配云原生与大规模场景。掌握它的安装、配置与调优,是构建可观测平台的基础。
