管理 Kapacitor 订阅
Kapacitor 通过使用 InfluxDB 订阅、本地或远程端点与 InfluxDB 紧密集成,所有写入 InfluxDB 的数据都会复制到这些端点。Kapacitor 订阅 InfluxDB,使其能够捕获、操作和处理您的数据。
Kapacitor 订阅的工作原理
Kapacitor 允许您在数据写入 InfluxDB 时对其进行操作和处理。所有数据都通过 InfluxDB 订阅复制到您的 Kapacitor 服务器或集群,而不是查询 InfluxDB 获取数据(使用 BatchNode (批处理节点) 时除外)。这减少了 InfluxDB 上的查询负载,并将与数据操作相关的开销隔离到您的 Kapacitor 服务器或集群。
启动时,Kapacitor 会检查 InfluxDB 中是否存在与 Kapacitor 服务器或集群 ID 匹配的名称的订阅。此 ID 存储在 /var/lib/kapacitor/
中。如果 ID 文件在启动时不存在,Kapacitor 会创建它。如果 InfluxDB 中不存在与 Kapacitor ID 匹配的订阅,Kapacitor 会在 InfluxDB 中创建新订阅。此过程确保 Kapacitor 停止时,只要 /var/lib/kapacitor/
的内容保持不变,它就会在重启时重新连接到相同的订阅。
InfluxDB 用户必须具有管理员权限
用于为 Kapacitor 创建订阅的 InfluxDB 用户必须具有管理员权限。配置 InfluxDB 用户以与 Kapacitor 配置文件中的 [influxdb].username
设置 一起使用。
Kapacitor 存储其 ID 的目录可以使用 kapacitor.conf
中的 data-dir
根配置选项 进行配置。
容器化或临时文件系统中的 Kapacitor ID
在容器化环境中,文件系统被认为是临时的,并且通常不会在容器停止和重启之间持久存在。如果 /var/lib/kapacitor/
没有持久化,Kapacitor 将在启动时创建新的 InfluxDB 订阅,从而导致不必要的“重复”订阅。然后,您需要手动 删除不必要的订阅。
为避免这种情况,请持久化 /var/lib/kapacitor
目录。有许多持久化策略可用,具体使用哪种策略取决于您的特定架构和容器化技术。
配置 Kapacitor 订阅
Kapacitor 订阅配置选项在 kapacitor.conf
中的 [[influxdb]]
部分下可用。以下是订阅特定配置选项的示例,后跟每个选项的描述。
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 文件的位置取决于您的操作系统和
kapacitor.conf
中的data-dir
设置。运行以下命令
kapacitor stats general
服务器和集群 ID 包含在输出中。
重复的 Kapacitor 订阅
重复的 Kapacitor 订阅通常是由 /var/lib/kapacitor
的内容在重启之间未持久化引起的,如 上文 所述。解决方案是确保持久化此目录的内容。任何已创建的重复 Kapacitor 订阅都需要 手动删除。
此页内容对您有帮助吗?
感谢您的反馈!