From f51d97420529f79b9cf643d546dd42f379435f35 Mon Sep 17 00:00:00 2001 From: Clark Boylan <clark.boylan@gmail.com> Date: Mon, 17 Jun 2013 10:12:54 -0700 Subject: [PATCH] Reverse proxy subset of elasticsearch API. It has been requested that we provide programmatic access to the elasticsearch API in addition to the Kibana web UI. Do this by reverse proxying http://logstash.openstack.org/elasticearch/$API_REQUEST to http://elasticsearch.openstack.org:9200/$API_REQUEST. The only values for $API_REQUEST that will be passed through are _aliases, _status, and _search. Change-Id: Ib41f6d91e2e59d493218074a67155af450ec8c93 Reviewed-on: https://review.openstack.org/33316 Reviewed-by: James E. Blair <corvus@inaugust.com> Reviewed-by: Jeremy Stanley <fungi@yuggoth.org> Approved: Clark Boylan <clark.boylan@gmail.com> Reviewed-by: Clark Boylan <clark.boylan@gmail.com> Tested-by: Jenkins --- modules/logstash/manifests/web.pp | 1 + modules/logstash/templates/kibana.vhost.erb | 8 ++++++++ modules/openstack_project/manifests/logstash.pp | 5 +++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/logstash/manifests/web.pp b/modules/logstash/manifests/web.pp index 23fa18597f..1e3172e094 100644 --- a/modules/logstash/manifests/web.pp +++ b/modules/logstash/manifests/web.pp @@ -19,6 +19,7 @@ class logstash::web ( $serveradmin = "webmaster@${::fqdn}", $frontend = 'internal', $elasticsearch_host = 'localhost', + $proxy_elasticsearch = false ) { include apache a2mod { 'rewrite': diff --git a/modules/logstash/templates/kibana.vhost.erb b/modules/logstash/templates/kibana.vhost.erb index eb4093285e..63c5e2629d 100644 --- a/modules/logstash/templates/kibana.vhost.erb +++ b/modules/logstash/templates/kibana.vhost.erb @@ -8,6 +8,14 @@ CustomLog ${APACHE_LOG_DIR}/<%= scope.lookupvar("::logstash::web::vhost_name") %>-access.log combined + <% if proxy_elasticsearch == true %> + # Proxy for elasticsearch _aliases, .*/_status, and .*/_search. + <LocationMatch "^/elasticsearch/(_aliases|.*/_status|.*/_search)$"> + ProxyPassMatch http://<%= scope.lookupvar("::logstash::web::elasticsearch_host") %>:9200/$1 + </LocationMatch> + ProxyPassReverse /elasticsearch/ http://<%= scope.lookupvar("::logstash::web::elasticsearch_host") %>:9200/ + <% end %> + ProxyPass / http://127.0.0.1:5601/ retry=0 ProxyPassReverse / http://127.0.0.1:5601/ </VirtualHost> diff --git a/modules/openstack_project/manifests/logstash.pp b/modules/openstack_project/manifests/logstash.pp index e60161766e..d19b629e0b 100644 --- a/modules/openstack_project/manifests/logstash.pp +++ b/modules/openstack_project/manifests/logstash.pp @@ -30,8 +30,9 @@ class openstack_project::logstash ( } class { 'logstash::web': - frontend => 'kibana', - elasticsearch_host => 'elasticsearch.openstack.org', + frontend => 'kibana', + elasticsearch_host => 'elasticsearch.openstack.org', + proxy_elasticsearch => true, } package { 'python-daemon':