这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

配置事件报告

系统为 vertica.log 自动配置事件报告,并将当前事件自动发布至 ACTIVE_EVENTS 系统表。您也可以将 Vertica 配置为将事件发布至 syslogSNMP

1 - 为 syslog 配置报告

Syslog 是一个网络日志记录实用程序,用于发出、存储和处理日志消息。这是一种将异构数据放入单个数据存储库的有用方法。

要将事件记录到 syslog 中,请为希望记录的每个单独事件启用事件报告。默认情况下,消息会记录到 /var/log/messages 中。

配置报告给 syslog 的事件包括以下步骤:

  1. 允许 Vertica 为 syslog 捕获事件。

  2. 定义 Vertica 为 syslog 捕获哪些事件。

    Vertica 强烈建议您捕获“陈旧检查点 (Stale Checkpoint)”事件。

  3. 定义要使用的 syslog 程序模块。

允许 Vertica 为 syslog 捕获事件

要为 syslog 启用事件捕获功能,请发出以下 SQL 命令:

=> ALTER DATABASE DEFAULT SET SyslogEnabled = 1;

要为 syslog 禁用事件捕获功能,请发出以下 SQL 命令:

=> ALTER DATABASE DEFAULT SET SyslogEnabled = 0;

定义要为 syslog 捕获的事件

要定义用来生成 syslog 条目的事件,请发出以下 SQL 命令,命令下方的列表中所述的一个事件:

=> ALTER DATABASE DEFAULT SET SyslogEvents = 'events-list';

其中 events-list 是以逗号分隔的事件列表,其中包含下面的一项或多项:

  • 磁盘空间不足

  • 只读文件系统

  • K-Safety 丢失

  • 当前容错能力处于临界水平

  • ROS 容器过多

  • 节点状态更改

  • 恢复故障

  • 恢复错误

  • 恢复锁定错误

  • 恢复投影检索错误

  • 刷新错误

  • 刷新锁定错误

  • Tuple Mover 错误

  • 计时器服务任务错误

  • 陈旧检查点

以下示例会为低磁盘空间和恢复故障生成一个 syslog 条目:

=> ALTER DATABASE DEFAULT SET SyslogEvents = 'Low Disk Space, Recovery Failure';

定义要用于报告的 SyslogFacility

Syslog 机制可以对日志记录消息进行多种不同的常规分类,这称为程序模块。通常,所有与身份验证相关的消息都使用 auth (或 authpriv)程序模块记录。这些消息预期是安全的并且未经授权的人员无法查看。普通的操作消息使用 daemon 程序模块记录,该程序模块可接收并视情况存储消息。

SyslogFacility 指令可将所有日志记录消息定向到默认设置以外的其他不同程序模块。使用此指令时,所有日志记录操作都将使用指定的程序模块(身份验证(安全)等等)来完成。

要定义 Vertica 使用哪个 SyslogFacility,请发出以下 SQL 命令:

=> ALTER DATABASE DEFAULT SET SyslogFacility = 'Facility_Name';

其中程序模块级别实参 <Facility_Name> 为以下项目之一:

  • auth

  • authpriv(仅限 Linux)

  • cron

  • uucp(UUCP 子系统)

  • daemon

  • ftp(仅限 Linux)

  • lpr(行式打印机子系统)

  • mail(邮件系统)

  • news(网络新闻子系统)

  • user(默认系统)

  • Local0(本地使用 0)

  • local1(本地使用 1)

  • local2(本地使用 2)

  • local3(本地使用 3)

  • local4(本地使用 4)

  • local5(本地使用 5)

  • local6(本地使用 6)

  • local7(本地使用 7)

捕获其他事件类型

要捕获除上面列出的事件之外的事件,请创建一个 syslog 通知程序并允许它使用 SET_DATA_COLLECTOR_NOTIFY_POLICY 捕获所需的事件。

此通知程序类型监视的事件不会记录到 MONITORING_EVENTS 或 vertica.log

以下示例创建了一个通知程序,当 数据收集器 (DC) 组件 LoginFailures 更新时,它会向 syslog 写入一条消息:

  1. 为当前数据库启用 syslog 通知程序:

    => ALTER DATABASE DEFAULT SET SyslogEnabled = 1;
    
  2. 创建并启用系统日志通知程序 v_syslog_notifier

    => CREATE NOTIFIER v_syslog_notifier ACTION 'syslog'
        ENABLE
        MAXMEMORYSIZE '10M'
        IDENTIFIED BY 'f8b0278a-3282-4e1a-9c86-e0f3f042a971'
        PARAMETERS 'eventSeverity = 5';
    
  3. 配置 syslog 通知程序 v_syslog_notifier 以更新具有 SET_DATA_COLLECTOR_NOTIFY_POLICYLoginFailures DC 组件:

    => SELECT SET_DATA_COLLECTOR_NOTIFY_POLICY('LoginFailures','v_syslog_notifier', 'Login failed!', true);
    

    当用户未能以用户 Bob 身份进行身份验证时,此通知程序将以下消息写入 syslog(默认位置:/var/log/messages):Apr 25 16:04:58 vertica_host_01 vertica: Event Posted: Event Code:21 Event Id:0 Event Severity: Notice [5] PostedTimestamp: 2022-04-25 16:04:58.083063 ExpirationTimestamp: 2022-04-25 16:04:58.083063 EventCodeDescription: Notifier ProblemDescription: (Login failed!) { "_db":"VMart", "_schema":"v_internal", "_table":"dc_login_failures", "_uuid":"f8b0278a-3282-4e1a-9c86-e0f3f042a971", "authentication_method":"Reject", "client_authentication_name":"default: Reject", "client_hostname":"::1", "client_label":"", "client_os_user_name":"dbadmin", "client_pid":523418, "client_version":"", "database_name":"dbadmin", "effective_protocol":"3.8", "node_name":"v_vmart_node0001", "reason":"REJECT", "requested_protocol":"3.8", "ssl_client_fingerprint":"", "ssl_client_subject":"", "time":"2022-04-25 16:04:58.082568-05", "user_name":"Bob" }#012 DatabaseName: VMart Hostname: vertica_host_01

