3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Db2 Genius Hub】Log Analysis機能を使ってみた

3
Last updated at Posted at 2026-10-02

目次

はじめに

Db2を利用システムにおいて何らかの障害が発生した時の原因の調査には、
診断ログ(db2diag.log)の確認・解析作業が欠かせません。

しかし、

  • ログ量が多く調査に時間がかかる
  • 必要なメッセージだけ抽出したい
  • ログをCSVで保存して分析したい

と感じることも多いのではないでしょうか。

Db2 Genius Hubには、Db2の診断ログをブラウザー上で分析できる Log Analysis機能 が用意されています。

本記事では、Log Analysis機能の基本的な使い方と手順を紹介します。

Db2 Genius Hub V1.1.4 の画面をもとにしています。
(バージョンにより表示が異なる場合があります)

※なお、Log Analysis機能を利用するには事前に監視対象サーバー側で Remote OS Service のセットアップが必要です(セットアップ手順は本記事後半の補足をご参照ください)。


Log Analysisとは

Log Analysisは、Db2診断ログの情報をブラウザーから参照・分析する機能です。

✅ 診断タイプによる絞り込み
✅ 時刻範囲の指定
✅ CSV形式での出力

が可能です。

image.png

💡 ログファイルを直接確認する代わりに、必要な情報へ素早くアクセスできます。

:envelope_with_arrow: Remote OS Service V1.1.5以上では、Log Analysis Alert機能も利用できます。
Db2診断ログ(db2diag.log)を継続的に監視し、エラーや特定のSQLコード、メッセージを検出した際に通知を受け取ることができます。メールやSNMPトラップ、Genius Hubコンソールの通知センターでも確認可能です。


1. ログの参照

Log Analysis画面は、サイドナビゲーションバーのルーペマーク :mag_right:から利用できます。

image.png

ログは表形式で表示されます。

image.png

確認できる主な情報は以下の通りです。

  • Timestamp
  • Level
  • PID
  • TID
  • APPHDL
  • APPID
  • SQL Code
  • Message
  • Database(一覧の上に表示)

💡 発生時刻やメッセージ内容を一覧で確認できるため、
障害発生時の初動調査を効率化できます。


2. フィルタリング機能

Log Analysisでは、以下の2つのフィルタリングを利用可能です。

  • ログ取得時
  • ログ参照時(ログ取得後)

image.png

2-1. ログ取得時のフィルタリング

ユーザーが指定できる主な条件は以下の通りです。

診断タイプ

どのタイプを表示させるか、チェックボックスで複数選択可能です。

  • 情報 (Info)
  • 警告 (Warning)
  • エラー (Error)
  • 重大 (Severe)
  • クリティカル (Critical)
  • イベント (Event)

取得するレコード数

取得件数の上限を指定できます。

時刻範囲

以下から選択可能です。Customは、任意の時間枠を指定することができます。

  • Last 30 mins
  • Last 1 hours
  • Last 6 hours
  • Last 12 hours
  • Last 24 hours
  • Last 7 days
  • Custom

image.png

2-2. ログ参照時のフィルタリング

さらに、コンソール上に表示されるメッセージに対し、特定の文字列を指定してSQLコード、タイムスタンプなどによる絞り込みを行うことも可能です。

  • Timestamp
  • APPHDL
  • APPID
  • SQL Code
  • Database
  • Message

image.png

従来は db2diag -g "level:=Error" -H 24h などのコマンドをサーバーにログインして実行していましたが、Genius Hubなら画面上のチェックボックスとスライダーだけで直感的に抽出できます。

💡 膨大な診断ログのうち、特定の時間帯などの条件に限定したログ調査を行うことができます。


3. CSV出力

表示中のログはCSV形式でエクスポートできます。
例えば、

✅ Excelでの分析
✅ 調査結果の共有

などに利用できます。

image.png

(CSVをExcelで開いたもの)
image.png

💡 CSV出力では1ログエントリーが1行で整理されるため、Excelなどでの分析や集計を行いやすくなります。
一方で、元の db2diag.log に含まれる一部の詳細情報は出力対象外となるため、必要に応じて原本ログも併せて確認してください。


