数据发送

Senders 的主要作用是将 Parser 和 Transformer 后的数据发送至 Sender 支持的各类服务,目前支持发送到的服务包括: Pandora、ElasticSearch、File、InfluxDB、MongoDB、Kafka、Http Post、消费数据但不发送。

发送到 Pandora(Pandora Sender)

  • 工作流名称(pandora_workflow_name):必填,七牛大数据平台工作流名称。

  • 数据源名称(pandora_repo_name): 必填,Pandora 的 repo 名字。

  • 自动创建并导出到日志分析(pandora_enable_logdb): 默认为 false,不启用,该字段表示是否在用户 pandora_schema_free 状态下直接将数据导出到 Pandora 日志检索服务。所以若 pandora_enable_logdb 生效的前提是 pandora_schema_free 是生效的。该配置会自动创建日志检索服务的仓库,同时在 pandora_schema_free 字段增加的情况下更新日志检索服务的仓库,更新导出。 注意,2017 年 11 月 27 日前创建的日志检索服务仓库数据默认保存 3 天,之后创建的数据仓库,数据默认保存 30 天,如需长时间保存,请到七牛官方日志检索服务页面修改数据仓库的数据保存时间;对于已经存在的数据源,并且已经创建过同名导出,自动创建导出将不生效;自动创建导出的repo名称需要统一为小写,logdb 命名的 repo 名称不支持大写。

  • 指定日志分析仓库名称(pandora_logdb_name): 默认与 pandora_repo_name 相同,可指定 pandora_enable_logdb 创建的日志检索仓库名称。

  • 日志分析域名(pandora_logdb_host): 默认为 https://logdb.qiniu.com ,创建日志检索仓库的服务地址。

  • 自动创建并导出到时序数据库(pandora_enable_tsdb): 默认为 false,不启用,该字段表示是否在用户 pandora_schema_free 状态下直接将数据导出到 Pandora 时序数据库服务。所以若 pandora_enable_tsdb 生效的前提是 pandora_schema_free 是生效的。该配置会自动创建时序数据库的仓库,同时在 pandora_schema_free 字段增加的情况下更新时序数据库的仓库,更新导出。 注意,2017 年 11 月 27 日前创建的日志检索服务仓库数据默认保存 3 天,之后创建的数据仓库,数据默认保存 30 天,如需长时间保存,请到七牛官方时序数据库管理页面修改数据仓库的数据保存时间;对于已经存在的数据源,并且已经创建过同名导出,自动创建导出将不生效;自动创建导出的repo名称需要统一为小写 tsdb 命名的 repo 名称不支持大写。

  • 指定时序数据库仓库名称(pandora_tsdb_name): 默认与 pandora_repo_name 相同,可指定 pandora_enable_tsdb 创建的时序数据库仓库名称。

  • 指定时序数据库序列名称(pandora_tsdb_series_name): 默认与 pandora_repo_name 相同,可指定创建的时序数据库的序列名称。

  • 指定时序数据库标签(pandora_tsdb_series_tags): 在创建序列时,将该选项中填入的字段设置为索引字段(具体请参考 Pandora 时序数据库服务), 当有多个字段时,用空格隔开。

  • 时序数据库域名(pandora_tsdb_host): 默认为 https://tsdb.qiniu.com ,创建时序数据库仓库的服务地址。

  • 指定时序数据库时间戳(pandora_tsdb_timestamp): 序列的时间戳字段,当字段为空时,时序数据库将自动将导出时间作为时间戳。

  • 自动导出到七牛云存储(pandora_enable_kodo): 默认为 false,不启用,该字段表示是否在用户 pandora_schema_free 状态下直接将数据导出到七牛云存储。所以若 pandora_enable_kodo 生效的前提是 pandora_schema_free 是生效的。注意:该配置不会自动创建云存储的 bucket,使用该功能注意提前创建 bucket,同时在 pandora_schema_free 字段增加的情况下会更新导出。 注意,自动导出到云存储的数据默认保存 30 天,如需长时间保存,请到 workflow 页面修改导出的数据保存时间。

  • 云存储仓库名称(pandora_bucket_name): 当 pandora_enable_kodo 生效是必填, 默认与 pandora_repo_name 相同,指定云存储的 bucket 名称。

