1. 程式人生 > 其它 >Influxdb 接入HTTP終端實現報警自定義

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

 @天才臥龍的部落格