InfluxDB 訂閱(Subscription)
轉載請注明出處:
一、InfluxDB 訂閱推送機制
1. 推送原理
-
觸發條件:當數據寫入指定數據庫的指定保留策略(RP)時
-
推送方式:通過 HTTP/HTTPS 協議以 POST 請求發送 原始行協議數據
-
數據格式:與直接寫入 InfluxDB 的格式完全相同
示例:cpu,host=server1 usage=75 1625097600000000000
2. 推送流程

二、完整配置示例
1. 在 InfluxDB 中配置訂閱
# 進入InfluxDB命令行 influx # 創建訂閱(推送到Kapacitor) CREATE SUBSCRIPTION "kapacitor-alerts" ON "monitor"."rp30" DESTINATIONS ALL 'http://kapacitor:9092/write' # 創建訂閱(推送到另一個InfluxDB) CREATE SUBSCRIPTION "influxdb-backup" ON "monitor"."rp30" DESTINATIONS ALL 'http://backup-influxdb:8086/write?db=monitor'
查看訂閱:

2. InfluxDB 配置文件優化 (/etc/influxdb/influxdb.conf)
[subscriber] enabled = true http-timeout = "30s" # 推送超時時間 insecure-skip-verify = true # 跳過HTTPS證書驗證(測試用) buffer-size = 2000 # 網絡中斷時的緩存條數
三、接收端配置示例
1. Kapacitor 接收配置
Kapacitor 無需特殊配置,默認在 9092 端口提供 /write 端點接收數據。
2. 自定義HTTP服務接收(Python示例)
from flask import Flask, request app = Flask(__name__) @app.route('/write', methods=['POST']) def handle_data(): print(f"Received data: {request.data.decode()}") return '', 204 # 必須返回204 if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)
四、驗證推送是否成功
1. 檢查訂閱狀態
# 查看所有訂閱 influx -execute "SHOW SUBSCRIPTIONS" # 輸出示例: name: monitor retention_policy name mode destinations --------------- ---- ---- ------------ rp30 kapacitor-alerts ALL [http://kapacitor:9092/write]
2. 監控推送日志
3. 接收端驗證
Kapacitor 端:
# 查看接收統計 kapacitor stats ingress # 輸出示例: Database Retention Policy Measurement Points Received monitor rp30 cpu 1500
自定義HTTP服務端:
直接查看程序輸出的接收日志。
五、故障排查命令
1. 測試推送手動觸發
# 生成測試數據 echo 'test_metric,host=test1 value=1 $(date +%s%N)' | \ curl -XPOST 'http://influxdb:8086/write?db=monitor&rp=rp30' --data-binary @- # 檢查是否推送(InfluxDB端) journalctl -u influxdb | grep -A 5 "test_metric"
2. 網絡連通性測試
# 從InfluxDB容器測試Kapacitor連通性 docker exec -it influxdb curl -v -X POST http://kapacitor:9092/write -d "test value=1"
3. 查看失敗記錄
# 查看未推送的緩存數據 influx -execute "SHOW DIAGNOSTICS"
4. 查看全局配置
SHOW DIAGNOSTICS
可以查看全局配置和系統信息
通過上面命令可以看到一下配置項:
name: config-subscriber enabled http-timeout write-buffer-size write-concurrency ------- ------------ ----------------- ----------------- true 30s 1000 40
訂閱功能啟用,超時30s,并發40線程
六、高級配置技巧
1. 調試模式啟用
# 在InfluxDB配置中增加調試日志 [logging] level = "debug" subscriber = true
七、關鍵注意事項
-
數據一致性
-
訂閱推送是 至少一次(at-least-once) 語義
-
網絡中斷可能導致重復數據
-
-
性能影響
-
每個訂閱目標會增加約 5% 的 CPU 開銷
-
建議訂閱目標不超過 3 個
-
-
版本兼容性
-
InfluxDB 1.x 和 2.x 的訂閱機制不同
-
Kapacitor 1.6+ 版本需使用
/write端點
-

浙公網安備 33010602011771號