高级选项

  • 添加系统时间(logkit_send_time): 默认为 “true”,是否在发送时自动添加发送时间,时间格式为 RFC3339Nano。

  • 大数据平台域名(pandora_host): 必填,pandora 服务地址。

  • 创建的资源所在区域(pandora_region): 必填,Pandora 服务的地域。

  • 自动创建数据源并更新(pandora_schema_free): 默认为 false,不启用,该字段表示在用户数据有新字段时就更新 Pandora 数据源,添加字段,如果数据源不存在,创建数据源。即 pandora_schema_free 功能包含 pandora_auto_create,启用该字段最大的好处是免除了数据更新导致 Pandora 数据源少收集或无法收集的困扰,使得用户可以从 schema 中解放出来,无需在意解析到的字段名称。特别适合 logkit Pro 的入门用户,一开始可以使用 pandora_schema_free 功能,快速将数据发送到 Pandora,然后调试 parser,解析出新的字段。注意,目前自动推导支持所有 Pandora 的数据类型,但是仅符合 RFC3339 格式的 string 会推导成 date 类型,其他都是按照数据的原始类型推导。

  • 以 DSL 语法自动创建数据源(pandora_auto_create): 该字段表示字段创建,默认为空,不自动创建。若填写该字段,则表示自动创建。若 repo 不存在,则先创建 repo,若 repo 存在,则在已存在的 repo 上添加字段。 repo 的 DSL 创建规则为<字段名称> <类型>,字段名称和类型用空格符隔开,不同字段用逗号隔开。若字段必填,则在类型前加*号表示。如果开启了 pandora_schema_free 这里只要声明部分想要指定的字段和类型即可,无需写完全。

    • pandora date 类型:date,DATE,d,D
    • pandora long 类型:long,LONG,l,L
    • pandora float 类型: float,FLOAT,F,f
    • pandora string 类型: string,STRING,S,s
    • pandora jsonstring 类型: jsonstring,JSONSTRING,JSON,json
    • pandora bool 类型: bool,BOOL,B,b,boolean
    • pandora array 类型: array,ARRAY,A,a;括号中跟具体array元素的类型,如a(l),表示array里面都是long。同时,也可以省略小括号前的array类型申明,直接写(l),表示 array类型,里面的元素是long
    • pandora map 类型: map,MAP,M,m;使用花括号表示具体类型,表达map里面的元素,如map{a l,b map{c b,x s}}, 表示map结构体里包含a字段,类型是long,b字段又是一个map,里面包含c字段,类型是bool,还包含x字段,类型是string。同时,也可以省略花括号前面的map类型,直接写{s l},表示map类型,里面的元素s为long类型。
  • 筛选字段(pandora_schema): 提供了 schema 的选项和别名功能,如果不填,则认为所有 parser 出来的 field 只要符合 pandora schema 就发送;如果填,可以只选择填了的字段打向 pandora,根据逗号分隔,如果要以别名的方式打向 pandora,加上空格跟上别名即可。若最后以逗号省略号”,…”结尾则表示其他字段也以 pandora的 schema 为准发送。Pandora Sender 会在 runner 启动时获取 repo 的 schema,若用户缺少一些必填的 schema,会帮助填上默认值。

  • 压缩发送(pandora_gzip): 是否使用 gzip 压缩传输数据,默认不压缩。注意,压缩会占用 CPU 资源,但是会节省带宽,有利有弊,请根据业务情况选择。

  • 流量限制(flow_rate_limit): 每秒的流量限制,单位为 KB,默认不限速,注意填写的为数字字符串,如 “1024”,表示限速每秒 1024 KB,注意,限速并发准确值,会有数值上的偏差,偏差范围在 1KB 以内。若单个 batch 的大小超过了流量限制,logkit Pro 会将 batch 一拆为二。警告:若单个点的大小超过了流量限速的最大限制,logkit Pro 将发送不出该点,请根据单条日志大小谨慎配置。

  • 请求限制(request_rate_limit): 每秒请求数限制,默认不限速,注意填写的为数字字符串,如 “500”,表示每秒限制最多 500 个请求。注意,限速并发准确值,会有数值上的偏差,偏差范围在每秒 20 个请求以内。

  • 数据植入UUID(pandora_uuid): 是否在数据结果中自动生成 Pandora_UUID 字段,默认不开启, Pandora_UUID 的生成规则采用 RFC4122 中描述的 V4 版本 Random 规则生成。padnora_uuid 功能在数据中自动生成一个 Pandora_UUID 字段,该字段保证了发送出去的每一条数据都拥有一个唯一的 UUID,可以用于数据去重等需要。

  • 扰动时间字段增加精度(force_microsecond): 默认 false,不启用,该参数用来将数据源中的时间类型强制转换成微秒精度,并且加上一个微妙级的时间扰动,使得秒级精度下面的数据,同一秒内的不同数据有不同的时间精度。主要应用的场景为数据导出到 Pandora TSDB 时可以有更好的精度显示,使用了该参数不会产生数据覆盖问题。

  • 自动转换类型(pandora_force_convert): 默认为 false。开启后会强制类型转换,如定义的 pandora schema 为 long,而实际的为 string,则会尝试将 string 解析为 long类型(int 64),若无法解析,则忽略该字段内容。使用这个功能可以解决一整条数据中有些字段生成的类型不确定导致写入 Pandora 失败的问题。
    pandora_auto_convert_date 可选字段,默认为 true 开启。会自动将用户的自动尝试转换为 Pandora 的时间类型(date),Pandora的时间类型为符合 RFC3339 格式的字符串,若已经符合该类型,则无需开启,关闭可节省 CPU 开销。默认开启,会尝试将进行各种类型的格式转换,包括不同的时间格式字符串的变化,整型作为 unix timestamp 进行转换等等。

  • 数字统一为 float(number_use_float): 默认为 “false”,当填为 true 时,会将数据中所有的数字作为 float 类型。该功能适用于数字又有可能是整型又有可能是浮点型的场景,统一作为 float,可避免数据类型冲突。

  • 忽略错误字段(ignore_invalid_field): 默认为 true 开启,会进行数据格式校验,并忽略不符合格式的字段数据,默认开启,关闭可以节省 CPU 开销。如 Pandora 的类型选择了 jsonstring,若字符串不是合法的 json 字符串,就会忽略改部分字段内容,其他字段正常上报。

  • 服务端反转译换行/制表符(pandora_unescape): 在 Pandora 服务端反转译\n=>\n, \t=>\t; 由于 Pandora 数据上传的编码方式会占用\t和\n这两个符号,所以在sdk中打点时会默认把\t转译为\t,把\n转译为\n,开启这个选项就是在服务端把这个反转译回来。开启该选项也会转译数据中原有的这些\t和\n符号

    常用功能

  1. 自动创建 Pandora 数据源,通过 pandora_auto_create 字段创建。

  2. 自动添加 Pandora 数据字段,通过 pandora_schema_free 字段,可以自动更新 Pandora 的数据源,添加字段。

  3. 流量控制,通过 request_rate_limit 以及 flow_rate_limit 可以控制每秒的请求数以及每秒的请求数据量,若设置的 batchsize 过大导致流量限制,logkit Pro 会自动将 batch 拆分。

  4. 压缩传输, 通过 pandora_gzip 配置,可以选择使用 gzip 压缩的方式传输数据,大大节约带宽。

  5. 字段选择与别名,通过 pandora_schema 可以选择要发送到 Pandora 的字段,同时可以将 Parser 出的字段名通过别名的方式与 Pandora 的名字进行一一对应。

  6. 类型转换,对于解析到的如 string,long 等类型,会根据 Pandora 实际创建的数据源字段类型,进行一定的类型转换,可以进行类型转换的 Pandora 字段包括 string(转换为字符串), long(转换为int64整型), float(转换为float64浮点型), date(转换为rfc3339格式的字符串时间表示),支持的转换为时间类型的数据包括:

    • 精确到微秒的整型(可以从数字、字符串中提取)
    • 2006/01/02 15:04:05,
    • 2006-01-02 15:04:05 -0700 MST,
    • 2006-01-02 15:04:05 -0700,
    • 2006-01-02 15:04:05,
    • 2006/01/02 15:04:05 -0700 MST,
    • 2006/01/02 15:04:05 -0700,
    • 2006-01-02 -0700 MST,
    • 2006-01-02 -0700,
    • 2006-01-02,
    • 2006/01/02 -0700 MST,
    • 2006/01/02 -0700,
    • 2006/01/02,
    • Mon Jan _2 15:04:05 2006 ANSIC,
    • Mon Jan _2 15:04:05 MST 2006 UnixDate,
    • Mon Jan 02 15:04:05 -0700 2006 RubyDate,
    • 02 Jan 06 15:04 MST RFC822,
    • 02 Jan 06 15:04 -0700 RFC822Z,
    • Monday, 02-Jan-06 15:04:05 MST RFC850,
    • Mon, 02 Jan 2006 15:04:05 MST RFC1123,
    • Mon, 02 Jan 2006 15:04:05 -0700 RFC1123Z,
    • 2006-01-02T15:04:05Z07:00 RFC3339,
    • 2006-01-02T15:04:05.999999999Z07:00 RFC3339Nano,
    • 3:04PM Kitchen,
    • Jan _2 15:04:05 Stamp,
    • Jan _2 15:04:05.000 StampMilli,
    • Jan _2 15:04:05.000000 StampMicro,
    • Jan _2 15:04:05.000000000 StampNano,

