研究室内の共有ログサーバ(ELK Stack)を構築しました

博士後期1年の小山です.CDSLの研究室内に共有ログサーバ(ELK Stack)を3年生と4年生に協力してもらいながら構築を行いました.2025年3月19日にこの共有ログサーバをリリースしました.この記事では共有ログサーバの概要を紹介します.

共有ログサーバは下図のアーキテクチャで構築されています.ログサーバは6台のノード(ls-master, ls-worker1, ls-worker2, ls-worker3, ls-worker4, ls-worker5)から構成されたKubernetesクラスタ上で動作しています.KubernetesクラスタのエンジンにはK3sを採用しています.各ノードのOSにはUbuntuを使用しています.ログサーバを構成するソフトウェアはElasticsearch,Logstash,Kibana (ELK Stack)です.これらはKubernetesクラスタ上にPodとして構築されています.各コンテナのPersistent VolumeのStorage Classにはnfs-subdir-external-provisionerを使いました.これによりPodにNASのNFSサーバがマウントされています.

共有ログサーバのアーキテクチャ

共有ログサーバへのログ収集を想定している機器・サーバは,VMware ESXi, NAS, Wi-Fiルータ, DNSサーバ, DHCPサーバです.NAS, Wi-Fiルータ, VMware ESXiにはsyslogプロトコルを使ったログ転送機能があります.そのため,ログ転送機能を使いLogstashに設定したsyslogサーバへログを転送しています.DNSサーバ, DHCPサーバはKubernetesクラスタ上に配置されているためFilebeatでログを転送する設計にしました.

この他に,NASに外部公開のWebサーバから出力されたNginxのアクセスログが保存されています.NASにはファイルの変更を検知してLogstashへログを追加する機能がありません.そのため,共有ログサーバにFilebeatのPodを配置し,NASをNFSでPodにマウントしています.Filebeatでログの追加を検知すると,Elasticsearchにログを転送するよう設計しました.

共有ログサーバは,以下の機能を利用者に提供します.共有ログサーバを使うと利用者は独自でログサーバを構築することなく,ログの収集と閲覧を行えます.

  • syslogプロトコル, beatsプロトコルに対応したログサーバ(Logstash)
  • ログ検索のUIとダッシュボード(Kibana)
  • ログ検索のAPI(Elasticsearch)

下図はKibanaのログ検索画面です.収集したsyslogが表示されています.スクリーンショットを撮影した時点で210,887件のログがElasticsearchに保存されています.

Kibanaのログ検索画面

ログサーバの構築には,以下のメンバーが参加しました.

  • 博士後期課程1年
    • 小山 智之
  • 学部4年生
    • 川端 ももの
    • 三上 翔太
  • 学部3年生
    • 岡田 京太郎
    • 山崎 雅也
    • 手塚 雄星

コメントを残す