ELKスタック自動セットアップスクリプト|Elasticsearch・Logstash・Kibanaを1コマンドで構築(Ubuntu/Debian)自動化
- ダウンロード商品¥ 500

ログ基盤の構築、実は一番後回しにされがちです。 Elasticsearch・Logstash・Kibanaを個別にインストールして、Java環境を整えて、nginxでリバースプロキシを立てて……必要性は分かっていても、いざ手を動かすと地味に時間を取られる作業です。 このスクリプトは、Elastic公式aptリポジトリから、ELKスタック一式(Elasticsearch・Logstash・Kibana)とnginxリバースプロキシまでを1コマンドでセットアップします。 ■ 何が自動化されるか ・Elastic公式aptリポジトリの追加とGPG鍵の登録 ・Elasticsearch・Logstash・Kibana・nginxのインストール ・Elasticsearchのシングルノード構成・ヒープサイズ設定(デフォルト512m、--es-heapで変更可) ・Logstashのsyslog入力設定(デフォルトポート5514、--syslog-portで変更可) ・Kibanaのlocalhostバインド設定 ・nginxによるKibanaへのリバースプロキシ設定(ポート80で公開) ・各サービスのsystemd起動・自動起動設定 ・サービス状態+HTTPヘルスチェックを一覧表示するstatusコマンド ・個別サービスの起動/停止/再起動コマンド ・アンインストールコマンド(nginx本体は残し、追加したKibana設定のみ削除) ■ 実行例(イメージ) $ sudo ./elk-stack.sh install [14:02:11] Adding Elastic's official apt repository... [14:02:34] Installing Elasticsearch, Logstash, Kibana, and nginx... [14:05:02] Configuring Elasticsearch (single-node, security disabled, heap 512m)... [14:05:04] Configuring nginx reverse proxy for Kibana on port 80... [14:05:41] Elasticsearch is up. [14:05:42] Install complete. [14:05:42] Kibana (via nginx): http://<this-host>/ $ ./elk-stack.sh status elasticsearch active logstash active kibana active nginx active --- HTTP health checks --- Elasticsearch (/) 200 Kibana (/api/status) 200 nginx -> Kibana proxy (/) 200 ■ Before / After ・作業内容:(手動)各公式ドキュメントを読みながらJava・YAML・nginx設定を個別に実施 →(本スクリプト)sudo ./elk-stack.sh install の1回 ・ハマりどころ:(手動)xpack.securityの重複設定によるYAMLパースエラー、discovery.typeの衝突など →(本スクリプト)実際に起きるエッジケースを踏まえた設定ロジックを実装済み ・Kibanaへのアクセス:(手動)別途nginx設定が必要 →(本スクリプト)最初からポート80で公開済み ・状態確認:(手動)systemctl statusやcurlを個別に実行 →(本スクリプト)statusコマンド1つでサービス状態+HTTPヘルスチェックを一覧表示 ■ 対応OS Ubuntu 20.04 / 22.04 / 24.04、Debian 11 / 12 ※上記以外のOS(CentOS/RHEL系、Amazon Linuxなど)では動作しません。 ■ 必要環境 ・root権限(sudo) ・systemdが動作していること ・インターネット接続(artifacts.elastic.co への到達性が必須) ・空きディスク容量:3GB以上推奨 ・メモリ:2GB以上(4GB以上推奨) ■ ファイル構成 elk-stack.zip ├ elk-stack.sh … 本体スクリプト └ README.md … セットアップ手順・トラブルシューティング ■ GitHubとの差別化 GitHub上にも似たようなElasticsearch/Logstash/Kibanaのセットアップスクリプトは数多くあります。ただ、実際に何度もインストール・アンインストールを繰り返すと、次のような問題によく遭遇します。 ・Elasticsearchの.debパッケージが最初からxpack.security.enabled: trueを書き込んでおり、素朴なスクリプトだと同じキーが重複してYAMLパースエラーで起動しない ・cluster.initial_master_nodesとdiscovery.type: single-nodeは互いに排他的な設定で、両方書き込まれていると起動を拒否される ・apt-get removeだけでは設定ファイルの管理情報がdpkgに残り、再インストール時にpostinstスクリプトが失敗する このスクリプトは、上記のような実際に起きるエッジケースを踏まえた設定ロジック(重複キーを安全に1本化する処理、discovery.type関連の排他制御、purgeによるクリーンな再インストール対応)を実装しています。 ■ 動作確認について shellcheckによる静的解析(警告0件)に加え、Elasticsearchの設定でつまずきやすい重複YAMLキーの処理やdiscovery.type関連の排他制御ロジック、nginxが生成する設定ファイルの構文(nginx -tで検証)を、実際に該当パターンを再現した単体テストで検証済みです。Elasticsearch/Logstash/Kibana本体を実機で起動させてのフルスタック動作確認は現在進行中です。完了次第この説明を更新します。 ■ 公開サーバーに置く場合は このスクリプトはKibanaをポート80で外部公開できる状態にしますが、ファイアウォールとHTTPS化は別の話です。インターネットに公開するサーバーであれば、以下もあわせての導入を強くおすすめします。 ・UFWファイアウォール自動設定スクリプト(SSH自動検出付きで、必要なポート以外を閉じる) ・SSL自動更新スクリプト(Let's Encryptで公開URLをHTTPS化する) 同じストアで販売中です。まとめて導入すると、ログ基盤の構築からセキュリティ強化まで一通り完了します。 ■ 価格・入手方法 ¥500で、BOOTH/Gumroadの両ストアからダウンロードできます。
