SAP HANA

SAP HANA の統合により、SAP HANA の指標とログが収集されます。指標は、関連するモニタリング ビューに対してクエリを実行することで収集されます。この統合により、構造化トレースログが書き込まれます。

HANA の詳細については、SAP HANA のドキュメントをご覧ください。

前提条件

HANA テレメトリーを収集するには、バージョン 2.18.1 以降の Ops エージェントをインストールする必要があります。

この統合は HANA バージョン 2.0 をサポートしています。

HANA インスタンスを構成する

指標を収集するには、モニタリング ユーザーに、関連するモニタリング ビューへの SELECT アクセス権が必要です。次の SQL スクリプトは、モニタリング ロールを作成し、SAP HANA インスタンスに接続された十分な権限のあるユーザーが実行した場合、そのロールをモニタリング ユーザーに適用します。

--Create the user
CREATE RESTRICTED USER otel_monitoring_user PASSWORD ;
--Enable user login
ALTER USER otel_monitoring_user ENABLE CLIENT CONNECT;
--Create the monitoring role
CREATE ROLE OTEL_MONITORING;
--Grant permissions to the relevant views
GRANT CATALOG READ TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_BACKUP_CATALOG TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_BLOCKED_TRANSACTIONS TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_CONNECTIONS TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_CS_ALL_COLUMNS TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_CS_TABLES TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_DATABASE TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_DISKS TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_HOST_RESOURCE_UTILIZATION TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_LICENSES TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_RS_TABLES TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_SERVICE_COMPONENT_MEMORY TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_SERVICE_MEMORY TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_SERVICE_REPLICATION TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_SERVICE_STATISTICS TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_SERVICE_THREADS TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_SERVICES TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_VOLUME_IO_TOTAL_STATISTICS TO OTEL_MONITORING;
GRANT SELECT ON SYS.M_WORKLOAD TO OTEL_MONITORING;
GRANT SELECT ON _SYS_STATISTICS.STATISTICS_CURRENT_ALERTS TO OTEL_MONITORING;
GRANT SELECT ON DUMMY TO OTEL_MONITORING;
--Add the OTEL_MONITOR role to the monitoring user
GRANT OTEL_MONITORING TO otel_monitoring_user;

HANA 用に Ops エージェントを構成する

Ops エージェントの構成のガイドに従って、HANA インスタンスからテレメトリーを収集するために必要な要素を追加し、エージェントを再起動します。

構成の例

