Watcher 시작하기
editWatcher 시작하기
editElasticsearch 및 Kibana에 X-Pack을 설치할 때 Watcher가 자동으로 활성화됩니다.
워치에서 알림을 보내도록 설정하려면 다음을 수행합니다.
- 워치를 예약하고 입력을 정의합니다.
- 알림을 보내야 하는지 여부를 확인하는 조건을 추가합니다.
- 조건을 충족할 때 알림을 보내도록 작업을 구성합니다.
워치 예약 및 입력 정의
edit워치 schedule은 워치가 실행되는 빈도를 제어합니다. 워치 input은 평가하려는 데이터를 받습니다.
정기적으로 로그 데이터를 검색하고 그 결과를 워치에 로드하기 위해 interval 일정과 search 입력을 사용할 수 있습니다. 예를 들어 다음 워치는 10초마다 logs
색인에 오류가 있는지 검색합니다.
PUT _xpack/watcher/watch/log_error_watch { "trigger" : { "schedule" : { "interval" : "10s" } }, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } } }
일반적으로 실행 빈도를 낮춰 일정을 구성합니다. 이 예에서는 간격을 10초로 설정하므로 워치가 실행되는 것을 쉽게 확인할 수 있습니다. 이 워치는 실행 빈도가 높으므로 테스트를 마치면 워치를 삭제 해야 합니다. |
이 워치가 10초마다 실행되고 있음을 워치 기록에서 확인할 수 있습니다. 그러나 검색에서 어떤 결과도 반환하지 않으므로 워치 페이로드에 아무것도 로드되지 않은 것입니다.
예를 들어 다음 요청은 워치 기록에서 마지막 10회의 워치 실행(워치 레코드)을 가져옵니다.
GET .watcher-history*/_search?pretty { "sort" : [ { "result.execution_time" : "desc" } ] }
조건 추가
editcondition은 워치에 로드한 데이터를 평가하고 작업이 필요한지 여부를 결정합니다. 워치에 로그 오류를 로드했으므로 오류 유무를 확인하는 조건을 정의할 수 있습니다.
예를 들어 다음 비교 조건은 검색 입력에서 적중 항목을 반환했는지 여부만 확인합니다.
PUT _xpack/watcher/watch/log_error_watch { "trigger" : { "schedule" : { "interval" : "10s" }}, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} } }
compare 조건을 사용하면 실행 컨텍스트에서 손쉽게 값을 비교할 수 있습니다. |
이 비교 조건을 평가한 결과가 true`가 되려면 `logs
색인에 오류를 포함하는 이벤트를 추가해야 합니다. 예를 들어 다음 요청은 logs
색인에 404 오류를 추가합니다.
POST logs/event { "timestamp" : "2015-05-17T18:12:07.613Z", "request" : "GET index.html", "status_code" : 404, "message" : "Error: File not found" }
이벤트를 추가한 다음 워치를 실행하면 그 조건의 평가 결과는 `true`가 됩니다. 워치가 실행될 때마다 조건 결과가 `watch_record`의 일부로 기록되므로 워치 기록을 검색하여 조건 충족 여부를 확인할 수 있습니다.
GET .watcher-history*/_search?pretty { "query" : { "bool" : { "must" : [ { "match" : { "result.condition.met" : true }}, { "range" : { "result.execution_time" : { "from" : "now-10s" }}} ] } } }
작업 구성
edit워치 기록에 워치 레코드를 저장하면 유용하지만, Watcher의 진가는 워치 조건 충족 시 뭔가를 수행할 수 있다는 데 있습니다. 워치의 actions은 워치 조건의 평가 결과가 `true`일 때 해야 할 일을 정의합니다. 이메일을 보내고 서드파티 웹후크를 호출하고 Elasticsearch 색인에 문서를 저장하거나 표준 Elasticsearch 로그 파일에 메시지를 로깅할 수 있습니다.
예를 들어 다음 작업은 오류 탐지 시 Elasticsearch 로그에 메시지를 기록합니다.
PUT _xpack/watcher/watch/log_error_watch { "trigger" : { "schedule" : { "interval" : "10s" }}, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} }, "actions" : { "log_error" : { "logging" : { "text" : "Found {{ctx.payload.hits.total}} errors in the logs" } } } }
워치 삭제
edit`log_error_watch`는 10초마다 실행하도록 구성되었으므로 테스트를 완료하면 삭제해야 합니다. 그렇지 않으면 이 샘플 워치로 인한 노이즈 때문에 워치 기록 및 로그 파일에서 벌어지는 다른 상황을 확인하기 어렵습니다.
워치를 제거하려면 DELETE watch API를 사용합니다.
DELETE _xpack/watcher/watch/log_error_watch
필요한 보안 권한
editWatcher를 사용하려면 사용자에게 다음 보안 권한이 있어야 합니다.
-
클러스터
관리
권한. 사용자가 Watcher API에 액세스할 수 있게 합니다. -
.watch*
색인에 대한 색인읽기
권한. 사용자가.watches
및 .watcher-history-*
색인을 읽을 수 있게 합니다.
다음 단계
edit- 워치의 구성 및 워치 라이프사이클에 대한 자세한 내용은 How Watcher Works의 내용을 참조하십시오.
- 워치 설정의 예는 Example Watches를 참조하십시오.
- 맞춤형 워치 작성의 출발점으로 활용할 수 있는 또 다른 샘플 워치는 Elatic Examples 리포지토리의 Example Watches를 참조하십시오.