補足: LogAnalysis利用のための事前準備

ログ分析機能の利用には前提があります。 
Db2 Genius Hub が利用する REST API を提供する Remote OS Service を別途インストールする必要があります。

以下の手順でセットアップします。

  • ログ分析対象としたいDb2インスタンスに対して Remote OS Service を導入・起動
  • Genius Hubコンソールより、ログ分析対象とするデータベースへの接続定義情報を入力
    • Remote OS Serviceへの接続情報を入力する

Step1. Remote OS Service導入

Remote OS Serviceは、Db2インスタンス単位で導入します。

  • 以下の実行例では、インスタンス名は sd1211 です
  • 以後の作業は、sd1211(OSユーザー)で実行します

ログ分析を行いたいDb2インスタンスのインスタンスホームディレクトリーに、Remote OS Serviceのインストールイメージをコピーします。

$ cp ./db2_genhub_remote_serv_linux.gz /home/sd1211/

インスタンスホーム直下で、Remote OS Serviceのgzファイルを展開します。

$ cd /home/sd1211
$ tar -xvf ./db2_genhub_remote_serv_linux.gz

Step2. .envファイルの作成と編集

以下のようなケースでは、.envファイルによる構成が必須です。

  • Db2インスタンス名が db2inst1 以外である場合
  • Remote OS ServiceのListenポートをデフォルト(8080番)から変更したい場合 など

今回は上記に当てはまるため、.envファイルを作成します。
Remote OS Serviceを展開した直下のディレクトリーに .env.template ファイルが存在しますので、コピーして編集します。

$ cp -p .env.template .env

編集した箇所を抜粋します。(.envファイル内の登場順)

  • Remote OS ServiceのListenポートを28080へ変更
  • Db2インスタンスホームディレクトリーのパス
# Server configuration
SERVER_PORT=28080

# Option 1: Set DB2_HOME and profile path will be automatically derived as DB2_HOME/db2profile
DB2_HOME=/home/sd1211/sqllib

参考) .env.template ファイルの内容 (Remote OS Serviceデフォルト構成)

デフォルトの Remote OS Service用 .envファイル
# DB2 Agentic Utility Configuration

# Server configuration
SERVER_PORT=8080

# Metrics configuration
METRICS_CACHE_TTL=60

# DB2 configuration
# DB2 Profile Path Configuration (choose one of the following):
# Option 1: Set DB2_HOME and profile path will be automatically derived as DB2_HOME/db2profile
DB2_HOME=/home/db2inst1/sqllib
# Option 2: Set DB2_PROFILE_PATH explicitly (overrides DB2_HOME if both are set)
# DB2_PROFILE_PATH=/home/db2inst1/sqllib/db2profile
# Option 3: Use pattern with %s for instance name (if neither DB2_HOME nor DB2_PROFILE_PATH is set)
# Default: /home/%s/sqllib/db2profile

# DB2 Timeout Configuration (in seconds)
# Timeout for individual DB2 commands (default: 120 seconds)
DB2_COMMAND_TIMEOUT=120
# Timeout for DB2 query operations (default: 120 seconds)
DB2_QUERY_TIMEOUT=120

# DB2 Connection Pool Configuration
# Maximum number of connections in the pool (default: 10)
DB2_POOL_MAX_SIZE=10
# Minimum number of connections to maintain (default: 2)
DB2_POOL_MIN_SIZE=2
# Maximum time a connection can be idle in minutes (default: 5)
DB2_POOL_MAX_IDLE_MINUTES=5
# Maximum lifetime of a connection in minutes (default: 30)
DB2_POOL_MAX_LIFETIME_MINUTES=30

# Security configuration
# API key is always required
# For production, generate a strong random key (min 16 chars)
# Example: API_KEY=$(openssl rand -base64 24)
#API_KEY=change_me_in_production
# Rate limit (requests per minute)
RATE_LIMIT=200
# TLS configuration
TLS_ENABLED=false
TLS_CERT=cert.pem
TLS_KEY=key.pem

