MiniPC×ProxmoxにELKスタック構築(構成図と概要)

スポンサーリンク
Home Lab
この記事は約8分で読めます。
ランキングに参加しています。応援よろしくお願いします。
ブログランキング・にほんブログ村へ 人気ブログランキングへ FC2ブログランキングへ
スポンサーリンク
この記事が気に入ったら
フォローしよう
最新情報をお届けします。

MiniPC(GMKtec NucBox M7 Ultra)の購入」から始まった、「MiniPCを活用して、仮想化プラットフォームを構築したい」「サーバのログを可視化してニヤニヤしたい」という動機のプロジェクト。

今回は、仮想化プラットフォームProxmox VE(Virtual Environment)上に、強力なログ分析基盤であるELKスタックを構築する手順を備忘録として連載形式でまとめていきます。

まずは、今回構築するシステムの全体像と、各コンポーネントの役割について整理します。

今回のシステムでは、外部(VPS等)のログを自宅のMiniPCへ転送し、可視化する構成をとります。 1台の物理資源をProxmox VEによって切り分けて運用するのがポイントです。

  • Physical: MiniPC (GMKtec NucBox M7 Ultra)
  • Hypervisor: Proxmox VE
  • Guest OS: Ubuntu (VM または LXC)
  • Software: Elasticsearch, Logstash, Kibana (+ Filebeat)

[データフローの要約]

  1. インターネット上のVPS(観測対象)からログを転送
  2. 自宅ルーター経由でLogstashが受け取り、加工
  3. Elasticsearchにデータを蓄積
  4. Kibanaを通じて、Windows PCなどのブラウザから可視化・分析
graph TD
    %% 全体のスタイル(色は維持して見やすく)
    style PVE fill:#fcfcfc, stroke:#d3d3d3,stroke-width:2px;
    classDef router fill:#fff9c4,stroke:#fbc02d,stroke-width:2px;
    classDef monitor fill:#e1f5fe,stroke:#01579b,stroke-width:3px;
    classDef vm fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;
    classDef ct fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;

    subgraph Internet [**インターネット**]
        VPS["VPS<br/>(観測対象)"]
    end

    subgraph Home_Lab [**自宅ラボ**]
        Router{{"Router / FW"}}:::router

        subgraph PVE ["**【MiniPC】Proxmox VE**"]
            direction TB

            LS["Logstash (CT)<br/>(Data Processing)"]:::ct
            ES["Elasticsearch (VM)<br/>(Data Store)"]:::vm
            KB["Kibana (CT)<br/>(Visualization)"]:::ct
        end

        Win11["Windows PC<br/><b>【監視端末】</b>"]:::monitor
    end

    %% データフロー
    VPS -- "Log Transfer" --> Router
    Router -- "Port Forward" --> LS
    LS -- "Data input" --> ES
    ES <-- "Search / Response" --> KB
    
    %% 監視フロー
    Win11 -- "Web UI" --> KB
    Win11 -- "Management" --> PVE

各ソフトウェアは、いわば「データのバケツリレー」を行っています。

「土台となる魔法のOS」 Debianベースのオープンソース仮想化プラットフォームです。

  • 役割: 1台のMiniPCの中に、複数の仮想マシン(VM)やコンテナ(LXC)を効率よく立ち上げます。
  • メリット: スナップショット機能があり、設定ミスでシステムを壊しても一瞬でバックアップ時点に戻せるため、試行錯誤が必要なELK構築には必須のツールです。

Proxmoxにおける VM(仮想マシン)CT(LXC: Linuxコンテナ) の違い

  • VM: 完全な独立。カーネルが別なので、カーネルパラメータ(vm.max_map_countなど)を自由に変えられる。
  • CT(LXC): ホストとカーネルを共有。起動が数秒と爆速。ただし、カーネルパラメータの変更はホスト(PVE)側で行う必要がある場合があります。

ELKスタック構築の視点で整理しました。

特徴VM (Virtual Machine)CT (LXC Container)
隔離レベル完全隔離。 独自のカーネルを持つ。不完全。 ホストのカーネルを共有する。
オーバーヘッド重い(ハードウェアをエミュレート)。非常に軽い(プロセスに近い)。
柔軟性Windowsなど、どんなOSも動く。ホストと同じLinux系しか動かない。
セキュリティ高い。 VMを突破してホストを攻撃するのは困難。注意が必要。 特権コンテナなどはリスクがある。
リソース消費設定したメモリを占有する傾向。必要な分だけ柔軟に使う(効率的)。

