本文将介绍 iLogtail 内部的数据结构以及数据流,从而大家能够对各个插件的输入输出有更加准确的理解。
本节将介绍插件接口相关的一些数据类型,目前,iLogtail 和服务后端之间的数据类型采用了 protobuf 进行描述(proto 文件)。
传输数据字段以及标签,简单的 key/value 对。
message Content
{
required string Key = 1;
required string Value = 2;
}
message LogTag
{
required string Key = 1;
required string Value = 2;
}
Log 是表示单条日志的数据类型,Time 字段为日志时间,Contents 字段维护了此日志的内容,由一个 key/value 列表组成。
message Log
{
required uint32 Time = 1;// UNIX Time Format
repeated Content Contents = 2;
}
LogGroup(日志组)是对多条日志的包装:
- Logs:包含所有日志。
- Category:日志服务Logstore,可以类比Kafka 独立集群, 数据存储的独立单元。
- Topic: 日志服务Topic,一个Category(Logstore)可以划分为多个topic,不填写时Topic 为空字符串,可以类比Kafka 独立集群下的Topic概念。
- Source/MachineUUID:iLogtail 所在节点的信息,前者为 IP,后者为 UUID。
- LogTags:所有日志共同的 tag,同样由 key/value 列表组成。
message LogGroup
{
repeated Log Logs = 1;
optional string Category = 2;
optional string Topic = 3;
optional string Source = 4;
optional string MachineUUID = 5;
repeated LogTag LogTags = 6;
}