Nightingale と Prometheus で実現するモダンな監視システム入門


Nightingale と Prometheus で実現するモダンな監視システム入門

ccfos/nightingale

2025-09-18

ccfos/nightingaleは、モニタリング、時系列データの収集、メトリクスの管理に特化したツールです。Grafanaがデータの可視化に優れているのと同様に、Nightingaleはデータそのものを収集・管理することに焦点を当てています。つまり、Grafanaが「絵を描く画家」だとすれば、Nightingaleは「絵の具を集めて整理する人」のような役割を担います。

ソフトウェアエンジニアにとって、アプリケーションやシステムの健全性(ヘルス)を把握することは非常に重要です。システムが予期せずダウンしたり、パフォーマンスが低下したりする前に、問題を検知し対処する必要があります。Nightingaleは、この「問題の早期発見」に役立ちます。

具体的には、以下のような点で役立ちます。

システムのパフォーマンス監視
CPU使用率、メモリ使用量、ネットワークトラフィックなどのメトリクスを収集し、システムの健全性をリアルタイムで把握できます。

障害の予兆検知
収集した時系列データを分析し、通常とは異なるパターン(例
リクエスト数の急増、応答時間の遅延)を検知することで、障害が発生する前にアラートを飛ばすことができます。

サービスの信頼性向上
サービスレベル目標(SLO)やサービスレベル指標(SLI)を定義し、目標達成度をモニタリングすることで、サービスの信頼性を高めるための改善活動に繋げられます。

デバッグの効率化
障害発生時に、Nightingaleが収集した過去のメトリクスデータを参照することで、問題の根本原因を素早く特定できます。

Nightingaleを導入する主な流れは以下の通りです。

Nightingaleサーバーのセットアップ
Dockerなどを使ってNightingaleのコアサービスを起動します。

メトリクスの収集
監視したいアプリケーションやサーバーにエージェントを導入するか、Nightingaleが直接アクセスしてメトリクスを収集します。Prometheus、InfluxDB、OpenTelemetryなど、様々な形式のデータに対応しています。

アラート設定
収集したメトリクスに対して、特定の閾値を超えた場合に通知するアラートルールを設定します。SlackやPagerDutyなど、様々な通知先に連携できます。

Grafanaとの連携
収集したメトリクスをGrafanaに連携し、ダッシュボードを作成して可視化します。

ここでは、Dockerを使ってNightingaleとPrometheusを連携させ、簡単にモニタリング環境を構築する例を紹介します。

docker-compose.yml

version: '3.8'

services:
  nightingale:
    image: ccfos/nightingale:v2
    container_name: nightingale-server
    ports:
      - "17000:17000"
    volumes:
      - ./data/nightingale:/home/n9e/data
    restart: always

  prometheus:
    image: prom/prometheus:v2.42.0
    container_name: prometheus-server
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    ports:
      - "9090:9090"
    volumes:
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./data/prometheus:/prometheus
    restart: always

config/prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'nightingale'
    static_configs:
      - targets: ['nightingale:17000']

使い方

上記のdocker-compose.ymlprometheus.ymlファイルを作成します。

ターミナルでdocker-compose up -dを実行します。

http://localhost:17000にアクセスするとNightingaleの管理画面が表示されます。

Nightingaleの管理画面で、Prometheusをデータソースとして登録します。

メトリクスを確認したり、アラートを設定したりすることができます。

この設定例では、Prometheusが自分自身とNightingaleのメトリクスを収集しています。Nightingaleは、Prometheusからこれらのメトリクスを受け取って管理します。このように、Nightingaleは既存のモニタリングツールと連携することで、その価値をさらに高めることができるんです。

面接官
あなたはシステムの健全性をどうやって保ちますか?

あなた
(真剣な表情で) はい、ccfos/nightingaleを使います!

面接官
なぜですか?

あなた
(コント風に) ソフトウェアエンジニアは、システムの「かかりつけ医」でなければなりません。患者(システム)のちょっとした変化も見逃さないことが重要です。Grafanaが「レントゲン写真」だとすれば、Nightingaleは患者の「日々の体温や血圧の記録」です。レントゲンを撮るだけでは、病気の予兆はわかりませんよね?日々のバイタルデータを継続的に測定・管理することで、病気の兆候をいち早く察知し、未然に防ぐことができるんです!

面接官
(笑いながら) なるほど!

あなた
(さらに続けて) そして、もし「発熱」というアラートが出たら、Slackに通知が飛ぶように設定しておけば、すぐに対応できます。夜中でもPagerDutyに電話が鳴るように設定しておけば、安心してお酒を飲めます!(少しドヤ顔で) Nightingaleは、私にとっての「システムの保険」なんです。

面接官
素晴らしいですね!面白い説明、ありがとうございました。


