0

如何配置 elastalert 使其连接到集群中的任何可用服务器?文档说:

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

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

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

4

2 回答 2

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

于 2017-12-30T02:52:14.083 回答
-1

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

于 2017-12-19T14:12:02.307 回答