数据源类型

从文件中读取(File Reader)

dir 模式从文件中读取

填写日志所在文件夹路径(log_path),如 /Users/loris/log/,logkit Pro 在启动时根据文件夹下文件更新时间顺序依次读取文件,读取到时间最新的文件时会不断读取追加的数据,直到该文件夹下出现新的文件。

收集场景

使用 dir 模式的经典日志存储方式为整个文件夹下存储单个服务的业务日志,文件夹下的日志通常有统一前缀,后缀为时间戳,根据日志的大小 rotate 到新的文件。如配置的文件夹为 logdir,下面的文件为 logdir/a.log.20170621 , logdir/a.log.20170622, logdir/a.log.20170623 这种模式的日志。即某个服务日志按文件大小分隔日志,每次分割后新命名文件并以时间戳为后缀,并且该文件夹下只有这一个服务。dir 模式首先会对文件夹下文件整体排序,依次读取各个文件,读完最后有个文件后会查找时间(文件 ctime)更新文件并重新排序,依次循环。logkit Pro 会负责将多个文件串联起来。即数据读取过程中 a.log.20170621 中最后一行的下一行就是 a.log.20170622 的第一行。

file 模式从文件中读取

填写精确的日志文件路径(log_path),如 /Users/loris/log/my.log/,logkit Pro 不断读取该文件追加的数据。

收集场景

使用 file 模式的经典日志存储方式类似于 nginx 的日志 rotate 方式,日志名称为固定的名称,如 access.log ,rotate 时直接 move 成新的文件如 access.log.1,新的数据仍然写入到 access.log。此时 配置 logkit Pro 收集永远只针对 access.log 这一个固定名称的文件进行收集。对于 logkit Pro 来说, Runner 也只会不断收集 access.log 这一个文件。检测文件是否 rotate 成功的标志是文件的 inode 号,在 windows 下则是 fd 的属性编号。对于使用 nfs 系统的用户来说,由于 inode 号不稳定,请谨慎使用这个模式。

tailx模式从文件中读取

填写匹配路径的模式串(log_path),例如 /Users//path//mylog/.log

收集场景

tailx 模式比较灵活,几乎可以读取所有被通配符匹配上的日志文件,对于单个日志文件使用 file 模式不断追踪日志更新,logpath 是一个匹配路径的模式串,例如 /home//path//logdir/.log, 此时会展开并匹配所有符合该表达式的文件,并持续读取所有有数据追加的文件。每隔 stat_interval 的时间,重新刷新一遍 logpath 模式串,添加新增的文件。需要注意的是,使用 tailx 模式容易导致文件句柄打开过多。tailx 模式的文件重复判断标准为文件名称,若使用 rename, copy 等方式改变日志名称,并且新的名字在 logpath 模式串的包含范围内,在 read_from 为 oldest 的情况下则会导致重复写入数据,设置为 newest 则有可能在感知的时间周期内丢失一部分数据。选择 tailx 模式请谨慎配置文件名称,防止日志 rotate 时老数据的命名进入 tailx 的模式串范围内,导致不断重复读取数据。

fileauto 模式从文件中读取

自动根据用户上传的路径匹配上述三种文件读取模式中的一种。

选择的策略如下:

  1. 判断路径中是否带有 * , 若包含,则选择 tailx 模式。
  2. 判断路径是否为文件夹,若是文件夹,则选择 dir 模式。注意:dir 模式下,不同文件不断 append,会导致数据重复收集,请手动选择 tailx 模式。
  3. 最后选择 file 模式。

基础配置信息

  • 读取起始位置(read_from):在创建新文件或 meta 信息损坏的时候(即历史读取记录不存在),将从文件的哪个位置开始读取。可以设置为 oldest,从文件开始的部分全量读取,也可以设置为 newest 从文件最新的部分开始读取。如果字段不填,默认从最老的开始消费。tailx 读取模式下,设置为 oldest 模式可能会导致数据重复读取(如 rotate 的方式是 copy 一份数据),设置为 newest 则有可能在感知的时间周期内丢失一部分数据。

  • 忽略文件的最大过期时间(expire):针对 tailx 读取模式读取的日志, 写法为数字加单位符号组成的字符串 duration 写法,支持时 h、分 m、秒 s 为单位,类似 3h(3小时),10m(10分钟),5s(5秒), 默认的 expire 时间是 24h, 当达到 expire 时间的日志,就放弃追踪。

