elastalert
elastalert copied to clipboard
Unable to start ElastAlert on Kubernetes
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
makr
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 (
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)`
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.