第9章 モニタリングおよびロギング
メトリクスを Google Cloud Platform モニタリングシステムに送信して、Google Cloud Platform UI で視覚化することができます。GCP Marketplace で入手可能な Ansible Automation Platform のメトリクスとロギングは、デフォルトで無効になっています。これらのメトリクスを GCP に送信するにはコストがかかるためです。詳細は、Cloud Monitoring と Cloud 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 の生成に使用されます。
手順
設定ファイルを保存するフォルダーを作成します。
$ mkdir command_generator_data
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
これらのコマンドを実行すると、
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