高级选项

  • 数据保存路径(meta_path):reader 读取 offset 的记录路径,必须是一个文件夹,在这个文件夹下,会记录本次 reader 的读取位置。默认会根收集器名称结合上传路径的 hash 值自动生成。

  • 编码方式(encoding):读取日志文件的编码方式,默认为 utf-8,即按照 utf-8 的编码方式读取文件。支持读取文件的编码格式包括:UTF-16,GB18030,GBK,cp51932,windows-51932,EUC-JP,EUC-KR,ISO-2022-JP,Shift_JIS,TCVN3 及其相关国际化通用别名。

  • 读取速度限制(readio_limit):读取文件的磁盘限速,填写正整数,单位为 MB/s, 默认限速 20 MB/s。

  • 来源标签(datasource_tag):表示把读取日志的路径名称也作为标签,记录到解析出来的数据结果中,默认不添加,若 datasource_tag 不为空,则以该字段名称作为标签名称。例如 “datasource_tag”:”mydatasource”; 则最终解析的日志中会增加一个字段 mydatasource 记录读取到日志的路径。可用于区分 tailx 模式下的日志数据是从哪个日志路径下读取的问题。dir 模式下,可能存在部分数据标记的不准确,偏差到下一个文件。(因为读取的时候是读到 bufferreader 的缓冲区,所以当 buffer reader 还在读前一部分数据的时候,可能底层的多文件拼接的 seq reader 已经读取到下一个文件,而此时调用的结果会是下一个文件的结果,所以出现异常。这种情况只有在数据出现在文件末尾且缓冲区已经读到下一个文件的情况。)

  • 按正则表达式规则换行(head_pattern):默认不填,reader 每次读取一行,若要读取多行,则填写。head_pattern 表示匹配多行的第一行使用的正则表达式。tailx 模式在多行匹配时,若一条日志的多行被截断到多个文件,那么此时无法匹配多行。dir、file 模式下会自动处理文件截断的拼接。head_pattern 最多缓存 20MB 的日志文件进行匹配。使用多行匹配情况的一个经典场景就是使用 grok parser 解析应用日志,此时需要在 head_pattern 中指定行首的正则表达式,每当匹配到符合行首正则表达式的时候,就将之前的多行一起返回,交由后面的 parser 解析。

  • 文件末尾加上换行符(newfile_newline):默认为 false,只针对 dir 模式,开启后,不同文件结尾自动添加换行符。

  • 是否忽略隐藏文件(ignore_hidden):读取的过程中是否忽略隐藏文件,默认忽略。

  • 忽略此类后缀文件(ignore_file_suffix):针对 dir 读取模式需要解析的日志文件,可以设置读取的过程中忽略哪些文件后缀名,默认忽略的后缀包括”.pid”, “.swap”, “.go”, “.conf”, “.tar.gz”, “.tar”, “.zip”,”.a”, “.o”, “.so”。

  • 以 linux 通配符匹配文件(valid_file_pattern):针对 dir 读取模式需要解析的日志文件,可以设置匹配文件名的模式串,匹配方式为 linux 通配符展开方式,默认为 *,即匹配文件夹下全部文件。

    • 通配符语法说明:
    • 匹配任意非文件路径分隔符的零或多个字符
    • ? 匹配任意非文件路径分隔符的单个字符
    • [符号集] 匹配符号集中的所有字符
  • 最大打开文件数(max_open_files):针对 tailx 读取模式读取的日志,最大能追踪的文件数,默认为 256。同时追踪的文件过多会导致打开的文件句柄超过系统限制,请谨慎配置该项。超过限制后,不再追踪新添加的日志文件,直到部分追踪文件达到 expire 时间。

  • 扫描间隔(stat_interval):针对 tailx 读取模式读取的日志,刷新过期的跟踪日志文件, 刷新 logpath 模式串,感知新增日志的定时检查时间, 写法为数字加单位符号组成的字符串 duration 写法,支持时 h、分m、秒s为单位,类似3h(3小时),10m(10分钟),5s(5秒),默认3m(3分钟)。

