4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SAP GUIをユーザー視点で監視する方法

4
Last updated at Posted at 2026-04-02

SAPのパフォーマンスはどのように監視されていますか?
何らかの監視ツールでインフラやアプリケーションをモニタリングされているケースが多いかと思いますが、実ユーザーも問題なくSAPを利用できていると言い切れますか?
この記事ではSAPの安定運用のための取り組みの1つとして、SAP GUIをユーザー視点で監視してみます。

SAP GUI

はじめに

システム監視は主に内部監視と外形監視の手法があります。内部監視はネットワークの内側からシステムのリソースや死活を監視します。外形監視はネットワークの外側からシステムの応答時間やアクセスできるかなどをユーザー視点で監視します。外形監視はWebブラウザの操作を記録して一定間隔で再生することによる「シナリオ監視」がよく使われます。

SAP FioriはWebブラウザでアクセスするので比較的容易に外形監視を実現できますが、SAP GUIはデスクトップアプリケーションになるので一般的な監視ツールの外形監視では対応できません。

そこで、SAP GUIの記録と再生を行えるPanayaのテストオートメーションと、New Relic Flexを組み合わせて、実ユーザーが本当に問題なくSAPを利用できているか監視してみます。

Panayaとは

Panayaは、特にSAP環境におけるシステム変更やアップグレード時の影響分析とテスト最適化に強みを持つソリューションを提供しています。影響分析に基づき「本当に必要なテスト」を明確化することで、効率的かつ高品質なテストを実現します。さらに、テストオートメーションにも対応しており、テストの実行やエビデンス取得の効率化・標準化を支援します。SAPに加えて、クラウドアプリケーションやWebシステムにも対応しており、企業の複雑なIT環境全体における品質向上とリリースの迅速化を実現します。

テストオートメーションはSAP GUIやWebブラウザの操作をノーコードでスクリプトとして記録し実行することにより画面遷移が正しく行えるか、想定するコンテンツやテキストが表示されるかなどのチェックを行うことにより、簡単にテストの自動化を実現できます。
記録されたスクリプトはPanaya上で管理されますが、テスト実行はAPIから実行することもできます。

New Relic Flex とは

New RelicはAPM AgentやInfrastructure Agentからテレメトリーデータを送信するほかに、New Relic Flexでホスト上のコマンドやファイル、HTTP APIを介して任意のデータをNew Relicに送信することができます。

監視してみよう

それではSAP GUIをユーザー視点で監視してみましょう。
New Relic FlexからPanayaのスクリプトをAPIで実行することにより監視します。

Panayaでスクリプトの準備

Panayaのスクリプトビルダーを使ってSAP GUIでシナリオ監視したいトランザクションを記録します。
image.png

この記事では監視にフォーカスしているのでスクリプト記録の詳細は触れていません。

PanayaのTest Automation API

スクリプトの再生と結果の確認は Test Automation API を使用します。

  • runTests
    スクリプトを再生します。
    スクリプトの再生が開始されるとイベントIDが返ります。このイベントIDで再生状況を確認します。

  • getEvent
    スクリプト再生状況を取得します。
    executionStateが "Completed" になると完了です。再生結果はrunResultから確認できます。

    レスポンスの例
    {
        "eventId": 42,
        "title": null,
        "startTime": 1775032552000,
        "endTime": 1775032583000,
        "totalRuns": 1,
        "totalTests": 1,
        "failedCount": 0,
        "passedCount": 1,
        "notRunCount": 0,
        "skippedCount": 0,
        "runningCount": 0,
        "summary": 0,
        "runResult": "Passed",
        "triggerType": "API - Tests",
        "executionState": "Completed",
        "creationTime": 1775032542000,
        "createdBy": "Yoshiki Nakajima",
        "description": "Test | 購買発注登録 | APIから実行しました",
        "webhook": null,
        "queueItems": [
            {
                "id": 101509,
                "playerStartTime": 1775032552000,
                "playerEndTime": 1775032583000,
                "duration": "00:00:31",
                "testName": "購買発注登録",
                "testId": 1016,
                "testNodeId": 50558941,
                "plannedRunName": "Run script",
                "plannedRunOrderIndex": 1,
                "status": 2,
                "statusName": "Passed",
                "agent": "newr",
                "browserType": null,
                "browserTypeName": null,
                "executionId": 15035620,
                "evidenceExists": true,
                "historicalResults": null,
                "dataSetName": null,
                "dataSetValues": null,
                "statusDetails": null,
                "cycleRestricted": false,
                "testDeleted": false,
                "stepDeleted": false
            }
        ]
    }
    

