本文介绍如何通过日志服务控制台创建Logtail采集配置来采集Syslog。

前提条件

已在服务器上安装Logtail,详情请参见 安装Logtail(Linux系统)安装Logtail(Windows系统)
说明 目前支持Linux Logtail 0.16.13及以上版本,Window Logtail 1.0.0.8及以上版本。

简介

在Linux服务器中,您可以通过rsyslog等syslog agent将本地的syslog数据转发到指定服务器IP地址和端口上。为指定服务器添加Logtail采集配置后,Logtail插件会以TCP协议或UDP协议接收转发过来的syslog数据,并根据指定的syslog协议进行解析,提取日志中的facility、tag(program)、severity、content等字段。syslog协议支持RFC3164RFC5424

您可以同时配置多个Logtail插件,例如同时使用TCP和UDP监听127.0.0.1:9999。

实现原理

通过Logtail插件对指定的地址和端口进行监听后,Logtail开始采集数据,包括通过rsyslog采集的系统日志、 Nginx转发的访问日志或错误日志,以及通过syslog客户端转发的日志。 实现原理

配置Logtail插件采集syslog

  1. 为rsyslog添加一条转发规则。
    1. 在syslog所在的服务器上修改rsyslog的配置文件/etc/rsyslog.conf,在配置文件的最后添加一行转发规则。
      添加转发规则后,rsyslog会将syslog转发至指定IP地址和端口上。
      • 如果通过当前服务器采集本机syslog,配置转发地址为127.0.0.1,端口为任意非知名的空闲端口。
      • 如果通过其他服务器采集本机syslog,配置转发地址为其他服务器的公网IP,端口为任意非知名的空闲端口。
      例如以下配置表示将所有的日志都通过TCP转发至127.0.0.1:9000,配置文件详细说明请参见 RSyslog Documentation
      *.* @@127.0.0.1:9000
    2. 执行以下命令重启rsyslog,使日志转发规则生效。
      sudo service rsyslog restart
  2. 登录日志服务控制台
  3. 接入数据区域,选择自定义数据插件
  4. 选择日志空间页签中,选择目标Project和Logstore,单击下一步
    您也可以单击 立即创建,重新创建Project和Logstore,详情请参见 步骤1:创建Project和Logstore
  5. 创建机器组页签中,创建机器组。
  6. 机器组配置页签中,应用机器组。
    选择一个机器组,将该机器组从 源机器组移动到 应用机器组
  7. 数据源设置页签中,配置配置名称插件配置
    • inputs为Logtail采集配置,必选项,请根据您的数据源配置。
      说明 一个 inputs中只允许配置一个类型的数据源。
    • processors为Logtail处理配置,可选项。您可以配置一种或多种处理方式,详情请参见处理数据
    同时监听UDP和TCP的示例配置如下:
    {
         "inputs": [
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "tcp://127.0.0.1:9000",
                     "ParseProtocol": "rfc3164"
                 }
             },
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "udp://127.0.0.1:9001",
                     "ParseProtocol": "rfc3164"
                 }
             }
         ]
     }
    配置项 类型 是否必选 说明
    type string 数据源类型,固定为service_syslog
    Address string 指定Logtail插件监听的协议、地址和端口,Logtail插件会根据Logtail采集配置进行监听并获取日志数据。格式为[tcp/udp]://[ip]:[port]。不配置时,默认为tcp://127.0.0.1:9999
    说明
    • Logtail插件配置中设置的监听协议、地址和端口号必须与rsyslog配置文件设置的转发规则相同。
    • 如果安装Logtail的服务器有多个IP地址可接收日志,可以将地址配置为0.0.0.0,表示监听服务器的所有IP地址。
    ParseProtocol string 指定解析日志所使用的协议,默认为空,表示不解析。其中:
    • rfc3164:指定使用RFC3164协议解析日志。
    • rfc5424:指定使用RFC5424协议解析日志。
    • auto:指定插件根据日志内容自动选择合适的解析协议。
    IgnoreParseFailure boolean 指定解析失败后的操作,不配置时,默认为true,表示放弃解析,直接填充所返回的content字段。配置为false ,表示解析失败时丢弃日志。
  8. 查询分析配置页签中,设置索引。
    默认已设置索引,您也可以根据业务需求,重新设置索引,具体请参见 开启并配置索引
    说明
    • 全文索引和字段索引属性必须至少启用一种。同时启用时,以字段索引属性为准。
    • 索引类型为long、double时,大小写敏感和分词符属性无效。

配置Logtail插件采集Nginx日志

Nginx支持直接把访问日志以syslog协议转发到指定IP地址和端口。如果您希望把服务器上包括Nginx访问日志在内的所有数据都以syslog形式集中投递到日志服务,可以根据需求创建Logtail采集配置进行采集。

  1. 为Nginx添加一条转发规则。
    1. 在Nginx服务器的nginx.conf文件中增加转发规则,详情请参见Nginx官网说明
      例如,在配置文件中增加如下内容。
      http {
          ...
      
          # Add this line.
          access_log syslog:server=127.0.0.1:9000,facility=local7,tag=nginx,severity=info combined;
      
          ...
      }
      								
    2. 执行以下命令重启Nginx服务,使配置生效。
      sudo service nginx restart
  2. 创建Logtail采集配置,详情请参见配置Logtail插件采集syslog

后续步骤

Logtail采集Syslog到日志服务后,您可以在日志服务控制台查看日志。

Logtail配置生效
字段 说明
_hostname_ 主机名,如果日志中未提供则获取当前主机名。
_program_ 协议中的tag字段。
_priority_ 协议中的priority字段。
_facility_ 协议中的facility字段。
_severity_ 协议中的severity字段。
_unixtimestamp_ 日志对应的时间戳。
_content_ 日志内容,如果解析失败的话,此字段包含未解析日志的所有内容。
_ip_ 当前主机的IP地址。