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
@天才卧龙的博客