从 MySQL 中读取(mysql reader)

以定时任务的形式去执行 mysql 语句,将 mysql 读取到的内容全部获取则任务结束,等到下一个定时任务的到来。mysql reader 输出的内容为 json 字符串,须使用 json parser 解析。

基础配置信息

  • 数据库地址(mysql_datasource):由 username: 用户名, password: 用户密码, hostname: mysql 地址, port: mysql 端口组成, 一个完整 mysql_datasource 示例:”admin:123456@tcp(10.101.111.1:3306)”

  • 数据查询语句(mysql_sql):要执行的 sql 语句,可以用 @(var) 使用魔法变量,用 ; 分号隔开,多条语句按顺序执行。多条 sql 输出的内容必须 schema 相同,否则请添加新的收集器分开收集。

    • 魔法变量:目前支持的魔法变量,以当前时间 2017 年 6 月 5 日 6 时 35 分 24 秒为例。
      • @(YYYY) 年份,就是2017
      • @(YY) 年份后两位,就是17。
      • @(MM): 月份,补齐两位,就是06
      • @(M): 月份,不补齐,就是6
      • @(D): 日,不补齐,就是5
      • @(DD): 日,补齐两位,如05
      • @(hh): 小时,补齐两位, 如06
      • @(h): 小时,如6
      • @(mm): 分钟,补齐两位,35
      • @(m): 分钟,35
      • @(ss): 秒,补齐两位,24
      • @(s): 秒,24
  • 启动时立即执行(msql_exec_onstart):true 表示启动时执行一次,以后再按 cron 处理;false 则表示到cron 预设的时间才执行,默认为 true。

高级选项

  • 递增的列名称(mysql_offset_key):指定一个 mysql 的列名,作为 offset 的记录,类型必须是整型,建议使用插入(或修改)数据的时间戳(unixnano)作为该字段。每次查询会指定这个 key 做 where 条件限制,避免单次查询性能消耗过大。

  • 分批查询的单批次大小(mysql_limit_batch):mysql_sql 的语句,若数据量大,可以填写该字段,分批次查询。

    • 若 mysql_offset_key 存在,假设填写为 100,则查询范式为 select * from table where mysql_offset_key >= 0 and mysql_offset_key < 0 + 100;
    • 若没填写mysql_offset_key,则类似于 select * from table limit 0,100。
  • 定时任务(mysql_cron):定时任务触发周期

    • 直接写 “loop” ,任务会不停的循环,执行完一次再接着执行下一次,后面可以跟循环的间歇时间,如”loop 10s”,表示每次循环间隔10s,支持的单位还有”m(分钟)”,”h(小时)”
    • crontab 的写法,类似于 ,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于 “@midnight”, “@every 1h30m”,必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every
  • 手动定义 SQL 字段类型(sql_schema): 默认情况下会自动识别数据字段的类型,当不能识别时,可以 sql_schema 指定 mysql 数据字段的类型,目前支持 string、long、float 三种类型,单个字段左边为字段名称,右边为类型,空格分隔 abc float;不同的字段用逗号分隔。支持简写为float=>f,long=>l,string=>s. 如:”sql_schema”:”abc string,bcd float,xyz long”。

  • 魔法变量时间延迟(magic_lag_duration):针对魔法变量进行时间延迟,单位支持 h(时)、m(分)、s(秒),如写 24h,则渲染出来的时间魔法变量往前 1 天,2017 年 6 月 5 日 6 时 35 分 24 秒 的 @(D) 渲染出来的就是 4。

