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 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. 控制台查看数据
-
登录阿里云 → 日志服务 → 进入
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)是企业级日志采集的首选工具,轻量、高性能、稳定、易扩展,完美适配云原生与大规模场景。掌握它的安装、配置与调优,是构建可观测平台的基础。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)