第9章 モニタリングおよびロギング

メトリクスを Google Cloud Platform モニタリングシステムに送信して、Google Cloud Platform UI で視覚化することができます。GCP Marketplace で入手可能な Ansible Automation Platform のメトリクスとロギングは、デフォルトで無効になっています。これらのメトリクスを GCP に送信するにはコストがかかるためです。詳細は、Cloud MonitoringCloud Logging をそれぞれ参照してください。

GCP のモニタリングとロギングは次のいずれかで設定できます。

9.1. デプロイメント後のモニタリングとロギングのセットアップ

registry.redhat.com から入手可能な gcp_setup_logging_monitoring Playbook を使用して、デプロイメント後にロギングとモニタリングを開始または停止できます。

9.1.1. 必須のパーミッション

ロギングとモニタリングをセットアップするには、次の GCP IAM 権限が必要です。

required-roles:

Service Account User
Compute Instance Admin (v1)

required-permissions:

cloudsql.instances.connect
cloudsql.instances.get
cloudsql.instances.login
cloudsql.users.update
compute.addresses.get
compute.addresses.list
compute.instances.delete
compute.instances.get
compute.instances.list
compute.instances.setLabels
compute.zoneOperations.get
deploymentmanager.deployments.list
deploymentmanager.manifests.get
deploymentmanager.manifests.list
file.instances.get
file.instances.list
file.instances.update
file.operations.get
iap.tunnelInstances.accessViaIAP
logging.logEntries.create
monitoring.timeSeries.create
resourcemanager.projects.get
runtimeconfig.variables.create
runtimeconfig.variables.get
runtimeconfig.variables.list
runtimeconfig.variables.update
secretmanager.secrets.create
secretmanager.secrets.delete
secretmanager.secrets.get
secretmanager.versions.add
secretmanager.versions.get
secretmanager.versions.list
servicenetworking.operations.get
servicenetworking.services.addPeering
serviceusage.services.list

9.1.2. ansible-on-clouds-ops コンテナーイメージのプル

基盤デプロイメントのバージョンと一致する Ansible on Clouds 運用コンテナーの Docker イメージをプルします。

注記

Docker イメージをプルする前に、Docker を使用して registry.redhat.io にログインしていることを確認してください。以下のコマンドを使用して registry.redhat.io にログインします。

$ docker login registry.redhat.io

レジストリーのログインに関する詳細は、Registry Authentication を参照してください。

たとえば、基盤デプロイメントのバージョンが 2.4.20230630-00 の場合は、タグ 2.4.20230630 を持つ運用イメージをプルする必要があります。

以下のコマンドを使用します。

$ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel9:2.4.20230630
$ docker pull $IMAGE --platform=linux/amd64

9.1.3. ansible-on-clouds-ops コンテナーを実行してデータファイルを生成する

次のコマンドで、必要なデータファイルを生成します。これらのコマンドは、ディレクトリーと空のデータテンプレートを作成します。このテンプレートは、データが設定されると Playbook の生成に使用されます。

手順

  1. 設定ファイルを保存するフォルダーを作成します。

    $ mkdir command_generator_data
  2. command_generator_data フォルダーに設定ファイルのテンプレートを追加します。

    注記

    Linux では、コマンドジェネレーターが作成したファイルまたはディレクトリーは、デフォルトで root:root の所有となります。ファイルとディレクトリーの所有権を変更するには、ファイルの作成後に sudo chmod コマンドを実行します。詳細は、コマンドジェネレーター - root が所有する Linux ファイル を参照してください。

    $ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE \
    command_generator_vars gcp_setup_logging_monitoring \
    --output-data-file /data/logging-monitoring.yml
  3. これらのコマンドを実行すると、command_generator_data/logging-monitoring.yml テンプレートファイルが作成されます。

    注記

    以下のファイルの例では、ansible_config_path はオプションです。

    このテンプレートファイルは次のようになります。

    gcp_setup_logging_monitoring:
      ansible_config_path:
      cloud_credentials_path:
      deployment_name:
      extra_vars:
        components:
        default_collector_interval:
        logging_enabled:
        monitoring_enabled:

9.1.4. データファイルの更新

パラメーターが必要ない場合は、そのパラメーターを設定ファイルから削除してください。

手順

  • command_generator_data/logging-monitoring.yml ファイルを編集し、次のパラメーターを設定します。
  • ansible_config_path は、ansible-on-cloud オファリング の標準設定としてデフォルトで使用されますが、環境に追加の要件がある場合は、独自の設定を指定できます。
  • cloud_credentials_path は、認証情報への絶対パスです。これは、絶対パス名である必要があります。
  • deployment_name は、デプロイメントの名前です。
  • components (任意): セットアップを実行するコンポーネントのタイプ。デフォルトは [ “controller”, “hub” ] で、ロギングとモニタリングが Automation controller と Automation Hub の両方で有効になることを意味します。
  • モニタリングを有効にするには、monitoring_enabled (任意) を true に設定し、無効にするには false に設定します。デフォルトは false です。
  • ロギングを有効にするには、logging_enabled (オプション) を true に設定し、それ以外の場合は false に設定します。デフォルトは false です。
  • default_collector_interval (任意) は、モニタリングデータを Google Cloud に送信する必要がある頻度です。デフォルト = 59 秒。

    注記

    このサービスの Google コストはその周期に依存するため、コレクター間隔の値が大きいほどコストは低くなります。

    59 秒未満の値を設定しないでください。

    注記

    モニタリングとロギングが無効になっている場合、'default_collector_interval' の値は自動的に 0 に設定されます。

データファイルを入力すると、次のようになります。

次の値は例です。

注記

このセクションで説明されている任意のパラメーターは、以下のデータファイルの例では省略されています。Playbook は、データファイルから省略された任意のパラメーターのデフォルト値を使用します。任意のパラメーターのデフォルト値をオーバーライドする場合は、そのパラメーターをデータファイルに含めて値を割り当てる必要があります。

gcp_setup_logging_monitoring:
  cloud_credentials_path: ~/secrets/GCP-secrets.json
  deployment_name: AnsibleAutomationPlatform
  extra_vars:

9.1.5. Playbook の生成

Playbook を生成するには、コマンドジェネレーターを実行して CLI コマンドを生成します。

docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator gcp_setup_logging_monitoring \
--data-file /data/logging-monitoring.yml

次のコマンドが生成されます。

docker run --rm --env PLATFORM=GCP -v </path/to/gcp/service-account.json>:/home/runner/.gcp/credentials:ro \
--env ANSIBLE_CONFIG=../gcp-ansible.cfg --env DEPLOYMENT_NAME=<deployment_name> --env GENERATE_INVENTORY=true  \
$IMAGE redhat.ansible_on_clouds.gcp_setup_logging_monitoring -e 'gcp_deployment_name=<deployment_name> \
gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials  monitoring_enabled=<monitoring_enabled> \
logging_enabled=<logging_enabled> default_collector_interval=<interval>'

指定されたコマンドを実行して、Playbook を実行します。

$ docker run --rm --env PLATFORM=GCP -v /path/to/credentials:/home/runner/.gcp/credentials:ro \
--env ANSIBLE_CONFIG=../gcp-ansible.cfg --env DEPLOYMENT_NAME=mu-deployment \
--env GENERATE_INVENTORY=true  $IMAGE redhat.ansible_on_clouds.gcp_setup_logging_monitoring \
-e 'gcp_deployment_name=mu-deployment \
gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials  components=["hubs","controllers"]\
monitoring_enabled=True logging_enabled=True default_collector_interval=60s'

このプロセスでは、以下のような出力が表示されますが、時間がかかる場合があります。

TASK [redhat.ansible_on_clouds.setup_logging_monitoring : Update runtime variable logging_enabled] ***
changed: [<user_name> -> localhost]

TASK [redhat.ansible_on_clouds.setup_logging_monitoring : Update runtime variable monitoring_enabled] ***
changed: [<user_name> -> localhost]

PLAY RECAP *********************************************************************
<user_name>     : ok=20   changed=6    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0