从 MSSQL 读取(Microsoft SQL Server Reader)

以定时任务的形式去执行 sql 语句,将 sql 读取到的内容全部获取则任务结束,等到下一个定时任务的到来。mssql reader 输出的内容为 json 字符串,须使用 json parser 解析。

基础配置信息

  • 数据库地址(mssql_datasource):由 username: 用户名, password: 用户密码, hostname: mssql地址,实例,port: mssql端口,默认 1433 组成, 一个完整的 mssql_datasource 示例:”server=localhost\SQLExpress;user id=sa;password=PassWord;port=1433”

  • 数据查询语句(mssql_sql):要执行的 sql 语句,可以用 @(var) 使用魔法变量,用;分号隔开,多条语句按顺序执行。多条 sql 输出的内容必须 schema 相同,否则请添加新的收集器分开收集。

    高级选项

  • 递增的列名称(mssql_offset_key):指定一个 mssql 的列名,作为 offset 的记录,类型必须是整型,建议使用插入(或修改)数据的时间戳(unixnano)作为该字段。每次查询会指定这个 key 做 where 条件限制,避免单次查询性能消耗过大。

  • 分批查询的单批次大小(mssql_limit_batch): mssql_sql 的语句,若数据量大,可以填写该字段,分批次查询。

    • 若 mssql_offset_key 存在,假设填写为 100,则查询范式为 select * from table where mssql_offset_key >= 0 and mssql_offset_key < 0 + 100;
    • 若没填写 mssql_offset_key,则直接执行整个 SQL select * from table,没有分页。
  • 定时任务(mssql_cron): 定时任务触发周期,支持三种写法。

    • 直接写 “loop”,任务会不停的循环,执行完一次再接着执行下一次,后面可以跟循环的间歇时间,如 “loop 10s”,表示每次循环间隔 10s,支持的单位还有”m(分钟)”,”h(小时)”
    • crontab 的写法,类似于 ,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于 “@midnight”, “@every 1h30m”,必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every
  • 手动定义 SQL 字段类型(sql_schema): 默认情况下会自动识别数据字段的类型,当不能识别时,可以 sql_schema 指定 mysql 数据字段的类型,目前支持 string、long、float 三种类型,单个字段左边为字段名称,右边为类型,空格分隔 abc float;不同的字段用逗号分隔。支持简写为float=>f,long=>l,string=>s. 如:”sql_schema”:”abc string,bcd float,xyz long”。

  • 魔法变量时间延迟(magic_lag_duration):针对魔法变量进行时间延迟,单位支持 h(时)、m(分)、s(秒),如写 24h,则渲染出来的时间魔法变量往前 1 天,2017 年 6 月 5 日 6 时 35 分 24 秒 的 @(D) 渲染出来的就是 4。

从 PostgreSQL 读取

以定时任务的形式去执行 PostgreSQL 查询语句,将 PostgreSQL 读取到的内容全部获取则任务结束,等到下一个定时任务的到来,也可以仅执行一次。PostgreSQL reader 输出的内容为 json 字符串,须使用 json parser 解析。

基础配置信息

  • 数据库地址(postgres_datasource):填写的形式如 host=localhost port=5432, 属性和实际的值用=(等于)符号连接,属性和值中间不要有空格,不同的属性用(空格)隔开,具体支持的属性如下所示:
    • dname:数据库名称,若此处填了,下面 postgres_database 可以不填。
    • user : 用户名称
    • password : 用户密码
    • host : PostgreSQL 服务地址
    • port : 要绑定的端口 (默认是 5432)
    • sslmode : 使用SSL的模式,默认是开启的,若关闭需要指定 sslmode=disable,其他模式还包括require(SSL、跳过认证),verify-ca(SSL,证书认证)、verify-full( SSL,证书认证、且认证服务器的hostname包含在证书中)
    • connect_timeout : 连接最大超时时间,设置为 0 表示无限制。
    • sslcert : 证书路径地址,文件必须包含 PEM 编码的数据
    • sslkey : Key 文件路径,文件必须包含 PEM 编码的数据
    • sslrootcert : root 证书的文件路径,文件必须包含 PEM 编码的数据

