如何配置elastalert以便它将连接到群集中的任何服务器?

时间:2017-12-13 18:22:38

标签: elastalert

如何配置elastalert以便它将连接到群集中的任何可用服务器? docs说:

  

es_host 是ElastAlert的Elasticsearch集群的地址   将存储有关其状态,查询运行,警报和错误的数据。每   规则也可以使用不同的Elasticsearch主机进行查询。

但我找到的每个例子都指向一个IP地址或主机名。

我尝试使用[elasticserver1, elasticserver2, elasticserver3]等主机名列表,但这只会导致elastalert无法启动。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

正如您在回答中所指出的,elastalert的目标是群集而不是节点:"规则将用于查询的Elasticsearch群集的主机名。"