- IBM iの運用面でのオープン化戦略のひとつにSQLによるIBM i管理強化がある
- IBM iを知らない開発者・運用担当者がIBM iも含めて複数の基盤を管理するためにSQLを使ってIBM iの情報を取り出したり、操作したりできるIBM i サービスを拡充している
- 従来CLコマンドで操作している機能もIBM i サービスに移植されつつある、IBM i サービス固有の効率的な機能も実装されはじめている
今回は、第3回「進むIBM i のオープン化とOSSサポート」の続編とも言えるものです。第3回では個別の導入コマンドやトレース・フォーマットの共通化、OSSサポートからIBM i のオープン化、他プラットフォームとの共通化をご紹介しました。今回はまた別な切り口からIBM i のオープン化を考えてみたいと思います。
運用・管理面でIBM i オープン化のキーとなるIBM i サービス
2019年のUSER&IBM NEXT@福岡大会で興味深いセッションがありました。正確なタイトルは失念してしまったのですが、「みんなのお困り事をIBMのRFEにリクエストして改善してもらおう」というテーマのセッションでした。RFEはご存じの方も増えてきたと思いますが、Request for Enhancement の意味でIBM製品に対して誰でも改善要望や機能拡張をリクエストできるオープンソースコミュニティを模したプログラムです。例えばIBM i 7.4のILE RPGで拡張された可変次元配列機能はRFEにインプットされたユーザーからのリクエストを基に機能実装したものです。
参考:RFEへのリクエストインプットの手順
IBM Support : Submit Request For Enhancement (RFE)
https://www.ibm.com/support/pages/submit-request-enhancement-rfe
*英文ですが画面操作手順が主体なので操作を真似ればRFEを投稿できると思われます。リクエスト文章はウェブの翻訳サービスで日本語から翻訳した英文で大丈夫です。
さて、先のNEXTセッションで挙げられたアイディア(改善要望)に、「システムを導入後に設定シートや基盤設計書をまとめる必要があるが、CLコマンドはスプール出力やデータベース出力が混在し、一部画面コピーも必要になるなど統一性が無い。CLコマンドを拡張して一律の方法(すべてデータベースアウトプット化する、すべてスプール化する等)に共通化してほしい。」という意見がありました。実際問題として情報取得するコマンド(例えば、DSPNETA、WRKRPYLE、DSPUSRPRF、WRKJOBSCDE、、、、)によってアウトプットは統一されておらず一昔前ならいざ知らず・・確かに非効率だという議論にまとまり、事後RFEへインプットされました。結果は…残念ながらDECLINE(却下)でした。理由を意訳すると、「今後はCLコマンド拡張ではなく、SQLを使って管理する方式、つまりIBM iサービスなどで画一的に操作できるように拡張していく。今後のIBM i 運用管理は積極的にSQLを、IBM iサービスを利用してほしい」というものでした。IBM i サービス、皆様はご存じでしょうか?
IBM i サービスの目的と概要
- SQLでIBM iの設定情報を取得する。
- QSYS2、QSYSTOOLSスキーマ(ライブラリー)のビューとして提供される。やや複雑な問い合わせや業務サンプルはSQLアクセス前提で関数、プロシージャーも提供される。
- IBM iの操作(たとえばCLコマンド)に精通していない非IBM i技術者であっても運用・管理することを視野に入れている
昨今のIBM i 界隈の課題として若手の人材育成、世代交代などがあげられるでしょう。近年のITインフラは10年前と比較しても非常に多様化かつ複雑化しています。一方で慢性的な人手不足などインフラに割くことのできる人的ワークロードは必ずしも十分ではありません。このような環境の中でUSロチェスターのIBM i開発チームが「いかに短期間でIBM i の運用管理を習得できるようにするか、学習障壁をなくすか」を考えたであろうことは容易に想像できます。その上で「全技術者を俯瞰して最も普及している共通言語は何か?」を考え、その結果として「SQL」を選択したのだと筆者は考えています。
技術者に最も普及した共通言語であるSQLをIBM i の標準言語とすることで、IBM iの持つ悪い意味での独自性・とっつきにくさを払拭し新しい技術者の参入を容易ならしめることがIBM iサービスの最重要な目的の一つです。IBM i サービスはここ1,2年で急速に拡張しているものでまだあらゆる機能を包含するまでには至っていませんが、IBM i サービスが提供される機能については、従来であれば必要だったCLPやRPGなどプログラミングを排することができ、SQLの書ける技術者がQSYS2、SYSTOOLSスキーマのビュー、プロシージャーをマニュアルで確認すれば必要な情報を容易に取得できます。つまり、IBM i サービスを利用すればこれまでより多くの技術者にIBM iの運用管理を依頼・習得させることが可能になるはずです。
IBM i サービスの概要
2020年IBM i 7.4レベルにおける、IBM i サービスの概要は以下の通りです。
アプリケーション・サービス | データエリア域の検索、ジョブ実行時の環境変数の検索、CLコマンド実行、PASEシェルのパス設定、特定スレッド・ジョブのスタック情報取得など、アプリケーション作成時を想定した機能を提供 |
---|---|
通信サービス | 該当LPARのOS情報取得、NETSTAT、TCP/IP構成情報、IPインターフェース情報取得、ポート/IP情報取得、TCIP/IPルーティング情報、NTPサーバー情報取得・追加・削除など、ネットワーク関連情報を取得する機能を提供 |
Javaサービス | 特定のジョブのJVM情報取得、GC情報やダンプの生成など、JVM関連情報を取得する機能を提供 |
ジャーナル・サービス | ジャーナルに関する情報、特定のジャーナル項目の検索などを提供 |
ライブラリアン・サービス | 現行ジョブのライブラリー・リスト、指定したライブラリー内のオブジェクト情報の詳細(オブジェクト名・タイプ、サイズ、作成日時、所有者、ソースファイルなど、オブジェクト関連情報を提供 |
メッセージ処理サービス | QHST, ジョブログ内のメッセージ、メッセージキュー情報、現行ジョブの応答リスト情報など、メッセージに関連した情報を提供 |
プロダクト・サービス | 導入済みライセンスプログラム(ユーザー作成ライセンスプログラム含む)の有効期限切れのチェックと警告メッセージ送出、ライセンスプログラムの一覧取得など、ライセンスプログラムに関連した情報を提供 |
PTFサービス | 適用済みグループPTFレベル、グループPTFの詳細情報、個別PTF情報などを提供 |
PTFサービス | 適用済みグループPTFレベル、グループPTFの詳細情報、個別PTF情報などを提供 |
セキュリティー・サービス | 適用済みグループPTFレベル、グループPTFの詳細情報、個別PTF情報などを提供 |
スプール・サービス | OUTQの情報、OUTQ内のスプールファイル情報などを提供 |
ストレージ・サービス | ASP関連情報、ASPのオン・オフ操作、テープライブラリなどメディア操作、物理ディスクの情報、テンポラリストレージの情報、ユーザープロフィール毎のストレージ詳細などを提供 |
システム・ヘルス・サービス | ASP使用率、テーブルサイズなどが閾値のXX%を超えた時にQSYSOPRメッセージ出力するなどの監視機能を提供 |
実行管理サービス | WRKACTJOB・DSPJOB取得情報、ジョブキュー情報、WRKSYSSTS情報、オブジェクトロック・レコードロック情報、スケジュールジョブ情報、システム値情報などを提供 |
SYSTOOLSスキーマ | 上記のIBM i サービスよりも複雑な(より実践的な)サンプル・ツールとして提供されるライブラリー。サンプルSQLプロシージャーが提供されカスタマイズも可能。REST APIなどを利用してIBM i上のリソースをサービス化するためのHTTP関数も提供 |
IBM i の運用管理に必要な諸機能、システム構成情報の取得、IBM i 上の資産をサービス化するための機能に分類できます。業務アプリケーションロジックを作成するために利用できる機能もあります。
IBM i サービスは基本的にはQSYS2ライブラリーに格納されますが、より実践的なIBM提供サンプルという位置づけでSYSTOOLSライブラリーにはSQLプロシージャーや関数が提供されています。
具体的な例でIBM i サービスの機能をご説明しましょう。
IBM i の基盤設計書・設計シートを作るために利用できるIBM i サービスの紹介
IBM i サービスの総覧は以下のIBM i Knowledge Center に記載があります。
IBM i サービス
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_74/rzajq/rzajqservicessys.htm
以下では従来CLコマンドで行っていた設計シート、基盤設計書に必要な情報をIBM i サービスで取得する例をご紹介します。以下にご紹介するSQLのサンプル、解説はすべてKnowledge Center に記載があります。また以下の実行例はすべてACSのSQLスクリプトの実行画面を使用しています。
システム値の取得
SELECT * FROM QSYS2.SYSTEM_VALUE_INFO
下記の例では MAX値に関係するシステム値のみ選択取得しています。DSPSYSVALコマンドに類似。
ユーザープロフィール情報の取得
SELECT * FROM QSYS2.USER_INFO
このSQLではグループプロフィール情報は取得されません。DSPUSRPRFコマンドに類似。
グループプロフィール情報の取得
SELECT * FROM QSYS2.GROUP_PROFILE_ENTRIES
グループプロフィール取得用のビューです。
システム応答リクエスト
SELECT * FROM QSYS2. REPLYLIST
WRKRPYLEコマンドに類似
ライセンスプログラム情報
SELECT * FROM QSYS2.LIC_INFO
WRKLICINFコマンドに類似
IBM提供、ベンダー提供ソフトウェア以外にもユーザーが固有でパッケージングしてライセンスプログラムとして登録したパッケージも情報取得可能です。
グループPTF情報
SELECT * FROM QSYS2. GROUP_PTF_INFO
WRKPTFGRPに類似
PTF情報
SELECT * FROM QSYS2.PTF_INFO
DSPPTFコマンドに類似
最新PTFレベルとの比較
SELECT * FROM SYSTOOLS.GRPPTFCUR
SYSTOOLSで提供。IBM PSPサイトのPTF最新PTFレベルとローカルシステムのPTFレベルを比較できます。この機能はCLコマンドでは提供されず、従来はプログラム開発が必要でした。(下記サンプルでは実行システムがIBM PSPサイトへ接続できない閉域システムのため、ブランクで表示されてしまっています。)
以上はIBM i サービスのほんの一例です。 IBM iの通常システム運用監視に役立つビューやプロシージャー、既存IBM i リソースをHTTP/RESTサービス化するなど様々なビュー・ツールが提供されています。 ぜひご自身でKnowledge Centerを調べて触れて見てください。一つでも業務に役立つものを発見できれば幸いです。
筆者
日本アイ・ビー・エム株式会社 多数の執筆記事を、iWorldに寄稿中。 |