全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
日志服务

查询本地采集状态

更新时间:2017-10-23 17:49:01

  1. 简介
  2. 使用指南

    2.1. all命令

    2.2. active命令

  3. 2.3. logstore命令

    2.4. logfile命令

    2.5. history命令

  4. 命令返回值
  5. 功能使用场景示例

    4.1. 监控Logtail运行状态

  6. 4.2. 监控日志采集进度

    4.3. 判断日志文件是否采集完毕

    4.4. 日志采集问题排查

1. 简介

Logtail具备自身健康度以及日志采集进度查询的功能,便于您对于日志采集问题进行自检,同时您可基于该功能定制日志采集的状态监控。

2. 使用指南

确认已安装支持状态查询功能的Logtail客户端之后,在客户端输入相对命令即可查询本地采集状态。安装Logtail参见Logtail安装方法

在客户端输入命令 /etc/init.d/ilogtaild -h,确认当前客户端是否支持本地采集状态查询功能。若输出logtail insight, version关键字则表示已安装支持此功能的Logtail。

  1. /etc/init.d/ilogtaild -h
  2. Usage: ./ilogtaild { start | stop (graceful, flush data and save checkpoints) | force-stop | status | -h for help}$
  3. logtail insight, version : 0.1.0
  4. commond list :
  5. status all [index]
  6. get logtail running status
  7. status active [--logstore | --logfile] index [project] [logstore]
  8. list all active logstore | logfile. if use --logfile, please add project and logstore. default --logstore
  9. status logstore [--format=line | json] index project logstore
  10. get logstore status with line or json style. default --format=line
  11. status logfile [--format=line | json] index project logstore fileFullPath
  12. get log file status with line or json style. default --format=line
  13. status history beginIndex endIndex project logstore [fileFullPath]
  14. query logstore | logfile history status.
  15. index : from 1 to 60. in all, it means last $(index) minutes; in active/logstore/logfile/history, it means last $(index)*10 minutes

Logtail目前支持的查询命令、命令功能、可查询的时间区间以及结果统计的时间窗口如下:

命令 功能 可查询时间区间 统计窗口
all 查询Logtail的运行状态 最近60分钟 1分钟
active 查询当前活跃(有数据采集)的Logstore或日志文件 最近600分钟 10分钟
logstore 查询Logstore的采集状态 最近600分钟 10分钟
logfile 查询日志文件的采集状态 最近600分钟 10分钟
history 查询Logstore或日志文件一段时间内的采集状态 最近600分钟 10分钟

注意

  • 命令中的index参数代表查询的时间窗口索引值,有效值为1~60,从当前时间开始计算。若统计窗口是1分钟,则查询距当前(index, index-1]分钟内的窗口;若统计窗口是10分钟,则查询距当前(10*index, 10*(index-1)]分钟内的统计窗口
  • 所有查询命令均属于status子命令,因此主命令为status

2.1. all命令

命令格式

  1. /etc/init.d/ilogtaild status all [ index ]

说明

all命令用来查看Logtail的运行状态。index为可选参数,不输入时默认代表1。

示例

  1. /etc/init.d/ilogtaild status all 1
  2. ok
  3. /etc/init.d/ilogtaild status all 10
  4. busy

输出信息描述

项目 描述 紧急度 解决方法
ok 当前状态正常。 无需处理。
busy 当前采集速度较高,Logtail状态正常。 无需处理。
many_log_files 当前正在采集的日志数较多。 检查配置中是否包含无需采集的文件。
process_block 当前日志解析出现阻塞。 检查日志产生速度是否过高,若一直出现,按需调整Logtail启动参数配置修改CPU使用上限或网络发送并发限制。
send_block 当前发送出现阻塞。 较高 检查日志产生速度是否过高以及网络状态是否正常,若一直出现,按需调整Logtail启动参数配置修改CPU使用上限或网络发送并发限制。
send_error 日志数据上传失败。 参考收集错误查询:SEND_DATA_FAIL_ALARM解决。

