elastalert icon indicating copy to clipboard operation
elastalert copied to clipboard

Unable to start ElastAlert on Kubernetes

Open prasadus92 opened this issue 5 years ago • 3 comments

It just fails with the below error -

> @bitsensor/[email protected] start /opt/elastalert-server
> sh ./scripts/start.sh
23:20:56.855Z  INFO elastalert-server: Server:  Stopping server
/opt/elastalert-server/src/common/websocket.js:34
  wss.clients.forEach(function (ws) {
      ^
TypeError: Cannot read property 'clients' of null
    at Timeout._onTimeout (/opt/elastalert-server/src/common/websocket.js:22:7)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7)

A similar issue is being discussed here as well though it's for Elasticsearch v7 - https://github.com/ServerCentral/praeco/issues/132

The version of Elasticsearch that I am using is 6.4.2

prasadus92 avatar Oct 01 '19 23:10 prasadus92

makr

zhifei92 avatar Oct 12 '19 04:10 zhifei92

Hi folks,

I am having the same problem with Docker. I've been struggling with this for a few days. I tried also manually setting this up outside of docker, to see if I could troubleshoot the problem, to which I received the exact same error.

I tried modifying that file to do a sanity check to ensure that it wasn't testing null, but that caused further problems down the line.

I will continue to see what I can figure out on my end. Happy to provide any config files upon request.

`user@computer:/docker/elastalert# docker logs elastalert

@bitsensor/[email protected] start /opt/elastalert-server sh ./scripts/start.sh

02:30:20.315Z INFO elastalert-server: Config: No config.dev.json file was found in /opt/elastalert-server/config/config.dev.json. 02:30:20.317Z INFO elastalert-server: Config: Proceeding to look for normal config file. 02:30:20.317Z INFO elastalert-server: Config: A config file was found in /opt/elastalert-server/config/config.json. Using that config. 02:30:20.329Z INFO elastalert-server: Router: Listening for GET request on /. 02:30:20.330Z INFO elastalert-server: Router: Listening for GET request on /status. 02:30:20.330Z INFO elastalert-server: Router: Listening for GET request on /status/control/:action. 02:30:20.330Z INFO elastalert-server: Router: Listening for GET request on /status/errors. 02:30:20.330Z INFO elastalert-server: Router: Listening for GET request on /rules. 02:30:20.331Z INFO elastalert-server: Router: Listening for GET request on /rules/:id. 02:30:20.331Z INFO elastalert-server: Router: Listening for POST request on /rules/:id. 02:30:20.332Z INFO elastalert-server: Router: Listening for DELETE request on /rules/:id. 02:30:20.332Z INFO elastalert-server: Router: Listening for GET request on /templates. 02:30:20.334Z INFO elastalert-server: Router: Listening for GET request on /templates/:id. 02:30:20.334Z INFO elastalert-server: Router: Listening for POST request on /templates/:id. 02:30:20.335Z INFO elastalert-server: Router: Listening for DELETE request on /templates/:id. 02:30:20.335Z INFO elastalert-server: Router: Listening for POST request on /test. 02:30:20.335Z INFO elastalert-server: Router: Listening for GET request on /config. 02:30:20.335Z INFO elastalert-server: Router: Listening for POST request on /config. 02:30:20.335Z INFO elastalert-server: Router: Listening for POST request on /download. 02:30:20.335Z INFO elastalert-server: Router: Listening for GET request on /metadata/:type. 02:30:20.335Z INFO elastalert-server: Router: Listening for GET request on /mapping/:index. 02:30:20.335Z INFO elastalert-server: Router: Listening for POST request on /search/:index. 02:30:20.352Z ERROR elastalert-server: Server: Starting server failed with error: TypeError: object must be passed at module.exports (/opt/elastalert-server/node_modules/object-resolve-path/object-resolve-path.js:13:11) at ServerConfig.get (/opt/elastalert-server/src/common/config/server_config.js:32:12) at /opt/elastalert-server/src/elastalert_server.js:67:58 at /opt/elastalert-server/src/common/config/server_config.js:60:9 at Array.forEach () at /opt/elastalert-server/src/common/config/server_config.js:59:22 02:30:20.352Z INFO elastalert-server: Server: Stopping server /opt/elastalert-server/src/common/websocket.js:34 wss.clients.forEach(function (ws) { ^

TypeError: Cannot read property 'clients' of null at Timeout._onTimeout (/opt/elastalert-server/src/common/websocket.js:22:7) at listOnTimeout (internal/timers.js:531:17) at processTimers (internal/timers.js:475:7)`

nh-mike avatar Oct 23 '19 02:10 nh-mike

https://github.com/bitsensor/elastalert/blob/2.0.1/src/common/websocket.js#L27 For me increasing of this timeout helped: command: [ "/bin/sh", "-c", "sed -i 's|10000|60000|' src/common/websocket.js && npm start"]

I believe this parameter has to be exposed to the application config instead of hardcoding.

bitpavel avatar Oct 23 '19 07:10 bitpavel