Influxdb 接入HTTP終端實現報警自定義
十年河東,十年河西,莫欺少年窮
學無止境,精益求精
influxdb 的報警由以下三種組成
1、建立檢查
紅色框為絕對值檢查,綠色框為【死人檢查】,這裡選擇絕對值檢查
開啟建立面板後,選擇你要操作的儲存桶,表,欄位,以及所使用的函式
上圖選擇的儲存桶為packing ,表為pack,欄位為temp,函式為max
其中temp可以理解為裝置感測器傳遞過來的溫度,函式max是指取最大值。
切換到第二個面板,我們定義時間和報警級別
名稱和時間很好理解,不做解釋,offset是指偏移量,如果你設定為1秒,則他會查詢延遲一秒的資料。
influxdb 將報警等級分為4中,如下
點開其中一個 + 號
建立如下:
當溫度大於30度時,為致命的警告
當溫度處於20~29.999時,為警告性報警
當溫度處於10~19.999時,為一般性報警
當溫度小於10時,正常
點選報存,進入資訊推送終端的建立
2、資訊推送終端
這裡是指一旦有報警資訊,influxdb自動會將報警資訊(json格式)推送到終端URL
我的終端URL程式碼為(Net6程式碼):
[AllowAnonymous] [HttpPost] [Route("TestAlter")] public IActionResult TestAlter([FromBody] JObject data) { logger.LogError(JsonConvert.SerializeObject(data));return Ok(data); }
3、告警規則
告警規則中的時間間隔是用來檢測產生的報警資訊,而產生的報警資訊存在系統儲存桶中,如下
檢視這個儲存桶
現在像packing 儲存桶中插入一條資料,
pack,code=01 temp=32d
等待15秒後,檢視報警列表
最後,檢查下終端HTTP是否接收到報警資訊
在伺服器上,我用Nlog記錄的日誌
2022-12-05 16:14:51.3820|0|ERROR|IotWebSite.Controllers.BatteryInfluxController|{"_check_id":"0a6432886bd87000","_check_name":"Test","_level":"crit","_measurement":"notifications","_message":"Check: Test is: crit","_notification_endpoint_id":"0a6434db6b691000","_notification_endpoint_name":"Http_test","_notification_rule_id":"0a64354bf80fa000","_notification_rule_name":"RuleTest","_source_measurement":"pack","_source_timestamp":1670228220000000000,"_start":"2022-12-05T08:16:45Z","_status_timestamp":1670228220000000000,"_stop":"2022-12-05T08:17:15Z","_time":"2022-12-05T08:17:15Z","_type":"threshold","_version":1,"code":"01","temp":32} |url: |action: |IotWebSite.Controllers.BatteryInfluxController.TestAlter
@天才臥龍的部落格