9
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?

InstanaでDb2を監視してみよう!

Last updated at Posted at 2025-12-15

本記事では、Instanaを用いてDb2の監視を行う手順を紹介します。
「Instanaを使ってDb2を監視したいけど、どう設定すればいいの?」という方に向けて、実際の操作例を交えてまとめてみました。

本記事のゴールは、InstanaでDb2のメトリックを確認できる状態にすることです。
記事の最後では、データベースの稼働状況やパフォーマンスを可視化できるようになっているはずです!

はじめに

本記事は以下の環境のもと、執筆しました。
作成日:2025年12月15日
Linux バージョン: Red Hat Enterprise Linux 9.6
Instana バージョン: 1.0.310
Db2 バージョン: 11.5.4

Instana Agent の導入

Instana Agent の導入は、Instana オンボーディングガイドの『 Instana Agentの導入(Linuxワンライナー) 』を参考に行いました。

インストール完了後、Instanaのエージェントページ下部に該当のHostnameが表示されるまで、数分かかります。

Db2のインストール

Db2のインストールは、Qiita記事『 Db2をインストールしてみた 』を参考に行いました。以下、手順です。

インストール

Db2のインストール・イメージをダウンロードし、tar解凍します。

tar -xvzf DB2S_11.5.4_MPML.tar.gz

インストール前提条件の検査を実施します。

cd server_dec
./db2prereqcheck -i -v 11.5.4.0

32bit版のライブラリが足りないと警告が出たので、不足している32bit版のインストールしました。

sudo dnf install libaio libaio-devel pam.i686 libstdc++.i686
※rootユーザーに切り替えて実行することで、コマンド最初のsudoは不要な場合があります。
 筆者は「Permission denied」のエラーが出てしまったので、以降もsudoをつけた管理者権限で実行していきます。

前提条件の検査を再実施します。

./db2prereqcheck -i -v 11.5.4.0

インストールを db2_install のコマンドを使用して実行します。

コマンドの詳細は公式ドキュメント『 db2_install - Db2 データベース製品のインストール・コマンド 』を参照してください。

./db2_install -b <インストールパス> -p <製品名> -f [NOTSAMP/PURESCALE] -L <言語>
# 例
 sudo ./db2_install -b /opt/ibm/db2/V11.5.4 -p SERVER -f NOTSAMP -L JP

インストールしたDb2のライセンス情報を確認します。

コマンドの詳細は公式ドキュメント『 db2licm - ライセンス管理ツール・コマンド 』を参照してください。

<DB2DIR>/adm/db2licm -l
# 例
# Db2のインストール場所を確認 
./db2ls
※筆者はここでDb2インストール場所が分からなくなったので、確認しました。
# ライセンス情報の確認
sudo /opt/ibm/db2/V11.5.4/adm/db2licm -l

ユーザー作成

グループおよびユーザーを作成します。

詳細は公式ドキュメント『 Db2 データベース・インストール用のグループおよびユーザー ID の作成 (Linux および UNIX) 』を参照してください。

# グループdb2iadm1、db2fadm1を作成
sudo groupadd db2iadm1
sudo groupadd db2fadm1

# 確認
cat /etc/group

# ユーザーdb2inst1、db2fenc1を作成
sudo useradd -g db2iadm1 -m db2inst1
sudo useradd -g db2fadm1 -m db2fenc1

# 確認
cat /etc/passwd
id db2inst1 db2fenc1

作成したユーザーの初期パスワードを設定します。

# 任意のパスワードを指定
sudo passwd db2inst1
sudo passwd db2fenc1
※ここでは共に「abcd1234」としました。それぞれ2回パスワードを聞かれます。

さらに、db2icrt のコマンドを使用して、インスタンス db2inst1 を作成します。

コマンドの詳細は公式ドキュメント『 db2icrt - インスタンスの作成コマンド 』を参照してください。

# インスタンスを作成
<DB2DIR>/instance/db2icrt -u <fenced ユーザー> <インスタンス名>
# 例
sudo /opt/ibm/db2/V11.5.4/instance/db2icrt -u db2fenc1 db2inst1

次に、ユーザーを上記で作成したインスタンスdb2inst1に切り替え、Db2を起動します。 

その際、サンプルのデータベースを作成し、接続も行います。

