如何文章采集(iLogtail本地配置模式部署(ForKafkaFlusher)阿里开源了可观测数据采集器iLogtail)

优采云 发布时间: 2022-01-14 01:01

  如何文章采集(iLogtail本地配置模式部署(ForKafkaFlusher)阿里开源了可观测数据采集器iLogtail)

  iLogtail本地配置方式部署(适用于Kafka Flusher)

  阿里已正式开源可观察数据采集器iLogtail。作为阿里巴巴内部可观察数据采集的基础设施,iLogtail承载了阿里巴巴集团的采集工作和蚂蚁的日志、监控、跟踪、事件等可观察数据。

  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 箱

  drwxr-xr-x 184 500 500 12288 配置

  -rw-r--r-- 1 500 500 597 自述文件

  drwxr-xr-x 2 500 500 4096 资源

  进入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##采集配置名称”。

  采集配置值是具体的采集参数配置,关键参数及其含义如下:

  参数名称类型说明

  enable bool 配置是否生效。为false时,配置不生效。

  category string File采集场景的值为“file”。

  log_type 字符串日志类型。在 json采集 场景中,值为 json_log。

  log_path 字符串 采集路径。

  file_pattern 字符串 采集 文件。

  插件对象的具体采集配置是一个json对象。具体配置请参考以下说明

  version int 配置版本号,建议每次配置修改后加1

  plugin字段是一个json对象,针对具体的输入源和处理方式进行配置:

  配置项类型说明

  处理器对象数组处理模式配置,详见链接。processor_json:将原创日志展开为json格式。

  flushers object array flusher_stdout:采集到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 的值是固定的并且保持不变。

  $密码

  /root/bin/logtail-linux64/bin

  $ 猫 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 根 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

  drwxr-xr-x 2 根 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

  您也可以选择以守护程序模式运行

  $ ./ilogtail_1.0.28

  $ ps -ef|grep logtail

  根 48453 1 ./ilogtail_1.0.28

  根 48454 48453 ./ilogtail_1.0.28

  采集情景模拟

  过去的

  json格式的数据在/root/bin/input_data/json.log中构造。代码如下:

  $ echo'{“seq”:“1”,“action”:“kkkk”,“extend1”:“”,“extend2”:“”,“type”:“1”}'>> json.log

  $ echo '{"seq": "2", "action": "kkkk", "extend1": "", "extend2": "", "type": "1"}' >> json.log

  消费主题是logtail-flusher-kafka中的数据。

  $

  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic logtail-flusher-kafka

  {"时间":1640862641,"内容":[{"密钥":"__tag__:__path__","值":"

  /root/bin/input_data/json.log"},{"Key":"seq","Value":"1"},{"Key":"action","Value":"kkkk"},{ "Key":"extend1","Value":""},{"Key":"extend2","Value":""},{"Key":"type","Value":"1"} ]}

  {"时间":1640862646,"内容":[{"键":"__tag__:__path__","值":"

  /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

}

  K8S环境日志采集使用SLS前准备创建日志配置,进入日志服务控制台(),点击上一节已经创建的项目。

  

  进入Project查询页面后,点击左侧边栏的“放大镜”图标,展开logstore管理界面,点击“+”,弹出右侧边栏“Create Logstore”。按照提示进行配置,输入日志库名称,单击“确定”。

  

  日志库创建成功后,取消数据访问向导。单击左侧边栏中的“Cube”按钮,在弹出的“Resources”叠加层中选择“Machine Group”。在展开的“机器组”的左栏中,点击右上角的“方形”图标,在弹出的层中选择“创建机器组”。

  

  在“创建机器组”侧边栏中,按照提示进行配置,“机器组ID”选择“用户自定义ID”,“名称”、“机器组主题”、“机器组主题”建议保持不变用户自定义标识”。“自定义ID”是最重要的配置之一。本教程使用“my-k8s-group”,安装ilogtail时会再次使用。“点击”确认保存机器组。

  

  再次点击左侧边栏的“放大镜”图标,展开logstore管理界面,点击第2步创建的logstore的“向下展开”图标,弹出“配置Logstore”菜单。点击“+”按钮进行“logtail配置”。

  

  在弹出的“快速访问数据”对话框中,搜索“kube”,选择“Kubernetes-file”。在弹出的“提示”框中,单机“继续”。

  

  

  在“Kubernetes 文件”配置界面中,直接选择“使用现有机器组”。

  

  跳转到“机器组配置”界面,选择第4步创建的机器组,点击“>”按钮将其添加到“应用机器组”中,然后点击“下一步”。

  

  在ilogtail配置中,只修改“配置名称”和“日志路径”两个必填项,点击“下一步”确认。

  

  完成索引配置。此步骤不修改任何选项,只需点击下一步即可完成配置。

  

  至此,整个日志配置完成。请保持页面打开。

  

  安装ilogtail登录控制K8S集群的中心计算机。编辑 ilogtail 的 ConfigMap YAML。

  $ vim alicloud-log-config.yaml

  将以下内容粘贴到 Vim 中并保存(注意,修改注释中指示的字段,第 7-11 行)。

  apiVersion: v1

kind: ConfigMap

metadata:

name: alibaba-log-configuration

namespace: kube-system

data:

log-project: "my-project" #修改为实际project名称

log-endpoint: "cn-wulanchabu.log.aliyuncs.com" #修改为实际endpoint

log-machine-group: "my-k8s-group" #可以自定义机器组名称

log-config-path: "/etc/ilogtail/conf/cn-wulanchabu_internet/ilogtail_config.json" #修改cn-wulanchabu为实际project地域

log-ali-uid: "*********" #修改为阿里云UID

access-key-id: "" #本教程用不上

access-key-secret: "" #本教程用不上

cpu-core-limit: "2"

mem-limit: "1024"

max-bytes-per-sec: "20971520"

send-requests-concurrency: "20"

  计算 alicloud-log-config.yaml 的 sha256 哈希,编辑 ilogtail 的 DaemonSet YAML。

  $ sha256sum alicloud-log-config.yaml

f370df37916797aa0b82d709ae6bfc5f46f709660e1fd28bb49c22da91da1214 alicloud-log-config.yaml

$ vim logtail-daemonset.yaml

  将以下内容粘贴到 Vim 中并保存(注意,修改注释中指出的字段,21、25 行)。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线