# Application mode
# Set to "release" for production deployment
GIN_MODE=debug

# Development configuration
# Set to "true" to enable mock mode for development
MOCK_ENABLED=false

# Logging configuration
# Log level: DEBUG, INFO, WARN, ERROR, FATAL (default: INFO)
LOG_LEVEL=INFO
# Log file path (default: logs/db2remotesvc.log)
LOG_FILE_PATH=logs/db2remotesvc.log
# Maximum log file size in MB before rotation (default: 100)
LOG_MAX_SIZE_MB=100
# Maximum number of old log files to keep (default: 5)
LOG_MAX_BACKUPS=5

Step3. Remote OS Service起動

Remote OS Service 起動前に、下記コマンドでDb2インスタンス名が取得できることを確認します。

$ db2 get instance

 現在のデータベース・マネージャー・インスタンスは sd1211   です。

インスタンス名が取得されていますが、周辺文字列が日本語となっています。
環境により Remote OS Serviceの提供する REST API が正常動作しないことがあるため、Remote OS Service起動前に英語出力となるよう設定変更します。

$ export LANG=C

続けて、Remote OS Serviceを起動します。

$ cd /home/sd1211/db2-remote-svc-1.1.5.0-linux/scripts/
$ ./start.sh --jwt

========================================
  db2remotesvc Start Script
========================================

[INFO] 2026-09-17 18:52:20 - Starting db2remotesvc service...
[INFO] 2026-09-17 18:52:20 - Using binary: /home/sd1211/db2-remote-svc-1.1.5.0-linux/db2remotesvc
[INFO] 2026-09-17 18:52:20 - Loading environment variables from .env file
[INFO] 2026-09-17 18:52:20 - Starting service with arguments:  --enable-jwt=true
[INFO] 2026-09-17 18:52:20 - Starting in daemon mode...
[INFO] 2026-09-17 18:52:22 - Successfully started db2remotesvc (PID: 1059869)
[INFO] 2026-09-17 18:52:22 - Log file: /home/sd1211/db2-remote-svc-1.1.5.0-linux/logs/db2remotesvc.log
[INFO] 2026-09-17 18:52:22 - PID file: /home/sd1211/db2-remote-svc-1.1.5.0-linux/db2remotesvc.pid

========================================
[INFO] 2026-09-17 18:52:22 - Service started successfully
========================================

[INFO] 2026-09-17 18:52:22 - To check status: /home/sd1211/db2-remote-svc-1.1.5.0-linux/scripts/status.sh
[INFO] 2026-09-17 18:52:22 - To stop service: /home/sd1211/db2-remote-svc-1.1.5.0-linux/scripts/stop.sh
[INFO] 2026-09-17 18:52:22 - To view logs: tail -f /home/sd1211/db2-remote-svc-1.1.5.0-linux/logs/db2remotesvc.log

起動できたかどうか、status.shで確認します。

$ ./status.sh
db2remotesvc is RUNNING (PID: 1059869)
$

Step4. Genius Hubコンソールでデータベース接続定義情報を編集

ログ分析対象としたいデータベースの接続定義を開きます。

image.png

「接続の編集」画面で、Remote OS ServiceのListenポート(デフォルトは8080、変更した場合は変更後ポート)を、インスタンスオーナーのOSユーザーIDおよびパスワードを指定し、「接続のテスト」が成功することを確認した上で保存します。
(※「接続の作成」画面でも構成可能)

image.png


まとめ

Db2 Genius Hub の Log Analysis 機能を利用することで、Db2 の診断ログ(db2diag.log) をブラウザー上から効率的に確認できます。

本記事では、ログの一覧表示、診断タイプや時刻範囲によるフィルタリング、CSV エクスポート機能について紹介しました。

これらの機能を活用することで、膨大なログの中から必要な情報を素早く抽出し、障害発生時の初動調査や原因分析を効率化できます。


参考情報


📖シリーズ一覧

🌱 基礎編

🚀 導入構成編

⚙️ 運用編

🚨 トラブルシューティング編


3
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?