简介:iLogtail 应用入门 -iLogtail 本地配置模式部署 (For Kafka Flusher)
阿里曾经正式开源了可观测数据采集器 iLogtail。作为阿里外部可观测数据采集的基础设施,iLogtail 承载了阿里巴巴团体、蚂蚁的日志、监控、Trace、事件等多种可观测数据的采集工作。
iLogtail 作为阿里云 SLS 的采集 Agent,个别状况下都是配合 SLS 进行应用,通常采集配置都是通过 SLS 控制台或 API 进行的。那是否能够在不依赖于 SLS 的状况下应用 iLogtail 呢?
本文将会具体介绍如何在不依赖于 SLS 控制台的状况下,进行 iLogtail 本地配置模式部署,并将 json 格局的日志文件采集到非 SLS(例如 Kafka 等)。
场景
采集 /root/bin/input_data/json.log(单行日志 json 格局),并将采集到的日志写入本地部署的 kafka 中。
前提条件
kafka 本地装置实现,并创立名为 logtail-flusher-kafka 的 topic。部署详见链接。
装置 ilogtail
下载最新的 ilogtail 版本,并解压。
解压 tar 包
$ tar zxvf logtail-linux64.tar.gz
查看目录构造
$ ll logtail-linux64
drwxr-xr-x 3 500 500 4096 bin
drwxr-xr-x 184 500 500 12288 conf
-rw-r–r– 1 500 500 597 README
drwxr-xr-x 2 500 500 4096 resources
进入 bin 目录
$ cd logtail-linux64/bin
$ ll
-rwxr-xr-x 1 500 500 10052072 ilogtail_1.0.28 # ilogtail 可执行文件
-rwxr-xr-x 1 500 500 4191 ilogtaild
-rwxr-xr-x 1 500 500 5976 libPluginAdapter.so
-rw-r–r– 1 500 500 89560656 libPluginBase.so
-rwxr-xr-x 1 500 500 2333024 LogtailInsight
采集配置
配置格局
针对 json 格局的日志文件采集到本地 kafa 的配置格局:
{
"metrics": {"{config_name1}" : {
"enable": true,
"category": "file",
"log_type": "json_log",
"log_path": "/root/bin/input_data",
"file_pattern": "json.log",
"plugin": {
"processors": [
{
"detail": {"SplitSep": "","SplitKey":"content"},"type":"processor_split_log_string"
},
{
"detail": {"ExpandConnector": "","ExpandDepth": 1,"SourceKey":"content","KeepSource": false},
"type": "processor_json"
}],
"flushers":[
{
"type": "flusher_kafka",
"detail": {"Brokers":["localhost:9092"],
"Topic": "logtail-flusher-kafka"
}
}]
},
"version": 1
},
"{config_name2}" : {...}
}
}
具体格局阐明:
文件最外层的 key 为 metrics,外部为各个具体的采集配置。
采集配置的 key 为配置名,改名称需保障在本文件中惟一。倡议命名:”##1.0## 采集配置名称 ”。
采集配置 value 外部为具体采集参数配置,其中要害参数以及含意如下:
参数名 类型 形容
enable bool 该配置是否失效,为 false 时该配置不失效。
category string 文件采集场景取值为 ”file”。
log_type string log 类型。json 采集场景下取值 json_log。
log_path string 采集门路。
file_pattern string 采集文件。
plugin object 具体采集配置,为 json object,具体配置参考上面阐明
version int 该配置版本号,倡议每次批改配置后加 1
plugin 字段为 json object,为具体输出源以及解决形式配置:
配置项 类型 形容
processors object array 解决形式配置,具体请参考链接。
processor_json:将原始日志依照 json 格局开展。
flushers object array flusher_stdout:采集到规范输入,个别用于调试场景; flusher_kafka:采集到 kafka。
残缺配置样例
进入 bin 目录,创立及 sys_conf_dir 文件夹及 ilogtail_config.json 文件。
1. 创立 sys_conf_dir
$ mkdir sys_conf_dir
2. 创立 ilogtail_config.json 并实现配置。
logtail_sys_conf_dir 取值为:$pwd/sys_conf_dir/
config_server_address 固定取值,放弃不变。
$ pwd
/root/bin/logtail-linux64/bin
$ cat ilogtail_config.json
{
"logtail_sys_conf_dir": "/root/bin/logtail-linux64/bin/sys_conf_dir/",
"config_server_address" : "http://logtail.cn-zhangjiakou.log.aliyuncs.com"
}
3. 此时的目录构造
$ ll
-rwxr-xr-x 1 500 500 ilogtail_1.0.28
-rw-r–r– 1 root root ilogtail_config.json
-rwxr-xr-x 1 500 500 ilogtaild
-rwxr-xr-x 1 500 500 libPluginAdapter.so
-rw-r–r– 1 500 500 libPluginBase.so
-rwxr-xr-x 1 500 500 LogtailInsight
drwxr-xr-x 2 root root sys_conf_dir
在 sys_conf_dir 下创立采集配置文件 user_local_config.json。
阐明:json_log 场景下,user_local_config.json 仅需批改采集门路相干参数 log_path、file_pattern 即可,其余参数放弃不变。
$ cat sys_conf_dir/user_local_config.json
{
"metrics":
{
"##1.0##kafka_output_test":
{
"category": "file",
"log_type": "json_log",
"log_path": "/root/bin/input_data",
"file_pattern": "json.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":
[
{
"detail": {"SplitSep": "","SplitKey":"content"},"type":"processor_split_log_string"
},
{
"detail":
{"ExpandConnector": "","ExpandDepth": 1,"SourceKey":"content","KeepSource": false},
"type": "processor_json"
}
],
"flushers":
[
{
"type": "flusher_kafka",
"detail":
{
"Brokers":
["localhost: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
}
}
}
}
启动 ilogtail
终端模式运行
$ ./ilogtail_1.0.28 –ilogtail_daemon_flag=false
也能够抉择 daemon 模式运行
$ ./ilogtail_1.0.28
$ ps -ef|grep logtail
root 48453 1 ./ilogtail_1.0.28
root 48454 48453 ./ilogtail_1.0.28
采集场景模仿
往 /root/bin/input_data/json.log 中结构 json 格局的数据,代码如下:
$ echo ‘{“seq”: “1”, “action”: “kkkk”, “extend1”: “”, “extend2”: “”, “type”: “1”}’ >> json.log
$ echo ‘{“seq”: “2”, “action”: “kkkk”, “extend1”: “”, “extend2”: “”, “type”: “1”}’ >> json.log
生产 topic 为 logtail-flusher-kafka 中的数据。
$ bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic logtail-flusher-kafka
{“Time”:1640862641,”Contents”:[{“Key”:”__tag__:__path__”,”Value”:”/root/bin/input_data/json.log”},{“Key”:”seq”,”Value”:”1″},{“Key”:”action”,”Value”:”kkkk”},{“Key”:”extend1″,”Value”:””},{“Key”:”extend2″,”Value”:””},{“Key”:”type”,”Value”:”1″}]}
{“Time”:1640862646,”Contents”:[{“Key”:”__tag__:__path__”,”Value”:”/root/bin/input_data/json.log”},{“Key”:”seq”,”Value”:”2″},{“Key”:”action”,”Value”:”kkkk”},{“Key”:”extend1″,”Value”:””},{“Key”:”extend2″,”Value”:””},{“Key”:”type”,”Value”:”1″}]}
本地调试
为了疾速不便验证配置是否正确,能够将采集到的日志打印到规范输入实现疾速的性能验证。
替换本地采集配置 plugin-flushers 为 flusher_stdout,并以终端模式运行 $ ./ilogtail_1.0.28 –ilogtail_daemon_flag=false,即可将采集到的日志打印到规范输入疾速进行本地调试。
{
"type": "flusher_stdout",
"detail":
{"OnlyStdout": true}
}
原文链接
本文为阿里云原创内容,未经容许不得转载。