百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

iLogtail 使用入门-iLogtail 本地配置模式部署(For Kafka Flusher)

liuian 2024-12-11 15:44 35 浏览

阿里已经正式开源了可观测数据采集器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
}

原文链接:http://click.aliyun.com/m/1000317325/

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

相关推荐

GCI: Another key public good for international community

MembersofadelegationofhighschoolstudentsfromtheU.S.stateofWashingtonposeforaphotoa...

kube on kube 实现思路分享(kube-scheduler)

这里的kubeonkube,是指建立K8s元集群,纳管其他业务K8s集群,通过声明式API管理集群的创建、增删节点等。参考https://github.com/kubean-i...

China and India hold the key to a more inclusive global future

ByMayaMajueranLead:AsChinaandIndiamark75yearsofdiplomaticties,theircooperationcouldse...

日本真子公主的婚礼又要提上日程了吗?未婚夫:债务问题已解决

日本明仁天皇将于今年3月31日退位,德仁皇太子即将成为新一任的天皇。在平成时代最后的倒计时中,明仁天皇的孙女真子公主的婚事却又一次进入了人们的视野。(viaTheTelegraph)关注日本皇室的...

kratos源码分析系列(1)(kvm源码解析与应用 pdf)

https://github.com/go-kratos/kratos是b站开源的一个微服务框架,整体来看它结合grpc生态中的grpc-gateway,以及wire依赖注入和众多常用的trace,m...

【2.C#基础】6.循环语句(c#循环语句例子)

6.循环语句当需要多次执行同一个处理时,就需要用到循环语句。一般情况下,循环的流程图如下:6.1while循环C#中的while循环语句在给定的条件为真的情况下会重复执行目标语句。格式如下:...

使用 Google Wire 在 Go 中进行依赖注入

关注点分离、松耦合系统和依赖反转原则等概念在软件工程中是众所周知的,并且在创建良好的计算机程序过程中至关重要。在本文中,我们将讨论一个同时应用了这三个原则的技术,称为依赖注入。我们将尽可能地实践,更加...

用 Golang封装你的API(golang封装dll)
用 Golang封装你的API(golang封装dll)

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。@头条创作挑战赛本文探讨了在用Golang封装你的API的过程以及几个不同的编程步骤。我做了一个非常有限的时间来证明如何为客户正在开...

2025-05-09 20:03 liuian

Terraform 实战 | 万字长文(terrify是什么意思中文)

Terraform是什么Terraform(https://www.terraform.io/)是HashiCorp旗下的一款开源(Go语言开发)的DevOps基础架构资源管理运维工具,可...

Go 语言入门:环境安装(go语言安装 window)

一、前言这里不同于其他人的Go语言入门,环境安装我向来注重配置,比如依赖包、缓存的默认目录。因为前期不弄好,后面要整理又影响这影响那的,所以就干脆写成文章,方便后期捡起。二、安装1.安装包htt...

Go语言进阶之Go语言高性能Web框架Iris项目实战-项目结构优化EP05

前文再续,上一回我们完成了用户管理模块的CURD(增删改查)功能,功能层面,无甚大观,但有一个结构性的缺陷显而易见,那就是项目结构过度耦合,项目的耦合性(Coupling),也叫耦合度,进而言之,模块...

如何将Go项目与Docker结合实现高效部署

在现代软件开发中,使用Docker部署应用程序已经成为一种标准实践。本文将深入探讨如何将Go项目与Docker结合,实现高效、可靠的部署过程。通过详细的步骤和丰富的示例,你将能够迅速掌握这一流程。准备...

五分钟轻松熟悉一个k8s Operator应用制作

简介:operator是一种kubernetes的扩展形式,可以帮助用户以Kubernetes的声明式API风格自定义来管理应用及服务,operator已经成为分布式应用在k8s集群部...

程序员的副业秘籍!一款可以快速搭建各类系统的后台管理系统

系统简介这是一个基于Gin+Vue+ElementUI(或ArcoDesign、AntDesign)的系统快速开发平台,采用了前后端分离,旨在帮助用户快速完成各类系统的基础功能搭建。平...

使用 Go 语言开发区块链钱包的项目目录结构设计

在开发区块链钱包时,项目的目录结构应该清晰、模块化,确保代码的可维护性和扩展性。基于Go的惯例,结合区块链钱包的功能需求,以下是一个较为合理的目录结构示例:1.目录结构blockchain-wa...