Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prototype a Node.js Version of the Server #2549

Closed
17 tasks done
simianhacker opened this issue Jan 7, 2015 · 10 comments · Fixed by #2574
Closed
17 tasks done

Prototype a Node.js Version of the Server #2549

simianhacker opened this issue Jan 7, 2015 · 10 comments · Fixed by #2574

Comments

@simianhacker
Copy link
Member

Create a prototype of the server portion of Kibana in Node.js. Why would we want to do something like this? Because we want to use Phantom.js to generate PDFs for visualizations. There are also some limitations with the JRuby server that we've been fighting that are impossible to solve.

Things that need to be done:

  • Create initial structure in Express 4.0
  • Create package.json
  • Create endpoint for /config
  • Create proxy for /elasticsearch
  • Honor the elasticsearch_preserve_host setting in kibana.yml
  • Support basic auth for the Elasticsearch endpoint
  • Support unsigned certificates for the Elasticsearch endpoint
  • Support compression for responses (see Request Compression #2056)
  • Add JSON logging for production environments.
  • Support loading plugins from two directories (bundled_plugins_folder and external_plugins_folders)
  • Create command line options similar to JRuby version to override settings form the command line
  • Modify grunt tasks for building the NPM module
  • Create a system for building embedded binaries for Windows, Mac OS X, Linux 32/64
  • Publish Kibana as an NPM module
  • Change grunt dev to start the Express app
  • Create batch script for Windows
  • Create shell script for Unix systems
@simianhacker simianhacker self-assigned this Jan 7, 2015
@simianhacker simianhacker added this to the 4.0.0-RC1 milestone Jan 7, 2015
@w33ble
Copy link
Contributor

w33ble commented Jan 7, 2015

+1

@rashidkpc
Copy link
Contributor

+1, this could be super cool

@pemontto
Copy link

pemontto commented Jan 8, 2015

👍

@noamgal
Copy link

noamgal commented Jan 8, 2015

@simianhacker, is it possible you to update when each of above items in the list is done (and maybe add commit hash) ?
I'm mostly interested in "Support basic auth for the Elasticsearch endpoint"

@simianhacker
Copy link
Member Author

@td-edge
Copy link

td-edge commented Jan 8, 2015

What limitations were you seeing with ruby?

@simianhacker
Copy link
Member Author

It's a combination of factors:

  • JRuby is stuck on 1.9.3
  • Slow startup times in JRuby
  • JRuby doesn't support response compression.
  • Ruby is not a suitable proxy or web server. It's a really good scripting language when it's paired with a web server (like Nginix or Apache). 
  • Node.js is really good at IO based servers (web and proxy servers)
  • Node.js is a better fit for our team and the the tooling we use for development.
  • We have plans to use Phantom.js to generate PDFs

@megastef
Copy link

megastef commented Jan 9, 2015

+1 I would add flexible url router concept (e.g. where to store kibana dashboards, e.g. in user specific index/file/db)

@jordansissel
Copy link
Contributor

+1 love this plan

@megastef
Copy link

do you know this already?
https://github.com/fangli/kibana-authentication-proxy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants