◆はじめに
「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)
[データフローの要約]
- インターネット上のVPS(観測対象)からログを転送
- 自宅ルーター経由でLogstashが受け取り、加工
- Elasticsearchにデータを蓄積
- 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
◆各コンポーネントの役割
各ソフトウェアは、いわば「データのバケツリレー」を行っています。
■Proxmox VE とは
「土台となる魔法のOS」 Debianベースのオープンソース仮想化プラットフォームです。
- 役割: 1台のMiniPCの中に、複数の仮想マシン(VM)やコンテナ(LXC)を効率よく立ち上げます。
- メリット: スナップショット機能があり、設定ミスでシステムを壊しても一瞬でバックアップ時点に戻せるため、試行錯誤が必要なELK構築には必須のツールです。
仮想マシン(VM)vs コンテナ(CT)の違い
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 | 理由 |
|---|---|---|---|
| Elasticsearch | VM | Ubuntu 24.04 | メモリ管理やディスクI/Oが激しいため、独立性の高いVMが安全 |
| Kibana | LXC (CT) | Ubuntu 24.04 | 可視化ツールなので軽量。コンテナで動かすのに最適 |
| Logstash | LXC (CT) | Ubuntu 24.04 | ログの整形処理。リソースを動的に割り当てやすいコンテナ向き |
■ELKスタック(Elastic Stack)とは
Elastic社が提供する3つの製品(Elasticsearch, Logstash, Kibana)の頭文字を取った、ログ収集・解析プラットフォーム一式を指します。 最近では軽量エージェントの Beats を加えて「Elastic Stack」と呼ばれるのが一般的です。
Beats vs Fleet(Elastic Agent)
Beats とは(従来の「運び屋」たち)
これまでのELKスタックでは、データの種類ごとに専用の「運び屋」をインストールするのが一般的でした。
- Filebeat: ログファイル
- Metricbeat: CPUやメモリのメトリクス
- Packetbeat: ネットワークデータ
などを、監視対象のサーバー(VPSなど)に個別にインストールして使います。
特徴:
- 軽量で単機能。
- 設定は各サーバーの
yamlファイルを直接編集して行う。 - 台数が増えると設定管理が大変になる。
Fleet と Elastic Agent(最新の「統合管理」)
「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)を採用します。
■Elasticsearch とは
「超高速な検索・分析エンジン」 ELKスタックの心臓部(ストレージ)です。
- 役割: 送られてきた膨大なデータを蓄積し、検索できるようにインデックス(索引)を作成します。
- 特徴: データベースの一種ですが、全文検索が得意で、大量のログから特定の文字列を爆速で見つけ出せます。
■Logstash とは
「データの加工職人」 データの通り道(パイプライン)としての役割を担います。
- 役割: 様々な場所から届くバラバラな形式のログを受け取り、日付やIPアドレス、エラーレベルなどを整理(パース)して、Elasticsearchが扱いやすい形に整えます。
- 例: 「ただの1行のテキスト」を「時間:12:00、送信元:192.168.x.x、ステータス:200」といった構造化データに変換します。
■Kibana とは
「データの翻訳家(可視化)」 ELKスタックの「顔」となるGUIツールです。
- 役割: Elasticsearchの中にあるデータを、ブラウザ上でグラフやマップ、ダッシュボードとして表示します。
- 特徴: ログをただ眺めるのではなく、「いつ、どこで、何が起きているか」を視覚的に把握できます。
◆なぜ MiniPC × Proxmox なのか?
- 省電力・静音: 24時間稼働させても電気代が安く、場所を取りません。
- リソースの有効活用: ELKはメモリを食いやすいですが、Proxmoxでリソース制限をかけることで、他のサービスと共存させやすくなります。
- スケーラビリティ: 慣れてきたら、もう一台Mini PCを増やしてProxmoxクラスターを組む…といった拡張性も魅力です。
ハードウェア選びの注意点
◆次回の予告
概要が固まったところで、次回以降は、「構築要領」 について解説します。





コメント