Я пытаюсь создать наблюдатель, который будет запускаться всякий раз, когда я использую более 80% кучи JVM.
Я делаю следующий запрос кasticsearch v7.5.
{
"trigger": {
"schedule": {
"interval": "20s"
}
},
"input": {
"http": {
"request": {
"scheme": "https",
"host": "domain.region.aws",
"port": 9200,
"method": "get",
"path": "/_cluster/stats"
"params": {},
"headers": {},
"auth": {
"basic": {
"username": "username",
"password": "password"
}
}
}
}
},
"condition": {
"script": {
"inline": "return ((ctx.payload.nodes.jvm.mem.heap_used_in_bytes / ctx.payload.nodes.jvm.mem.heap_max_in_bytes) * 100) > 80"
}
},
"actions": {
"send_email": {
"email": {
"to": "some-email@domain.com",
"subject": "Watcher Notification",
"body": "{{ctx.payload.nodes.jvm.mem.heap_used_in_bytes}} of the JVM heap memory is currently being used."
}
}
}
}
Мое состояние, кажется, возвращает неправильные результаты.
Например:
Если я изменю свой сценарий на:
return ((ctx.payload.nodes.jvm.mem.heap_used_in_bytes / ctx.payload.nodes.jvm.mem.heap_max_in_bytes) * 100) < 1
heap_used_in_bytes
= 979683712
heap_max_in_bytes
= 2739011584
Что должно привести к: 35.767782719 (Неверно)
В результате получится ответ, содержащий (что неверно):
"condition": {
"type": "script",
"status": "success",
"met": true
}
Кажется, что когда я Попробуйте даже простые запросы, используя переменные, это не работает. Например, изменение условия на return ctx.payload.nodes.jvm.mem.heap_max_in_bytes > 2739011584
приводит к странной ошибке компиляции:
{"statusCode":400,"error":"Bad Request","message":"[script_exception] compile error, with { script_stack={ 0=\"... vm.mem.heap_max_in_bytes 2739011584\" & 1=\" ^---- HERE\" } & script=\"return ctx.payload.nodes.jvm.mem.heap_max_in_bytes 2739011584\" & lang=\"painless\" }"}
Простые сравнения, где я не использую переменные, похоже, работают. Я могу напечатать значение переменных, к которым я обращаюсь в скрипте, в значении body
в действии email
. Кто-нибудь может пролить свет на то, что здесь происходит? И есть ли в любом случае распечатать результат этого скрипта в теле письма где-нибудь?