コマンドの詳細は公式ドキュメント『 db2level - Db2 サービス・レベルの表示コマンド 』を参照してください。

# ユーザー切り替え
su - db2inst1
# インスタンスを起動
db2start
# サンプルデータベースを作成
db2sampl
# 作成したデータベースに再接続
db2 connect to SAMPLE

Db2接続パスワードを暗号化

本番環境で設定ファイルに平文パスワードを記載できない場合には、Db2起動スクリプトで暗号化パスワードを復号し、環境変数を使ってInstanaに渡す方法を利用します。

Instana利用のためのDb2接続ユーザ作成

ユーザー db2inst1 を、グループ db2iadm1 に追加

# Db2クライアントからデータベース SAMPLE に接続する
db2 connect to SAMPLE
# ログアウト                     
exit   
# グループに追加             
sudo usermod -aG db2iadm1 db2inst1  
# 確認
id db2inst1                               

DB権限の付与

DB権限付与が可能なDb2管理ユーザ(インスタンスユーザ等)で実行します。

後述手順は、インスタンスユーザがdb2inst1、監視対象DBがSAMPLEという前提で記載していきます。

詳細は公式ドキュメント『 ユーザー権限 』を参照してください。

# ログイン
su - db2inst1
# Db2クライアントからデータベース SAMPLE に接続                   
db2 connect to SAMPLE
# DB権限付与  
db2 grant execute on function SYSPROC.MON_GET_CONTAINER to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_TRANSACTION_LOG to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_DATABASE to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_TABLESPACE to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_HADR to user db2inst1
db2 grant execute on function SYSPROC. MON_GET_PKG_CACHE_STMT to user db2inst1
db2 grant execute on function SYSPROC. MON_GET_AGENT to user db2inst1
db2 grant execute on function SYSPROC. MON_GET_WORKLOAD to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_CONNECTION to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_UTILITY to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_INSTANCE to user db2inst1
db2 grant execute on function SYSPROC.MON_GET_UNIT_OF_WORK to user db2inst1
db2 grant select on table SYSIBMADM.MON_CURRENT_SQL to user db2inst1
db2 grant select on table SYSIBMADM.MON_LOCKWAITS to user db2inst1
db2 grant select on table SYSIBMADM.MON_CONNECTION_SUMMARY to user db2inst1
db2 grant select on table SYSIBMADM.MON_DB_SUMMARY to user db2inst1
# Db2 クライアントセッションを終了
db2 terminate

Db2接続パスワードの暗号化

Db2接続パスワードを暗号化し、ファイルとして保管しました。

接続ユーザーのパスワードは「abcd1234」という前提で進めます。

# 接続パスワードをファイルに記載
echo abcd1234 > plain.txt

以下の設定で、パスワードの暗号化を行いました。

  • 暗号化の方式:aes-256-ecb
  • パスワードファイル:db2enc_db2inst1.txt
  • 暗号化時のパスコード:12345678
# パスワードの暗号化
openssl enc -e -aes-256-ecb -in plain.txt -out db2enc_db2inst1.txt -pass pass:12345678 -a

権限変更とテキストファイル削除

機密ファイルの権限変更と不要なテキストファイルの削除を行います。

# 権限変更
chmod 400 db2enc_db2inst1.txt
# テキストファイルの所有者変更
chown db2inst1 db2enc_db2inst1.txt
# テキストファイルの削除
rm -i plain.txt

構成ファイル作成

Instana構成ファイル(configuration.yaml)に環境変数からパスワードを渡します。

以下に、後述手順のDB接続情報を示します。

  • インスタンス名:db2inst1
  • ポート番号:50000
  • 接続ユーザ:db2inst1
  • パスワード:abcd1234

構成ファイルのバックアップ

# Instanaディレクトリに移動
cd /opt/instana/agent/etc/instana
# バックアップファイル「configuration.yaml.org」を作成
sudo cp -p configuration.yaml configuration.yaml.org

構成ファイルの編集

configuration.yamlの末尾にエントリーを追加する。環境変数名はDB2_PASSとしました。

# viエディタを開く
sudo vi /opt/instana/agent/etc/instana/configuration.yaml 

追加するエントリー↓