2.2. active命令

命令格式

  1. /etc/init.d/ilogtaild status active [--logstore] index
  2. /etc/init.d/ilogtaild status active --logfile index project-name logstore-name

说明

  • 命令active [--logstore] index用来查看当前活跃的Logstore,--logstore参数可以省略,命令含义不变。
  • 命令active --logfile index project-name logstore-name用来查看某Project中Logstore下的所有活跃日志文件。
  • active命令用来逐级查看活跃的日志文件。建议您先定位当前活跃的Logstore,再定向查询该Logstore下的活跃日志文件。

示例

  1. /etc/init.d/ilogtaild status active 1
  2. sls-zc-test : release-test
  3. sls-zc-test : release-test-ant-rpc-3
  4. sls-zc-test : release-test-same-regex-3
  5. /etc/init.d/ilogtaild status active --logfile 1 sls-zc-test release-test
  6. /disk2/test/normal/access.log

输出信息描述

  • 执行命令active --logstore index,则以project-name : logstore-name形式输出当前所有活跃Logstore;若执行命令active --logfile index project-name logstore-name,则输出活跃日志文件的完整路径。
  • 若Logstore或日志文件在查询窗口期内没有日志采集活动,则不会出现在active命令的输出信息中。

2.3. logstore命令

命令格式

  1. /etc/init.d/ilogtaild status logstore [--format={line|json}] index project-name logstore-name

说明

  • 命令logstore指定以line或json形式输出指定Project和Logstore的采集状态。
  • 如果不配置--format=参数,则默认选择--format=line,按照line形式输出回显信息。注意--format参数需位于logstore之后。
  • 若无该Logstore或该Logstore在当前查询窗口期没有日志采集活动,则line形式输出为空,json下为null

示例

  1. /etc/init.d/ilogtaild status logstore 1 sls-zc-test release-test-same
  2. time_begin_readable : 17-08-29 10:56:11
  3. time_end_readable : 17-08-29 11:06:11
  4. time_begin : 1503975371
  5. time_end : 1503975971
  6. project : sls-zc-test
  7. logstore : release-test-same
  8. status : ok
  9. config : ##1.0##sls-zc-test$same
  10. read_bytes : 65033430
  11. parse_success_lines : 230615
  12. parse_fail_lines : 0
  13. last_read_time : 1503975970
  14. read_count : 687
  15. avg_delay_bytes : 0
  16. max_unsend_time : 0
  17. min_unsend_time : 0
  18. max_send_success_time : 1503975968
  19. send_queue_size : 0
  20. send_network_error_count : 0
  21. send_network_quota_count : 0
  22. send_network_discard_count : 0
  23. send_success_count : 302
  24. send_block_flag : false
  25. sender_valid_flag : true
  26. /etc/init.d/ilogtaild status logstore --format=json 1 sls-zc-test release-test-same
  27. {
  28. "avg_delay_bytes" : 0,
  29. "config" : "##1.0##sls-zc-test$same",
  30. "last_read_time" : 1503975970,
  31. "logstore" : "release-test-same",
  32. "max_send_success_time" : 1503975968,
  33. "max_unsend_time" : 0,
  34. "min_unsend_time" : 0,
  35. "parse_fail_lines" : 0,
  36. "parse_success_lines" : 230615,
  37. "project" : "sls-zc-test",
  38. "read_bytes" : 65033430,
  39. "read_count" : 687,
  40. "send_block_flag" : false,
  41. "send_network_discard_count" : 0,
  42. "send_network_error_count" : 0,
  43. "send_network_quota_count" : 0,
  44. "send_queue_size" : 0,
  45. "send_success_count" : 302,
  46. "sender_valid_flag" : true,
  47. "status" : "ok",
  48. "time_begin" : 1503975371,
  49. "time_begin_readable" : "17-08-29 10:56:11",
  50. "time_end" : 1503975971,
  51. "time_end_readable" : "17-08-29 11:06:11"
  52. }

输出信息描述

