2021年09月

17

【てくさぽBLOG】IBM Power Virtual ServerのAIX環境をバックアップしてみた(Part.2)

こんにちは。
てくさぽBLOGメンバーの村上です。

本ブログは、IBM Power Virtual Server をトライしてみた内容や感想をご紹介するブログです。

シリーズ化していますので、まずインデックスのご紹介をします。

 

インデックス

IBM Power Virtual ServerでAIX環境を作ってみた
IBM Power Virtual ServerのAIX環境にSWを導入してみた 
IBM Power Virtual ServerのAIX環境を日本ロケールにしてみた
IBM Power Virtual ServerのAIX環境をバックアップしてみた(Part.1)
IBM Power Virtual ServerのAIX環境をバックアップしてみた(Part.2) ←今回
IBM Power Virtual ServerのAIX環境とIBM Cloud x86環境を接続してみた

今回は、AIX環境のバックアップ手順のご紹介です。
検証環境で2種類のバックアップ方法を試しましたので、Part.1 とPart.2(本ブログ)に分けてご紹介しています。

本ブログでは 「AIX環境をバックアップしてみた Part.2として、FlashCopy によるバックアップ手順をご紹介します。

 

セクション

以下の1)~4)のセクションに分けてご紹介します。

1)  FlashCopy の説明
2)  IBM Cloud CLI 導入
3)  FlashCopy によるバックアップの事前準備
4)  FlashCopy の実施

検証はAIXのインスタンスで行いましたが、IBM i のインスタンスでも同等の手順で操作を行うことができます。

利用したクライアント端末(私のPC)は、Windows10 pro バージョン2004です。

1) FlashCopy の説明

Power Virtual Server で実装する FlashCopy  は以下の仕様となっています(IBM Cloud 柔らか層本 20210915版より)。

説明 ・IBM Cloud で提供されており、外部ストレージ装置のコピーを実施する
・バックアップ/リストアの時間が大幅に削減できる
・NWデータ転送量を削減できる
主な用途 ・データベース領域のバックアップ(容量が大きいものにおススメ)
・VM全体のバックアップ
対象 rootvg を含む任意のボリューム
保管場所 外部ストレージ装置
取得時の
LPAR停止有無
不要
※ ファイルの整合性担保のためにバックアップ前にはアプリの静止、LPAR停止が推奨される
制約事項
など
リストア時はアプリ静止、LPAR停止が推奨
GUIは未実装であり、API呼び出しでのみ実行可能(2021年9月 時点)
・FlashCopy 先のストレージは無償で利用可能
・インスタンス削除と同時にFlashCopy データも消失する

FlashCopyとは、「Snapshot 」「Clone 」「Point in time Copy」とも呼ばれ、ある一時点のボリュームのコピーを作成する機能です。コピー元とコピー先は異なるLUN(ストレージのボリューム単位)を使用することができ、バックアップ手法として利用されています。

FlashCopy 先のディスクは課金されず無料で利用することができますが、バックアップデータの実体をWEBインターフェースの画面で確認することはできません。また、インスタンスを削除するタイミングで FlashCopy のデータも消失するため、バックアップデータはICOSなどへのデータのエクスポートが推奨されています。

2) IBM Cloud CLI 導入

FlashCopy を実施する前に、実施環境(ローカルPC)の準備を行います。

Power Virtual Server の FlashCopy は「IBM Cloud API 」を利用します。残念ながらWEBインターフェース画面では FlashCopy 機能が提供されていません(2021年9月時点)。

FlashCopy の実行は「IBM Cloud API 」で行いますが、Power Virtual Server へのログインやFlashCopy に必要なパラメータ取得などで 「IBM Cloud CLI 」も利用します。

IBM Cloud API とは
仮想サーバを簡単にデプロイおよび構成するために利用されるAPI(アプリケーション・プログラム・インターフェイス)
:利用する場合、モジュールとしてのインストールは不要
IBM Cloud CLI とは
IBM Cloud のリソースを管理するためのCLI(コマンド・ライン・インターフェイス)
:利用する場合、モジュールとしてのインストールが必要

「IBM Cloud CLI 」を利用するためには、ローカルPCに「IBM Cloud CLI」のモジュールをインストールする必要があります。

では、IBM Cloud CLI のインストール作業を行っていきます。

・WEBブラウザーを利用して、GitHub の IBM Cloud リポジトリーにアクセスします。
・IBM Cloud CLI を導入するPCのOSを選択します(私のPCは下記のピンク色で囲んだOS)。

IBM Cloud CLI のインストーラーがローカルPC内にダウンロードされました。
※ 上記は2021年1月時点のバージョンで、2021年9月時点の最新版は v2.0.3 です。

・ローカルPC内にダウンロードしたインストーラーをダブルクリックして起動します。

「IBM Cloud CLI の インストール・ウィザード」が表示されます。
・「Next」をクリックします

「License Agreement 」の画面が表示されます
・「I accept the terms in the license agreement」にチェックを入れます
・「Next」をクリックします

「Ready to Install the Program」の画面が表示されます。
・「Install」をクリックします

「The installation completed successfully」のメッセージでインストールが正常に終了した画面が表示されます。
・「Finish」をクリックします

