bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. InfluxDBとGrafanaを使って自前のメトリクスサーバーを立ち上げる (1) InfluxDBとGrafanaの概要

InfluxDBとGrafanaを使って自前のメトリクスサーバーを立ち上げる (1) InfluxDBとGrafanaの概要

Mar 5, 2026 インフラ bucket-sort

個人的な実験として、常用している Windows マシンで自分が1日にどれくらいキーボードを打鍵しているかの統計を取ってみることにしました。

まず Windows で動作する打鍵カウントソフトを自作して、打鍵数をローカルの JSON ファイルに記録するところまでは完成。 ただ、ローカル保存だとデータをロストするリスクがあるし、複数マシンの打鍵数をまとめて見たり、他の人と参照し合ったりすることもできません。

ネット上にデータを蓄積して、グラフで可視化できる仕組みが欲しい ── イメージとしては AWS の CloudWatch Metrics みたいな感じです。 そのために自前でメトリックサーバーを立ち上げてみることにします。

メトリクスサーバーを構築するにあたって、 データの保存先に InfluxDB、可視化に Grafana を採用することにしました。

この記事ではまず、それぞれのソフトウェアが何なのかを概要レベルで整理します。

  1. InfluxDBとGrafanaの概要(この記事)
  2. ローカルサーバーを立ち上げる(WSL上のUbuntuでDockerを使って動かす)
  3. パブリックサーバーを立ち上げる(VPS上のAlmaLinuxでDockerを使って動かす)

InfluxDB — 時系列データ専用のデータベース

InfluxData
InfluxData — Purpose-Built Time Series Database
www.influxdata.com
influxdata/influxdb
Scalable datastore for metrics, events, and real-time analytics
github.com

InfluxDB とは

InfluxDB は、時刻付きの数値データを高速に保存・集計するための 時系列データベース(Time-Series Database) です。

  • 2013年 に登場。最初に広く普及した時系列DBの一つ
  • Errplane社(後の InfluxData 社)によって OSS プロジェクトとして開発開始
  • 開発言語は Go
  • ライセンスは MIT License(OSS版)/ 商用版あり
  • DB-Engines Ranking の Time Series DBMS カテゴリで 長年1位 を維持している代表的な時系列DB

何のためのDB?

InfluxDB は 「時間と一緒に増えていく数値」 の保存に特化しています。

  • CPU使用率(毎秒)
  • 温度センサーの値(毎分)
  • アクセス数(毎5分)
  • ネットワークトラフィック(毎秒)

今回やりたい「打鍵数を10分おきに送信して蓄積する」というのも、まさにこのパターンです。 時刻と一緒に増えていく数値を延々と書き込み続け、あとからグラフで眺める ── InfluxDB が得意とするど真ん中の用途です。

こうした用途において RDB(MySQL・PostgreSQLなど)には苦手な点があります:

課題 RDB InfluxDB
データが爆速で増える インデックス肥大化で書き込みが遅くなる 時系列に最適化された書き込み性能
集計(直近1時間の平均など)が多い 都度フルスキャンや重いクエリになりがち 時間範囲での集計関数を標準搭載
古いデータの自動圧縮・削除 自前でバッチ処理が必要 リテンションポリシーで自動管理
書き込み性能 行の整合性(ACID)を維持するためオーバーヘッドが大きい 整合性より速度を優先した設計

InfluxDB の主な特徴

  • 高速な書き込み — 数十万ポイント/秒の書き込みが可能
  • 時間範囲クエリの高速性 — 時刻順に並ぶ前提の専用ストレージエンジン(TSM / TSI)
  • データ圧縮 — 同じ measurement のデータをまとめて高効率に圧縮
  • リテンションポリシー — 「30日より古いデータは自動削除」のような設定が可能
  • ダウンサンプリング — 古いデータを「1秒ごと → 1時間ごと」に自動集約して保持量を削減
  • Flux / InfluxQL — 専用のクエリ言語を搭載(SQL ライクな InfluxQL と、より高機能な Flux)
  • HTTP API — REST API 経由で読み書きが可能。各種言語のクライアントライブラリも充実
  • プラグインエコシステム — Telegraf(データ収集エージェント)との連携で多様なデータソースに対応

データモデル(RDBとは全然違う)

InfluxDB のデータモデルは RDB のテーブル構造とは異なり、以下の4要素で構成されます:

measurement(測定名): keystrokes
tags(ラベル):         host=DESKTOP-ABC
fields(値):           daily_count=12874
timestamp(時刻):      2026-02-25T19:40:00Z
要素 役割 RDB での近い概念
measurement データの種類 テーブル名
tags インデックスされるメタデータ(文字列) インデックス付きカラム
fields 実際の計測値(数値・文字列など) 通常カラム
timestamp データの時刻(必須) datetime カラム

今回の打鍵カウンターで考えると、こう対応します:

  • measurement = keystrokes(「打鍵数の計測データ」という種類名)
  • tags = host=DESKTOP-ABC(どのマシンからの送信か。将来マシンが増えてもタグで区別できる)
  • fields = daily_count=12874(その時点の累積打鍵数)
  • timestamp = 送信時刻(10分おきに自動送信するので、10分刻みのデータ点が並ぶ)

