事件
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 | 消息发布到日志的级别。支持的值:ALL 、TRACE 、DEBUG 、INFO 、WARNING 、ERROR 、OFF ,默认值: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