一个完整的 postgres_datasource 示例:”host=localhost port=5432 connect_timeout=10 user=pqgotest password=123456 sslmode=disable”

  • 数据查询语句(postgres_sql): 填写要执行的 sql 语句,可以用 @(var) 使用魔法变量

高级选项

  • 递增的列名称(postgres_offset_key): 指定一个 PostgreSQL 的列名,作为 offset 的记录,类型必须是整型,建议使用插入(或修改)数据的时间戳(unixnano)作为该字段。每次查询会指定这个 key 做 where 条件限制,避免单次查询性能消耗过大。

  • 分批查询的单批次大小(postgres_limit_batch): postgres_sql 的语句,若数据量大,可以填写该字段,针对 postgres_offset_key 分批次查询。

    • postgres_offset_key 填写为100,则查询范式为 select * from table where postgres_offset_key >= 0 and postgres_offset_key < 0 + 100;
  • 定时任务(postgres_cron): 定时任务触发周期,支持三种写法。

    • 直接写 “loop”,任务会不停的循环,执行完一次再接着执行下一次,后面可以跟循环的间歇时间,如 “loop 10s”,表示每次循环间隔10s,支持的单位还有”m(分钟)”,”h(小时)”
    • crontab 的写法,类似于 ,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于 “@midnight”, “@every 1h30m”,必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every

从 Elasticsearch 读取

Elasticsearch Reader 输出的是 json 字符串,需要使用 json 的 parser 解析。

基础配置信息

  • 数据库地址(es_host):es 的 host 地址以及端口,常用端口是 9200

  • 版本(es_version):指定 Elasticsearch 客户端版本,可选参数,目前支持 3.x ,5.x,6.x 三个版本,3.x 包含了 Elasticsearch 服务端(2.x)版本。

  • 索引名称(es_index):es 的索引名称,必填。

  • app 名称(es_type):es 的 type 名称,

高级选项

  • 数据保存路径(meta_path):reader 的读取 offset 的记录路径,记录 es 读取时的 ScrollID,路径必须是一个文件夹。

  • 分批查询的单批次大小(es_limit_batch):es一次获取的 batch size,默认为 100 条一个 batch。

  • offset保存时间(es_keepalive): es reader 一旦挂掉了,重启后可以继续读取数据的 ID(Offset记录)在 es 服务端保存的时长,默认 1d,写法按 es 的单位为准,m分钟,h小时,d天。

从 MongoDB 读取

MongoDB reader 输出的是 json 字符串,需要使用 json parser 解析。

基础配置信息

  • 数据库地址(mongo_host):mongodb 的 url 地址,基础写法为填写 mongo 的 host 地址以及端口,默认是 localhost:9200,扩展形式可以写为:mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]],用户名密码也可以写在这里。

  • 递增的主键(mongo_offset_key):选填,指定一个 mongo 的列名,作为 offset 的记录,类型必须是整型(比如 unixnano 的时间,或者自增的 primary key)。 每次查询会指定这个 key 做 where 条件大于上次查询最后的记录这样的限制,避免单次查询性能消耗过大,同时也支持持续的数据导入过程中避免数据重复。 若不指定,则使用 mongo 的_id 键,_id 键是由时间戳(秒)+机器+进程号+自增位组成的,在低频数据写入的情况下是自增的,在多机器组成的 mongo 集群高并发写入的情况下,_id 不是自增的,存在漏数据的可能。 默认使用 _id,也保证了在纯粹从静态的 mongo 数据库导入 Pandora 过程中,若重启 logkit Pro 不会导致数据重复。