关键字 含义 单位
status 该Logstore整体状态。具体状态、含义以及修改方式见下表。
time_begin_readable 可读的开始时间。
time_end_readable 可读的截止时间。
time_begin 统计开始时间。 Unix时间戳,秒
time_end 统计结束时间。 Unix时间戳,秒
project Project名。
logstore Logstore名。
config 采集配置名(由##1.0## + project + $ + config组成的全局唯一配置名)。
read_bytes 窗口内读取日志数。 字节
parse_success_lines 窗口内日志解析成功的行数。
parse_fail_lines 窗口日志解析失败的行数。
last_read_time 窗口内最近的读取时间。 Unix时间戳,秒
read_count 窗口内日志读取次数。 次数
avg_delay_bytes 窗口内平均每次读取时当前偏移量与文件大小差值的平均值。 字节
max_unsend_time 窗口结束时发送队列中未发送数据包的最大时间,队列空时为0。 Unix时间戳,秒
min_unsend_time 窗口结束时发送队列中未发送数据包的最小时间,队列空时为0。 Unix时间戳,秒
max_send_success_time 窗口内发送成功数据的最大时间。 Unix时间戳,秒
send_queue_size 窗口结束时当前发送队列中未发送数据包数。
send_network_error_count 窗口内因网络错误导致发送失败的数据包个数。
send_network_quota_count 窗口内因quota超限导致发送失败的数据包个数。
send_network_discard_count 窗口内因数据异常或无权限导致丢弃数据包的个数。
send_success_count 窗口内发送成功的数据包个数。
send_block_flag 窗口结束时发送队列是否阻塞。
sender_valid_flag 窗口结束时该Logstore的发送标志位是否有效,true代表正常,false代表可能因为网络错误或quota错误而被禁用。

Logstore状态列表

状态 含义 处理方式
ok 状态正常 无需处理。
process_block 日志解析阻塞 检查日志产生速度是否过高,若一直出现,按需调整Logtail启动参数配置修改CPU使用上限或网络发送并发限制。
parse_fail 日志解析失败 检查日志格式与日志采集配置是否一致。
send_block 当前发送出现阻塞 检查日志产生速度是否过高以及网络状态是否正常,若一直出现,按需调整Logtail启动参数配置修改CPU使用上限或网络发送并发限制。
sender_invalid 日志数据发送异常 检查网络状态,若网络正常,参考收集错误查询:SEND_DATA_FAIL_ALARM解决。

2.4. logfile命令

命令格式

  1. /etc/init.d/ilogtaild status logfile [--format={line|json}] index project-name logstore-name fileFullPath

说明

  • logfile命令指定以line或json形式输出指定日志文件的采集状态。
  • 如果不配置--format=参数,则默认选择--format=line,按照line形式输出回显信息。
  • 若无该logfile或该logfile在当前查询窗口期没有日志采集活动,则line形式输出为空,json下为null

注意

  • --format参数需位于logfile之后。
  • filefullpath必须是全路径名。

示例

  1. /etc/init.d/ilogtaild status logfile 1 sls-zc-test release-test-same /disk2/test/normal/access.log
  2. time_begin_readable : 17-08-29 11:16:11
  3. time_end_readable : 17-08-29 11:26:11
  4. time_begin : 1503976571
  5. time_end : 1503977171
  6. project : sls-zc-test
  7. logstore : release-test-same
  8. status : ok
  9. config : ##1.0##sls-zc-test$same
  10. file_path : /disk2/test/normal/access.log
  11. file_dev : 64800
  12. file_inode : 22544456
  13. file_size_bytes : 17154060
  14. file_offset_bytes : 17154060
  15. read_bytes : 65033430
  16. parse_success_lines : 230615
  17. parse_fail_lines : 0
  18. last_read_time : 1503977170
  19. read_count : 667
  20. avg_delay_bytes : 0
  21. /etc/init.d/ilogtaild status logfile --format=json 1 sls-zc-test release-test-same /disk2/test/normal/access.log
  22. {
  23. "avg_delay_bytes" : 0,
  24. "config" : "##1.0##sls-zc-test$same",
  25. "file_dev" : 64800,
  26. "file_inode" : 22544456,
  27. "file_path" : "/disk2/test/normal/access.log",
  28. "file_size_bytes" : 17154060,
  29. "last_read_time" : 1503977170,
  30. "logstore" : "release-test-same",
  31. "parse_fail_lines" : 0,
  32. "parse_success_lines" : 230615,
  33. "project" : "sls-zc-test",
  34. "read_bytes" : 65033430,
  35. "read_count" : 667,
  36. "read_offset_bytes" : 17154060,
  37. "status" : "ok",
  38. "time_begin" : 1503976571,
  39. "time_begin_readable" : "17-08-29 11:16:11",
  40. "time_end" : 1503977171,
  41. "time_end_readable" : "17-08-29 11:26:11"
  42. }

输出信息描述

关键字 含义 单位
status 该日志文件当前窗口期的采集状态,参见logstore命令的status。
time_begin_readable 可读的开始时间。
time_end_readable 可读的截止时间。
time_begin 统计开始时间。 Unix时间戳,秒
time_end 统计结束时间。 Unix时间戳,秒
project Project名。
logstore Logstore名。
file_path 该日志文件路径。
file_dev 该日志文件的device id。
file_inode 该日志文件的inode。
file_size_bytes 窗口内最近一次扫描到的该文件大小。 字节
read_offset_bytes 当前该文件解析偏移量。 字节
config 采集配置名(由##1.0## + project + $ + config组成的全局唯一配置名)。
read_bytes 窗口内读取日志数。 字节
parse_success_lines 窗口内日志解析成功的行数。
parse_fail_lines 窗口内日志解析失败的行数。
last_read_time 窗口内最近的读取时间。 Unix时间戳,秒
read_count 窗口内日志读取次数。 次数
avg_delay_bytes 窗口内平均每次读取时当前偏移量与文件大小差值的平均值。 字节

2.5. history命令

命令格式

  1. /etc/init.d/ilogtaild status history beginIndex endIndex project-name logstore-name [fileFullPath]

说明

  • history命令用来查询Logstore或日志文件一段时间内的采集状态。
  • beginIndexendIndex分别为代码查询窗口索引的起始值和终止值,需确保beginIndex <= endIndex
  • 若参数中不输入fileFullPath,则代码查询Logstore的采集信息;否则查询日志文件的采集信息。

示例

  1. /etc/init.d/ilogtaild status history 1 3 sls-zc-test release-test-same /disk2/test/normal/access.log
  2. begin_time status read parse_success parse_fail last_read_time read_count avg_delay device inode file_size read_offset
  3. 17-08-29 11:26:11 ok 62.12MB 231000 0 17-08-29 11:36:11 671 0B 64800 22544459 18.22MB 18.22MB
  4. 17-08-29 11:16:11 ok 62.02MB 230615 0 17-08-29 11:26:10 667 0B 64800 22544456 16.36MB 16.36MB
  5. 17-08-29 11:06:11 ok 62.12MB 231000 0 17-08-29 11:16:11 687 0B 64800 22544452 14.46MB 14.46MB
  6. $/etc/init.d/ilogtaild status history 2 5 sls-zc-test release-test-same
  7. begin_time status read parse_success parse_fail last_read_time read_count avg_delay send_queue network_error quota_error discard_error send_success send_block send_valid max_unsend min_unsend max_send_success
  8. 17-08-29 11:16:11 ok 62.02MB 230615 0 17-08-29 11:26:10 667 0B 0 0 0 0 300 false true 70-01-01 08:00:00 70-01-01 08:00:00 17-08-29 11:26:08
  9. 17-08-29 11:06:11 ok 62.12MB 231000 0 17-08-29 11:16:11 687 0B 0 0 0 0 303 false true 70-01-01 08:00:00 70-01-01 08:00:00 17-08-29 11:16:10
  10. 17-08-29 10:56:11 ok 62.02MB 230615 0 17-08-29 11:06:10 687 0B 0 0 0 0 302 false true 70-01-01 08:00:00 70-01-01 08:00:00 17-08-29 11:06:08
  11. 17-08-29 10:46:11 ok 62.12MB 231000 0 17-08-29 10:56:11 692 0B 0 0 0 0 302 false true 70-01-01 08:00:00 70-01-01 08:00:00 17-08-29 10:56:10

输出信息描述

  • 该命令以列表形式输出Logstore或日志文件的历史采集信息,每个窗口期一行。
  • 输出字段含义请参见logstorelogfile命令。

3. 命令返回值

正常返回值

所有命令输入有效情况下返回值为0(包括无法查询到Logstore或日志文件),例如:

  1. /etc/init.d/ilogtaild status logfile --format=json 1 error-project error-logstore /no/this/file
  2. null
  3. echo $?
  4. 0
  5. /etc/init.d/ilogtaild status all
  6. ok
  7. echo $?
  8. 0

异常返回值

返回值非0时,说明发生异常,请参考以下信息。

返回值 类型 输出 问题排查
10 无效命令或缺少参数 invalid param, use -h for help. 输入-h查看帮助。
1 查询超过1-60的时间窗口 invalid query interval 输出-h查看帮助。
1 无法查询到指定时间窗口 query fail, error: $(error),具体参见errno释义 可能原因是logtail启动时间小于查询时间跨度,其他情况请提交工单处理。
1 查询窗口时间不匹配 no match time interval, please check logtail status 检查Logtail是否在运行,其他情况请提交工单处理。
1 查询窗口内没有数据 invalid profile, maybe logtail restart 检查Logtail是否在运行,其他情况请提交工单处理。

示例

  1. /etc/init.d/ilogtaild status nothiscmd
  2. invalid param, use -h for help.
  3. echo $?
  4. 10
  5. /etc/init.d/ilogtaild status/all 99
  6. invalid query interval
  7. echo $?
  8. 1

4. 功能使用场景示例

通过Logtail健康度查询可以获取Logtail当前整体状态;通过采集进度查询可以获取采集过程中的相关指标信息。用户可根据获取的这些信息实现自定义的日志采集监控。

4.1 监控Logtail运行状态

通过all命令实现Logtail运行状态监控。

实现方式:每隔一分钟定期查询Logtail当前状态,若连续5分钟状态处于process_blocksend_blocksend_error则触发报警。

具体报警持续时间以及监控的状态范围可根据具体场景中日志采集重要程度调整。

4.2. 监控日志采集进度

通过logstore命令实现具体日志库采集进度监控。

实现方式:定期每隔10分钟调用logstore命令获取该logstore的状态信息,若avg_delay_bytes超过1MB(1024*1024)或status不为ok则触发报警。

具体avg_delay_bytes报警阈值可根据日志采集流量调整。

4.3. 判断日志文件是否采集完毕

通过logfile命令判断日志文件是否采集完毕。

实现方式:日志文件已经停止写入后,定期每隔10分钟调用logfile命令获取该文件的状态信息,若该文件read_offset_bytesfile_size_bytes一致,则该日志文件已经采集完毕。

4.4. 日志采集问题排查

若发现某台服务器日志采集进度延迟,可用history命令查询该服务器上相关的采集信息。

  1. send_block_flag为true,则说明日志采集进度延迟block在网络部分。

    • send_network_quota_count大于0时,需要对Logstore的Shard进行分裂
    • send_network_error_count大于0时,需要检查网络连通性。
    • 若无相关network error,则需要调整Logtail的发送并发以及流量限制
  2. 发送部分相关参数正常但avg_delay_bytes较高。

    • 可根据read_bytes计算出日志平均解析速度,判断日志产生流量是否异常。
    • 可适当调整logtail的资源使用限制
  3. parse_fail_lines大于0。

    检查日志采集解析配置是否能够匹配所有日志。

本文导读目录