はじめに
2022年現在、Db2には多くの提供形態があります。
(参考:2022年6月のDb2製品ラインナップを整理してみる)
10年前まではオンプレミス環境での利用が圧倒的に多かったDb2も、
IaaS環境での稼働はすっかり一般的になり、
DBaaSであるDb2 on Cloud, Db2 Warehouse on Cloud(略称:Db2WoC)の利用検討も増えてきているようです。
DBaaSであるDb2 on Cloud , WoC ではサービス利用を申し込めば、
作成済のDBを提供されてすぐに利用開始することができます。
そして、OSログインは不要です。そもそもDb2が稼働するOSへログインすることはできません。
となると、どうやって運用管理を行うのでしょう?
DBaaSですから障害が起きたときのサービス復旧はベンダーであるIBMにおまかせで良さそうですが、
DBサーバで日々行われる運用操作は多岐にわたります。
バックアップ、統計情報収集、再編成、モニタリングなど、
一般的に行われるデータベース運用操作がDb2 on Cloud, Db2WoCではどうなるのか、何ができるかは知っておきたいところです。
そこで、オンプレミス環境、IaaS環境で稼働するDb2で通常行われる定常運用操作を、Db2 on Cloud , Db2WoCではどのように行えるのかを整理します。
目次
(1) バックアップ/リストア
(2) 統計情報収集/再編成
(3) モニタリング/監視 ← 当記事
この記事では、(3) モニタリング/監視 について扱います。
モニタリング/監視について
まず、Db2, Db2 on Cloud, Db2WoC におけるモニタリング/監視について、大まかな説明をします。
Db2運用においては、サービスやリソースの状況をモニタリング/監視する必要があります。
Db2製品では、モニタリング/監視を行うための様々な機能が提供されています。
Db2では、主に以下のような機能を用いて、モニタリング/監視を行うことができます。
- OSコマンド
- db2pd コマンド
- MON_GET表関数
- db2mon
- イベントモニター
- 監査機能
しかし、Db2 on Cloud・Db2WoCでは、OSコマンドが使用できませんし、その他 の機能でも いくつか使用できない ものがあります。
それぞれの機能の各環境における使用可否を、以下表にまとめています。
機能 | Db2 | Db2 on Cloud ・Db2WoC |
---|---|---|
OSコマンド | 〇 | × |
db2pdコマンド | 〇 | × |
MON_GET表関数 | 〇 | 〇 |
db2mon | 〇 | × |
イベントモニター | 〇 | 〇 |
監査機能 | 〇 | 〇 |
一方、Db2 on Cloud・Db2WoC では、Webコンソールが使用でき、
GUI画面より手軽に、さまざまな項目についてモニタリングを行うことができます。メモリー等のリソース使用状況も、ダッシュボードで確認可能です。
Db2 on Cloud・Db2WoCは、クラウドマネージドサービスとしての利用になるため、運用方法が オンプレミスでのDb2と異なります。
各製品で利用できる モニタリング/監視機能を把握し、適した運用方法を検討することが必要となります。
従来型 Db2 のモニタリング/監視
ここでは、従来からあるDb2でのモニタリング/監視 について記述します。
1. OSコマンド
OSコマンドを使用して、プロセスやリソースの監視を行います。
たとえば、Linux/Unix環境において psコマンドを実行して、プロセス情報やメモリー使用状況を確認したり、dfコマンドを実行して、ディスクの使用状況を確認したりします。
リソース監視には、nmonコマンドを使用する場合もあります。
Db2が稼働すると db2sysc(Windowsの場合 db2syscs.exe) がプロセスとしてあがります。
Linux/Unix環境で、Db2が正常に稼働しているかどうかは、ps コマンド で以下のように確認することができます。
$ ps -ef | grep db2inst1 | grep db2sysc | grep -v grep
db2inst1 1793 1791 9 00:19 pts/0 00:00:04 db2sysc 0
Db2の詳細なプロセス・モデルについては、以下リンク先をご参照ください。
(参考)
・DB2 プロセス・モデル
https://www.ibm.com/docs/ja/db2/11.5?topic=architecture-db2-process-model
Linux/Unix環境での ディスクの使用状況は、dfコマンドで以下のように確認することができます。
$ df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs 2444312 0 2444312 0% /dev
tmpfs 2456296 4 2456292 1% /dev/shm
tmpfs 2456296 8728 2447568 1% /run
tmpfs 2456296 0 2456296 0% /sys/fs/cgroup
/dev/mapper/rhel-root 36678148 19415636 17262512 53% /
/dev/sda1 1038336 153248 885088 15% /boot
tmpfs 491260 0 491260 0% /run/user/0
また、nmonコマンドを使用すると、
CPU、ディスク、メモリなどの システム統計が取得でき、リソース監視が可能です。
・nmon for Linux
https://nmon.sourceforge.net/pmwiki.php
2. db2pdコマンド
db2pdコマンドは、Db2 v8.2から追加されたモニタリングツールであり、データベース・エンジンを経由せずDb2のメモリー領域を参照することが可能です。
情報を収集する際、データベース・エンジンを経由しないので、
Db2エンジンがハングしている状態でも実行可能です。
コマンドには様々なオプションがあり、あらゆる状況やタイミングで使用できます。
(参考)
・[Db2 v11.5] db2pd - Db2 データベースのモニターおよびトラブルシューティング・コマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-db2pd-monitor-troubleshoot-db2-engine-activities
3. MON_GET表関数
MON_GET表関数は、Db2 v9.7以降 提供されている モニター・メトリックを利用したモニタリング機能で、
SQLを使用して、システムの動作やパフォーマンスを記述するさまざまなモニタリング情報を取得することができます。
SQLを使用してモニタリングデータを取り扱うことができるため、蓄積や分析が容易であり、
日常的な活動状態のモニタリングを行い、データベースの「平常」を把握することで、何らかの問題が発生したときの基準を知り、問題判別時の調査に役立てられます。
・モニター・プロシージャーおよび関数
https://www.ibm.com/docs/ja/db2/11.5?topic=views-monitor-procedures-functions
4. db2mon
ある特定期間のモニター・データを収集したい場合は、
特定期間のMON_GETデータを取得するスクリプトセットである db2monを使用します。
(※MON_GETデータは MON_GET表関数が返す性能統計データを指します。)
db2mon実行では、オンライン・モードとオフライン・モードの2つのモードが選択できます。
インスタンス・ディレクトリーの ~/sqllib/samples/perf 下には、db2monの実行に使用されるスクリプトがあります。
-
オンライン・モード
一般的にはこちらのモードで実行します。
モニター対象のシステム上で db2monが実行され、標準出力に関するレポートを生成します。
実行には、db2mon.shかdb2mon.sqlのどちらかを使用します。
<使用スクリプト>
・db2mon.sh:データベース接続し、USER TEMPORARY 表スペースと小さな専用バッファー・プールを作成する
・db2mon.sql:現行接続でMON_GET データを収集する。(db2monBefore.sql、 db2monInterval.sql、 db2monAfter.sqlの連結形式) -
オフライン・モード
実行には、db2mon_export.sql、db2mon_export.sql、db2mon_report.sqlを使用します。
<使用スクリプト>
・db2mon_import.sql:IMPORT ユーティリティーで、分析のために MON_GET データを Db2 表に再構成する
・db2mon_export.sql:MON_GET データを現行作業ディレクトリー内に作成された IXF ファイルにエクスポートする
・db2mon_repoort.sql:分析用のレポートを生成する
(参考)
・[Db2 v11.5] db2mon によるパフォーマンス・モニター・データの収集とレポート作成
https://www.ibm.com/docs/ja/db2/11.5?topic=tuning-collecting-reporting-performance-monitor-data
5. イベントモニター
ある特定のイベントが発生したときだけ、システム状態について情報を取得したい場合は、イベントモニターを使用します。
イベントモニターでは、以下イベントに対する情報のキャプチャーが設定できます。
- LOCKING:ロック, デッドロックがいつ発生するか、および 関与しているアプリケーション
- ACTIVITIES:システムで実行されているアクティビティー
- STATEMENTS:SQL ステートメントの実行の結果として データベースに対して要求された内容
- UNIT OF WORK:システムで実行された作業単位についての リソース使用量情報およびパフォーマンス・メトリック
- PACKAGE CACHE:パッケージ・キャッシュからなくなったステートメントの履歴
- CONNECTIONS:アプリケーションによるデータベースへの接続ごとのメトリックおよびその他のモニター・エレメント
- DATABASE, BUFFERPOOLS, TABLESPACES, TABLES:データベース全体、バッファープール、表スペース、表に関するメトリック
- STATISTICS:ワークロード管理オブジェクト (サービス・スーパークラス、ワークロードなど) についての 処理メトリック
- THRESHOLD VIOLATIONS:設定した特定のしきい値が、データベース運用でいつ超過されるか
- CHANGE HISTORY:データベースおよびデータベース・マネージャーの構成変更、レジストリー設定変更、DDL ステートメントの実行、ならびにユーティリティーの実行
イベント・モニターの作成には、CREATE EVENT MONITORステートメントを使用します。
また、イベントモニターを活動化するには、SET EVENT MONITORステートメントを使用します。活動化するときはSTATEを1、非活動化するにはSTATEを0に設定します。
(必要に応じて、一部タイプのイベント・モニターに関しては、データの収集ができるようにデータベース・マネージャーを構成します。)
(参考)
・[Db2 v11.5] イベント・モニター
https://www.ibm.com/docs/ja/db2/11.5?topic=monitoring-event-monitors
6. 監査機能
事前に定義したデータベースのイベントに対して監査証跡を生成し、監査証跡をモニタリングするには、監査機能を使用します。
CREATE POLICYコマンドで、現行サーバーの監査ポリシーを定義し、監査するカテゴリーを指定します。
その後、AUDITコマンドで オブジェクトで使用する監査ポリシーを紐づけます。紐づけが完了したら、オブジェクト使用中は そのポリシーに従って監査が実行されます。
監査ポリシーを関連付けることができるオブジェクトには、以下があります。
- データベース全体
- テーブル
- トラステッド・コンテキスト
- ユーザー、グループ、またはロールを示す許可 ID
- 権限 (SYSADM、SECADM、DBADM、SQLADM、WLMADM、ACCESSCTRL、DATAACCESS、SYSCTRL、SYSMAINT、SYSMON)
(参考)
・[Db2 v11.5] Db2 監査機能の紹介
https://www.ibm.com/docs/ja/db2/11.5?topic=activities-introduction-db2-audit-facility
7. その他
単一のGUI画面よりDb2データベースの管理・モニターを行いたい場合、
Db2管理・モニタリングツールである、Db2 Data Management Console(DMC) を使用できます。
DMCは、Data Server Manager(DSM)の後継ツールとして2019年10月にリリースされました。
Db2 on Cloud/Db2WoCも同じようなインターフェースのWebコンソールが提供されています。
(参考)
・【SIL】【IM】IBM Db2 Data Management Console 利用ガイド
https://www.ibm.com/support/pages/%E3%80%90sil%E3%80%91%E3%80%90im%E3%80%91ibm-db2-data-management-console-%E5%88%A9%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89
また、Db2v11.1以降では、dmctopツールを使用した、テキストベースのモニタリングが可能です。
dmctopツールは、Db2に同梱されおり、標準でインストールされる無償のコマンドラインツールです。
このツールは軽量でオーバーヘッドが少なく、MON_GET表関数を使用して、監視対象データベースのアクティビティをリアルタイムに表示ができます。
(参考)
・[IBM Db2 Data Management Console v3.1.x]Monitoring utility (dmctop)
https://www.ibm.com/docs/en/db2-data-mgr-console/3.1.x?topic=monitoring-utility-dmctop
Db2 on Cloud、Db2WoC の モニタリング/監視
ここでは、Db2 on Cloud・Db2WoCでのモニタリング/監視 について記述します。
Db2 on Cloud や Db2WoC では、
Db2で使用できた OSコマンドや db2pdコマンド、db2monが使用できません。
その代わり、Db2 on Cloud や Db2WoC では Webコンソールが使用でき、
GUIインターフェース上で モニタリングを行うことができます。
以下より、それぞれのモニタリング/監視 機能について記述します。
1. Webコンソール
Db2 on Cloud・Db2WoCでは、
Db2の状態を管理・モニターすることができる Webコンソールが提供されています。
GUI画面にて 手軽に様々なモニタリングができ、緊急の問題判別などに適しています。
Webコンソールへは、Webブラウザから以下URLで接続することができます。※斜線部分はホスト名
https://db2w-xxxxx.ap-north.db2w.cloud.ibm.com/console/
Db2 on Cloud/Db2WoCサービスをデプロイすると、
コンソールのアドレスとWebコンソールにログインするための認証情報が通知されます。
通知された認証情報を使用して、Webコンソールへログインします。
Webコンソールへログインすると以下のような画面が表示されます。
(※ここではDb2 on CloudのWebコンソールを示します。)
ダッシュボードでは、Db2 on Cloud・Db2WoC全体のモニタリング情報として、以下項目が確認できます。
- 反応性
- スループット
- リソース使用量
- 競合(ロック待ち)
- 消費時間(SQL実行)
※Webコンソールではモニタリングだけでなく、
SQLの実行や、データのロード、管理設定なども実施できます。
画面左上のメニューより、各機能の画面へ遷移します。
さらに画面上の各タブも、様々な項目があります。
ここから 各項目における詳細なモニタリングが可能です。
各モニタリング項目で、
期間を選択してモニタリング情報を表示させたり、
CSV形式でエクスポートすることもできます。
2. MON_GET表関数
Db2と同じく、Db2 on Cloud・Db2WoCでも MON_GET表関数 を使用することができます。
MON_GET表関数を使用して、システムの動作やパフォーマンスに関する さまざまなモニタリング情報を取得できます。
MON_GET表関数は、
Webコンソール上のSQL実行を使用したり、Db2 on Cloud・Db2WoCへクライアント接続して 実行します。
それ以外にも、Db2 on Cloud・WoCへクライアント接続して実行することも可能であり、クライアントから、モニタリングしたデータを収集・保存して、
日常的な稼働状況の監視を行ったり、
問題判別時に収集したデータをもとに調査を行うなどの活用ができます。
(参考)
・[Db2 on Cloud]モニター・プロシージャーおよび関数
https://www.ibm.com/docs/ja/db2oc?topic=views-monitor-procedures-functions
・[Db2 Warehouse on Cloud]モニター・プロシージャーおよび関数
https://www.ibm.com/docs/ja/db2woc?topic=views-monitor-procedures-functions
3. イベントモニター
Db2と同じく、Db2 on Cloud・Db2WoCでも イベントモニターを使用することができます。
特定イベントが発生したときだけ、システムに関する情報を取得したい場合は、イベント・モニターを使用します。
CREATE EVENT MONITORステートメントで、イベント・モニターを作成し、
SET EVENT MONITORステートメントでイベント・モニターを活動化します。
(参考)
・[Db2 on Cloud] イベント・モニター
https://www.ibm.com/docs/ja/db2oc?topic=monitoring-event-monitors
・[Db2 Warehouse on Cloud] イベント・モニター
https://www.ibm.com/docs/ja/db2woc?topic=monitoring-event-monitors
4. 監査機能
Db2と同じく、Db2 on Cloud・Db2WoCでも 監査機能を使用することができます。
監査機能で、事前定義したデータベースのイベントに対して監査証跡を生成し、その監査証跡をモニターします。
CREATE POLICYコマンドで、現行サーバーの監査ポリシーを定義し、監査するカテゴリーを指定し、
AUDITコマンドで オブジェクトで使用する監査ポリシーを紐づけます。
Db2 on Cloud・Db2WoCでは、あらかじめAUDIT_ALLポリシーが用意されています。
これはデータベース内すべてのアクティビティーをキャプチャーするポリシーで、多くのリソースが消費されるので、なるべくユーザー側で要件に合わせたポリシー定義が推奨されます。
(参考)
・[Db2 on Cloud] 監査ポリシーの指針
https://www.ibm.com/docs/ja/db2oc?topic=features-audit-policy-guidelines
・[Db2 Warehouse on Cloud] 監査ポリシーの指針
https://www.ibm.com/docs/ja/db2woc?topic=features-audit-policy-guidelines
5. その他
Db2 on Cloud・Db2WoCではOSコマンドでの リソースの状況をモニタリングすることはできませんが、
OSコマンドの代わりとして、ENV_GET_SYSTEM_RESOURCES表関数を使用して、オペレーティング・システム、CPU、メモリーなどの情報を取得することもできます。
(※この関数はDb2でも実行可能です。)
(参考)
・[Db2 on Cloud] ENV_GET_SYSTEM_RESOURCES 表関数 - システム情報を戻す
https://www.ibm.com/docs/ja/db2oc?topic=erv-env-get-system-resources-table-function-return-system-information
・[Db2 Warehouse on Cloud] ENV_GET_SYSTEM_RESOURCES 表関数 - システム情報を戻す
https://www.ibm.com/docs/ja/db2woc?topic=erv-env-get-system-resources-table-function-return-system-information
おわりに
今回は、Db2製品ごとのモニタリング/監視 について 解説しました。
Db2 on Cloud・Db2WoCは クラウドマネージドサービスであるため、
従来のオンプレミスのDb2とは異なり、
データベースサーバーにログインしてOSコマンドを使用することができません。
一方、Webコンソールを利用して、
GUI画面より様々なモニタリングを 手軽に行うことができるようになっています。
運用にあたっては、
各製品において使用できる機能を把握し、モニタリング・監視の方法を検討していく必要があります。
参考情報
・Db2 v11.5
https://www.ibm.com/docs/ja/db2/11.5
・IBM Db2 on Cloud
https://www.ibm.com/docs/ja/db2oc
・IBM Cloud資料:Db2 on Cloud
https://cloud.ibm.com/docs/Db2onCloud
・IBM Db2 Warehouse on Cloud
https://www.ibm.com/docs/ja/db2woc
・IBM Cloud資料:Db2 Warehouse on Cloud
https://cloud.ibm.com/docs/Db2whc