KibanaのDockerイメージを使用する際に利用できる環境変数
概要
公式のDockerイメージを利用してKibanaを利用しているとき、kibana.ymlをマウントしないでできる範囲ってどこなの? ということが気になったので、ちょっと調べてみた。
ポイントは、docker cmdに割り当たっている /usr/local/bin/kibana-dockerの中にありました。
指定できる環境変数
kibana-dockerの中には、以下の設定項目が用意されています。
kibana_vars=( console.enabled console.proxyConfig console.proxyFilter elasticsearch.customHeaders elasticsearch.hosts elasticsearch.logQueries elasticsearch.password elasticsearch.pingTimeout elasticsearch.preserveHost elasticsearch.requestHeadersWhitelist elasticsearch.requestTimeout elasticsearch.shardTimeout elasticsearch.sniffInterval elasticsearch.sniffOnConnectionFault elasticsearch.sniffOnStart elasticsearch.ssl.certificate elasticsearch.ssl.certificateAuthorities elasticsearch.ssl.key elasticsearch.ssl.keyPassphrase elasticsearch.ssl.verificationMode elasticsearch.startupTimeout elasticsearch.username i18n.locale kibana.defaultAppId kibana.index logging.dest logging.quiet logging.silent logging.useUTC logging.verbose map.includeElasticMapsService ops.interval path.data pid.file regionmap regionmap.includeElasticMapsService server.basePath server.customResponseHeaders server.defaultRoute server.host server.maxPayloadBytes server.name server.port server.rewriteBasePath server.ssl.cert server.ssl.certificate server.ssl.certificateAuthorities server.ssl.cipherSuites server.ssl.clientAuthentication server.customResponseHeaders server.ssl.enabled server.ssl.key server.ssl.keyPassphrase server.ssl.redirectHttpFromPort server.ssl.supportedProtocols server.xsrf.whitelist status.allowAnonymous status.v6ApiFormat tilemap.options.attribution tilemap.options.maxZoom tilemap.options.minZoom tilemap.options.subdomains tilemap.url timelion.enabled vega.enableExternalUrls xpack.apm.enabled xpack.apm.ui.enabled xpack.canvas.enabled xpack.graph.enabled xpack.grokdebugger.enabled xpack.infra.enabled xpack.infra.query.partitionFactor xpack.infra.query.partitionSize xpack.infra.sources.default.fields.container xpack.infra.sources.default.fields.host xpack.infra.sources.default.fields.message xpack.infra.sources.default.fields.pod xpack.infra.sources.default.fields.tiebreaker xpack.infra.sources.default.fields.timestamp xpack.infra.sources.default.logAlias xpack.infra.sources.default.metricAlias xpack.ml.enabled xpack.monitoring.elasticsearch.password xpack.monitoring.elasticsearch.pingTimeout xpack.monitoring.elasticsearch.hosts xpack.monitoring.elasticsearch.username xpack.monitoring.elasticsearch.ssl.certificateAuthorities xpack.monitoring.elasticsearch.ssl.verificationMode xpack.monitoring.enabled xpack.monitoring.kibana.collection.enabled xpack.monitoring.kibana.collection.interval xpack.monitoring.max_bucket_size xpack.monitoring.min_interval_seconds xpack.monitoring.node_resolver xpack.monitoring.report_stats xpack.monitoring.elasticsearch.pingTimeout xpack.monitoring.ui.container.elasticsearch.enabled xpack.monitoring.ui.container.logstash.enabled xpack.monitoring.ui.enabled xpack.reporting.capture.browser.chromium.disableSandbox xpack.reporting.capture.browser.chromium.proxy.enabled xpack.reporting.capture.browser.chromium.proxy.server xpack.reporting.capture.browser.chromium.proxy.bypass xpack.reporting.capture.browser.type xpack.reporting.capture.concurrency xpack.reporting.capture.loadDelay xpack.reporting.capture.settleTime xpack.reporting.capture.timeout xpack.reporting.csv.maxSizeBytes xpack.reporting.enabled xpack.reporting.encryptionKey xpack.reporting.index xpack.reporting.kibanaApp xpack.reporting.kibanaServer.hostname xpack.reporting.kibanaServer.port xpack.reporting.kibanaServer.protocol xpack.reporting.queue.indexInterval xpack.reporting.queue.pollInterval xpack.reporting.queue.timeout xpack.reporting.roles.allow xpack.searchprofiler.enabled xpack.security.authProviders xpack.security.cookieName xpack.security.enabled xpack.security.encryptionKey xpack.security.secureCookies xpack.security.sessionTimeout xpack.xpack_main.telemetry.enabled )
また、冒頭にはこのように記述されています。
# Run Kibana, using environment variables to set longopts defining Kibana's # configuration. # # eg. Setting the environment variable: # # ELASTICSEARCH_STARTUPTIMEOUT=60 # # will cause Kibana to be invoked with: # # --elasticsearch.startupTimeout=60
つまり環境変数で指定するときは、大文字で、ピリオドを_にした文字列で指定すれば良いということになりますな。
たとえばKibanaの日本語化
なので、i18n.localeという設定項目であれば、環境変数は I18N_LOCALE=ja-JP とすれば良いということなりますね。
kibana: image: docker.elastic.co/kibana/kibana:7.2.0 container_name: kibana environment: - I18N_LOCALE=ja-JP ports: - 5601:5601 depends_on: - elasticsearch links: - elasticsearch:elasticsearch networks: - esnet
おわりに
設定ファイルに書くのではなく、環境変数で渡すというのは最近よく言われるところです。
日本語化だけでなく、他にも多くの設定項目が環境変数で渡せるので、いろいろお試しを。
おまけ
VSCodeからdockerコンテナに接続して、中のファイルが直接開くことができる・・・いい時代になりました。 とはいえ、docker exec -it **** bashなどと入って、viでやる癖は当分抜けそうにありません。