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

}

原文链接

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

iLogtail使用入门-iLogtail本地配置模式部署(For Kafka Flusher)的更多相关文章

  1. Spring Cloud Config入门(本地配置)

    spring cloud config 简介 Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应用程序的外 ...

  2. dapr入门与本地托管模式尝试

    1 简介 Dapr是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr支持的语言 ...

  3. Hadoop生态圈-Kafka的本地模式部署

    Hadoop生态圈-Kafka的本地模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Kafka简介 1>.什么是JMS 答:在Java中有一个角消息系统的东西,我 ...

  4. 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式

    通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...

  5. 携程Apollo(阿波罗)配置中心本地开发模式不接入配置中心进行本地开发

    官方教程:https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8 ...

  6. linux虚拟机中FTP本地用户模式配置流程

    1.首先在自己虚拟机中安装vsftpd服务,可以先去yum中下载(当然你要有本地yum仓库) 输入命令: yum  install  vsftpd 下载完成之后打开vsftpd服务 输入命令:syst ...

  7. 演示vsftpd服务匿名访问模式、本地用户模式的配置

    文件传输协议(FTP,File Transfer Protocol) 即能够让用户在互联网中上传.下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和F ...

  8. Docker 入门 第六部分:部署app

    目录 Docker 入门 第六部分:部署app 先决条件 介绍 选择一个选项 Docker CE(Cloud provider) Enterprise(Cloud provider)这里不做介绍 En ...

  9. Spark运行模式与Standalone模式部署

    上节中简单的介绍了Spark的一些概念还有Spark生态圈的一些情况,这里主要是介绍Spark运行模式与Spark Standalone模式的部署: Spark运行模式 在Spark中存在着多种运行模 ...

  10. Hadoop伪分布式模式部署

    Hadoop的安装有三种执行模式: 单机模式(Local (Standalone) Mode):Hadoop的默认模式,0配置.Hadoop执行在一个Java进程中.使用本地文件系统.不使用HDFS, ...

随机推荐

  1. 基于C#的壁纸管理器(插件版) - 开源研究系列文章

    这几天无聊,想到原来的壁纸管理器应用能够实现成插件的形式,然后思考了一下,打算把原来壁纸管理器的代码用插件形式来进行实现,于是经过几天的努力,终于完成了插件版的壁纸管理器.以前有写过C#的插件的例子( ...

  2. 单体JOB向分布式JOB迁移案例

    一.背景 1.1前言 相信大家在工作中多多少少都离不开定时任务吧,每个公司对定时任务的具体实现都不同.在一些体量小的公司或者一些个人独立项目,服务可能还是单体的,并且在服务器上只有一台实例部署,大多数 ...

  3. 【Atcoder D - Circumferences】并查集

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...

  4. 云VR的未来发展方向

    随着元宇宙元年的到来,VR正呈现出蓬勃的发展势头.然而,更好的用户体验大多依赖于高性能PC或主机进行本地渲染,这使得用户的VR消费成本更高,在一定程度上影响了产业发展,成为业界亟待解决的问题. 的确, ...

  5. 洞元智维产品上线:江浙沪PV访问量飙升背后的深层逻辑与未来发展趋势

    洞元智维产品自上线以来,凭借其卓越的智能化产品性能和出色的用户体验,迅速在市场上崭露头角,特别是在上海.江苏.浙江等经济发达地区,其PV访问量持续飙升.这不仅反映了用户对智能化产品的强烈需求,更揭示了 ...

  6. 记录--经常被cue大文件上传,忍不住试一下

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 大文件上传主要步骤: 获取文件对象,切分文件 根据文件切片,计算文件唯一hash值 上传文件切片,服务端保存起来 合并文件切片,前端发送合 ...

  7. 《百岁人生》读书笔记 | 能活百年,为什么要死在 "35" 岁?

    <百年人生>讲述了当我们如愿能够接受到 长寿 这份礼物时,它所带给我们的挑战以及应对方法,这些发生在 "眼前" 的事,不得不引发我们重新的思考.推荐阅读 一.百岁人生的 ...

  8. Zookeeper学习笔记-安装

    zookeeper官网地址https://zookeeper.apache.org/ 1.卸载CentOS自带的open jdk,安装oracle jdk(1.8) 2.时间同步 #安装ntpdate ...

  9. 操作推荐-git工作流

    操作推荐-git工作流 sourcetree环境 sourcetree是一款可视化的版本管理软件 可以实现版本的管理和发布 同样,也支持git工作流的使用 创建git工作流 在main或者master ...

  10. 英语文档阅读学习系列之Zynq-7000 EPP Software Developers Guide

    阅读ug821-zynq-7000-swdev记录 1.略看目录Table 依旧采用总说加解释的模式,这种方式易于查找,是可靠的框架.目录词条依次为: Introduction Software Ap ...