IBM Cloud CLI のインストールが完了です!

IBM Cloud CLI が正常にインストールされていることを確認します。
これ以降の作業では、CUI を利用して検証を行います。CUI は Windows標準搭載の「Windows PowerShell」を利用します。(※画面ショットの 固有の値はマスキングします)

・Windows PowerShell を起動し IBM Cloud CLI のバージョン確認コマンドを入力します。
> ibmcloud -v

上記の通り、IBM Cloud CLI  1.3.0 でした。私のPC内の IBM Cloud CLI は、2021年1月頃に導入したので、かなりバージョンが古くなっているようです。

・IBM Cloud CLIのバージョンアップを行います。
> ibmcloud update
→「今すぐ更新しますか?[Y/n]」で「Y」を入力

自動でIBM Cloud CLI のインストーラーが立ち上がります。

・インストールウィザードの画面で「Next」→「Finish」と進めます

・インストールウィザードが終了したらIBM Cloud CLI のバージョンを確認します。
> ibmcloud -v

IBM Cloud CLI  2.0.3 にUpdateできていることが確認できました。

次に、Power Virtual Server 専用のプラグイン(power-iaas/pi )を導入します。IBM Cloud CLI で Power Virtual Server を操作するためには、専用のプラグインが必要になるためです。

・ibmcloud コマンドでプラグインの一覧を表示します
> ibmcloud plugin repo-plugins -r “IBM Cloud”

・「power-iaas/pi」が「未インストール」になっていることを確認し「power-iaas/pi」を導入します。
> ibmcloud plugin install power-iaas

プラグインが導入出来ました。

・導入したプラグインのバージョンを確認します
> ibmcloud plugin list

「状況」欄に「更新が使用可能です」と出力されている場合、プラグインのバージョンが古くなっています。

・プラグインをUpdateします
> ibmcloud plugin update

最新バージョンにUpdateでき、「状況」が空欄になりました。

IBM Cloud CLI の準備は完了です!

3) FlashCopy によるバックアップの事前準備

FlashCopy を実施する前にFlashCopyに必要なパラメーターを用意します(パラメータは IBM Cloud API Docs の「Create a PVM instance snapshot」に記載されています)。
単純に出力できないパラメーターは変数に代入していきます。
FlashCopy に必要なパラメーター(変数)は以下となります。

内容 パラメーター/ 変数
①IBM Cloud へログイン  –
②認証情報 A.  $TOKEN : IBM Cloud IAM アクセストークン
B.  $CRN:Cloud Resource Name
③Pathのパラメータ C.  $CLOUD_INSTANCE_ID :Cloud Instance ID
D.  $PVM_INSTANCE_ID:PVM Instance ID
④Bodyのパラメータ name
description
E.  $VOL_ID:Volume ID

それでは、上記の①~④の順番で、パラメータ(変数)を取得していきます。

① IBM Cloud へログイン

IBM Cloud へログインします(対話式コマンドでログインを行います)。
>  ibmcloud login 
 →「Email」にIBM Cloud ログインIDを入力
 →「Password」にIBM Cloud ログイン時のパスワードを入力
 →「アカウント選択」で利用するアカウントが複数ある場合はアカウントNo.を選択

IBM Cloud にログインができました。

② 認証情報 の取得

②では、Power Virtual Server の認証情報を取得します。
Power Virtual Server で IBM Cloud API を利用するためには、すべてのリクエストに 「IBM Cloud IAM アクセストークン」 と 「CRN※」が必要で、これは認証情報と呼ばれます。
※ CRN:Cloud Resource Name の略。Power Virtual Server のインスタンスID と テナントIDが含まれたもの。

A. IBM Cloud IAM アクセストークンの取得

・IBM Cloud CLI を利用しアクセストークンを出力します。
> ibmcloud iam oauth-tokens

・必要なストリングをjsonを利用して抽出し、結果を「$TOKEN 」変数に入れます。
> $TOKEN = (ibmcloud iam oauth-tokens –output JSON | ConvertFrom-Json ).iam_token

IBM Cloud IAM アクセストークンのパラメータ変数「$TOKEN」 が取得できました。

B. CRNの取得

・IBM Cloud CLI を利用しCRNを出力します。
> ibmcloud pi service-list

・出力したCRN ID のストリングを抜き出し「$CRN」変数に代入します。
> $CRN = ( ibmcloud pi service-list –json | ConvertFrom-Json).crn

「$CRN」が取得できました。

③ Pathのパラメータ取得

③では、FlashCopy の実行文の Path 部分に設定するパラメータを取得します。

C.  Cloud Instance ID の取得