发送到本地文件(File Sender)

  • 发送到指定文件(file_send_path): 发送文件路径,会将数据按照行,使用 json 格式写入本地文件。

  • file_send_path 支持写一个 Pattern 作为路径,例如 “file_send_path”:”data-%Y-%m-%d.txt” ,此时数据就会渲染出日期,存放为 data-2018-03-28.txt, 该功能使得数据可以 rotate 存放,非常适用于归档。

使用场景

  1. 在做测试时使用该模式,发送到本地磁盘,查看发送情况

  2. 部署虚拟文件系统,挂载 volume,使用 HDFS 等。

渲染变量

file_send_path 支持的渲染变量列表如下:

填写模式 描述
%A 国际化表示法的星期名全称
%a 国际化表示法的星期名简称
%B 国际化表示法的月名全称
%b 国际化表示法的月明简称
%C 年份除以100后的小数表示法,精确到2位小数
%c 国际表示法的时间和日期
%D 等价于格式: %m/%d/%y
%d 日期 (01-31)
%F 等价于格式: %Y-%m-%d
%H 24小时表示法 (00-23)时
%I 12小时表示法 (01-12)时
%j 一年中的第几天 (001-366)
%M 分钟 (00-59)
%m 月份 (01-12)
%R 等价于 %H:%M
%S 秒钟 (00-60)
%T 等价于 %H:%M:%S
%u 一周中的第几天 (1-7)
%W 一年中的第几周 (00-53)
%X 国际化表示法的时分秒
%x 国际化表示法的年月日
%Y 年份
%y 去掉百年进制的年份 (00-99),如2018就是18
%Z 时区名称
%z 时区偏移数值
%% 转义一个 ‘%’

