乐趣区

关于java:iLogtail使用入门iLogtail本地配置模式部署For-Kafka-Flusher

简介: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}
}

原文链接
本文为阿里云原创内容,未经容许不得转载。

退出移动版