日志服务控制台无法采集到数据

问题描述

日志服务控制台无法采集到数据。

解决方案

排查Rsyslog服务

  1. 登录无法采集到数据的ECS实例,检查Rsyslog服务的配置文件syslog.conf,文件内容如下。

    $WorkDirectory /var/spool/rsyslog # where to place spool files
    $ActionQueueFileName fwdRule1     # unique name prefix for spool files
    $ActionQueueMaxDiskSpace 1g       # 1gb space limit (use as much as possible)
    $ActionQueueSaveOnShutdown on     # save messages to disk on shutdown
    $ActionQueueType LinkedList       # run asynchronously
    $ActionResumeRetryCount -1        # infinite retries if host is down
    # 定义日志数据的字段
    $template ALI_LOG_FMT,"0.1 sys_tag %timegenerated:::date-unixtimestamp% %fromhost-ip% %hostname% 
    %pri-text% %protocol-version% %app-name% %procid% %msgid% %msg:::drop-last-lf%\n"
    *.*      @@[ip]:[port];ALI_LOG_FMT	#第一个*代表所有的消息类型。第二个*代表所有级别的消息。@@代表TCP协议(@代表UDP)。[ip]代表该syslog消息要转发到的主机IP地址。[port]代表端口。ALI_LOG_FMT代表模板名称,可以配置多个模板。$template为模板标识。双引号中内容为模板内容。0.1为该日志格式的版本号,Logtail使用该版本号解析user-defined-field字段。sys_tag为数据标签,用于寻找Project或Logstore,在控制台中的tag名称。timegenerated:::date-unixtimestamp%为该条日志的时间戳。%fromhost-ip%为该条日志的对应的机器IP,如果日志中的该字段是 127.0.0.1,最终发往服务端的日志数据中该字段会被替换成TCP socket的对端地址。%hostname% ~~ %msgid%为用户自定义字段,中括号表示是可选字段。%msg:::drop-last-lf%为日志消息正文。
  2. 执行如下命令,查看Rsyslog服务是否启动。

    service rsyslog status
  3. 执行如下命令,查看Rsyslog监听端口和转发端口。

    netstat -antpul |grep 11111

    系统显示类似如下,可以看到一个Rsyslog进程,两个Sockets监听,一个监听本机的53552端口,转发到本机的11111端口,另一个监听本机的53554端口,转发到本机的11111端口。有两个是因为syslog.conf中配置了两个规则,而Logtial服务也启动了三个,两个ESTABLISHED状态的监听与两个ESTABLISHED状态的Rsyslog监听在进行数据传输。

排查Logtail服务

  1. 执行如下命令,查看Logtial服务运行状态。

    /etc/init.d/ilogtaild status
  2. 通过ilogtail.LOG判断Logtial服务是否有报错。

排查机器组状态

排查机器组状态,具体操作,请参见Logtail机器组无心跳排查思路

日志服务控制台检查

  1. 登录日志服务控制台
  2. 查看报错信息,对比日志服务,详见查询诊断错误

  3. 单击预览,通过预览数据查看是否采集到了数据。如果采集到,但查询无法查到,应该是没有开启日志索引,或者设置索引错误导致,详见查询和分析日志