发送到 MongoDB 服务(MongoDB Accumulate Sender)

将日志数据解析并进行聚合后发送到 MongoDB。

  • 数据库地址(mongodb_host): Mongodb 的地址:mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]。

  • 聚合条件列(mongodb_acc_updkey): Mongodb 的聚合条件列,按逗号分隔各列名。如果需要在写入 mongodb 时候对列名进行重命名,配置时候只要在原列名后增加新名字即可,如 time5Min time 将 parse 结果中的time5Min,写入 mongodb 的 time 字段。

  • 聚合列(mongodb_acc_acckey): Mongodb 的聚合列,按照逗号分隔各列名。如果需要在写入 mongodb 时候对列名进行重命名,配置时候只要在原列名后增加新名字即可,用法同 mongodb_acc_updkey。

发送到 InfluxDB 服务(InfluxDB Sender)

  • 数据库地址(influxdb_host): influxdb 服务地址。

高级选项

  • 自动创建数据库(influxdb_auto_create): 自动创建 influxdb 的 database、series 以及 retention policy

  • retention名称(influxdb_retention): influxdb 的retention policy 名字,可不填。

  • retention时长(influxdb_retetion_duration): 指定的 retention 名称若不存在对应 retention,会根据 influxdb_auto_create 选为 true 时自动创建,自动创建指定的时间周期由该选项确定。

  • 标签列数据(influxdb_tags): influxdb 的 tag 列名,用”,”逗号分隔,分隔后每一个字符串中间有空格,则认为是起了别名,如 “name alias,name2” 这样

  • 普通列数据(influxdb_fields): influxdb 的 field 列名,同 tags。

  • 时间戳列(influxdb_timestamp): influxdb 的时间戳列名。

  • 普通列数据(influxdb_timestamp_precision): 时间戳列的精度,如果设置 100,那么就会在 send 的时候将 influxdb_timestamp * 100 作为 nano 时间戳发送到 influxdb。