1台の仮想マシンに全部入れる構成も可能だが、折角の自宅ラボ環境で、Proxmox VEの構築管理学習やリソース管理の要領、拡張性を考慮します。

役割形態OS理由
ElasticsearchVMUbuntu 24.04メモリ管理やディスクI/Oが激しいため、独立性の高いVMが安全
KibanaLXC (CT)Ubuntu 24.04可視化ツールなので軽量。コンテナで動かすのに最適
LogstashLXC (CT)Ubuntu 24.04ログの整形処理。リソースを動的に割り当てやすいコンテナ向き

Elastic社が提供する3つの製品(Elasticsearch, Logstash, Kibana)の頭文字を取った、ログ収集・解析プラットフォーム一式を指します。 最近では軽量エージェントの Beats を加えて「Elastic Stack」と呼ばれるのが一般的です。

これまでのELKスタックでは、データの種類ごとに専用の「運び屋」をインストールするのが一般的でした。

  • Filebeat: ログファイル
  • Metricbeat: CPUやメモリのメトリクス
  • Packetbeat: ネットワークデータ

などを、監視対象のサーバー(VPSなど)に個別にインストールして使います。

特徴:

  • 軽量で単機能。
  • 設定は各サーバーの yaml ファイルを直接編集して行う。
  • 台数が増えると設定管理が大変になる。

「Beatsを何種類も入れるのは面倒だし、設定変更のたびに全サーバーを触るのは大変だ」という課題を解決するために登場したのが Elastic Agent です。

  • Elastic Agent: 1つのエージェントでログ、メトリクス、セキュリティ検知などすべてをこなす「万能選手」。Beatsたちの機能を1つに統合したものです。
  • Fleet: Kibana上の管理画面のこと。ここからポチポチ操作するだけで、世界中にある複数のElastic Agentの設定(ポリシー)を一括更新できます。
  • Fleet Server: Fleet(Kibana)と各エージェントの仲介役となるコンポーネント。
項目Beats (旧来)Elastic Agent + Fleet (最新)
インストール種類ごとに個別(Filebeat, Metricbeat等)Elastic Agent 1つだけ
設定管理各サーバーでYAMLを編集Kibana(Fleet)で一括管理
アップデート1台ずつ手動Fleetからボタン1つで更新可能
推奨ケース極限まで軽量化したい、Logstashで複雑な処理をしたい運用を楽にしたい、一括管理したい

当初、VPSのログ転送のみなので、Beats(Filebeat)を採用します。

「超高速な検索・分析エンジン」 ELKスタックの心臓部(ストレージ)です。

  • 役割: 送られてきた膨大なデータを蓄積し、検索できるようにインデックス(索引)を作成します。
  • 特徴: データベースの一種ですが、全文検索が得意で、大量のログから特定の文字列を爆速で見つけ出せます。

「データの加工職人」 データの通り道(パイプライン)としての役割を担います。

  • 役割: 様々な場所から届くバラバラな形式のログを受け取り、日付やIPアドレス、エラーレベルなどを整理(パース)して、Elasticsearchが扱いやすい形に整えます。
  • 例: 「ただの1行のテキスト」を「時間:12:00、送信元:192.168.x.x、ステータス:200」といった構造化データに変換します。

「データの翻訳家(可視化)」 ELKスタックの「顔」となるGUIツールです。

  • 役割: Elasticsearchの中にあるデータを、ブラウザ上でグラフやマップ、ダッシュボードとして表示します。
  • 特徴: ログをただ眺めるのではなく、「いつ、どこで、何が起きているか」を視覚的に把握できます。
  1. 省電力・静音: 24時間稼働させても電気代が安く、場所を取りません。
  2. リソースの有効活用: ELKはメモリを食いやすいですが、Proxmoxでリソース制限をかけることで、他のサービスと共存させやすくなります。
  3. スケーラビリティ: 慣れてきたら、もう一台Mini PCを増やしてProxmoxクラスターを組む…といった拡張性も魅力です。

ハードウェア選びの注意点

  • ELKスタック、特にElasticsearchはメモリを大量に消費します。
  • MiniPCのメモリは最低でも16GB、できれば32GB以上積んでおくと幸せになれます。

概要が固まったところで、次回以降は、「構築要領」 について解説します。

コメント

タイトルとURLをコピーしました