com.instana.plugin.db2:
  local:
    - instance: 'db2inst1'
      port: '50000'
      user: 'db2inst1'
      password:
        configuration_from:
          type: env
          env_name: DB2_PASS
      poll_rate: 5
      databases:
      - 'SAMPLE'

上記のエントリーで、半角のシングルクォーテーション「'」が、全角のシングルクォーテーション「’」やバッククォート「`」等になっていないか注意しましょう。筆者は一部、全角のシングルクォーテーションになっていたために、InstanaとDb2の接続ができなかったことがあります。

# 編集した箇所を確認
sudo diff configuration.yaml configuration.yaml.org

Db2起動スクリプトへのパスワード復号ロジックの追加

Db2起動スクリプトの中へ暗号化パスワードを復号し、環境変数に設定しました。

Db2起動スクリプトの編集

Db2起動(db2start)の直前に以下のロジックを追加します。

環境変数名、暗号化方式、パスワードファイル名、パスコードは、前述と同じにしました。

# ログイン
su - db2inst1
# パスワード復号
DB2_PASS=`openssl enc -d -aes-256-ecb -in db2enc_db2inst1.txt -pass pass:12345678 -a`
# 環境変数の設定
export DB2_PASS

稼働確認

上記の設定内容の反映を行うため、Db2再起動を行い、Instana起動を行います。

Db2再起動

環境に応じてDb2を再起動し、起動時はパスワード復号ロジックを追加したスクリプトを使います。

# Db2を停止
db2stop
# インスタンス環境を読み込み
. ~/sqllib/db2profile
# パスワード復号
DB2_PASS=$(openssl enc -d -aes-256-ecb -in /home/db2inst1/db2enc_db2inst1.txt -pass pass:12345678 -a)
# 環境変数設定
export DB2_PASS
# Db2再起動
db2start

Instana Agent 起動

# Instana Agent を起動
/opt/instana/agent/bin/start
# 起動後のログをリアルタイムで確認
tail -f /opt/instana/agent/data/log/agent.log

起動後は、以下のようなDb2接続エラーが表示されないことを確認しましょう。

# 認証エラー (ユーザー名やパスワードが間違っている。)
[ERROR] Failed to connect to Db2 instance: Authentication failed for user db2inst1
# インスタンス未起動エラー (Db2インスタンスが起動していない。db2startが未実行だとこのエラーになります。)
[ERROR] SQLSTATE=57019: Database manager not active

InstanaのUI上での確認

Instanaにログインし、左サイドバーからインフラストラクチャーページを選択します。
該当のホストを選択し、詳細画面からDb2が追加されていることを確認します。
image1.png

Instanaを用いたDb2の監視

Instanaを用いることで、CPUやメモリなどのリソース使用率、接続数やセッション情報、トランザクションログの状態、テーブルスペースの使用率など、データベースの稼働状況やパフォーマンスを可視化できます。

さらに、SQLキャッシュやHADR(高可用性)ステータスなど、運用に重要なメトリックもダッシュボードでグラフ表示され、異常検知やトレンド分析に活用可能となります。
詳細は公式ドキュメント『 メトリックの表示 』を参照してください。

本記事では、実際に、Instanaのインフラストラクチャーページからプロセスの監視およびメトリックの確認をしてみました。

Db2プロセスの監視

インフラストラクチャーページでホストを選択後、プロセスタブに表示されるDb2を選択します。
すると、ユーザー名やグループ名などの詳細情報を確認することができました。
image2_2.png

さらに、ダッシュボードを開くをクリックすると、CPU使用率、正規化CPU使用量、メモリー、オープンファイルなどの情報をグラフとして表示することができました。
image3.png

Db2メトリックの確認

インフラストラクチャーページでホストを選択後、Db2タブから確認したいデータベースを選択すると、詳細情報を確認することができます。
次に、ダッシュボードを開くをクリックします。
image4_1.png

すると、データベースの稼働状況やパフォーマンスなどの情報をグラフとして表示することができました。
image5.png
image6.png

これで無事、InstanaでDb2のメトリックを確認できるようになりました!!

確認できるメトリックについては、以下の公式ドキュメントを参照ください。
https://www.ibm.com/docs/ja/instana-observability/current?topic=technologies-monitoring-db2#viewing-metrics__title__1

9
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
9
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?