您可以将 vRealize Log Insight Linux 代理配置为从一个或多个日志文件收集事件。

默认情况下,vRealize Log Insight Linux 代理会收集由应用程序或编辑器创建的隐藏文件。隐藏文件的文件名以句点开头。您可以通过添加排除参数 exclude=.*,禁止 vRealize Log Insight Linux 代理收集隐藏文件。

字段名称受到一定的限制。以下名称是保留名称,因此不能用作字段名称。

  • event_type
  • hostname
  • source
  • text

您最多可为代理信息指定三个目标,并且可以在发送该信息之前进行筛选。请参见从 vRealize Log Insight 代理转发信息

注: 如果监控大量文件(如 1000 个或更多),将导致 vRealize Log Insight 代理具有较高的资源利用率并影响主机的总体性能。要防止出现这种情况,请配置代理以使用模式和 glob 仅监控所需的文件,或者存档旧日志文件。如果要求监控大量文件,请考虑增加主机参数,例如,CPU 和 RAM。

前提条件

  • root 用户身份登录,或使用 sudo 运行控制台命令。
  • 确认 vRealize Log Insight Linux 代理已安装且正在运行。登录到已安装 vRealize Log Insight Linux 代理的 Linux 计算机,打开控制台,然后运行 pgrep liagent

过程

  1. 在任意文本编辑器中打开 /var/lib/loginsight-agent/liagent.ini 文件。
  2. 找到该文件的 [server|<dest_id>] 部分。添加配置参数并设置环境的值。
    [filelog|section_name]
    directory=path_to_log_directory
    include=glob_pattern
    ...
    参数 描述
    [filelog|section_name] 配置部分的唯一名称。
    directory=full-path-to-log-file 日志文件目录的完整路径。支持 glob 模式。示例配置:
    • 要从 D:\Logs\new_test_logs 目录的所有子目录中收集,请使用 directory=D:\Logs\new_test_logs\*
    • 如果子目录具有自己的子目录,请使用以下配置以监控所有子目录:directory=D:\Logs\new_test_logs\*\*
    注: 要限制文件和目录数并避免较高的资源消耗,您不能为第一级或第二级目录定义目录 glob,例如: directory=c:/tmp/*directory=c:\Logs\*。目录路径必须至少具有两个级别。

    您可以定义一个到当前不存在目录的路径,创建该目录及其中的日志文件后,代理即会收集这些日志文件。

    可以在一个或多个不同配置部分下定义相同的目录,以便多次从同一文件收集日志。利用该过程,可以对相同的事件源应用不同标记和筛选器。
    注: 如果这些部分使用完全相同的配置,则会在服务器端观察到重复的事件。
    include=file_name; ... (可选)要从中收集数据的文件名或文件掩码(glob 模式)。可以通过分号分隔的列表的形式提供值。默认值为 *,表示包括所有文件。该参数区分大小写。

    可以使用文件掩码(glob 模式)将遵循相同命名约定的文件,以及一个文件名下的所有文件分组到一起。例如,包含空格的文件名(例如,vRealize Ops Analytics.logvRealize Ops Collector.log)可以使用 vRealize?Ops?Analytics*.logvRealize*.log 指定。通过使用文件掩码,可以指定 Linux 和 Windows 主机下的代理配置可接受的文件名。

    默认情况下,.zip.gz 文件会从收集中排除。

    重要事项: 如果要收集轮换的日志文件,请使用 includeexclude 参数指定同时与主要文件和轮换文件相匹配的 glob 模式。如果 glob 模式仅与主要日志文件相匹配,则 vRealize Log Insight代理可能会在轮换期间错过事件。 vRealize Log Insight代理会自动确定轮换文件的正确顺序,并将事件以正确的顺序发送到 vRealize Log Insight 服务器。例如,如果您的主要日志文件名为 myapp.log,轮换日志为 myapp.log.1myapp.log.2 等等,可以使用以下 include 模式:

    include= myapp.log;myapp.log.*

    exclude=regular_expression (可选)要从收集中排除的文件名或文件掩码(glob 模式)。可以通过分号分隔的列表的形式提供值。默认值为空,表示不排除任何文件。
    event_marker=regular_expression (可选)表示日志文件中事件开始的正则表达式。如果省略,则默认为换行符。键入的表达式必须使用 Perl 正则表达式语法。
    注: 例如,引号 ( " ") 等符号不作为正则表达式的包装器处理。将其视为模式的一部分。

    由于vRealize Log Insight代理针对实时收集进行了优化,写入时存在内部延迟的部分日志消息可能会拆分到多个事件中。如果日志文件附加操作停止的时间超过 200 毫秒,而没有观察到新的event_marker,部分事件会被视为已完成、已分析且已传送。此计时逻辑不可配置,且优先级高于event_marker设置。日志文件附加程序应刷新完整事件。

    enabled=yes|no (可选)用于启用或禁用配置部分的一个参数。可能的值为 yesno。默认值为 yes
    charset=char-encoding-type (可选)代理所监控的日志文件的字符编码。可能的值包括:
    • UTF-8
    • UTF-16LE
    • UTF-16BE
    默认值为 UTF-8
    tags={"tag-name" : "tag-value", ...}

    (可选)用于向所收集事件的字段添加自定义标记的一个参数。使用 JSON 表示法定义标记。标记名称可以包含字母、数字和下划线。标记名称只能以字母或下划线开头,并且不能超过 64 个字符。标记名称不区分大小写。例如,如果使用 tags={"tag_name1" : "tag value 1", "Tag_Name1" : "tag value 2" },则将 Tag_Name1 作为重复项忽略。不能将 event_type 和时间戳用作标记名称。同一个声明中的所有重复项都将被忽略。

    如果目标是 syslog 服务器,标记可能会覆盖 APP-NAME 字段。例如,tags={"appname":"VROPS"}。

    exclude_fields (可选)用于从收集中排除各个字段的一个参数。可以通过分号或逗号分隔的列表形式提供多个值。例如,
    • exclude_fields=hostname; filepath
    • exclude_fields=type; size
    • exclude_fields=type, size
    raw_syslog=Yes|No 对于使用 syslog 协议的代理,该选项允许代理收集和发送原始 syslog 事件。默认值为 No,表示使用用户指定的 syslog 属性转换收集的事件。启用此选项可在不进行任何 syslog 转换的情况下收集事件。
  3. 保存并关闭 liagent.ini 文件。

示例: 配置

[filelog|messages]
directory=/var/log
include=messages;messages.?

[filelog|syslog]
directory=/var/log
include=syslog;syslog.?

[filelog|Apache]
directory=/var/log/apache2
include=*