次のコマンドは、HANA のテレメトリーを収集して取り込み、Ops エージェントを再起動するための構成を作成します。

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    saphana:
      type: saphana
      include_paths:
      - /usr/sap/*/HDB*/*/trace/*.trc
      exclude_paths:
      - /usr/sap/*/HDB*/*/trace/nameserver_history*.trc
      - /usr/sap/*/HDB*/*/trace/nameserver*loads*.trc
      - /usr/sap/*/HDB*/*/trace/nameserver*executed_statements*.trc
  service:
    pipelines:
      saphana:
        receivers:
          - saphana
metrics:
  receivers:
    saphana:
      type: saphana
      username: SYSTEM
      password: G00g3l21
      endpoint: localhost:30015
  service:
    pipelines:
      saphana:
        receivers:
          - saphana
EOF

sudo service google-cloud-ops-agent restart

ログの収集を構成する

HANA からログを取り込むには、HANA が生成するログのレシーバを作成してから、新しいレシーバ用のパイプラインを作成する必要があります。

saphana ログのレシーバを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
exclude_paths [/usr/sap/*/HDB*/${HOSTNAME}/trace/nameserver_history*.trc, /usr/sap/*/HDB*/${HOSTNAME}/trace/nameserver*loads*.trc, /usr/sap/*/HDB*/${HOSTNAME}/trace/nameserver*executed_statements*.trc] include_paths の照合で除外するファイルシステム パスのパターンのリスト。
include_paths [/usr/sap/*/HDB*/${HOSTNAME}/trace/*.trc] 各ファイルのテーリングで読み込むファイルシステムのパスのリスト。パスにはワイルドカード(*)を使用できます。
record_log_file_path false true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。
type 値には saphana. を指定してください。
wildcard_refresh_interval 60s include_paths のワイルドカード ファイルのパスの更新間隔。時間を指定します(例: 30s2m)。このプロパティは、ログファイルのローテーションがデフォルトの間隔よりも速く、ロギングのスループットが高い場合に有用です。

ログの内容

logName は、構成で指定されたレシーバ ID から取得されます。LogEntry 内の詳細なフィールドは、次のとおりです。

saphana ログの LogEntry には次のフィールドが含まれます。

フィールド タイプ 説明
jsonPayload.component 文字列 SAP HANA コンポーネント
jsonPayload.connection_id 数値 メッセージを送信した接続の ID(メッセージが接続のスコープ内でログに記録された場合)
jsonPayload.message 文字列 ログメッセージ
jsonPayload.severity_flag 文字列 ログエントリ レベル
jsonPayload.thread_id 数値 メッセージをログに記録しているスレッドの ID
jsonPayload.transaction_id 数値 メッセージを送信したトランザクションの ID(メッセージがトランザクションのスコープ内でログに記録された場合)
jsonPayload.update_transaction_id 数値 メッセージを送信した更新トランザクションの ID(メッセージが更新トランザクションのスコープ内でログに記録された場合)
severity 文字列(LogSeverity ログエントリ レベル(変換済み)。
sourceLocation.file 文字列 ソースファイル名
sourceLocation.line 数値 ソースファイル内の行

指標の収集を構成する

HANA から指標を取り込むには、HANA が生成する指標のレシーバーを作成してから、新しいレシーバー用のパイプラインを作成する必要があります。

このレシーバーでは、複数のエンドポイントのモニタリングなど、構成で複数のインスタンスを使用することはできません。このようなインスタンスはすべて同じ時系列に書き込まれるため、Cloud Monitoring ではインスタンスを区別できません。

saphana 指標のレシーバーを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
ca_file CA 証明書のパス。クライアントとして、これによりサーバー証明書が検証されます。空の場合、レシーバはシステムルート CA を使用します。
cert_file mTLS で必要な接続に使用する TLS 証明書のパス。
collection_interval 60s time.Duration 値(例: 30s5m)。
endpoint localhost:30015 saphana インスタンスへの接続に使用する hostname:port
insecure true セキュア TLS 接続を使用するかどうかを設定します。false に設定すると、TLS が有効になります。
insecure_skip_verify false 証明書の検証をスキップするかどうかを指定します。insecuretrue に設定されている場合、insecure_skip_verify value は使用されません。
key_file mTLS で必要な接続に使用する TLS キーのパス。
password インスタンスへの接続に使用するパスワード。
type 値は、saphana にする必要があります。
username インスタンスへの接続に使用するユーザー名。

モニタリング対象

次の表に、Ops エージェントが HANA インスタンスから収集する指標の一覧を示します。

指標タイプ
種類、タイプ
モニタリング対象リソース
ラベル
workload.googleapis.com/saphana.alert.count
GAUGEINT64
gce_instance
rating
workload.googleapis.com/saphana.backup.latest
GAUGEINT64
gce_instance
 
workload.googleapis.com/saphana.column.memory.used
GAUGEINT64
gce_instance
host
subtype
type
workload.googleapis.com/saphana.component.memory.used
GAUGEINT64
gce_instance
component
host
workload.googleapis.com/saphana.connection.count
GAUGEINT64
gce_instance
host
status
workload.googleapis.com/saphana.cpu.used
CUMULATIVEINT64
gce_instance
host
type
workload.googleapis.com/saphana.disk.size.current
GAUGEINT64
gce_instance
host
path
state
usage_type
workload.googleapis.com/saphana.host.memory.current
GAUGEINT64
gce_instance
host
state
workload.googleapis.com/saphana.host.swap.current
GAUGEINT64
gce_instance
host
state
workload.googleapis.com/saphana.instance.code_size
GAUGEINT64
gce_instance
host
workload.googleapis.com/saphana.instance.memory.current
GAUGEINT64
gce_instance
host
state
workload.googleapis.com/saphana.instance.memory.shared.allocated
GAUGEINT64
gce_instance
host
workload.googleapis.com/saphana.instance.memory.used.peak
GAUGEINT64
gce_instance
host
workload.googleapis.com/saphana.license.expiration.time
GAUGEINT64
gce_instance
product
system
workload.googleapis.com/saphana.license.limit
GAUGEINT64
gce_instance
product
system
workload.googleapis.com/saphana.license.peak
GAUGEINT64
gce_instance
product
system
workload.googleapis.com/saphana.network.request.average_time
GAUGEDOUBLE
gce_instance
host
workload.googleapis.com/saphana.network.request.count
GAUGEINT64
gce_instance
host
state
workload.googleapis.com/saphana.network.request.finished.count
CUMULATIVEINT64
gce_instance
host
type
workload.googleapis.com/saphana.replication.average_time
GAUGEDOUBLE
gce_instance
mode
port
primary
secondary
workload.googleapis.com/saphana.replication.backlog.size
GAUGEINT64
gce_instance
mode
port
primary
secondary
workload.googleapis.com/saphana.replication.backlog.time
GAUGEINT64
gce_instance
mode
port
primary
secondary
workload.googleapis.com/saphana.row_store.memory.used
GAUGEINT64
gce_instance
host
type
workload.googleapis.com/saphana.schema.memory.used.current
GAUGEINT64
gce_instance
host
schema
type
workload.googleapis.com/saphana.schema.memory.used.max
GAUGEINT64
gce_instance
host
schema
workload.googleapis.com/saphana.schema.operation.count
CUMULATIVEINT64
gce_instance
host
schema
type
workload.googleapis.com/saphana.schema.record.compressed.count
GAUGEINT64
gce_instance
host
schema
workload.googleapis.com/saphana.schema.record.count
GAUGEINT64
gce_instance
host
schema
type
workload.googleapis.com/saphana.service.code_size
GAUGEINT64
gce_instance
host
service
workload.googleapis.com/saphana.service.count
GAUGEINT64
gce_instance
host
status
workload.googleapis.com/saphana.service.memory.compactors.allocated
GAUGEINT64
gce_instance
host
service
workload.googleapis.com/saphana.service.memory.compactors.freeable
GAUGEINT64
gce_instance
host
service
workload.googleapis.com/saphana.service.memory.effective_limit
GAUGEINT64
gce_instance
host
service
workload.googleapis.com/saphana.service.memory.heap.current
GAUGEINT64
gce_instance
host
service
state
workload.googleapis.com/saphana.service.memory.limit
GAUGEINT64
gce_instance
host
service
workload.googleapis.com/saphana.service.memory.shared.current
GAUGEINT64
gce_instance
host
service
state
workload.googleapis.com/saphana.service.memory.used
GAUGEINT64
gce_instance
host
service
type
workload.googleapis.com/saphana.service.stack_size
GAUGEINT64
gce_instance
host
service
workload.googleapis.com/saphana.service.thread.count
GAUGEINT64
gce_instance
host
status
workload.googleapis.com/saphana.transaction.blocked
GAUGEINT64
gce_instance
host
workload.googleapis.com/saphana.transaction.count
CUMULATIVEINT64
gce_instance
host
type
workload.googleapis.com/saphana.volume.operation.count
CUMULATIVEINT64
gce_instance
host
path
type
usage_type
workload.googleapis.com/saphana.volume.operation.size
CUMULATIVEINT64
gce_instance
host
path
type
usage_type
workload.googleapis.com/saphana.volume.operation.time
CUMULATIVEINT64
gce_instance
host
path
type
usage_type

構成を確認する

このセクションでは、HANA レシーバが正しく構成されていることを確認する方法について説明します。Ops エージェントがテレメトリーの収集を開始するまでに 1~2 分かかる場合があります。

HANA ログが Cloud Logging に送信されていることを確認するには、次のようにします。

  1. Google Cloud コンソールのナビゲーション パネルで、[ロギング] を選択してから、[ログ エクスプローラ] を選択します。

    [ログ エクスプローラ] に移動

  2. エディタに次のクエリを入力し、[クエリを実行] をクリックします。
    resource.type="gce_instance"
    log_id("saphana")
    

HANA 指標が Cloud Monitoring に送信されていることを確認するには、次のようにします。

  1. Google Cloud コンソールのナビゲーション パネルで [Monitoring] を選択し、次に [ Metrics Explorer] を選択します。

    Metrics Explorer に移動

  2. クエリビルダー ペインのツールバーで、[MQL] または [PROMQL] という名前のボタンを選択します。
  3. [言語] で [MQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定と同じツールバーにあります。
  4. エディタに次のクエリを入力し、[クエリを実行] をクリックします。
    fetch gce_instance
    | metric 'workload.googleapis.com/saphana.connection.count'
    | every 1m
    

ダッシュボードを表示する

HANA 指標を表示するには、グラフまたはダッシュボードが構成されている必要があります。HANA インテグレーションには、1 つ以上のダッシュボードが含まれています。インテグレーションを構成して Ops エージェントが指標データの収集を開始すると、ダッシュボードは自動的にインストールされます。

インテグレーションをインストールすることなく、ダッシュボードの静的プレビューを表示することもできます。

インストールされているダッシュボードを表示する手順は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[ダッシュボード] を選択します。

    [ダッシュボード] に移動

  2. [ダッシュボード リスト] タブを選択し、[統合] カテゴリを選択します。
  3. 表示するダッシュボードの名前をクリックします。

インテグレーションを構成してもダッシュボードがインストールされていない場合は、Ops エージェントが実行されていることを確認します。ダッシュボードにグラフの指標データがない場合、ダッシュボードのインストールは失敗します。Ops エージェントが指標の収集を開始した後に、ダッシュボードがインストールされます。

ダッシュボードの静的プレビューを表示する手順は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[インテグレーション] を選択します。

    [インテグレーション] に移動

  2. [デプロイメント プラットフォーム] フィルタの [Compute Engine] をクリックします。
  3. HANA のエントリを見つけて [詳細を表示] をクリックします。
  4. [ダッシュボード] タブを選択すると、静的プレビューが表示されます。ダッシュボードがインストールされている場合は、[ダッシュボードを表示] をクリックして移動できます。

Cloud Monitoring のダッシュボードについて詳しくは、ダッシュボードとグラフをご覧ください。

[インテグレーション] ページの使用方法については、インテグレーションを管理するをご覧ください。

アラート ポリシーをインストールする

アラート ポリシーは、指定した条件が成立した際に通知するように Cloud Monitoring に指示します。HANA インテグレーションには、使用する 1 つ以上のアラート ポリシーが含まれています。これらのアラート ポリシーは、Monitoring の [インテグレーション] ページで表示してインストールできます。

使用可能なアラート ポリシーの説明を表示してインストールする手順は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[インテグレーション] を選択します。

    [インテグレーション] に移動

  2. HANA のエントリを見つけて [詳細を表示] をクリックします。
  3. [アラート] タブを選択します。このタブには、利用可能なアラート ポリシーの説明と、それらをインストールするためのインターフェースが表示されます。
  4. アラート ポリシーをインストールします。アラート ポリシーでは、アラートがトリガーされた通知の送信先を特定する必要があるため、インストール環境の情報が必要になります。アラート ポリシーをインストールする手順は次のとおりです。
    1. 利用可能なアラート ポリシーのリストから、インストールするアラート ポリシーを選択します。
    2. [通知の構成] セクションで、1 つ以上の通知チャンネルを選択します。通知チャンネルの使用を無効にすることもできますが、無効にすると、アラート ポリシーは通知なく起動します。Monitoring でステータスを確認できますが、通知は受信しません。

      通知チャンネルの詳細については、通知チャンネルを管理するをご覧ください。

    3. [ポリシーの作成] をクリックします。

Cloud Monitoring のアラート ポリシーの詳細については、アラートの概要をご覧ください。

[インテグレーション] ページの使用方法については、インテグレーションを管理するをご覧ください。

次のステップ

Ansible を使用して Ops エージェントをインストールし、サードパーティ アプリケーションを構成してサンプル ダッシュボードをインストールする方法については、Ops エージェントをインストールして、サードパーティ アプリケーションのトラブルシューティングを行うの動画をご覧ください。