> 公司一直使用的Filebeat进行日志采集
> 由于Filebeat采集组件一些问题,现需要使用iLogtail进行代替
> 现记录下iLogtail介绍和实际使用过程
> 这是iLogtail系列的第三篇文章
>
@[TOC](iLogtail部署及配置)
## 背景
由于业务需要,此处以多个kafka接收方作为配置。
## 前提条件
由于需要多个kafka作为接收方,先在生产环境monitor01和monitor03上安装kafka3.0并启动,分别创建名为logtail-flusher-kafka的topic。
## 安装ilogtail
下载1.0.28的ilogtail版本,并解压。
```powershell
wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/1.0.28/x86_64/logtail-linux64.tar.gz
```
## 创建配置文件
进入bin目录,创建sys_conf_dir文件夹(配置文件存放目录)及ilogtail_config.json文件(整体配置文件设置)。
ilogtail_config.json内容如下:
```powershell
##### logtail_sys_conf_dir取值为:$pwd/sys_conf_dir/
##### config_server_address固定取值,保持不变。
```
```powershell
{
"logtail_sys_conf_dir": "/home/admin/liujh/iLogtail1.0.28/logtail-linux64/bin/sys_conf_dir/",
"config_server_address" : "http://logtail.cn-zhangjiakou.log.aliyuncs.com"
}
```

## 创建采集配置文件
在sys_conf_dir下创建采集配置文件user_local_config.json。
```powershell
"metrics":
{
"##1.0##kafka_output_test2":
{
"category": "file",
"log_type": "apsara_log",
"log_path": "/home/admin/liujh/iLogtail1.0.28/logtail-linux64/bin/input_data",
"file_pattern": "*.log",
"create_time": 1631018645,
"defaultEndpoint": "",
"delay_alarm_bytes": 0,
"delay_skip_bytes": 0,
"discard_none_utf8": false,
"discard_unmatch": false,
"docker_exclude_env":
{},
"docker_exclude_label":
{},
"docker_file": false,
"docker_include_env":
{},
"docker_include_label":
{},
"enable": true,
"enable_tag": false,
"file_encoding": "utf8",
"filter_keys":
[],
"filter_regs":
[],
"group_topic": "",
"plugin":
{
"processors":
[
{
"type":"processor_add_fields",
"detail":
{
"Fields": {
"input_type": "log",
"type": "LOGTAIL_LOG",
"offset": "offset",
"@timestamp": "@timestamp",
"beat": "beat",
"fields": "fields"
}
}
},
{
"type":"processor_rename",
"detail": {
"SourceKeys": ["__tag__:__path__","content"],
"DestKeys": ["source","message"],
"NoKeyError": true
}
},
{
"type" : "processor_filter_regex",
"detail" : {
"Include" : {
"content" : ".*"
}
}
}
],
"flushers":
[
{
"type": "flusher_kafka",
"detail":
{
"Brokers":
[
"10.6.0.35:9092"
],
"Topic": "logtail-flusher-kafka"
}
},
{
"type": "flusher_kafka",
"detail":
{
"Brokers":
[
"10.6.0.37:9092"
],
"Topic": "logtail-flusher-kafka"
}
}
]
},
"local_storage": true,
"log_tz": "",
"max_depth": 10,
"max_send_rate": -1,
"merge_type": "topic",
"preserve": true,
"preserve_depth": 1,
"priority": 0,
"raw_log": false,
"aliuid": "",
"region": "",
"project_name": "",
"send_rate_expire": 0,
"sensitive_keys":
[],
"shard_hash_key":
[],
"tail_existed": false,
"time_key": "",
"timeformat": "",
"topic_format": "none",
"tz_adjust": false,
"version": 1,
"advanced":
{
"force_multiconfig": false,
"tail_size_kb": 1024
}
}
}
}`
```
详细格式说明:
- 文件最外层的key为
metrics
,内部为各个具体的采集配置。 - 采集配置的key为配置名,改名称需保证在本文件中唯一。建议命名:"##1.0##采集配置名称"。
- 采集配置value内部为具体采集参数配置,其中关键参数以及含义如下:
一、背景 由于业务需要,此处以多个kafka接收方作为配置。 二、前提条件 由于需要多个kafka作为接收方,先在生产环境monitor01和monitor03上安装kafka3.0并启动,分别创建名为 三、安装ilogtail 下载1.0.28的ilogtail版本,并解压。 wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/1.0.28/x86_64/logtail-linux64.tar.gz 四、创建配置文件 进入bin目录,创建 五、创建采集配置文件 在
详细格式说明:
六、修改日志文件存储路径 在bin目录同级创建log文件夹,在log目录里创建snapshot文件夹,修改bin目录下apsara_log_conf.json配置日志输出路径。 七、部署问题记录 配置文件user_local_config.json的名字修改后无法被成功加载 user_local_config.json配置文件修改后 会 自动加载无需重启ilogtail user_local_config.json中metrics中id需要唯一 八、相关限制 具体可见文档Logtail限制说明 - 日志服务 - 阿里云 限制一:同一文件对应多个采集配置 不支持,建议文件采集到一个Logstore,可以配置多份订阅。若有相关需求,可通过为文件配置软链接的方式绕过该限制。 默认情况下,一个文件只能匹配一个Logtail配置。当多个Logtail配置匹配同一个文件时,只会生效1个。因为在客户端上对文件中的日志采集多份需要消耗多倍的CPU、内存、磁盘IO和网络IO开销,将对同机部署的其他服务性能造成额外影响,并非优化的日志采集方案。 限制二:文件编码 支持UTF8或GBK的编码日志文件,建议使用UTF8编码以获得更好的处理性能。如果日志文件为其它编码格式则会出现乱码、数据丢失等错误。 九、配置文件及日志说明 ilogtail_config.json 启动参数配置文件 user_local_config.json 采集配置文件 app_info.json 记录Logtail的启动时间、获取到的IP地址、主机名等信息 ilogtail.LOG 记录了Logtail的运行日志,日志级别从低到高分别为INFO、WARN和ERROR,其中INFO类型的日志无需关注 logtail_plugin.LOG 记录Logtail插件的运行日志,日志级别从低到高分别为INFO、WARN和ERROR,其中INFO类型的日志无需关注 | ||||||||||||||||||||||||||||||||||||
- plugin 字段为json object,为具体输入源以及处理方式配置:
配置项 | 类型 | 描述 |
processors | object array | 处理方式配置,具体请参考链接。 processor_json:将原始日志按照json格式展开。 |
flushers | object array | flusher_stdout:采集到标准输出,一般用于调试场景; flusher_kafka:采集到kafka。 |