kibanaのインストールに苦戦した話

Elasticsearchを使う上で一緒に導入することになるだろうKibana.

[このサイト](https://www.yoheim.net/blog.php?q=20190903)をもとに、Homebrewでインストールしたけど、めちゃ時間がかかった。

## TL;DR
他バージョンのelasticsearchやkibanaがinstallされてない状態で

```terminal
$ brew tap elastic/tap
$ brew install elastic/tap/elasticsearch-oss
$ brew install elastic/tap/kibana-oss

$ elasticsearch // 起動
$ kibana // 起動
```

localhost:9200
localhost:5601

##インストール終わらない
Pouringにメチャ時間がかかった。体感にして10分くらい。

```terminal
$ brew install kibana
Updating Homebrew...

==> Downloading https://homebrew.bintray.com/bottles/kibana-7.6.2.mojave.bottle.tar.gz

==> Pouring kibana-7.6.2.mojave.bottle.tar.gz

// ここで10分くらいこのままMacのファンがひたすら回ってる

==> Caveats
Config: /usr/local/etc/kibana/
If you wish to preserve your plugins upon upgrade, make a copy of
/usr/local/opt/kibana/plugins before upgrading, and copy it into the
new keg location after upgrading.

To have launchd start kibana now and restart at login:
  brew services start kibana
Or, if you don't want/need a background service you can just run:
  kibana
==> Summary
🍺  /usr/local/Cellar/kibana/7.6.2: 58,186 files, 334.4MB
```

また公式ドキュメントにある`brew install elastic/tap/kibana-full`でやり直すとさらに3倍くらいかかって、しかも（過去にダウンロードしてたので）`Already Downloaded: /Users...`というメッセージのまま`Pouring`とか出ずにうんともすんともいわないまま突然`Conveats`とか出ておわる。途中であきらめて適当にコマンドを売ったりしたから動いたのかも。

##起動できない
なんとかインストールできたけど、いざ起動してみると‥😥

```terminal
$ kibana
Elastic APM initialization error: Can't read config file /usr/local/Cellar/kibana/7.6.2/config/apm.js
Error: Cannot find module 'lodash.merge'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/usr/local/etc/kibana/apm.js:53:15)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
APM Server transport error (ECONNREFUSED): connect ECONNREFUSED 127.0.0.1:8200
APM Server transport error (ECONNREFUSED): connect ECONNREFUSED 127.0.0.1:8200
  log   [10:49:56.004] [fatal][root] Error: Unable to write Kibana UUID file, please check the uuid.server configuration value in kibana.yml and ensure Kibana has sufficient permissions to read / write to this file. Error was: ENOENT
    at writeUuidToFile (/usr/local/Cellar/kibana/7.6.2/src/core/server/uuid/resolve_uuid.js:123:11)

 FATAL  Error: Unable to write Kibana UUID file, please check the uuid.server configuration value in kibana.yml and ensure Kibana has sufficient permissions to read / write to this file. Error was: ENOENT
```

ググったら、[node_moduleを削除してから`npm install -g lodash`しなよと書いてる](https://discuss.elastic.co/t/kibana-7-6-1-startup-error-elastic-apm-initialization-error/229809
)けど、lodashを入れても結果は同じ。

#公式のやり方でやると起動できた

`brew install kibana`ではなくて、[公式のドキュメント](https://www.elastic.co/guide/en/kibana/7.8/brew.html)にある以下でやると起動はできた。

```terminal
brew tap elastic/tap
brew install elastic/tap/kibana-full
```

が、これでもプラグインのidが見つからないとか、無効だとか言われる。

```
$ kibana
  log   [12:41:00.419] [warning][plugins-discovery] Expect plugin "id" in camelCase, but found: apm_oss
  log   [12:41:00.433] [warning][plugins-discovery] Expect plugin "id" in camelCase, but found: triggers_actions_ui
  log   [12:41:11.159] [info][plugins-service] Plugin "visTypeXy" is disabled.
  log   [12:41:11.160] [info][plugins-service] Plugin "endpoint" is disabled.
  log   [12:41:11.160] [info][plugins-service] Plugin "ingestManager" is disabled.
  log   [12:41:11.160] [info][plugins-service] Plugin "lists" is disabled.
  log   [12:41:13.850] [warning][config][deprecation] Environment variable "DATA_PATH" will be removed.  It has been replaced with kibana.yml setting "path.data"
  log   [12:41:13.929] [info][plugins-system] Setting up [94] plugins: [taskManager,licensing,observability,eventLog,encryptedSavedObjects,code,usageCollection,ossTelemetry,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaLegacy,devTools,bfetch,expressions,translations,uiActions,data,home,console,consoleExtensions,cloud,apm_oss,searchprofiler,painlessLab,grokdebugger,management,upgradeAssistant,licenseManagement,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,advancedSettings,telemetryManagementSection,fileUpload,dataEnhanced,savedObjects,navigation,statusPage,share,newsfeed,mapsLegacy,mapsLegacyLicensing,kibanaUtils,kibanaReact,inspector,embeddable,reporting,dashboard,advancedUiActions,embeddableEnhanced,drilldowns,dashboardEnhanced,visualizations,lens,visTypeVega,visTypeTimelion,features,security,snapshotRestore,transform,ingestPipelines,graph,canvas,visTypeTable,visTypeMarkdown,inputControlVis,maps,visualize,indexPatternManagement,esUiShared,discover,savedObjectsManagement,spaces,actions,case,alerting,alertingBuiltins,ml,charts,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,triggers_actions_ui,siem,infra,monitoring,logstash,apm,uptime]

```

どうやらこの方法は有料の製品版のやり方（トライアルを申し込んだ人用）では？

##kibana-ossをインストールしてみる

>  To install the OSS distribution, specify elastic/tap/kibana-oss.

```terminal
brew uninstall kibana-full
brew install elastic/tap/kibana-oss
```

こうして起動すると、一見同じエラーになるが

```terminal

log   [15:49:10.608] [error][savedobjects-service] This version of Kibana (v7.8.0) is incompatible with the following Elasticsearch nodes in your cluster: v7.6.2 @ 127.0.0.1:9200 (127.0.0.1)

FATAL Error: Cluster client cannot be used after it has been closed.
```

こんな感じのエラーログが見つかる。要はkibanaとElasticsearchのバージョン違いまっせということらしく

```
brew uninstall elasticsearch
brew install elastic/tab/elasticsearch-oss
```

を[公式ドキュメント](https://www.elastic.co/guide/en/elasticsearch/reference/7.8/brew.html)に従って実行しv7.8.0をインストールし、再度それぞれ起動。

```
$ elasticsearch
// Cmd+T で新しいターミナルタブを開き
$ kibana
```

[localhost:9200](localhost:9200)
<img width="1440" alt="スクリーンショット 2020-07-06 1.02.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242610/29a29569-52c4-8d34-3b8a-f8f1763d5b33.png">


[localhost:5601](localhost:5601)
<img width="1440" alt="スクリーンショット 2020-07-06 1.02.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242610/02a8dd70-db09-652f-8bec-4d485a378649.png">
※ダークモードのChrome拡張を入れているので暗くなってます。

できた😊

#他に考えたこと
##Pythonのバージョンが原因でもなさそう

もういちど最新のkibanaの情報をみてみると、Python3.8のとこに×と書いてあった。PCのglobalのPythonバージョンをそれ以上に上げたけど結果は同じだった。

```terminal

$brew info kibana
kibana: stable 7.6.2 (bottled), HEAD
Analytics and search dashboard for Elasticsearch
https://www.elastic.co/products/kibana
/usr/local/Cellar/kibana/7.6.2 (58,186 files, 334.4MB) *
  Poured from bottle on 2020-07-04 at 19:48:02
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/kibana.rb
==> Dependencies
Build: python@3.8 ✘, yarn ✔
Required: node@10 ✔
==> Options
--HEAD
	Install HEAD version
==> Caveats
Config: /usr/local/etc/kibana/
If you wish to preserve your plugins upon upgrade, make a copy of
/usr/local/opt/kibana/plugins before upgrading, and copy it into the
new keg location after upgrading.

To have launchd start kibana now and restart at login:
  brew services start kibana
Or, if you don't want/need a background service you can just run:
  kibana
==> Analytics
install: 2,324 (30 days), 6,866 (90 days), 30,606 (365 days)
install-on-request: 2,241 (30 days), 6,610 (90 days), 29,491 (365 days)
build-error: 0 (30 days)
```

「設定ファイルが読めないよ」とのことだがググっても情報がすぐにでず‥誰か助けて‥。

##参考
- [kibana日本語公式サイト](https://www.elastic.co/jp/kibana)