HTTP
最大的特点就是无限的灵活,主要体现在三个方面。
-
HTTP
接口由于是自己定制的,监控内容非常灵活 -
判断使用
js
表达式(nashorn
实现),监控判断非常灵活 -
报警消息可完全自己定制
HTTP Url: http://localhost:9200/_cluster/health?pretty
常规返回结果:
{
"number_of_pending_tasks": 0,
"cluster_name": "elk",
"active_shards": 15050,
"active_primary_shards": 7526,
"unassigned_shards": 0,
"delayed_unassigned_shards": 0,
"HTTP_STATUS": 200,
"timed_out": false,
"HTTP_COST": 181,
"relocating_shards": 0,
"initializing_shards": 0,
"task_max_waiting_in_queue_millis": 0,
"number_of_data_nodes": 26,
"number_of_in_flight_fetch": 0,
"active_shards_percent_as_number": 100,
"status": "green",
"number_of_nodes": 5
}
javascript
表达式引擎使用nashorn
status == "yellow" || status == "red" || number_of_nodes != 5
意思是集群状态为yellow
或者状态为red
或者节点数量不等于5的时候报警
日志 elasticsearch 集群状态异常。status: ${status}, number_of_nodes: ${number_of_nodes}
消息举例:
日志 elasticsearch 集群状态异常。status: red, number_of_nodes: 2
InfluxDb, Loki, IoTDB
也有自带HTTP
服务,同样可以使用HTTP
来实现InfluxDB, Loki, IoTDB
数据监控,非常方便,自己试试吧。
除了利用现有的中间件提供的REST API
之外,你还可以自己定义HTTP
接口,接口里只需要写监控逻辑,接口返回的JSON
数据,
可以用于消息模板的变量,一切均可定制,你可以为所欲为。