如何配置elastalert以便它将连接到群集中的任何可用服务器? docs说:
es_host 是ElastAlert的Elasticsearch集群的地址 将存储有关其状态,查询运行,警报和错误的数据。每 规则也可以使用不同的Elasticsearch主机进行查询。
但我找到的每个例子都指向一个IP地址或主机名。
我尝试使用[elasticserver1, elasticserver2, elasticserver3]
等主机名列表,但这只会导致elastalert无法启动。
答案 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群集的主机名。"