エージェント ポリシーを使用すると、ユーザーが指定した条件に一致する VM フリート全体で Google Cloud Observability エージェントの自動インストールとメンテナンスを行えます。1 つのコマンドで Google Cloud プロジェクトのポリシーを作成し、その Google Cloud プロジェクトに関連付けられた既存の VM と新しい VM を管理できます。これにより、すべてのエージェントのインストールとオプションの自動アップグレードを適切に行うことができます。
サポートされているオペレーティング システム
次のオペレーティング システムを使用して、Compute Engine インスタンスにエージェント ポリシーを適用できます。
Logging agent
は、エージェント タイプ logging
のポリシーにマッピングされます。Monitoring agent
は、エージェント タイプ metrics
のポリシーにマッピングされます。Ops Agent
は、エージェント タイプ ops-agent
のポリシーにマッピングされます。
オペレーティング システム | Logging エージェント | Monitoring エージェント | Ops エージェント |
---|---|---|---|
CentOS 7 | |||
CentOS 8 | |||
Rocky Linux 8 | |||
RHEL 6 | |||
RHEL 7: rhel-7、rhel-7-6-sap-ha、rhel-7-7-sap-ha、rhel-7-9-sap-ha |
1 | ||
RHEL 8: rhel-8、rhel-8-4-sap-ha、rhel-8-6-sap-ha、rhel-8-8-sap-ha |
1 | ||
Debian 9(Stretch) | |||
Debian 10(Buster) | |||
Debian 11(Bullseye) | |||
Ubuntu LTS 18.04(Bionic Beaver): ubuntu-1804-lts、ubuntu-minimal-1804-lts |
|||
Ubuntu LTS 20.04(Focal Fossa): ubuntu-2004-lts、ubuntu-minimal-2004-lts |
|||
Ubuntu LTS 22.04(Jammy Jellyfish): ubuntu-2204-lts, ubuntu-minimal-2204-lts |
|||
SLES 12: sles-12、sles-12-sp5-sap |
|||
SLES 15: sles-15、sles-15-sp2-sap、sles-15-sp3-sap、sles-15-sp4-sap、sles-15-sp5-sap |
|||
OpenSUSE Leap 15: opensuse-leap(opensuse-leap-15-3-*、 opensuse-leap-15-4-*) |
|||
Windows Server: 2016、2019、2022、Core 2016、Core 2019、Core 2022 |
1 Monitoring エージェントは、rhel-7-9-sap-ha
、rhel-8-2-sap-ha
または rhel-8-4-sap-ha
ではサポートされていません。
エージェント ポリシーの作成
Google Cloud CLI を使用してエージェント ポリシーを作成するには、次の操作を行います。
Google Cloud CLI をまだインストールしていない場合は、インストールします。
gcloud CLI のエージェント ポリシーを管理するコマンド グループは、
beta
リリースで使用できます。gcloud CLI の
beta
コンポーネントをまだインストールしていない場合は、インストールします。gcloud components install beta
beta
コンポーネントがインストールされているかどうかを確認するには、次を実行します。gcloud components list
以前に
beta
コンポーネントをインストールしたことがある場合は、最新バージョンを使用していることを確認してください。gcloud components update
スクリプト
set-permissions.sh
を使用して API を有効にし、Google Cloud CLI を使用するための適切な権限を設定します。スクリプトの詳細については、
set-permissions.sh
スクリプトの内容をご覧ください。gcloud beta compute instances ops-agents policies create
コマンドを使用して、ポリシーを作成します。コマンドの構文については、gcloud beta compute instances ops-agents policies create
のドキュメントをご覧ください。コマンドの形式の例については、Google Cloud CLI ドキュメントの例をご覧ください。
利用可能な gcloud CLI コマンドと使用可能なオプションの詳細については、
gcloud beta compute instances ops-agents policies
のドキュメントをご覧ください。
エージェント ポリシーを使用するためのベスト プラクティス
ロールアウト中に本番環境システムへの影響を制御するには、インスタンス ラベルとゾーンを使用して、ポリシーを適用するインスタンスをフィルタリングすることをおすすめします。
Ops エージェントのポリシーを作成する場合は、VM に以前の Logging エージェントまたは Monitoring エージェントがインストールされていないことを確認します。同じ VM で Ops エージェントと以前のエージェントを実行すると、重複したログの取得や、指標の取得での競合が発生することがあります。必要に応じて、Ops エージェントをインストールするポリシーを作成する前に、Monitoring エージェントをアンインストールして、Logging エージェントをアンインストールします。CentOS 7 VM の段階的なロールアウト計画の例を次に示します。
フェーズ 1: ラベル env=test
と app=myproduct
を使用して、すべての VM に Ops エージェントをインストールするポリシーを作成します。
gcloud beta compute instances \
ops-agents policies create ops-agents-policy-safe-rollout \
--agent-rules="type=ops-agent,version=current-major,package-state=installed,enable-autoupgrade=true" \
--os-types=short-name=centos,version=7 \
--group-labels=env=test,app=myproduct \
--project=my_project
オペレーティング システムの指定について詳しくは、gcloud beta compute instances ops-agents policies create
をご覧ください。
フェーズ 2: env=prod
と app=myproduct
、および 1 つのゾーンのみを対象とするよう、作成したポリシーを更新します。
gcloud beta compute instances \
ops-agents policies update ops-agents-policy-safe-rollout \
--group-labels=env=prod,app=myproduct \
--zones=us-central1-c \
フェーズ 3: ゾーンのフィルタを消去して、ポリシーがグローバルに展開されるよう、ポリシーを更新します。
gcloud beta compute instances \
ops-agents policies update ops-agents-policy-safe-rollout \
--clear-zones
制限事項
ポリシーを OS Config より古い VM で有効にするには、追加設定を行い、ポリシーが依存している OS Config エージェントが VM にインストールされていることを確認する必要があります。VM フリートに OS Config エージェントをインストールするには、次の操作を行います。
エージェント ポリシーの作成セクションの
set-permissions.sh
スクリプトを実行済みであることを確認します。OS Config エージェントをインストールする VM を決定し、CSV ファイルに記述します。
Google 管理以外のすべてのインスタンス(Google Kubernetes Engine や Google App Engine など)のリストを CSV で取得するには、次のコマンドを実行します。
gcloud compute instances list \ --filter="-labels.list(show="keys"):goog-" \ --format="csv(name,zone)" \ | grep -v -x -F -f <(gcloud compute instances os-inventory list-instances \ --format="csv(name,zone)") \ | sed 's/$/,update/' > instances.csv
grep
セクションでは、OS Config エージェントがすでにインストールされ、有効になっている VM が除外されます。goog-
に基づく VM ラベルの除外では、GKE や App Engine などで管理される Compute Engine VM が除外されます。ゾーンまたはラベルでインスタンスをさらにフィルタリングするには、
--filter
を次のように変更します。"-labels.list(show="keys"):goog- AND zone:(ZONE_1,ZONE_2) AND labels.KEY_1:VALUE_1 AND labels.KEY_2=VALUE_2"
次のようなスクリプトに従ってコマンドを実行して、
mass-install-osconfig-agent.sh
スクリプトをダウンロードし、実行します。bash mass-install-osconfig-agent.sh --project project-id --input-file instances.csv
このスクリプトは、OS Config エージェントのインストールの手順を自動化します。
トラブルシューティング
ops-agents コマンドが失敗します
ops-agents ポリシー コマンドが失敗すると、対応する検証エラーが表示されます。このようなエラーは、エラー メッセージの内容に従いコマンドの引数とフラグを修正することで解決します。
検証エラーに加えて、次のエラーが表示される場合があります。
IAM 権限が不十分です
エラーの例を次に示します。
ERROR: (gcloud.beta.compute.instances.ops-agents.policies.XXX) PERMISSION_DENIED: Caller does not have required permission to XXX
エージェント ポリシーの作成セクションで
set-permissions.sh
スクリプトを実行して、osconfig.guestPolicy
固有の IAM のロールを設定してください。プロジェクトで十分な OS Config ゲストポリシーのロールが有効になっているかを確認するには、次のコマンドを実行します。この例のコマンドは、ユーザーが
roles/osconfig.guestPolicyAdmin
ロールを割り当てられているかを確認します。GCLOUD_MEMBER
は、user:USER_EMAIL
またはserviceaccount:SERVICE_ACCOUNT_EMAIL
の形式にします。gcloud projects get-iam-policy project-id \ --filter=--member=gcloud-member \ | grep "roles/osconfig.guestPolicyAdmin" -B 2
想定される出力は次のとおりです。
- members: - gcloud-member role: roles/osconfig.guestPolicyAdmin
Osconfig API が有効になっていません
エラーの例を次に示します。
API [osconfig.googleapis.com] not enabled on project [XXX]. Would you like to enable and retry (this will take a few minutes)? (y/N)?
エージェント ポリシーの作成セクションで
set-permissions.sh
スクリプトを実行して、必要なすべての権限を付与します。プロジェクトで OS Config API が有効になっているかどうかを確認するには、次のコマンドを実行します。
gcloud services list --project project-id \ | grep osconfig.googleapis.com
想定される出力は次のとおりです。
osconfig.googleapis.com Cloud OS Config API
ポリシーが存在しません
エラーの例を次に示します。
NOT_FOUND: Requested entity was not found
これは、ポリシーがすでに削除されている可能性があることを示しています。
describe
、update
、delete
コマンドのポリシー ID が既存のポリシーにマッピングされていることを確認します。
ポリシーは作成されていますが、効果がないようです
OS Config エージェントは、各 Compute Engine インスタンスにデプロイされて、Logging エージェントと Monitoring エージェント用のパッケージを管理します。基盤となる OS Config エージェントがインストールされていない場合、このポリシーは効果がないように見える可能性があります。
Linux
OS Config エージェントがインストールされているかを確認するには、次のコマンドを実行します。
gcloud compute ssh instance-id \
--project project-id \
-- sudo systemctl status google-osconfig-agent
出力例は以下のとおりです。
google-osconfig-agent.service - Google OSConfig Agent
Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
Main PID: 369 (google_osconfig)
Tasks: 8 (limit: 4374)
Memory: 102.7M
CGroup: /system.slice/google-osconfig-agent.service
└─369 /usr/bin/google_osconfig_agent
Windows
OS Config エージェントがインストールされているかを確認するには、次の手順を行います。
RDP または同様のツールを使用してインスタンスに接続し、Windows にログインします。
PowerShell ターミナルを開き、次の PowerShell コマンドを実行します。管理者権限は必要ありません。
Get-Service google_osconfig_agent
出力例は以下のとおりです。
Status Name DisplayName
------ ---- -----------
Running google_osconfig_a… Google OSConfig Agent
SUSE および Ubuntu Compute Engine インスタンスには OS Config エージェントが事前インストールされていないため、OS Config エージェントのインストール手順に沿って OS Config エージェントをこれらの Compute Engine インスタンスにインストールする必要があります。
OS Config エージェントはインストールされますが、Ops エージェントがインストールされません
OS Config エージェントがポリシーを適用したときにエラーが発生するかを確認するには、OS Config エージェントのログを確認します。この確認は、ログ エクスプローラまたは SSH / RDP を介して個々の Compute Engine インスタンスに対し行うことができます。
ログ エクスプローラで OS Config エージェントのログを表示するには、次のフィルタを使用します。
resource.type="gce_instance"
logName="projects/project-id/logs/OSConfigAgent"
SSH を介して個々の Compute Engine Linux インスタンスの OS Config エージェントのログを表示するには、以下のコマンドを実行します。
CentOS / RHEL / SLES / SUSE
gcloud compute ssh instance-id \ --project project-id \ -- sudo cat /var/log/messages \ | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
Debian / Ubuntu
gcloud compute ssh instance-id \ --project project-id \ -- sudo cat /var/log/syslog \ | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
RDP を介して個々の Compute Engine Windows インスタンスの OS Config エージェント ログを表示するには、次の手順を実行します。
RDP または同様のツールを使用してインスタンスに接続し、Windows にログインします。
Event Viewer
アプリを開き、Windows Logs
=>Application
で、Source
がOSConfigAgent
と等しいログを検索します。
OS Config サービスへの接続中にエラーが発生した場合は、エージェント ポリシーの作成セクションの set-permissions.sh
スクリプトを実行してメタデータを設定します。
OS Config メタデータが有効になっているかを確認するには、次のコマンドを実行します。
gcloud compute project-info describe \
--project project-id \
| grep "enable-osconfig\|enable-guest-attributes" -A 1
想定される出力は次のとおりです。
- key: enable-guest-attributes
value: 'TRUE'
- key: enable-osconfig
value: 'TRUE'
Ops エージェントがインストールされていますが、正常に動作しません
特定の問題をデバッグするには、Logging エージェントと Monitoring エージェントのトラブルシューティングのページをご覧ください。
デバッグレベルのログの有効化
OS Config エージェントのデバッグレベルのロギングを有効にすると、問題を報告するときに非常に役立ちます。
osconfig-log-level: debug
メタデータを設定すると、OS Config エージェントのデバッグレベルのロギングを有効にできます。収集されたログには、調査に役立つ情報が記録されています。
プロジェクト全体のデバッグレベルのロギングを有効にするには、次のコマンドを実行します。
gcloud compute project-info add-metadata \
--project project-id \
--metadata osconfig-log-level=debug
1 つの VM に対するデバッグレベルのロギングを有効にするには、次のコマンドを実行します。
gcloud compute instances add-metadata instance-id \
--project project-id \
--metadata osconfig-log-level=debug
詳細情報
set-permissions.sh
スクリプトの処理内容
プロジェクト ID、Identity and Access Management(IAM)ロール、メールアドレスまたはサービス アカウントにより、set-permissions.sh
スクリプトは次のアクションを行います。
プロジェクトに対して Cloud Logging API、Cloud Monitoring API、OS Config API を有効にします。
Compute Engine のデフォルトのサービス アカウントに
roles/logging.logWriter
とroles/monitoring.metricWriter
のロールを付与します。これにより、エージェントはログと指標を Logging API と Cloud Monitoring API に書き込めます。プロジェクトの OS Config メタデータを有効にして、OS Config エージェントが VM で有効になるようにします。
指定された IAM ロールを
gcloud
ユーザーまたはサービス アカウントに付与します。プロジェクト オーナーは、ポリシーの作成と管理を行うための完全アクセス権を持っています。他のすべてのユーザーまたはサービス アカウントの場合は、プロジェクト オーナーが次のいずれかのロールを付与する必要があります。roles/osconfig.guestPolicyAdmin
: あるポリシーに対する完全アクセス権を付与します。roles/osconfig.guestPolicyEditor
: ユーザーによるポリシーの取得、更新、一覧表示を許可します。roles/osconfig.guestPolicyViewer
: ポリシーを取得して一覧表示するための読み取り専用アクセス権を付与します。
スクリプトを実行する場合は、ロール名の
guestPolicy*
部分を指定するだけで済みます。このスクリプトは、名前のroles/osconfig.
部分を指定します。
次のスクリプト呼び出しを実行すると、API が有効になり、必要なロールがデフォルトのサービス アカウントに付与され、OS Config メタデータが有効になります。
bash set-permissions.sh --project=PROJECT_ID
このスクリプトを使用して、プロジェクトに対する roles/owner
(オーナー)ロールを持たないユーザーに OS Config のいずれかのロールを付与する処理も行うには、次のようにスクリプトを実行します。
bash set-permissions.sh --project=PROJECT_ID \ --iam-user=USER_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
このスクリプトを使用して、デフォルト以外のサービス アカウントに OS Config ロールのいずれかを付与する処理も行うには、次のようにスクリプトを実行します。
bash set-permissions.sh --project=PROJECT_ID \ --iam-service-account=SERVICE_ACCT_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
詳細については、スクリプトの内容をご覧ください。
diagnose.sh
スクリプトの処理内容
プロジェクト、Compute Engine インスタンス ID、Ops エージェント ポリシー ID を指定すると、diagnose.sh
スクリプトがポリシーの問題を診断するために必要な情報を自動的に収集します。
OS Config エージェントのバージョン
基盤となる OS Config ゲストポリシー
この Compute Engine インスタンスに適用されるポリシー
Compute Engine インスタンスに pull されるエージェント パッケージ リポジトリ
Terraform 統合
Terraform のサポートは、Google Cloud CLI コマンドを基盤として構築されています。Terraform を使用してエージェント ポリシーを作成する方法については、Terraform モジュールの手順をご覧ください。