Cloud Instance ID を取得するためには「テナント ID」が必要です。「テナント ID」は「IBM Cloud のアカウントID」のことで、以下の通り、IBMCloud のWEB画面でも確認できます(https://cloud.ibm.com/account/settings)。

上記で確認できるIDをIBM Cloud CLI とAPI で取得します。

・IBM Cloud CLI を利用し「$TENANT_ID」変数に IBM Cloud アカウントID(テナントID)を代入します。
> $TENANT_ID = (ibmcloud account show –output JSON | ConvertFrom-Json ).account_id

・IBM Cloud API を利用し、テナント状況「$TENANT_STATE」変数を作成します。
$TENANT_STATE = ( `
>> curl.exe -X GET `
>>    https://tok.power-iaas.cloud.ibm.com//pcloud/v1/tenants/$TENANT_ID `
>>   -H “Authorization: $TOKEN” `
>>   -H “CRN: $CRN” `
>>   -H “Content-Type: application/json”  `
>> | ConvertFrom-Json )

・「$TENANT_STATE 」の「cloudInstances」キーに「cloudInstanceID」が含まれているため(上記のピンク色で囲んだ値)、この値を「$CLOUD_INSTANCE_ID」変数に代入します。
> $TENANT_STATE.cloudInstances
> $CLOUD_INSTANCE_ID = ( $TENANT_STATE.cloudInstances).cloudInstanceID

$CLOUD_INSTANCE_ID」 が取得できました。

 

D.  PVM Instance ID の取得

PVM Instance ID は、Power Virtual Server のインスタンスID のことです。下記の通り、IBM Cloud のWEB画面からも確認できます。

・IBM Cloud CLI を利用してインスタンス情報を取得し結果を「$INSTANCE」変数に代入します。
> $INSTANCE = ( ibmcloud pi instances –json | ConvertFrom-Json )

・「$INSTANCE」変数の「Payload.pvmInstances」キーの配下「pvmInstanceID」キーの値を「$PVM_INSTANCE_ID」変数に代入します。
>$PVM_INSTANCE_ID = ( $INSTANCE.Payload.pvmInstances.pvmInstanceID)

$PVM_INSTANCE_ID」 が取得できました。

④ Body のパラメータ取得

④では、FlashCopy 実行文の Body 部分に設定するパラメータを取得します。
「name」と「description」は任意の値で構いません。
name   :   test
description   :   snapshot-test
と設定することにしました。

E.  Volume ID の取得

ややこしいのですが、Volume ID は Volume Name を指しています。実際に、Volume ID というパラメーターもあるので間違えないように注意が必要です。Volume ID は、以下の通りWEB画面でも確認できます。

・IBM Cloud CLIを利用してインスタンス名をリストし、インスタンスに紐づくボリュームを調べます。
> ibmcloud pi instances
> ibmcloud pi instance-list-volumes AIX72-test

・上記のピンク色で囲んだ値を「$VOL_ID」変数に代入します。
> $VOL_ID =(ibmcloud pi instance-list-volumes AIX72-test –json |ConvertFrom-Json ).Payload.volumes.name

$VOL_ID」 が取得できました。

4) FlashCopy の実施

すべてのパラメータが取得できたので、いよいよ(やっと) FlashCopy を実行します。

・念のため、3)で取得したパラメータ(変数)がきちんと出力されるか確認します。

FlashCopy の実行文は IBM Cloud API Doc に記載がある以下の文です。この実行文を例に、上記の取得したパラメーター(変数)を当てはめて FlashCopy を実行します。

curl -X POST
  https://us-east.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/
${CLOUD_INSTANCE_ID}/ pvm-instances/{pvm_instance_id}/snapshots

     -H ‘Authorization: Bearer <>’
     -H ‘CRN: crn:v1…’
     -H ‘Content-Type: application/json’
     -d ‘{
           “name”: “VM1-SS”,
          “description”: “Snapshot for VM1”,
          “volumeIDs”:[“VM1-7397dc00-0000035b-boot-0”]
           }’

上記の実行文の通り、色々と試してみましたが、Body の部分( -d 以降) が PowerShell ではうまく実行できません。
そのため、Qiitaのブログを参考にさせていただき、Body は変数に当てはめて FlashCopy を実行しました(他の部分もかなり参考にさせていただいているブログです!)。

・FlashCopy 実行文のBody の部分のみ変数に当てはめます。
> $BODY = ‘{“name”: “test”, “description”: “snapshot-test”,”volumeIDs”: [“‘ + $VOL_ID + ‘”] }’

・IBM Cloud API を利用して、FlashCopy を実行します。
> ( $BODY | curl.exe -X POST `
>> https://tok.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/
$CLOUD_INSTANCE_ID/pvm-instances/$PVM_INSTANCE_ID/snapshots `

>> -H “Authorization: $TOKEN” `
>> -H “CRN: $CRN” `
>> -H “Content-Type: application/json” `
>> -d `@- )

FlashCopy が完了しました!

・FlashCopy が正常に完了していることを IBM Cloud API を利用して確認します。(参考「Get all snapshots for this PVM instance」)
> curl.exe -X GET `
>> https://tok.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/
$CLOUD_INSTANCE_ID/pvm-instances/$PVM_INSTANCE_ID/snapshots `

>> -H “Authorization: $TOKEN” `
>> -H “CRN: $CRN” `
>> -H “Content-Type: application/json”

上記のピンク色で囲んだ値が FlashCopy の結果を示しています。
「percentComplete」が「100」、「status」が「available」であれば、FlashCopy が成功しています。

FlashCopy が成功していることを確認できました!

この後、AIX環境に変更を加えて、取得したFlashCopy のデータのリストアを行い、変更前の状態に戻っているところまで確認しましたが、長くなりましたのでブログはここで終了します。
リストアは「Restore a PVM Instance snapshot」を参考にし、今回のバックアップ手順で取得したパラメータを利用すると簡単に実行できました。

次のブログでは、IBM Cloud IA環境との接続手順をご紹介します。↓

☆準備中です☆【やってみた】IBM Power Virtual Server AIX環境と IBM Cloud IA環境を接続してみた

 

最後に

今回の検証は、IBM Cloud API Docs や Qiita に投稿されているブログ を参考にさせていただきました。

Part.1 のImage Capture を利用したバックアップ方法と比べると、今回は慣れないAPIを利用したこともあり調査にとても時間が掛かりました。また、バックアップ処理自体はあっという間でも事前準備にも時間を取られました。

そのため、スピードを求められる開発環境や検証環境には、Image Capture の利用がおすすめです。
実際の運用に組み込むとしたら、FlashCopyでしょうか。

OS、ストレージ、データベース、アプリケーション。バックアップ対象も方法も様々で、バックアップ方法のドキュメントを読んでもイメージが湧かないことがよくありますが、実際に検証をしてみることで、イメージが湧き、メリットやデメリットを捉えることができるので、お客さまにも伝えやすくなります。

今後も時間を見つけ、こつこつ検証をしていきたいと思います。

 

お問い合わせ

この記事に関するご質問は下記までご連絡ください。

エヌアイシー・パートナーズ株式会社
技術支援本部

E-Mail:nicp_support@NIandC.co.jp

 

その他の記事

2025年12月25日

“AI を学習用ではなく事業の現場に馴染ませる”
本格的なAI時代に誕生したIBM Power11の覚悟とは?

公開日:2025-12-25 本格的なAI時代の到来で、企業にとってIT基盤の存在感はこれまで以上に重みを増しています。IBM Power11は、そうした時代の要請に応えるべく誕生した真のエンタープライズ・サーバーです。堅牢な信頼性と高い処理性能に加え、外付けカードIBM Spyre Acceleratorによって、地に足がついたAIワークロードをすぐに実装できる実用性を備えるに至っています。既に先行ユーザーは、大きな業務効率化の効果を体感しており、このサーバーは単なるハードウェアを超えて、次世代の標準基盤となる期待を集めています。 今回は、日本アイ・ビー・エム(以下、IBM)テクノロジー事業本部 Powerテクニカル・セールス部長 釘井 睦和 氏をお迎えし、AI時代をリードするべくして誕生したIBM Power11の“覚悟”について伺いました。 出席者 ゲスト 日本アイ・ビー・エム株式会社テクノロジー事業本部Powerテクニカル・セールス部長釘井 睦和 氏 インタビュアー エヌアイシー・パートナーズ株式会社技術企画本部テクニカル・サポート部部長 広橋 稔 本格的なAI時代の到来で、さらに重みの増すIT基盤 広橋: 経営とITが不可分となった今日、企業のお客様が直面している課題としてどのようなものがあると考えておられますか。 釘井氏: 本格的にAIの時代が到来したことが非常に大きいと思います。企業競争力の維持を図る上で、もはや、AI活用を抜きに戦略を立てられないというところまで来ています。実践段階に入ってきたこともあり、アナリスト機関IDCによれば、これからはAIエージェントが自らアプリケーションを書くようになると予測されています。その結果、アプリケーションの数は爆発的に増加し、今後10億もの新しいアプリケーションが出現すると予測され、そのうち3分の1はAIによって開発される見込みです。こうなってくると、アプリケーションを支えるインフラは、これまでにないスピードと規模でアプリケーション増加への対応と高い可用性を求められます。計画停止すら許されないミッションクリティカルな業務が増えていくことでしょう。そのような世界では、油断をするとシステムのサイロ化やデータ爆発も起きやすくなるため、その対策も必要です。 その一方で、ランサムウェア攻撃を筆頭に、セキュリティリスクも劇的に高まっており、対策強化も喫緊の課題です。だからといって、ITばかりに予算を使うわけにはいきませんから、そこはコスト最適化を図る目線も要求されます。さらに、少子高齢化社会の進行で、IT人材も確保しづらい状況が続いているため、より少ない人員でより多くのことをカバーできるかといった観点での運用効率化も恒常的なテーマとなっています。つまり、今日の企業が対峙している課題は文字どおり山積しているといえます。 広橋: 確かに、日ごろパートナー企業やエンドユーザー企業のお悩みを聞く中で、こうしたお話はよく伺います。特にAI活用については、意欲を持ちつつも、プレッシャーも感じておられるようです。 AI時代のニーズに応える真のエンタープライズ・サーバー 釘井氏: こうした中、今年登場したIBM Power11は、本格的なAI時代のニーズに応える、真のエンタープライズ・サーバーとして位置づけられています。このサーバーは、単なるハードウェアを超えたまさに“企業の中枢を支える基盤”として設計されており、Powerとして従来から定評のある堅牢性と可用性をさらに進化させつつ、計画停止をほぼ不要とする自律的な運用機能や強靭なセキュリティを標準装備しました。また、最新のDDR5メモリと強化されたI/Oアーキテクチャにより、高負荷のトランザクション処理や大規模データ解析なども余裕を持ってこなすとともに、AI推論も得意とします。IBM Power11は、企業がAI時代に向けて加速できるようIBMが考え抜いたフルスタックのイノベーションです。 広橋: IBM Power11を特徴づけるキーワードをいくつか挙げていただけますか。 釘井氏: 一つは、「0」(ゼロ)です。これは、エンドツーエンドの自動化を実現し、計画的なダウンタイムを0にする、つまり、無停止運転を可能にすることを意味します。 従来はメンテナンスウィンドウを設けて実施していたファームウェア更新、I/Oアダプタ更新、仮想化ソフトウェア更新などを、IBM Power 11ではAutomated Platform Maintenance(APM、プラットフォーム自動保守)機能として、管理コンソールであるIBM Hardware Management Console(HMC)からワンクリックまたは準自動で実行可能です。環境をチェックする更新前準備、パッチ配布、ワークロードの退避・復帰を一連のフローで自動化できるため、停止せずに更新できるというわけです。 また、運用データを横断的に集約し、watsonxですぐに実行できる提案と自動化を結びつける、アプリケーション運用向けのAIオートメーション基盤 IBM Concertがあります。Concert for Powerでは、Powerインフラの脆弱性を検出して、現行バージョンに照らして優先度をAI算定、その後に推奨手順を提示し、必要に応じて更新をゼロ計画停止で実行するところまで担います。ここでいう実行とは、HMC/PowerVMが担う処理をConcertが呼び出して一気通貫に自動実行することを意味しています。 広橋: サーバー停止は業務に支障を及ぼしかねず、利用部門や経営層からの圧力も大きいため、情報システム部門としてはなるべく回避したい運用ですから、安定して動き続けてくれるならそれに越したことはないですね。 釘井氏: はい。もう1つのキーワードは「

2025年12月24日

【イベントレポート】Automation テクニカルワークショップ第一回 開催しました

公開日:2025-12-24 こんにちは。てくさぽBLOGメンバーの和田です。 2025年11月26日に「Automation テクニカルワークショップ」第一回を開催しました。 本ワークショップは、2025年7月および9月に実施した「watsonx Orchestrate ハンズオンセミナー」に続く取り組みとして、IBM Automation製品群の中で弊社が注力しているAIOpsソリューションを中心に企画検討し、利用イメージがつきやすいInstanaのハンズオンを実施しました。 ハンズオンだけでなくワークショップ形式でのセッションを通じて、ITシステム運用の現場で直面する課題をどのように解決できるのか、Instanaを活用した具体的な方法を参加者同士が議論しました。また、セッションの最後には各チームごとに成果を発表・共有する場を設け、Instanaに対する理解を深めるとともに、参加者間の交流を促進することを目的としました。 本ブログでは、このテクニカルワークショップの内容について簡単にご紹介いたします。 目次 ワークショップアジェンダ Instana概要 Instanaハンズオン グループワーク まとめ お問い合わせ ワークショップアジェンダ ワークショップのアジェンダについては以下の通り実施いたしました。 IBM AIOpsソリューション概要 Instana 座学 Instana ハンズオン Instana最新情報 グループワーク IBM AIOpsソリューション概要では、IBMが取り揃えているAIOpsソリューションのラインナップと利用シーンをご紹介し、その中でもお客様のROIが高いお勧めのソリューションをピックアップしてご紹介しました。 また、Instana最新情報ではIBM様にご登壇いただき、DBMarlinとの連携やAIでの監視支援、LLMのトークン数を収集できる機能など最新アップデート情報をご紹介いただきました。 Instana概要 Instanaについては過去にこちらの記事でご説明しております。 今回はInstanaのAgentを導入することからハンズオンで実施しますので、Instana Agentがどのようにデータを収集するかについてご説明します。 InstanaはAgentのセンサー機能が監視対象を自動検出してデータ収集します。 Agent自体がセンサー機能を持っているわけではなく、Agentインストール後にセンサー機能をインストールし、そのセンサー機能で各コンポーネントを検出しデータを収集しています。 Instana Agentは収集したデータをInstana バックエンド(SaaSもしくは自己ホスト)に送信します。   Instanaハンズオン Instana Agentの導入からInstanaでの情報確認、障害発生時のエラー発生箇所確認をハンズオンで体験頂きました。 実施内容 環境の説明/ログイン Instana Agentのインストール インフラストラクチャー情報確認 アプリケーション設定/アプリケーション情報確認 アラートチャネル作成/アラート設定 障害注入/エラー発生箇所確認   今回のハンズオンではサンプルアプリケーションを導入してあるサーバーを参加人数分ご用意したので、参加者の方々全員がInstana Agentの導入を体験いただけました。 ハンズオンではInstana Agentの導入を行うためCLIでサーバーにログインいただきました。 普段CLIを利用されないかたもいらっしゃったのでログインに苦戦された方もいましたが、AgentのインストールはLinuxの場合ワンライナーで導入できるため、Agent導入はスムーズに行えてました。 実際にAgent導入したサーバの情報やアプリケーションの情報をみていただくことで、Instanaではどういった情報が表示されるのか、どういった操作感なのかを体験していただけました。 また、サンプルアプリケーションにエラーを発生させるスクリプトもご用意しましたので、実際にエラーが起きた場合正常時と比較しどのように見えるか、アラート設定をした場合、どのような通知がくるのかを体験いただきました。 その他のハンズオンについて詳しく知りたい方は、ブログの最後に記載している「お問い合わせ」までお気軽にご連絡ください。 グループワーク 今回、ハンズオンだけでなくITシステム運用の現場における課題を洗い出し、それらの課題を解決する手段としてInstanaがどう使えるかという観点でチームに分かれてグループワークを行いました。 1チーム4,5人の合計3チームに分かれてNI+C Pメンバーがファシリテートしながらアイディア出し・ディスカッションを行いました。 当日上がった課題及びInstanaを活用することで改善できることをいくつかピックアップします。 運用の属人化がおきている 障害原因の特定までをInstanaがガイドしてくれるためどんな人でも対応できる ログの分析に時間がかかる Instanaの画面上でログの確認・分析ができるため時間短縮できる ご参加して頂いたパートナー様が携わっていらっしゃる業務や、業務の経験年数が異なることより多様な意見が出ておりました。 アドバイザーで参加いただいたIBM様も含め、各チーム貴重な意見交換をできるグループワークとなりました。 グループワークの感想について、「他の会社の意見が聞けてよかった」や、「Instanaを利用するシーンがより理解できた」といったような意見をいただきました。 まとめ このたび、Automation製品に関する初めてのワークショップを無事に開催することができ、安堵しております。 ご参加いただいた皆様からのアンケートでは、「はじめてInstanaに触れましたが、実際に障害が発生した際の挙動を見ることができたうえ、他社の方々との交流や意見交換の機会もあり、大変有意義な時間となりました」とのご意見をいただきました。このようなお声をいただけたことで、準備を重ねてきた甲斐があったと感じ、心より嬉しく思っております。 今後も、製品を実際に体験いただけるハンズオンや、参加者同士が交流・情報共有を行えるワークショップを継続的に開催してまいります。ご興味ある方は是非ご参加いただけますと幸いです。 また、「こんなことをやってほしい」「この製品を使ったワークショップをお願いしたい」といったご要望がございましたら、ぜひお気軽にお聞かせください。 お問い合わせ この記事に関するご質問は以下の宛先までご連絡ください。 エヌアイシー・パートナーズ株式会社 技術企画本部 E-mail:nicp_support@NIandC.co.jp   .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

2025年12月24日

【てくさぽBLOG】IBM watsonx OrchestrateでAIエージェント開発してみた(Part1)

こんにちは。てくさぽBLOGメンバーの高村です。 8月は「【てくさぽBLOG】IBM watsonx OrchestrateのADKを使ってみた」でADKの操作感や感想をご紹介しました。今回は、2025年6月のアップデート後のwatsonx OrchestrateのUIからエージェントを開発し、操作感や感想を2回に分けてご紹介いたします。なお、Part2ではエージェントのデモ動画もご紹介する予定ですのでぜひご期待ください! 目次 はじめに サンプルエージェントのシナリオ サンプルエージェント開発 さいごに お問い合わせ はじめに 6月のアップデートで、watsonx Orchestrateはメニュー構成・操作方法・機能名称が変更されました。例えば、従来「Skill」と呼ばれていたものが「Tool」に変更されています。Toolとは、AIエージェントが呼び出して実行するアクションの部品と考えて頂ければと思います。ユーザーがチャットへ自然言語で問い合わせると、AIエージェントは内容に応じて適切なツールを選択して実行します。これにより、生成AIによる要約や抽出などのテキスト処理だけでなく、外部システムやサービスと連携した処理も行うことができます。 その他の変更点については、「【イベントレポート】watsonx Orchestrate テクニカルワークショップ第一回 開催しました」内でもご紹介していますのをご参照ください。 サンプルエージェントのシナリオ サンプルエージェントのシナリオは、企画担当者が在庫商品を参照し、在庫情報に基づいて顧客へキャンペーンメールを送信する作業を想定しています。 通常は、担当者が在庫情報を確認するためにデータベースへログインし、目視でキャンペーン対象商品を選定したうえでメールの文面を作成することが想定されます。キャンペーンメール送信対象はSFAなどのシステムで確認し、メールツールを利用して送信します。振り返ると、データベース・SFA・メールツールと複数のシステムを利用し、対象商品の選定やメール内容を人力で考える必要があるため、作業は煩雑で時間と労力を要します。 watsonx Orchestrateを導入すると、AIエージェントが在庫情報と顧客情報の取得し、在庫の多い商品のキャンペーンメール文面をAIが作成し、メールの作成・送信までを一気通貫で実行することが可能です。 サンプルエージェントの開発 それではサンプルエージェントを開発します。開発ではIBM Cloud 上の watsonx Orchestrate、メールツール(Brevoに弊社アカウントを紐づけて利用)、SFA の Salesforce(弊社 Sandbox 環境)を利用します。 本記事Part1では図のピンクで囲った部分「Salesforceから顧客情報を取得」と「在庫情報の取得」をご紹介いたします。 watsonx Orchestrateへログイン・環境のご紹介 watsonx Orchestrateへのログイン方法は「【てくさぽBLOG】IBM watsonx Orchestrateを使ってみた(Part1)」をご参照ください。ログインすると下記のチャット画面に入ります。作成したAIエージェントをデプロイすると、このチャット画面から問い合わせをすることができます。 左上のメニューバーをクリックします。一番上の「Chat」をクリックすると前述のチャットインターフェース画面に遷移します。「Discover」をクリックするとwatsonx Orchestrateに事前定義されたエージェントやツールのカタログをみることができます。 「Discover」内の事前定義エージェント、ツールを簡単にご紹介します。TypeをAgentsに絞ります。事前定義エージェントとは、特定のシステムとの接続が定義されたエージェントが提供されており、環境接続設定を行うとすぐ利用することが可能です。(watsonx Orchestrateのプランによっては追加費用がかかるエージェントがございます。) TypeをToolsに絞ると特定システムで利用できるツールが提供されています。下記画面はSalesforceで利用できる事前定義ツールの一覧です。今回はSalesforceから顧客情報を取得するため「List accounts in Salesforce」と「List contacts in Salesforce」のツールを使用します。ツールの機能は下記になります。 List accounts in Salesforce:ユーザーの入力に基づき、Salesforceからアカウント情報を表示 List contacts in Salesforce:ユーザーの入力に基づき、Salesforce からアカウントの連絡先を表示 Salesforceとの接続設定 Salesforceの事前定義ツールを用いてエージェントが顧客情報を取得できるようにするため、はじめにSalesforceとの接続設定を行います。 1. Salesforce側設定(コンシュマー鍵と秘密鍵の生成) Salesforceへログインし、設定>外部クライアントアプリケーション>外部クライアントアプリケーションマネージャーをクリックします。コールバックURLは「https://ご使用リージョン/mfe_connectors/api/v1/agentic/oauth/_callback」と設定します。OAuth範囲は下記画面の通りを設定します。 コンシュマー鍵と秘密鍵をクリックし、生成されたコンシュマー鍵と秘密鍵をメモをしておきます。Salesforceの設定は以上です。 2. watsonx Orchestrate側設定(接続設定と接続確認) watsonx OrchestrateのメニューからManage>Connectionsをクリックします。 接続設定の一覧が表示されるのでSalesforceを探し、鉛筆マークをクリックします。 下記画面が表示されます。Draft環境、Live環境と環境を分けて設定することができます。今回はDraftで設定します。各項目には以下を値を入力します。 Server URL:Salesforce環境のURL TokenURL:Salesforce環境のURL/services/oauth2/token Authorization URL:Salesforce環境のURL/services/oauth2/authorize ClientID:Salesforceで取得したコンシュマー鍵 Client Secret:Salesforceで取得した秘密鍵 下にスクロールし、Credential typeを選択します。Member credentialsにするとユーザーは個人の認証情報を使用してアプリケーションにアクセスできます。ここではTeam credentialsにし、チームメンバーが資格情報を使用してアプリケーションにアクセスできるようにします。最後にConnectをクリックします。 Webブラウザが開き、Salesforceのログイン画面が表示されます。ユーザ名、パスワードを入力してログインします。 watsonx Orchestrateの画面に戻り、Connectedとなっていることを確認しSaveします。 下記の様にConnectされている状態で緑のチェックがついていることを確認します。 Salesforceとwatsonx Orchestrateの接続設定は完了です。 Salesforceの事前定義ツール構成 それではエージェントを作成し、Salesforceから顧客情報を呼び出すツールをエージェントに構成していきます。 メニューのBuildをクリックします。 Create agent +をクリックしてエージェント作成画面に入ります。 Nameには任意のエージェント名、Decriptionはエージェントの説明を入力します。最後にCreateをクリックします。 下記画面が表示されます。エージェントが使用するモデルを選択します。2025年12月時点はllama-3-2-90b-vision-instruct(Default)、llama-3-405b-instruct、GPT-OSS 120B-OpenAI(via Groq)が利用できます。Agent Development Kitからは外部のLLMを紐づけることも可能です。弊社環境はgpt-oss-120bを紐づけています。今回はGPT-OSS 120B-OpenAI(via Groq)を指定します。 下にスクロールします。Welcomeメッセージとクイックスタートプロンプトを設定することができます。今回はデフォルトのままにします。 Agent Styleを設定することができます。Agent styleとはユーザの要求に対してどのように理解、決定、タスクを完了するか定義するものです。現在は DefaultとReActの2種類から選択することができます。今回はDefaultを指定します。 なお、Voice modalityではユーザとのコミュニケーションに音声を利用することができますが、今回は利用しません。 KnowledgeはエージェントでRAGを実装することができます。後程設定します。 エージェントが使用するツールを設定します。Toolset欄のAdd tool+をクリックします。 以下画面が表示されるのでCatalogをクリックします。 Appsの中からSalesforceにチェックを入れます。右側にエージェントが使用できるSalesforceのツール一覧が表示されます。 List accounts in Salesforceを選択しAdd to agentをクリックします。同様にList contacts in Salesforceも追加します。 Toolsetの画面に戻ると以下の様にツールが登録されています。 Behaviorのセクションまで下にスクロールします。Behaviorではエージェントがユーザの要求に対してどのように反応し、応答するか振る舞いを定義します。以下のように振る舞いを定義します。 ここまで設定したところでエージェントの動きを確認します。検証ではデプロイはせず右画面のPreviewから確認したいと思います。 チャットに「アカウントリストを教えて」と入力します。しばらくするとエージェントが登録したList accounts in Salesforceを使用してSalesforceからアカウント情報を取得、回答してくれました。(企業名は検証用に疑似的に作成しています) 次に担当者の連絡先を知りたいので、チャットへ「D&Gソリューションのコンタクトリストを表示して」と問い合わせます。しばらくすると、エージェントが指定した企業名をキーに「List contacts in Salesforce」を実行し、担当者名と連絡先を回答してくれました。このように、ツール自体はSalesforceからアカウント情報やコンタクトリストを取得する機能ですが、チャットで指定した企業名をキーとして、エージェントが絞り込んで回答することができます。 Salesforceの事前定義ツールの構成は完了です。 Knowledgeの構成 エージェントが在庫データから情報検索できるようにKnowledgeを構成します。2025年12月時点、構成できるデータソースはwatsonx.dataのMilvus、Elasticserch、AstraDB、カスタムサービス、watsonx Orchestrateへ直接アップロードの6つです。ここではサンプルのCSVファイルを用意し、直接watsonx Orchestrateへアップロードします。 Knowledgeセクションまでスクロールし、Add source +をクリックします。 New knowledgeをクリックします。 Select sourceからUpload filesを選択してNextをクリックします。 CSVファイルをドラッグアンドドロップしてNextをクリックします。 NameにはKnowledgeの任意の名前を、Descriptionにはユーザーからどのような要求でKnowledgeを使用するかを入力します。最後にSaveをクリックします。 下記画面の通り、Knowledgeが作成されました。 PreviewからエージェントがKnowledgeを使用して回答できるか確認します。チャットから「在庫情報を表形式で回答して」と問い合わせると下記画面のようにKnowledgeのCSVファイルデータを参照して表形式で回答されました。 矢印をプルダウンすると参照先を確認することができます。 行数が多いため、「在庫の多い上位5件を表形式で回答して」と問い合わせます。しばらくすると数量の多い上位5件の商品を表形式で回答してくれました。在庫一覧の提示だけでなく、ユーザーの要求から、情報を絞り込んだ回答も可能であることが確認できました。 Knowledgeの構成は完了です。 さいごに Part1ではAIエージェントを作成し、Salesforce環境へ接続して事前定義ツールを用いて顧客情報を取得。さらに、在庫データをKnowledgeに構成してRAGを実装しました。 今回はSalesforceの事前定義ツールとして「List accounts in Salesforce」と「List contacts in Salesforce」を構成しました。各ツールはアカウントやコンタクト情報をリストする機能ですが、List accountsの結果をAIが受け取り、ユーザーが特定の企業を指定すると、その企業のコンタクト情報を回答できることが確認できました。また、Knowledgeでは在庫データを表形式で提示するだけでなく、在庫の多い上位5件の抽出などの絞り込みも可能で、エージェント的な振る舞いを確認できました。 Part 2では、在庫の多い商品を基にAIがキャンペーンメールを作成し、コンタクト宛に送信する機能をエージェントへ実装したいと思います! お問い合わせ この記事に関するご質問は以下の宛先までご連絡ください。 エヌアイシー・パートナーズ株式会社 技術企画本部 E-mail:nicp_support@NIandC.co.jp     .bigger { font-size: larger; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .table { border-collapse: collapse; border-spacing: 0; width: 100%; } .td { padding: 10px; vertical-align: top; line-height: 1.5; } .tbody tr td:first-child { font-weight: bold; width: 20%; } .tbody tr td:last-child { width: 80%; } .ul { margin: 0 !important; padding: 0 0 0 20px !important; } .ol { margin: 0 !important; padding: 0 0 0 20px !important; } .tr { height: auto; } .table { margin: 0; } *, *:before, *:after { -webkit-box-sizing: inherit; box-sizing: inherit; } .html { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 62.5%; } .btn, a.btn, button.btn { font-size: 1.6rem; font-weight: 700; line-height: 1.5; position: relative; display: inline-block; padding: 1rem 4rem; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all 0.3s; transition: all 0.3s; text-align: center; vertical-align: middle; text-decoration: none; letter-spacing: 0.1em; color: #212529; border-radius: 0.5rem; } a.btn--orange { color: #fff; background-color: #eb6100; border-bottom: 5px solid #b84c00; } a.btn--orange:hover { margin-top: 3px; color: #fff; background: #f56500; border-bottom: 2px solid #b84c00; } a.btn--shadow { -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, .3); box-shadow: 0 3px 5px rgba(0, 0, 0, .3); }

back to top