高级选项

  • 数据保存路径(meta_path): 默认自动生成,是 reader 的读取 offset 的记录路径,记录 mongo 读取时的 Offset,路径必须是一个文件夹。

  • 分批查询的单批次大小(mongo_limit_batch): 默认为 “100”, 表示单次请求获取的数据量。

  • 定时任务(mongo_cron): 默认没有定时任务。定时任务触发周期,支持三种写法。

    • 直接写 “loop”,任务会不停的循环,执行完一次再接着执行下一次,后面可以跟循环的间歇时间,如 “loop 10s”,表示每次循环间隔 10s,支持的单位还有”m(分钟)”,”h(小时)”
    • crontab 的写法,类似于 ,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于 “@midnight”, “@every 1h30m”,必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every
  • 数据过滤方式(mongo_filters):表示 collection 的过滤规则,默认不过滤,全部获取。最外层是 collection 名称,里面对应的是 json 的规则。如示例所示,表示 foo 这个 collection,i 字段的值大于 10 的全部数据。

!>注意:导出 mongo 的字段中,包含_id的话,在打入 Pandora 的数据中,默认也会包含_id,这份数据如果再要导出到 LogDB,就会出现错误,因为_id 是 LogDB 的保留字段。此时可以在 Pandora Sender 中指定 pandora_schema 字段设置别名,如 “pandora_schema”:”_id id,…”, 这样就可以正常导入。其他出现字段冲突的情况都可以使用别名功能处理。

从 Kafka 读取

Kafka reader 输出的是 raw data,可根据具体情况自定义 parser 进行解析。

基础配置信息

  • consumer 组名称(kafka_groupid):kafka 组名,多个 logkit 同时消费时写同一个组名可以协同读取数据。

  • topic 名称(kafka_topic):kafka 的 topic 名称列表。

  • zookeeper 地址(kafka_zookeeper):zookeeper 地址列表,多个用逗号分隔,常用端口是 2181。

  • 读取起始位置(read_from): oldest:从 partition 最开始的位置,newest:从 partition 最新的位置。默认从 oldest 位置开始消费。

高级选项

  • zookeeper 中 kafka 根路径(kafka_zookeeper_chroot):kafka 在 zookeeper 根路径中的地址。

从 Redis 读取

Redis Reader 输出的是 redis 中存储的字符串,具体字符串是什么格式,可以在 parser 中用对应方式解析。

基础配置信息

  • 数据读取模式(redis_datatype):包含 list, channel, pattern_channel 三种模式:

    • list 模式固定通过 Redis 的 BLPOP 获取数据,即用户的数据是通过 LPUSH 或者 RPUSH 的方式存进 list 中(持续写入的话,推荐使用 RPUSH 的方式,以免 Redis 高并发写入下出现异常情况),然后 redis 从最左边元素依次读取。在这个模式下 redis_key 模式的就是指定 list 的名称。
    • channel 模式通过 Redis 的 Pub/Sub 模式读取,启动 Redis 后,订阅(Sub) redis_key 指定的键(即 Redis 中的 channel),当该 channel 有信息被发布(Pub)时,即获取该数据。
    • pattern_channel,该模式与 channel 模式几乎相同,区别是,在该模式下 redis_key 可以指定为一个模式串,如 “abc*”,则所有 “abc” 为前缀的 channel 都会被监听。
  • 数据库名称(redis_db):Redis 的数据库名,默认为 “0”。

  • redis 键(redis_key):Redis 监听的键值,在不同模式(redis_datatype)下表示不同含义。

  • 数据库地址(redis_address):Redis 的地址(IP+端口),默认为 “127.0.0.1:6379”

高级选项

  • 单次读取超时时间(redis_timeout):默认为 “5s”,在模式为 list 时每次等待键值数据的超时时间。

从 Socket 读取

以端口监听的方式接受并读取日志,主要支持 tcp\udp\unix 套接字这三大类协议。

