Skip to content

事件

Ignite 可以为集群中发生的各种操作生成事件,然后通知业务应用有关这些操作的信息。事件有多种类型,包括缓存事件、节点发现事件、分布式任务执行事件等等。

1.启用事件

在 Ignite 3 中事件是集群范围的配置。事件按通道进行组织,每个通道跟踪一个或多个事件类型。无法启用或禁用单个事件,而是需要禁用事件通道。

如下是创建事件渠道的方法:

shell
cluster config update ignite.eventlog.channels.exampleChannel.events=["USER_AUTHENTICATION_SUCCESS"]

此通道将跟踪USER_AUTHENTICATION_SUCCESS,但尚未触发。要触发事件,必须配置接收器。它将事件信息发送到配置好的特定级别的记录器类别,目前仅支持log接收器类型,并将输出写入 Ignite 日志。以下是使用命令行工具启用日志接收器的方法:

shell
cluster config update ignite.eventlog.sinks.exampleSink = {type="log", channel="exampleChannel"}

之后授权事件将被写入日志,大概如下:

2024-06-04 16:19:29:840 +0300 [INFO][%defaultNode%sql-execution-pool-1][EventLog] {"type":"USER_AUTHORIZATION_SUCCESS","timestamp":1717507169840,"productVersion":"3.0.0","user":{"username":"ignite","authenticationProvider":"basic"},"fields":{"privileges":[{"action":"CREATE_TABLE","on":{"objectType":"TABLE","objectName":"TEST2","schema":"PUBLIC"}}],"roles":["system"]}}

下面是 JSON 格式的集群配置。

提示

在 Ignite 3 中,可以创建和维护 JSON 或 HOCON 格式的配置。

json
{
  "ignite" : {
    "eventlog" : {
        "channels" : [ {
          "enabled" : true,
          "events" : [ "USER_AUTHENTICATION_SUCCESS" ],
          "name" : "exampleChannel"
        } ],
        "sinks" : [ {
          "channel" : "exampleChannel",
          "criteria" : "EventLog",
          "format" : "JSON",
          "level" : "INFO",
          "name" : "sampleSink",
          "type" : "log"
        } ]
    }
  }
}

2.接收器结构

Ignite 3 中的数据接收器配置具有以下结构:

json
{
  "channel" : "exampleChannel",
  "criteria" : "EventLog",
  "format" : "JSON",
  "level" : "INFO",
  "name" : "sampleSink",
  "type" : "log"
}
字段描述
channel数据接收器为其记录数据的事件通道的名称。
criteria日志记录条件,默认仅记录事件日志消息。
format输出格式。目前仅支持JSON消息。
level消息发布到日志的级别。支持的值:ALLTRACEDEBUGINFOWARNINGERROROFF,默认值:INFO
name接收器的名称。
type接收器的类型,目前仅支持log类型,用于将事件写入日志。

3.通道结构

Ignite 3 中的事件通道配置具有以下结构:

json
{
  "enabled" : true,
  "events" : [ "USER_AUTHENTICATION_SUCCESS" ],
  "name" : "exampleChannel"
}
字段描述
enabled是否启用此事件通道。
events事件通道跟踪的事件列表。完整事件类型列表,请参见事件列表
name事件通道的名称。

4.事件结构

Ignite 3 中的所有事件都遵循下面描述的相同基本结构。某些事件在data字段中提供其他上下文信息。

json
{
  "type": "AUTHENTICATION",
  "user": { "username": "John", "authenticationProvider": "basic" },
  "timestamp": 1715169617,
  "productVersion": "3.0.0",
  "fields": {}
}
字段描述
type事件的类型,完整事件类型列表,请参见事件列表
user用户名,身份认证程序用于授权。
timestamp基于UNIX纪元时间的事件发生的时间戳。
productVersion客户端使用的 Ignite 版本。
fields特定于事件的数据。

18624049226