RDB なら「テーブル定義 → カラム設計 → INSERT 文」と準備が要りますが、InfluxDB では上記のフォーマット(Line Protocol と呼びます)でデータを HTTP POST するだけで書き込みが完了します。スキーマの事前定義は不要です。

内部では時刻順に並ぶ前提で、同じ measurement のデータをまとめて圧縮する専用フォーマットで保存されるため、時間範囲での検索が非常に高速です。

Grafana — メトリクス可視化専用のダッシュボードツール

Grafana Labs
The open and composable observability platform
grafana.com
grafana/grafana
The open and composable observability and data visualization platform
github.com

Grafana とは

Grafana は、さまざまなデータソースの数値データを Web ブラウザ上でグラフやダッシュボードとして可視化する ための OSS です。

  • 2014年 に登場
  • 開発元はスウェーデンの Grafana Labs 社
  • 開発言語は Go(バックエンド)+ TypeScript(フロントエンド)
  • ライセンスは AGPL-3.0(OSS版)/ 商用版(Grafana Cloud / Enterprise)あり
  • GitHub Stars 66,000+ の大規模 OSS プロジェクト
  • モニタリング・オブザーバビリティ分野で デファクトスタンダード のダッシュボードツール

何ができる?

数値データをさまざまなビジュアルで表示できます。特に時系列データの可視化に強みがあります。

  • 折れ線グラフ — CPU使用率の推移など
  • 棒グラフ — 時間帯別のアクセス数など
  • ヒートマップ — リクエストレイテンシの分布など
  • ゲージ — 現在のディスク使用率など(スピードメーター風)
  • Stat パネル — 今日の合計値やカウントなど
  • テーブル — 生データの一覧表示
  • アラート — 閾値を超えたら Slack・メール等に通知

Grafana の主な特徴

  • マルチデータソース — 1つのダッシュボードに複数のデータソースを混在可能
  • 豊富なプラグイン — コミュニティ製パネルやデータソースプラグインが多数
  • テンプレート変数 — ドロップダウンでホスト名やリージョンを切り替えられるインタラクティブなダッシュボード
  • アラート機能 — 閾値ベースのアラートルールと通知チャネル(Slack, PagerDuty, Webhook 等)を内蔵
  • ユーザー管理・権限制御 — 組織・チーム単位のアクセス制御、閲覧専用ユーザーの設定が可能
  • ダッシュボードの共有・エクスポート — JSON でのインポート/エクスポート、URL 共有、スナップショット機能
  • Provisioning — ダッシュボードやデータソースの設定をコード(YAML)で管理可能

対応データソース

Grafana はデータソースを選ばない「何でもグラフにできる Web フロントエンド」です:

カテゴリ 主なデータソース
時系列DB InfluxDB, Prometheus, Graphite
RDB MySQL, PostgreSQL
ログ・検索 Elasticsearch, Loki
クラウド AWS CloudWatch, Azure Monitor, Google Cloud Monitoring
トレース Tempo, Jaeger, Zipkin
その他 JSON API, CSV, Google Sheets など

まとめ

InfluxDB Grafana
役割 時系列データの保存・集計 データの可視化・ダッシュボード
一言で メトリクス専用DB 何でもグラフにできるWebフロントエンド
登場年 2013年 2014年
開発元 InfluxData(米国) Grafana Labs(スウェーデン)
開発言語 Go Go + TypeScript
ライセンス MIT(OSS版) AGPL-3.0(OSS版)
代表的な用途 サーバー監視, IoT, APM モニタリングダッシュボード, アラート

InfluxDB でデータを貯めて、Grafana で見る ── これがオープンソースのメトリクス基盤の定番構成です。

次回は、Docker を使ってローカル環境にこの構成を実際に立ち上げていきます。

InfluxDB Grafana 時系列データベース モニタリング Docker
← データベースの種類まとめ:Relational / Time-Series / NoSQL / Vector / NewSQL の特徴と代表例 InfluxDBとGrafanaを使って自前のメトリクスサーバーを立ち上げる (2) ローカルサーバーを立ち上げる →

Related Posts

  • InfluxDBとGrafanaを使って自前のメトリクスサーバーを立ち上げる (3) パブリックサーバーを立ち上げる Mar 7, 2026
  • InfluxDBとGrafanaを使って自前のメトリクスサーバーを立ち上げる (2) ローカルサーバーを立ち上げる Mar 6, 2026
  • Dockerを使ってDynamoDB LocalをWSL上のUbuntuで動かす Feb 28, 2026
  • データベースの種類まとめ:Relational / Time-Series / NoSQL / Vector / NewSQL の特徴と代表例 Mar 4, 2026

Table of Contents

  • InfluxDB — 時系列データ専用のデータベース
    • InfluxDB とは
    • 何のためのDB?
    • InfluxDB の主な特徴
    • データモデル(RDBとは全然違う)
  • Grafana — メトリクス可視化専用のダッシュボードツール
    • Grafana とは
    • 何ができる?
    • Grafana の主な特徴
    • 対応データソース
  • まとめ

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.