管理Kapacitor订阅
Kapacitor 与 InfluxDB 紧密集成,通过使用 InfluxDB 订阅,将所有写入 InfluxDB 的数据复制到本地或远程端点。Kapacitor 订阅 InfluxDB,使其能够捕获、操作和处理您的数据。
Kapacitor 订阅如何工作
Kapacitor 允许您在数据写入 InfluxDB 时对其进行操作和处理。 与查询 InfluxDB 数据 (除了使用 BatchNode 时) 不同, 所有数据都会通过 InfluxDB 订阅复制到您的 Kapacitor 服务器或集群。 这减少了对 InfluxDB 的查询负载,并将与数据操作相关的开销隔离到您的 Kapacitor 服务器或集群。
在启动时,Kapacitor 会检查 InfluxDB 中是否存在名称与 Kapacitor 服务器或集群 ID 匹配的订阅。
这个 ID 存储在 /var/lib/kapacitor/ 中。
如果在启动时 ID 文件不存在,Kapacitor 将创建它。
如果 InfluxDB 中不存在与 Kapacitor ID 匹配的订阅,Kapacitor
将在 InfluxDB 中创建一个新的订阅。
这个过程确保当 Kapacitor 停止时,只要 /var/lib/kapacitor/ 的内容保持完整,它在重启时会重新连接到相同的订阅。
InfluxDB 用户必须具有管理员权限
用于为Kapacitor创建订阅的InfluxDB用户必须具有
管理员权限。
在您的Kapacitor配置文件中,将InfluxDB用户配置为使用[influxdb].username设置。
Kapacitor 存储其 ID 的目录可以通过 data-dir 根配置选项 在 kapacitor.conf 中进行配置。
容器化或短暂文件系统中的Kapacitor ID
在容器化环境中,文件系统被视为短暂的,通常在容器停止和重启之间不会持久化。 如果 /var/lib/kapacitor/ 未持久化,Kapacitor 在启动时会创建一个新的 InfluxDB 订阅,导致不必要的“重复”订阅。 您将需要手动 删除不必要的订阅。
为了避免这种情况,请持久化 /var/lib/kapacitor 目录。
许多持久化策略可供选择,使用哪种策略取决于您的
特定架构和容器技术。
配置Kapacitor订阅
Kapacitor 订阅配置选项在 [[influxdb]] 部分可用,位于 kapacitor.conf 文件中。以下是特定于订阅的配置选项示例,后面是每个选项的描述。
示例 Kapacitor 订阅配置
[[influxdb]]
# ...
disable-subscriptions = false
subscription-mode = "server"
subscription-protocol = "http"
subscriptions-sync-interval = "1m0s"
# ...
[influxdb.subscriptions]
my_database1 = [ "default", "longterm" ]
[influxdb.excluded-subscriptions]
my_database2 = [ "default", "shortterm" ]
disable-subscriptions
设置为 true 以禁用所有订阅。
subscription-mode
定义Kapacitor的订阅模式。
可用选项:
"server""cluster"
默认设置是 cluster。
subscription-protocol
定义用于订阅的协议。可用选项:
"udp""http""https"
默认设置为 http。
[influxdb.subscriptions]
定义了一组数据库和保留策略以进行订阅。
如果为空,Kapacitor 将订阅所有数据库和保留策略,除了列在
[influxdb.excluded-subscriptions]中的那些。
[influxdb.subscriptions]
# Pattern:
db_name = <list of retention policies>
# Example:
my_database = [ "default", "longterm" ]
[influxdb.excluded-subscriptions]
定义一组要从订阅中排除的数据库和保留策略。
[influxdb.excluded-subscriptions]
# Pattern:
db_name = <list of retention policies>
# Example:
my_database = [ "default", "longterm" ]
只需定义 [influxdb.subscriptions] 或 [influxdb.excluded-subscriptions] 之一。它们基本上以不同的方式实现相同的目的,但特定的使用案例确实适合其中一个。
故障排除
查看Kapacitor服务器或集群ID
您可以通过两种方式查看您的Kapacitor服务器或集群ID:
查看
/var/lib/kapacitor/server.id或/var/lib/kapacitor/cluster.id的内容。ID文件的位置取决于您的操作系统以及
data-dir在您的kapacitor.conf中的设置。运行以下命令:
kapacitor stats general输出中包含服务器和集群的ID。
重复的Kapacitor订阅
重复的Kapacitor订阅通常是由于/var/lib/kapacitor的内容在重启之间未能持久化所导致,如上面所述。解决方案是确保该目录的内容得到持久化。任何已经创建的重复Kapacitor订阅将需要手动删除。