2017-12-13 3 views
0

elastalert가 클러스터의 사용 가능한 서버에 연결되도록 구성하는 방법은 무엇입니까? docs 말 :클러스터의 모든 서버에 연결되도록 elastalert를 어떻게 구성합니까?

es_host이 ElastAlert 이 상태에 대한 데이터 쿼리를 실행, 경고 및 오류를 저장하는 것 Elasticsearch 클러스터의 주소입니다. 각 규칙은 다른 Elasticsearch 호스트를 사용하여 쿼리 할 수도 있습니다.

그러나 모든 예제에서는 하나의 IP 주소 또는 호스트 이름을 가리킬 수 있습니다.

[elasticserver1, elasticserver2, elasticserver3]과 같은 호스트 이름 목록을 사용해 보았지만 elastalert가 시작되지 않습니다.

답변

0

답변에서 확인한대로 elastalert는 노드가 아닌 클러스터를 대상으로 지정합니다 : "규칙에서 쿼리 할 수있는 Elasticsearch 클러스터의 호스트 이름".

+0

하지만 클러스터에는 주소가 없으며 mu 클러스터의 여러 서버 한 서버에 액세스 할 수없는 경우 클러스터의 다른 서버 중 하나를 사용하여 logstash, kibana 또는 filebeat의 작동 방식과 유사하게 사용하고 싶습니다. – ThatAintWorking

+0

from elastic : "클러스터는 전체 데이터를 함께 보유하고 모든 노드에서 연합 인덱싱 및 검색 기능을 제공하는 하나 이상의 노드 (서버)의 모음입니다. 클러스터는 고유 이름으로 식별되며 기본적으로"elasticsearch " 이 이름은 노드가 이름으로 클러스터에 참여하도록 설정된 경우 노드가 클러스터의 일부일 수 있기 때문에 중요합니다. " – david

+0

from elastic : "노드는 클러스터의 일부인 단일 서버로 데이터를 저장하고 클러스터의 인덱싱 및 검색 기능에 참여합니다. 클러스터와 마찬가지로 노드는 기본적으로 임의의 이름으로 식별됩니다 시작할 때 노드에 할당 된 Universally Unique IDentifier (UUID) 기본을 원하지 않는 경우 원하는 노드 이름을 정의 할 수 있습니다.이 이름은 네트워크에서 어떤 서버가 어떤 노드를 Elasticsearch 클러스터에 설치해야하는지 알려줍니다. " – david

1

당신은 업스트림로드 밸런서가 그 es 노드를 마무리해야 할 것 같아요.

내 경우에는 nginx를 사용하여 내 es 노드에 대한로드 균형 조정을 수행합니다. 그래서 토폴로지는 다음과 같이이다 :

ElastAlert -> Nginx -> ES node 1 
        -> ES node 2 
        ... 
        -> ES node n 

샘플의 nginx의 설정

upstream elasticsearch { 
    server {node 1}:9200; 
    server {node 2}:9200; 
    server {node n}:9200; 
    keepalive 15; 
    } 

    server { 
    listen 8080; 

    location/{ 
     proxy_pass http://elasticsearch; 
     proxy_http_version 1.1; 
     proxy_set_header Connection "Keep-Alive"; 
     proxy_set_header Proxy-Connection "Keep-Alive"; 
    } 

    } 

샘플 elastalert의 config.yml 여기

es_host: "{nginx ip}" 
es_port: "8080" 

내가 nginx를 와 함께 작동하는 방법에 대해 읽은 기사입니다 https://www.elastic.co/blog/playing-http-tricks-nginx