はじめに
ElasticSearch + Kibana(実際は AWS の OpenSearch Service + OpenSearch Dashboards)の利用時に遭遇したトラブルシュートや Tips を記録しておきます。
トラブルシュート&Tips
Kibana の画面に接続できない
VPC アクセスの ElasticSearch/Kibana ではインターネットからアクセスできません。以下の対応が必要です。
- パブリックアクセスでドメインを作り直す
- VPC に Windows 踏み台を作る・VPN を張るなどして、VPC 内部からアクセスする
ElasticSearch に接続できない&ログ転送できない
fluentbit を使う想定です。設定ファイルが正しいか、コメントを確認してください。
[OUTPUT]
Name es
Match apache.access # 対象があっているか
Host search-${domain}-${random}.ap-northeast-1.es.amazonaws.com # 接続先があっているか
Port 443 # ポートが443になっているか 9200ではありません!
tls On # 上記と合わせて必須!
HTTP_User ${user_name} # ユーザー名があっているか
HTTP_Passwd ${password} # パスワードが合っているか
Suppress_Type_Name On # OpenSearch 2.0 以上では必須!
Index apache_logs
Type _doc
Time_Key @timestamp
fluent-bit の状態確認方法
# ステータス確認
systemctl status fluent-bit -l
# ログ確認
journalctl -u fluent-bit -e
VPC アクセス・IAM 認証・OpenSearch Serverless など、様々なパターンがあるので、詳細は以下を確認ください。
Kibana でフィールドが認識されない・機能しない
下記エラーが出ていませんか?
Unable to filter for presence of meta fields
No cached mapping for this fields. Refresh field list from the Management > Index Patterns page
この場合は DashBoards Management
> Index patterns
> ${your_index}
から「🔃 (Refresh)」をクリックすると解決します。
Kibana の Visualize で Aggregation にフィールドが出てこない
フィールドの型が Aggregatable でないことが原因です。
同じテキストであっても keyword
と text
は以下の通り違いがあります。
- keyword: 文字列全体をひとかたまりで扱う。Aggregation 可。
- text: 文字列をパースして扱う。Aggregation 不可。
よって mappings を変更するしかありません。一度作成したインデックスのマッピングは変更できないため、新しいインデックスにマッピングを再作成し reindex するしかありません。またはデータの再投入でも構いません。
Kibana で部分一致検索や数値の比較がしたい
もしできないのであれば、前述と同じデータ型の問題です。ある文字列が text
でなく keyword
として扱われていたら部分一致検索はできませんし、数字が integer
や long
でなく keyword
として扱われていたら大小比較できません。
これも mappings を修正して reindex かデータの再投入が必要です。
Visualize で割合を可視化したい
あるデータの割合やパーセンテージを可視化したい場合、TSVB (Time Series Visual Builder)
の Filter Ratio
を利用します。TSVB 以外の Visualize では Filter Ratio が使えません。
公式ドキュメントがわかりやすいので、要チェックです。
最後に
トラブルがひとつでも解決したら「いいね」をお願いします!