另请参阅

事件报告示例

2 - 为 SNMP 配置报告

为 SNMP 配置事件报告包括以下步骤:

  1. 将 Vertica 配置为启用 SNMP 事件陷阱,如下所述。

  2. 将 Vertica 管理信息库 (MIB) 文件导入到 SNMP 监控设备中。

    利用 Vertica MIB 文件,SNMP 陷阱接收器可以了解其从 Vertica 接收的陷阱,进而使您能够配置其在接收陷阱时采取的操作。

    Vertica 支持 SNMP V1 陷阱协议,该协议位于 /opt/vertica/sbin/VERTICA-MIB 中。有关导入 MIB 文件的详细信息,请参阅 SNMP 监控设备文档。

  3. 配置 SNMP 陷阱接收器处理来自 Vertica 的陷阱。

    不同供应商的 SNMP 陷阱接收器配置显著不同。因而,此处介绍的有关配置 SNMP 陷阱接收器处理来自 Vertica 的陷阱的指南为通用指南。

    Vertica 陷阱是包含若干信息标识字段的单一通用陷阱。这些字段相当于监控事件中所述的事件数据。但是,字段名称所使用的格式略有不同。在 SNMP 下,字段名称不包含空格。此外,字段名称会预先加上“vert”。例如,事件严重级别变为 vertEventSeverity。

    配置陷阱接收器时,请确保使用用于在 Vertica 中配置事件陷阱的相同主机名、端口和社区字符串。

    网络管理提供程序示例:

3 - 为 SNMP 配置事件陷阱

将 Vertica 配置为捕获 SNMP 事件时,默认会捕获以下事件:

  • 磁盘空间不足

  • 只读文件系统

  • K-Safety 丢失

  • 当前容错能力处于临界水平

  • ROS 容器过多

  • 节点状态更改

  • 恢复故障

  • 陈旧检查点

  • CRC 不匹配

要将 Vertica 配置为捕获 SNMP 事件

  1. 启用 Vertica 以捕获 SNMP 事件。

  2. 定义 Vertica 发送陷阱的位置。

  3. (可选)重新定义 Vertica 捕获哪些 SNMP 事件。

要为 SNMP 启用事件陷阱

使用以下 SQL 命令:

=> ALTER DATABASE DEFAULT SET SnmpTrapsEnabled = 1;

要定义 Vertica 发送陷阱的位置

使用以下 SQL 命令,其中 Host_name 和 port 标识 SNMP 所在的计算机,CommunityString 相当于密码,用于控制 Vertica 对服务器的访问:

=> ALTER DATABASE DEFAULT SET SnmpTrapDestinationsList = 'host_name port CommunityString';

例如:

=> ALTER DATABASE DEFAULT SET SnmpTrapDestinationsList = 'localhost 162 public';

也可以指定多个目标,方法是指定以逗号分隔的目标列表:

=> ALTER DATABASE DEFAULT SET SnmpTrapDestinationsList = 'host_name1 port1 CommunityString1, hostname2 port2 CommunityString2';

要定义 Vertica 捕获的事件

使用以下 SQL 命令,其中 Event_Name 是命令下方列表中的一个事件:

=> ALTER DATABASE DEFAULT SET SnmpTrapEvents = 'Event_Name1, Even_Name2';
  • 磁盘空间不足

  • 只读文件系统

  • K-Safety 丢失

  • 当前容错能力处于临界水平

  • ROS 容器过多

  • 节点状态更改

  • 恢复故障

  • 恢复错误

  • 恢复锁定错误

  • 恢复投影检索错误

  • 刷新错误

  • Tuple Mover 错误

  • 陈旧检查点

  • CRC 不匹配

以下示例指定两个事件名称:

=> ALTER DATABASE DEFAULT SET SnmpTrapEvents = 'Low Disk Space, Recovery Failure';

4 - 验证 SNMP 配置

要创建一组检查 SNMP 配置的测试事件:

  1. 将 SNMP 陷阱处理程序设置为捕获 Vertica 事件。

  2. 使用以下命令测试您的设置:

    SELECT SNMP_TRAP_TEST();
        SNMP_TRAP_TEST
    --------------------------
     Completed SNMP Trap Test
    (1 row)