Influxdb訂(ding)閱與kapacitor使用(yong)梳理
轉載請注明出處:
一、訂閱功能的核心作用
InfluxDB 的訂閱是一(yi)種 數(shu)(shu)據自動推送(song)機制(zhi)(zhi),當指(zhi)定數(shu)(shu)據庫的寫入操作(zuo)發生時(shi),InfluxDB 會(hui) 實時(shi)復制(zhi)(zhi)數(shu)(shu)據 并推送(song)到(dao)預先(xian)配置的端點(如 Kapacitor)。
類比說明:
-
類似于 MySQL 的 Binlog 復制(zhi)
-
或 Kafka 的 Producer-Consumer 模型
二、訂閱的工作原理

-
數據路徑
寫入請求 → InfluxDB存儲引擎 → 訂閱分發器 → HTTP推送 → 接收端 -
協議支持
-
默認(ren)使用(yong) HTTP 協議(可(ke)配置 HTTPS)
-
數(shu)據格式(shi)與(yu) InfluxDB 行協議(Line Protocol)一致
-
三、訂閱的配置方法
1. 創建訂閱
-- 基(ji)本語法 CREATE SUBSCRIPTION "<訂(ding)閱名稱>" ON "<數據庫>"."<保留策略>" DESTINATIONS <ALL|ANY> "<協議>://<主機>:<端口>/<路(lu)徑>" -- 實際示例(推(tui)送到(dao)Kapacitor) CREATE SUBSCRIPTION "kapacitor-sub" ON "monitor"."rp30" DESTINATIONS ALL '//kapacitor:9092'
2. 參數說明
| 參數 | 說明 | 示例值 |
|---|---|---|
ALL |
發送到所有目標 | ALL 或 ANY |
ANY |
發送到任意一個可用目標 | |
| 協議 | 支持 http/https/udp |
http |
| 路徑 | Kapacitor 需使用 /write |
/kapacitor/v1/write |
四、訂閱的管理與查看
1. 查看所有訂閱
-- 查看(kan)特定(ding)數據庫的訂閱 SHOW SUBSCRIPTIONS ON "monitor" -- 輸(shu)出(chu)示例: name: monitor retention_policy name mode destinations --------------- ---- ---- ------------ rp30 kapacitor-sub ALL [http://kapacitor:9092]
2. 刪除訂閱
DROP SUBSCRIPTION "kapacitor-sub" ON "monitor"."rp30"
3. 查看訂閱狀態(需監控端點)
kapacitor stats ingress

五、訂閱的核心特點
1. 實時性
-
數據寫入 InfluxDB 后 毫秒級 推(tui)送到訂閱(yue)端
-
對比(bi)查詢拉取(qu)模式,延遲降低(di) 90% 以上
2. 可靠性
| 保障機制 | 說明 |
|---|---|
| 重試機制 | 默認重試 3 次(可配置) |
| 離線緩存 | 網絡中斷時緩存 1000 條數據(默認) |
| 數據去重 | 通過 UUID 避免重復推送 |
六、Kapacitor日志分析數據寫入
查看kapacitor得日志:

(1)數據來源
-
InfluxDB 訂閱推(tui)送:
-
InfluxDB 的
monitor.rp30數據通過 HTTP POST 推送到 Kapacitor 的/write端點。 -
觸發條件:InfluxDB 的
CREATE SUBSCRIPTION配(pei)置生效。
-
(2)數據內容
-
數據庫:
monitor -
保留策略:
rp30 -
時間精度:
ns(納秒級時間戳) -
一致性級別:未指定(默認
all)
(3)Kapacitor 處理
-
成功接收(
status=204):-
Kapacitor 正確接收數據,未返回內容(
204 No Content)。
-
七、Kapacitor命令分析
| 命令 | 作用 | 與 ingress 的關聯性 |
|---|---|---|
kapacitor stats general |
查看任務處理狀態 | 若 ingress 有數據但任務無處理,需檢查任務邏輯 |
kapacitor stats egress |
查看數據輸出(如HTTP告警發送) | 確認數據是否被正確處理并轉發 |
influx -execute "SHOW STATS" |
查看InfluxDB推送統計 | 對比InfluxDB發送量與Kapacitor接收量 |
(1)kapacitor stats egress
典型輸出示例:
Database Retention Policy Measurement Points Received --------- --------------- ----------- --------------- monitor rp30 cpu 1500 _kapacitor autogen edges 39451
| 字段 | 說明 |
|---|---|
| Database | 數據來源的數據庫名(如 monitor) |
| Retention Policy | 數據所屬的保留策略(如 rp30) |
| Measurement | 指標名稱(如 cpu) |
| Points Received | 累計接收的數據點數(持續增長表示數據正常流動) |

(2)kapacitor stats general
root@kapacitor:/var/log/kapacitor# kapacitor stats general ClusterID: 183a5dd5-458f-4923-8c7c-d1951e1da259 ServerID: 675c36aa-e959-4a46-8713-cbe86346b01c Host: kapacitor Tasks: 16 Enabled Tasks: 16 Subscriptions: 4 Platform: OSS Version: 1.5.9 root@kapacitor:/var/log/kapacitor#
可(ke)以查看訂閱任(ren)務得數量(liang)