发送到 ElasticSearch(ElasticSearch Sender)

  • host地址(elasitc_host): elasticsearch 服务地址, 多个地址使用,分隔。

  • ES 版本号(elastic_version): es 服务端的版本号,目前支持 3.x(含2.x) 5.x(5.x) 以及6.x(6.x)。

  • 索引类型名称(elastic_type): elasticsearch 索引下的 type,默认为 logkit。

  • 自动索引模式(index_strategy): 创建索引的策略,默认为 default 用一个索引,也可以选择 year 按年创建索引,month 按月创建索引,day 按天创建索引

  • 索引时区(elastic_time_zone): 创建索引使用的时区,支持 Local(本地时区) UTC(标准时区) 以及 PRC(中国)

  • 添加系统时间(logkit_send_time): logkit 的数据发送时间,默认为 true,可用于查看数据是否发送延迟等。

发送到 Kafka(Kafka Sender)

  • broker 的 host 地址(kafka_host): 必填项,kafka broker 的服务地址,多个可以用逗号连接。如:”192.168.31.201:9092,192.168.31.202:9092”

  • 打点的 topic 名称(kafka_topic): 必填项,发送到的 kafka topic 名称。还可以用数据路由的方式,填写格式如:%{[kafka_topic_field]},default_topic 此时会从发送的数据中寻找字段为”kafka_topic_field”的string类型数据,并将至作为topic发送,否则就使用填写的default_topic名称作为发送目的地。

  • 压缩模式(kafka_compression): 非必填项,kafka 发送的数据压缩方式,默认不压缩。

高级选项

  • kafka 客户端标识 ID(kafka_client_id): 非必填项,kafka client 的 ID,默认使用 hostname。

  • kafka 最大错误重试次数(kafka_retry_max): 非必填项,kafka 发送的失败重试时间,默认重试 3 次。

  • kafka 连接超时时间(kafka_timeout): 非必填项,超时时间,默认 30s。

  • kafka 的 keepalive 时间(kafka_keep_alive): 非必填项,keep_alive 的时间,默认不开启。

通过 Http Post 发送

  • 发送目的 url(http_sender_url): 必填, post 请求发送的路径。

  • 发送数据时使用的格式(http_sender_protocol): 选填, 发送的数据格式, 有 json 和 csv 两种选择, 默认为 json。

  • http_sender_csv_split(csv 分隔符): 选填, 使用 csv 发送时, 不同列之前的分隔符, 默认为 \t

  • http_sender_gzip: 选填, 发送时启用 gzip, 默认开启