APIを実行するにはAPI TokenやプロジェクトIDなどが必要になりますのでドキュメントを参考にあらかじめ確認しておいてください。

シェルスクリプトの作成

New Relic Flexは直接APIを呼び出すこともできますが、今回は2つのAPIを実行するシェルスクリプトを利用してみます。サンプルのシェルスクリプトを用意したので、こちらをベースにみなさんの環境に合わせてカスタマイズしてください。作成したスクリプトはNew Relic Flexの定義ファイルと同じディレクトリ /etc/newrelic-infra/integrations.d に配置してください。

あくまでもサンプルとして自己責任でご利用ください。エラー処理は一切していませんし、効率の良くない書き方があるかもしれません。

シェルスクリプト
panaya.sh
#!/bin/bash

set -euo pipefail

# ===== 設定 =====
BASE_URL=https://my.panaya.com/api/v1/projects/=xxxx/pa"	#xxxxにプロジェクトIDを設定してください
API_TOKEN==xxxx	#APIトークン
TEST_ID==xxxx	#テストID
MAX_RETRY=10	#getEvent APIがCompleted"になるまでの再試行回数
INTERVAL=60	    #待機時間

# ===== 1. runTests API実行 =====
payload=$(cat <<EOF
{
  "testIds": [${TEST_ID}],
  "description": "APIから実行"
}
EOF
)

eventId=$(curl -s -H "X-Auth-Token: ${API_TOKEN}" -H "Content-Type: application/json" -X POST "${BASE_URL}/runTests" -d "${payload}")

# ===== 2. getEvent APIをポーリング =====
for (( count=1; count<=MAX_RETRY; count++ )); do
  response=$(curl -s -H "X-Auth-Token: ${API_TOKEN}" -X GET "${BASE_URL}/getEvent/${eventId}")

  state=$(echo "${response}" | jq -r '.executionState')

  if [[ "${state}" == "Completed" ]]; then
    echo "${response}"
    exit 0
  fi

  # 最後の試行以外でスリープ
  if (( count < MAX_RETRY )); then
    sleep "${INTERVAL}"
  fi
done

# ===== 3. タイムアウト =====
echo "ERROR: executionState が Completed になりませんでした(試行回数: ${MAX_RETRY})" >&2
exit 1

New Relic Flexの設定

こちらもサンプルの定義ファイルを用意しましたので、必要に応じてカスタマイズしてください。定義ファイルは /etc/newrelic-infra/integrations.d に配置してください。

定義ファイル
panaya.yml
integrations:
  - name: nri-flex
    interval: 24h
    config:
      name: Panaya
      apis:
        - event_type: Panaya_SAPGUI
          commands:
            - run: /etc/newrelic-infra/integrations.d/panaya.sh
              timeout: 600000
          rename_keys:
            startTime: timestamp

データを確認してみよう

New Relic Flexが実行されるとSAP GUIの監視結果がインジェストされます。
Data Explorerを利用するとデータを簡単に確認できます。

image.png

もし結果が失敗していた場合、Panayaの画面から詳細を確認することができます。
image.png

まとめ

SAPの安定運用には、内部監視だけでなくユーザー視点での外形監視が重要です。

  • 正常にアクセスできるか
  • 処理時間が遅延していないか

PanayaとNew Relicを組み合わせることで、これまで難しかったSAP GUIの外形監視が簡単に行えるようになります。

image.png

image.png

4
3
0

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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?