基础配置信息

  • socket 监听的地址(socket_service_address): 必填项,监听的 url 地址。协议和形式也可以多样化,包括:
    • tcp 监听所有 tcp 协议的数据,如 tcp://127.0.0.1:http
    • tcp4 仅监听 ipv4 地址传输的 tcp 协议数据,如 tcp4://:3110
    • tcp6 仅监听 ipv6 地址传输的 tcp 协议数据,如 tcp6://:3110 或者 tcp6://[2001:db8::1]:3110
    • udp 监听所有 udp 协议传输的数据,如 udp://:3110
    • udp4 仅监听 ipv4 地址传输的 udp 协议数据,如 udp4://:3110
    • udp6 仅监听 ipv6 地址传输的 udp 协议数据,如 udp6://:3110
    • unix 监听面向字节流的unix套接字的数据传输协议,如 unix:///tmp/sys.sock
    • unixgram 监听面向报文的unix套接字的数据传输协议,如 unixgram:///tmp/sys.sock
    • unixpacket 监听面向数据包的unix套接字的数据传输协议,如 unixpacket:///tmp/sys.sock

高级选项

  • 最大并发连接数(socket_max_connections): 使用 TCP 协议时最大并发连接数, 设置 0 为无限制, 默认无限制。

  • 连接超时时间(socket_read_timeout): 面向字节流的 Socket 连接读取的超时时间(tcp\unix),设置 0 为不超时,默认为不超时,填写格式可以包含单位秒(s)、分(m)、时(h),如 3s(3秒) 1m(1分钟)等等。

  • 连接缓存大小(socket_read_buffer_size): 读取数据的 Buffer 大小,默认设置为 65535。

  • 连接保持时长(socket_keep_alive_period): TCP 连接的 keep_alive 时间,设置为 0 表示关闭 keep_alive ,填写格式可以包含单位秒(s)、分(m)、时(h),如3s(3秒) 1m(1分钟)等等。

从 http 请求中读取

以 http post 请求的方式接受并读取日志的形式。

  • 监听的地址和端口(http_service_address):监听的地址和端口,格式为:[:port],如 : 3000 , 监听 3000 端口的 http 请求

  • 监听地址前缀(http_service_path):监听的请求地址,如 /data

    !>注意1:该 reader 支持 gzip, 但请在请求头中添加 Content-Encoding=gzip 或者 Content-Type=application/gzip

    !>注意2:默认接收 request body 中所有的数据作为要读取的日志, 限制 request body 小于 100MB

    !>注意3:默认将 request body 中的数据使用 \n 分割, 每行作为一条数据

从脚本的执行结果中读取

以定时任务的形式执行脚本,将脚本执行的结果全部获取则任务结束,等到下一个定时任务的到来,也可以仅执行一次。

基础配置信息

  • 脚本执行解释器(script_exec_interpreter):默认使用 bash。

  • 脚本路径(log_path):如 “./script.sh”。

高级选项

  • 定时任务(script_cron): 定时任务触发周期,支持三种写法。
    • 直接写”loop” ,任务会不停的循环,执行完一次再接着执行下一次,后面可以跟循环的间歇时间,如”loop 10s”,表示每次循环间隔10s,支持的单位还有”m(分钟)”,”h(小时)”
    • crontab的写法,类似于 ,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于 “@midnight”, “@every 1h30m”,必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every

从 SNMP 服务中读取

基础配置信息

  • agents 列表(snmp_agents):snmp 代理地址, 当有多个 agents 时, 地址使用 ‘,’ 分割。

  • tebles 配置(snmp_tables):程序将会使用 Walk 请求来获取字段数据, 需要填入一个符合 json 数组格式的字符串, 数组中的每一项有以下字段:

    • table_name: 选填项 表格变量的名称,当该项为空时,会根据 table_oid 字段解析出来的内容填充
    • table_oid: 必填项 表格变量的 对象标识符
    • table_fields: 选填项 除了从 table_oid 中解析出来的字段外,还可以根据此配置项将简单变量放入其中
  • fields 配置(snmp_fields):程序将会使用 Get 请求来获取字段数据, 需要填入一个符合 json数组 格式的字符串, 数组中的每一项有以下字段:

    • field_name: 选填项 字段名称, 当该项为空时,会根据 field_oid 字段解析出来的内容为空
    • field_oid: 必填项 字段的 对象标识符
    • field_oid_index_suffix: 选填项 填写后会剥离 field_oid 的子标示符便于将其与其他字段匹配。

