帮助手册 添加日志类型

添加日志类型

日志类型是应用程序写入日志格式的明确定义。Site24x7 默认支持30 多种不同的日志类型启用 AppLogs,创建日志配置文件将日志类型与其关联,然后开始收集、分析和管理您的日志。除了 Site24x7 默认支持的内容之外,您还可以创建自定义日志类型。

概要  

添加自定义日志类型

如果您的日志类型未列在支持的日志类型列表中,您可以创建自定义日志类型并定义它们。转到管理> AppLogs > 日志类型> 添加日志类型

  1. 显示名称:输入显示名称。
  2. 日志类型:为您的日志类型命名。
  3. 保留期: 保留期是指日志可在 Site24x7 中搜索的天数。
  4. 最大上传限制:您在当前计费周期内可以上传的最大日志量(对于此日志类型)。
  5. 自动发现:切换 启用以在与此日志类型关联的任何新服务器中自动查找此日志格式并开始上传它们。
  6. 示例日志:提供日志条目的三个示例行,以使我们能够发现日志模式。(注意:它至少应该有一个日期字段供您解析日志)
    在上传多行日志时,添加<NewLine>以拆分多行日志,并输入日志模式。

    Add log type
  7. 日志模式:您可以通过编辑 日志模式部分中的相应字段名称来编辑示例输出字段中的任何列。
    每个字段名称都应以 $ 开头和结尾(例如:$Message$)
    如果遇到日期模式不匹配错误,您可以定义自定义日期模式
    • 自定义日志模式可以在日志模式部分给出,语法如下:
      日志模式:$FieldName:DataType:Format$

    属性 描述
    字段名称 提供属性的描述
    数据类型 这是与 FieldName 关联的数据类型。字段名可以是以下数据类型:
    -数字
    -字符串
    -日期
    -十进制
    IP(IPv4 或 IPv6)
    -
    -配置
    -模式
    格式 只有“日期”数据类型才需要。对于其他数据类型,不需要格式
    • 定义数字字段 
      ($FieldName:Number$) 
      此处,数字是与字段名称关联的值的数据类型。 
    • 定义字符串字段
      ($FieldName$) 或 ($FieldName:String$) 
      此处,String 是与字段名称关联的文本。
      (注意:字符串是默认的数据类型,因此不需要单独提及)。
    • 定义日期字段
      ($FieldName:Date:Format$) 
      这里,FieldName 是变量名,Date 是该变量的数据类型。但是,必须使用 Format 定义 Date 变量。
      $DateTime:date:EEEE MMM dd HH:MM:SS:SSS$
      例如,提及
      • 2007 年 9 月 19 日星期二 13:34:56.123 - 格式应为 EEEE MMM dd HH:mm:ss:SSS
      • 2007 年 9 月 19 日 13:34:56 123456 PST - 格式应为 MMM dd yyyy HH:mm:ss:SSSSS z 
      • 19-09-07 1:34:56 pm -0800 - 格式应为 dd-MM-yy(或)y hh:mm:ss a Z
      • 13:34:56,262 - 格式应为 HH:mm:ss, D
      • 9 月 19 日星期二 13:34:56 - 格式应为 EEE MMMM dd HH:mm:ss
      • 对于 Unix 时间(以秒为单位)1190234095,格式应为 $DateTime:date:unix$

      支持的日期格式:

      格式要求  日期格式 例子

      年份 - 2 位数 

      yy (或者) y 17 或者 7 

      年份 - 4 位数字

      yyyy  2017

      月份 - 2 位数

      MM  07

      月份 - 3 个字母

      MMM  Sep

      月份名称全称

      MMMM  September

      日期

      dd  19

      一天中的小时数 (0-12)

      hh 1

      一天中的小时数 (0-23)

      HH 13

      一小时内的分钟

      mm   34

      一分钟几秒 

      ss   56

      一秒毫秒

      SSS  123

      时区 (+0800; -1100)
      时区 (PST)
      时区 (-08:00)

      Z
      z
      X
      -0800
      PST
      +01:00

      一年中的一天

      262

      日期名称 - 3 个字母

      EEE  Tue

      完整的日期名称 

      EEEE  Tuesday

      上午 / 下午 / 上午 / 下午

      a pm

      Unix 时间 - 自纪元以来的秒数

      unix 1190234095
      Unix 时间 - 自纪元以来的毫秒数 unixm 1190234095123

    • 从文件夹或文件名中获取日期值

      文件夹名称通常仅包含年、月和日期字段。仅当日志行末尾包含小时、分钟和秒值时,我们才会获取日期值。

      $DateTime:date:@folder(yyyy-MM-dd)HH:mm:ss$
      $$DateTime:date:@file(yyyy-MM-dd)HH:mm:ss$
      $$DateTime:date:@filepath( yyyy-MM-dd)HH:mm:ss$ $

      例如
      SampleLog

      11:10:11 CassandraDaemon:init 日志记录已初始化
      11:10:12 YamlConfigurationLoader:load 从文件加载设置
      11:10:13 DatabaseDescriptor:data 数据文件目录

      日志模式
      $DateTime:date:@folder(yyyy-MM-dd)HH:mm:ss$ $ClassName$:$Method$ $Message$

      文件名:D:\MyWebApp\2020-01-15\process.log

      在这里,日期值存在于日志文件的父文件夹中;因此 在日志模式中提到了@folder 。

      从不同的语言解析日期值

      例如,以下日志行包含葡萄牙语的日期值。

      示例日志
      日志条目:2019 年 10 月 10 日,星期四 00:00:07 启动消息接收
      日志条目:2019 年 10 月 10 日,星期四 00:00:07 获取队列中的消息 Quantity=0
      日志条目:00:00:08 星期四, 2019年10月10日成功获取数量:CM_OK

      日志模式
      日志条目: $DateTime:date:pt(HH:mm:ss EEEE, dd MMMM yyyy)$ $Message$
      这里,“ pt ”表示葡萄牙语的语言代码。

      有关不同语言的区域设置代码,请参阅此文档

    • 定义十进制字段
      ($FieldName:Decimal$)
      在这里,十进制是与字段名称关联的值的数据类型。例如:165.5
    • 定义 IP 字段
      ( $FieldName:ip$)
      这里,IP 是与字段名称关联的值的数据类型。它可以是 IPv4 或 IPv6 值。 
      例如:  192.0.2.1、2001  :0db8:85a3:0:0:8a2e:0370:7334
    • 定义 Word 字段
      ($Filename:word$)
      此处,Word 是与字段名称关联的值的数据类型。Word 只是 String 的一个子集,但该字段应该只包含一个单词。如果存在多个单词,则应将其定义为 String。
    • 定义config字段
      ($FileName:config:@file$)
      这里, @ file是与字段名称关联的配置类型。
      例如:@folder、 @file、@ip、@host

      ($FieldName:config:@filepath$)
      例如:C:\Program Files\cassandra\logs\server.log
      在这里,如果您提到文件路径,Site24x7 AppLogs 将获取文件的完整路径并将其插入该字段。 
      如果要添加特定文件夹(例如 Cassandra),可以按如下方式定义字段:
      $FieldName:config:@filepath:2$
    • 定义模式字段
      此数据类型是 JSON 文件独有的,用于为同一日志中的任何 json 对象值定义模式。
      模式一:
      json $log:pattern:$RemoteHost$ $RemoteLogName$ $RemoteUser$ [$DateTimefield:date:dd/EEE/yyyy:HH:mm:ss$] $Method$ $RequestURI$ $Protocol$ $Status:number$ $ResponseSize :number$ $Referer$ $UserAgent$$ $stream$ $time$

      在这里,日期字段位于数据类型模式字段内。

      模式二:
      json $log:pattern:$RemoteHost$ $RemoteLogName$ $RemoteUser$ [$DateTimefield$] $Method$ $RequestURI$ $Protocol$ $Status:number$ $ResponseSize:number$ $Referer$ $UserAgent$$ $stream$ $时间:日期:yyyy-mm-dd'T'HH:mm:ss.SSS'Z'$

      在这里,日期字段在数据类型模式字段之外。

      示例日志: 

      {"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}
      {"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}
      {"log":"172.21.163.159 - - [27/Jul/2020:19:53:11] GET /test.txt HTTP/1.1 200 12 - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36","stream":"stdout","time":"2020-07-28T11:29:54.295671087Z"}

  8. 通过 HTTPS 端点将日志发送到 AppLogs
  9. 字段配置:
    • Sample Output表中,将鼠标悬停在字段名称上以找到 字段配置设置图标 图标并单击它。
    • 在打开的ThreadId - Field Configurations窗口中,从左侧窗格中选择所需的字段并填写右侧的选项。
    • 显示名称:名称将根据您从左侧窗格中选择的字段自动附加。
    • 该领域的单位:选择一个合适的单位。此选项仅适用于数字字段。
    • 如果您希望启用它们,请针对以下选项切换到。对于您在此处选择的所有条件(Ignore this Field除外),您可以在下面的Filter Log Lines 选项中定义值:
      • 启用 Groupby:对具有相同值的条目进行分组。
      • Groupby 的字符长度: 指定应该在 Groupby 查询输出中显示的字符数。您最多可以为一个字段添加 200 个字符。
      • 标记为唯一字段:如果该字段包含唯一值,则将此字段指定为唯一字段。您可以在 AppLogs 搜索页面中找到突出显示为链接的特定唯一字段。单击链接以查看与该特定字段对应的日志。
      • 从搜索结果中隐藏此字段:查看搜索结果时隐藏此特定字段。
      • 启用屏蔽:切换到是以启用屏蔽。在正则表达式和掩码字符串中提供要掩码为捕获组的数据的表达式。
      • 启用散列:切换到是以启用散列。提供表达式并将要散列的数据作为捕获组包含在正则表达式中。了解有关屏蔽和散列的更多信息。
    从源头过滤日志行:

    如果您在上述步骤中选择了忽略此字段以外的选项,则可以在过滤日志行选项下定义值。您可以将此过滤器应用于上述多个选项。

    • 仅在此字段时选择日志行:根据您要添加以下值的方式选择匹配或不匹配。
    • 任何这些值:输入指定条件的值。
    • 在源忽略此字段:切换到以在上传之前忽略代理端本身的特定字段。
    • 单击应用

    Update field configurations
  10. 单击保存并将其关联到日志配置文件。你完成了。您可以开始搜索您的日志。
    日志的存储期限固定为 30 天。要增加日志保留期,您可以重新索引日志。了解更多

示例日志模式:

支持以下日志模式:

在这种模式中,所有字段都简单地用空格分隔。

示例日志:
3489 M 04 Mar 09:13:40.537 # WARNING: The TCP backlog setting of 511 cannot be enforced

日志模式:

$PID:number$ $Role$ $DateTime:date$ $LogLevel$ $Message$
$PID:number$ $Role$ $DateTime:date$ $LogLevel$ $Message$
字段名称 字段值
PID 3489
Role M
DateTime 04 Mar 09:13:40.537
LogLevel #
Message
警告:无法强制执行 511 的 TCP 积压设置
  • 带有一些默认字符的日志模式:

在所有日志行中重复一个固定字母或单词的情况下,可以通过在日志模式中提及它们来排除它们。我们在下面的示例中排除了 [,],*,: 等字符。

示例日志:
2017/08/01 01:05:50 [error] 28148#1452: *154 FastCGI sent in stderr

日志模式:

$DateTime:date$ [$LogLevel$] $ProcessId:number$#$ThreadId:number$: *$UniqueId:number$ $Message$
字段名称 字段值
DateTime 2017/08/01 01:05:50
LogLevel error
ProcessId 28148
ThreadId 1452
UniqueId 154
Message 在标准错误中发送的 FastCGI
  • 具有自定义日期格式的日志模式:

如果示例日志包含不同的日期格式,用户必须在日志模式中给出准确的日期格式。

示例日志: 
demo_user demo_db 192.168.22.10 58241 2018-01-08 11:58:23 AEDT 致命:主机没有 pghba.conf 条目

日志模式: 

$User$ $DB$ $RemoteIP$ $PID$ $DateTime:date:yyyy-MM-dd HH:mm:ss z$ $LogLevel$: $Message$
字段名称 字段值
User demo_user
DB demo_db
RemoteIP 192.168.22.10
PID 58241
DateTime 2018-01-08 11:58:23 AEDT
LogLevel FATAL
Message 主机没有 pghba.conf 条目
  • 带有一些字段排除的日志模式:

在某些情况下,并非所有日志行都具有相同数量的字段。一些日志行可能有五个字段,而另一个日志行可能有四个字段。在这种情况下,您必须使用“!”排除缺少的字段 日志模式中的符号。在以下示例中,第二个日志行中缺少“ProcessId”,因此我们在日志模式中排除了该字段。

示例日志: 


  • Aug  7 07:35:02 log-host systemd[1]: Stopping CUPS Scheduler
    Aug  7 08:40:02 log-host kernel: 817216.167300] audit: type=1400

日志模式: 

$DateTime:date$ $Host$ $Application$![$ProcessId$]!: $Message$
Field Name Field Value - Line 1 Field Value - Line 2
DateTime Aug  7 07:35:02 Aug  7 08:40:02
Host log-host log-host
Application systemd kernel
ProcessId 1 -
Message Stopping CUPS Scheduler 817216.167300] audit: type=1400

相关文章

帮助手册 添加 Log Type