From fcbe2229dff31eb3625529f4f40db3766fed06fe Mon Sep 17 00:00:00 2001 From: Satnam Singh Date: Thu, 7 May 2015 23:29:39 -0700 Subject: [PATCH] Kibana by itself Upgrade to Kibana 4 for cluster logging --- .../kibana-controller.yaml | 14 +- .../kibana-image/Dockerfile | 21 ++- .../kibana-image/Makefile | 2 +- .../fluentd-elasticsearch/kibana-image/run.sh | 19 +++ .../kibana-image/run_kibana_nginx.sh | 133 ------------------ 5 files changed, 35 insertions(+), 154 deletions(-) create mode 100755 cluster/addons/fluentd-elasticsearch/kibana-image/run.sh delete mode 100755 cluster/addons/fluentd-elasticsearch/kibana-image/run_kibana_nginx.sh diff --git a/cluster/addons/fluentd-elasticsearch/kibana-controller.yaml b/cluster/addons/fluentd-elasticsearch/kibana-controller.yaml index 1e0255a42cf..edf4336900c 100644 --- a/cluster/addons/fluentd-elasticsearch/kibana-controller.yaml +++ b/cluster/addons/fluentd-elasticsearch/kibana-controller.yaml @@ -16,14 +16,12 @@ spec: name: kibana-logging spec: containers: - - env: - - name: ES_SCHEME - value: https - - name: ES_HOST - value: '"+window.location.hostname+"/api/v1beta3/proxy/namespaces/default/services/elasticsearch-logging' - image: gcr.io/google_containers/kibana:1.2 - name: kibana-logging + - name: kibana-logging + image: gcr.io/google_containers/kibana:1.3 + env: + - name: "ELASTICSEARCH_URL" + value: "http://elasticsearch-logging:9200" ports: - - containerPort: 80 + - containerPort: 5601 name: kibana-port protocol: TCP diff --git a/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile b/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile index 54e7b3c1aaa..9299b48b7af 100644 --- a/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile +++ b/cluster/addons/fluentd-elasticsearch/kibana-image/Dockerfile @@ -1,24 +1,21 @@ # A Dockerfile for creating a Kibana container that is designed # to work with Kubernetes logging. -FROM ubuntu:14.04 +FROM java:openjdk-7-jre MAINTAINER Satnam Singh "satnam@google.com" ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ - apt-get install -y nginx-full curl && \ + apt-get install -y curl && \ apt-get clean -RUN curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.1.1.tar.gz && \ - tar xf kibana-3.1.1.tar.gz && \ - mv kibana-3.1.1/* /usr/share/nginx/html && \ - rm kibana-3.1.1.tar.gz +RUN cd / && \ + curl -O https://download.elastic.co/kibana/kibana/kibana-4.0.2-linux-x64.tar.gz && \ + tar xf kibana-4.0.2-linux-x64.tar.gz && \ + rm kibana-4.0.2-linux-x64.tar.gz -RUN echo "daemon off;" >> /etc/nginx/nginx.conf +COPY run.sh /run.sh -# ADD default /etc/nginx/sites-available/default -ADD run_kibana_nginx.sh /usr/local/bin/run_kibana_nginx.sh - -EXPOSE 80 -CMD ["/usr/local/bin/run_kibana_nginx.sh"] +EXPOSE 5601 +CMD ["/run.sh"] diff --git a/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile b/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile index 1721ddfc02e..63de25f72fe 100755 --- a/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile +++ b/cluster/addons/fluentd-elasticsearch/kibana-image/Makefile @@ -1,6 +1,6 @@ .PHONY: build push -TAG = 1.2 +TAG = 1.3 build: docker build -t gcr.io/google_containers/kibana:$(TAG) . diff --git a/cluster/addons/fluentd-elasticsearch/kibana-image/run.sh b/cluster/addons/fluentd-elasticsearch/kibana-image/run.sh new file mode 100755 index 00000000000..0a243777b19 --- /dev/null +++ b/cluster/addons/fluentd-elasticsearch/kibana-image/run.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Copyright 2015 The Kubernetes Authors All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +export ELASTICSEARCH_URL=${ELASTICSEARCH_URL:-"http://localhost:9200"} +echo ELASTICSEARCH_URL=${ELASTICSEARCH_URL} +/kibana-4.0.2-linux-x64/bin/kibana -e ${ELASTICSEARCH_URL} \ No newline at end of file diff --git a/cluster/addons/fluentd-elasticsearch/kibana-image/run_kibana_nginx.sh b/cluster/addons/fluentd-elasticsearch/kibana-image/run_kibana_nginx.sh deleted file mode 100755 index 2d13791a030..00000000000 --- a/cluster/addons/fluentd-elasticsearch/kibana-image/run_kibana_nginx.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/bash - -# Copyright 2014 The Kubernetes Authors All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This code below is designed to support two specific scenarios for -# using Elasticsearch and Kibana with Kubernetes. In both cases the -# environment variables PROXY_HOST and PROXY_PORT identify the instance -# of Elasticsearch to be used by Kibana. The default value for ES_HOST -# identifies the location that served the Javascript for Kibana and -# the default value of ES_PORT 5601 is the port to be used for connecting -# to Kibana. Both of these may be overriden if required. The two scenarios are: -# 1. Elasticsearch and Kibana containers running in a single pod. In this -# case PROXY_HOST is set to the local host i.e. 127.0.0.1 and the -# PROXY_PORT is set to 9200 because Elasticsearch is running on the -# same name as Kibana. If KIBANA_IP is the external IP address of -# the Kubernetes Kibna service then all requests to: -# KIBANA_LOGGING_SERVICE:$ES_PORT/elasticsearch/XXX -# are proxied to: -# http://127.0.0.1:9200/XXX -# 2. Elasticsearch and Kibana are run in separate pods and Elasticsearch -# has an IP and port exposed via a Kubernetes service. In this case -# the Elasticsearch service *must* be called 'elasticsearch' and then -# all requests sent to: -# KIBANA_LOGGING_SERVICE:$ES_PORT/elasticsearch/XXX -# are proxied to: -# http://$ELASTICSEARCH_LOGGING_SERVICE_HOST:$ELASTICSEARCH_LOGGING_SERVICE_PORT:9200/XXX -# The proxy configuration occurs in a location block of the nginx configuration -# file /etc/nginx/sites-available/default. - -set -o errexit -set -o nounset -set -o pipefail - -#Report all environment variables containing 'elasticsearch' and ES related -set | grep -i elasticsearch -set | grep -i ES_SCHEME -set | grep -i ES_HOST - -cat << EOF > /usr/share/nginx/html/config.js -/** @scratch /configuration/config.js/1 - * - * == Configuration - * config.js is where you will find the core Kibana configuration. This file contains parameter that - * must be set before kibana is run for the first time. - */ -define(['settings'], -function (Settings) { - - - /** @scratch /configuration/config.js/2 - * - * === Parameters - */ - return new Settings({ - - /** @scratch /configuration/config.js/5 - * - * ==== elasticsearch - * - * The URL to your elasticsearch server. You almost certainly don't - * want +http://localhost:9200+ here. Even if Kibana and Elasticsearch are on - * the same host. By default this will attempt to reach ES at the same host you have - * kibana installed on. You probably want to set it to the FQDN of your - * elasticsearch host - * - * Note: this can also be an object if you want to pass options to the http client. For example: - * - * +elasticsearch: {server: "http://localhost:9200", withCredentials: true}+ - * - */ - elasticsearch: "${ES_SCHEME}://${ES_HOST}", - /** @scratch /configuration/config.js/5 - * - * ==== default_route - * - * This is the default landing page when you don't specify a dashboard to load. You can specify - * files, scripts or saved dashboards here. For example, if you had saved a dashboard called - * WebLogs to elasticsearch you might use: - * - * default_route: '/dashboard/elasticsearch/WebLogs', - */ - default_route : '/dashboard/file/logstash.json', - - /** @scratch /configuration/config.js/5 - * - * ==== kibana-int - * - * The default ES index to use for storing Kibana specific object - * such as stored dashboards - */ - kibana_index: "kibana-int", - - /** @scratch /configuration/config.js/5 - * - * ==== panel_name - * - * An array of panel modules available. Panels will only be loaded when they are defined in the - * dashboard, but this list is used in the "add panel" interface. - */ - panel_names: [ - 'histogram', - 'map', - 'goal', - 'table', - 'filtering', - 'timepicker', - 'text', - 'hits', - 'column', - 'trends', - 'bettermap', - 'query', - 'terms', - 'stats', - 'sparklines' - ] - }); -}); -EOF - -exec nginx -c /etc/nginx/nginx.conf "$@"