高级选项

  • 名称(snmp_reader_name):默认 system, 对于简单变量(snmp_fields中的字段), 将把该字段放入收集的数据中, 所谓标识, 类似于 table_name。

  • 连接超时时间(snmp_time_out): 默认 5s, 超时时间。

  • 收集频率(snmp_interval): 默认 30s, 采集频率。

  • 重试次数(snmp_retries):默认 3, 重试次数。

  • 最大迭代次数(snmp_max_repetitions): 默认为 50, 变量检索次数的最大值, 用来指示 getBulk 命令, 尝试 snmp_max_repetitions 次 getNext 操作。

  • 安全等级(snmp_sec_level):默认为 `noAuthNoPriv1, snmp 安全等级, 支持 “noAuthNoPriv”, “authNoPriv”, “authPriv” 三种。

  • 认证协议(snmp_auth_protocol):认证协议, 支持 “”, “md5”, “sha” 三种。

  • 隐私协议(snmp_priv_protocol):加密协议, 支持 “”, “des”, “aes” 三种。

    !>注意: snmp_fields 和 snmp_tables 这两项配置需要填入符合 json 数组格式的字符串, 字符串内的双引号需要转义

从 AWS Cloudwatch 中读取

从 AWS CloudWatch 服务的接口中获取数据。

基础配置信息

  • 区域(region):使用的 AWS 服务所在区域(region),如 us-east-1, 打开 AWS cloudwatch 的控制台,您在访问的 url 中就能看到所用的 region, 如 https://console.aws.amazon.com/cloudwatch/home?region=us-east-1。

  • 命名空间(namespace):CloudWatch 服务的命名空间(namespace),对应了 AWS 的服务,命名空间如 AWS/EC2,AWS/S3 等等,进入 CloudWatch 左侧栏的指标(Metrics)页面,就可以看到所有的命名空间,点击某一个,就能在 url 中看到命名空间(namespace),如https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#metricsV2:graph=~();namespace=AWS/S3。

  • AK(aws_access_key):授权方式之一,AWS 的 access key ID。

  • SK(aws_secret_key): 授权方式之一, AWS 的 secret key。

  • 鉴权 token(aws_token): 授权方式之一,对应 AK、SK 的token。

  • 共享 profile(aws_profile): 授权方式之一, AWS 的共享 profile 文件,填写路径。

  • 鉴权文件(shared_credential_file): 授权方式之一, 共享的鉴权文件路径

  • 收集间隔(interval): 填写 1m 表示 1 分钟,10m 表示 10 分钟,单位 m 表示分钟,最小设置为 1 分钟。

  • metrics 名称(metrics): version 3 必填项, 指定收集的 Metrics 名称,可填写多个,逗号连接,为空全部收集。

  • 收集维度(dimensions): version 3 必填项,指定收集的 Metric 维度,可填写多个,key value 之间空格隔开,多个用逗号连接,为空全部收集。

    高级选项

    • 授权角色(role_arn):授权方式之一,AWS 的 Assuming a Role 角色授权信息。

    • 每秒最大请求数(ratelimit):version 3 必填项, 请求限速,默认为每分钟 200,填写 100 则设置为 100 请求每分钟。

    • 收集延迟(delay):version 3 必填项, Cloudwatch 中延迟收集的时间,设置 5 分钟,则表示收集 5 分钟前的数据,该选项保证了如果Cloudwatch中的数据有延迟,也可以延迟收集。如果延迟了5分钟,那么现在收集5分钟以前的。

    • 刷新 metrics 时间(cache_ttl):version 3 必填项, namespace 下的 Metric 刷新时间,刷新后自动感知新的Metric,默认设置 1 小时刷新一次。

    • 聚合间隔(period):version 3 必填项, 从 Cloudwatch 中收集的数据聚合粒度,默认为 5m 表示 5 分钟,最小填写 1m 表示 1 分钟。