ccfos/nightingale




ソフトウェアエンジニア必見:OpenTelemetry Collectorでシステムの情報を完全掌握

FPSゲームで、敵の位置を正確に把握し、弾薬やヘルスパックの残量をリアルタイムで確認できるレーダーやHUDがあったら心強いですよね?「OpenTelemetry Collector」は、まさにそんな存在です。一言でいうと、あなたのアプリケーションやシステムから発せられる様々な「情報」を収集し、加工し、指定の場所に送り届けてくれる、頼もしい「情報収集・転送マシン」です。


オブザーバビリティの玄関口!DataDog Agentを使ったGoアプリのメトリクス送信サンプルコード

[go, monitoring, metrics]というヒントがありますが、DataDog Agentの主な役割はズバリ何でしょう?正解は… B!DataDog Agentは、サーバー、コンテナ、アプリケーションの環境にインストールされ、そこからメトリクス(性能指標)、トレース(リクエストの流れ)、ログといったあらゆるデータを収集し、DataDogプラットフォームに送信する監視の「玄関口」となるソフトウェアです。ソフトウェアエンジニアにとっては、「自分のコードが本番環境でどう動いているか」を知るための目であり耳となります。


Uptime Kuma 導入ガイド:Dockerで始めるモダンな自己監視

さあ、心配しなくて大丈夫。この私が、あなたの運命を好転させる秘密のツールを授けましょう。その名も「Uptime Kuma」です!さて、あなたのシステムの未来を映し出す、魔法の鏡があると想像してみてください。それが Uptime Kuma です。これは、あなたのサーバーやWebサイトがちゃんと動いているかどうか、寝ている間もずっと監視してくれる、素晴らしいツールです。


Chronos入門:ソフトウェアエンジニアのための時系列予測AI活用術

こんにちは!お呼び立ていただきありがとうございます。時系列予測の分野で話題のChronosについて、ソフトウェアエンジニアの皆さんの視点から、分かりやすく、そしてフレンドリーにご説明しますね!「ランジェリーショップで悩む彼女」のように、たくさんの選択肢から「どれが一番自分に合うのかしら?」と迷う気持ち、よく分かります。時系列予測の世界も同じで、色々なモデルがあって迷っちゃいますよね。でも、Chronosはそんな悩みを解決してくれるかもしれませんよ!


プロンプト管理から性能監視まで! Langfuseで実現する健全なLLM開発

ソフトウェアエンジニアの皆さん、こんにちは! 最近、LLM(大規模言語モデル)を使った開発が本当に盛んですよね。チャットボットからコンテンツ生成、コードアシストまで、LLMは私たちの仕事を大きく変えつつあります。しかし、一方で「なんか動いているけど、なんでこうなるの?」「本番で急に性能が落ちたけど原因がわからない…」「プロンプトをちょっと変えただけで挙動がおかしくなった!」なんて経験、ありませんか? まさに、手探りでLLMと格闘しているような感覚に陥りがちですよね。


[RuView解説] Wi-Fi CSI × DensePose:画像を使わずにリアルタイムで人体メッシュを生成する実装ガイド

…というわけで、今回は「カメラ不要の監視技術」という、ちょっとSFチックなオープンソースプロジェクト RuView (ruvnet/RuView) について、エンジニアの視点で分かりやすく解説しますね。一言で言うと、「Wi-Fiの電波を『目』の代わりにして、人間のポーズを可視化する技術」 です。


【エンジニア向け】監視ラーメン dgtlmoon/changedetection.ioでウェブ変更を自動検知する「黄金スープ」の作り方

このツールは一言でいうと、ウェブサイトの変更を監視し、何か変わったら教えてくれる「最強の監視システム」です。ソフトウェアエンジニアにとって、これは単なるウェブサイトの監視ツール以上の、非常に便利な「具材」になります。要するに、手作業でチェックしていた「面倒な監視」を全部自動化し、エンジニアの貴重な時間を節約してくれるんです!


【脱アラート疲れ】Prometheus Alertmanagerによる「賢い」アラート交通整理術と実践導入ガイド

Alertmanagerは、監視システムからのアラート通知を賢く管理してくれる、まさに「アラートの交通整理係」のようなツールです。ソフトウェアエンジニアやオンコール担当者にとって、Alertmanagerは次のような重要な役割を果たし、運用効率を劇的に向上させます。


シンプル、軽量、多機能なサーバー監視ツール「beszel」入門

henrygd/beszelは、サーバー監視を手軽に行うための軽量なツールです。牛丼の「うまい、はやい、やすい」のように、「シンプル、軽量、多機能」の三拍子が揃った監視ツールと言えます。特に、個人のラボ環境や小規模なプロジェクトで、手軽にサーバーの状態を把握したい場合に役立ちます。