Kebijakan Agen Pengelolaan

Kebijakan Agen memungkinkan penginstalan dan pemeliharaan otomatis agen Kemampuan observasi Google Cloud di seluruh fleet VM yang cocok dengan kriteria yang ditentukan pengguna. Dengan satu perintah, Anda dapat membuat Kebijakan untuk project Google Cloud yang mengatur VM yang sudah ada dan yang baru terkait project Google Cloud tersebut, sehingga memastikan penginstalan yang benar dan upgrade otomatis opsional semua agen.

Sistem operasi yang didukung

Anda dapat menerapkan Kebijakan Agen ke instance Compute Engine dengan sistem operasi berikut.

Logging agent dipetakan ke kebijakan dengan jenis agen logging. Monitoring agent dipetakan ke kebijakan dengan jenis agen metrics. Ops Agent dipetakan ke kebijakan dengan jenis agen ops-agent.

Sistem operasi Agen logging Agen pemantauan Agen Operasional
CentOS 7
CentOS 8
Linux Rocky 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-2-sap-ha, 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 Agen Monitoring tidak didukung di rhel-7-9-sap-ha, rhel-8-2-sap-ha, atau rhel-8-4-sap-ha.

Membuat Kebijakan Agen

Untuk membuat Kebijakan Agen menggunakan Google Cloud CLI, selesaikan langkah-langkah berikut:

  1. Jika Anda belum melakukannya, instal Google Cloud CLI.

    Di gcloud CLI, grup perintah untuk mengelola Kebijakan Agen masih dalam tahap rilis beta.

  2. Jika Anda belum melakukannya, instal komponen beta dari gcloud CLI:

    gcloud components install beta
    

    Untuk memeriksa apakah Anda sudah menginstal komponen beta, jalankan:

    gcloud components list
    
    1. Jika sebelumnya Anda telah menginstal komponen beta, pastikan Anda memiliki versi terbaru:

      gcloud components update
      
  3. Gunakan skrip berikut untuk mengaktifkan API dan menetapkan izin yang tepat untuk menggunakan Google Cloud CLI: set-permissions.sh.

    Untuk mengetahui informasi tentang skrip, lihat Apa yang dilakukan skrip set-permissions.sh?.

  4. Gunakan perintah gcloud beta compute instances ops-agents policies create untuk membuat Kebijakan. Untuk sintaksis perintah, lihat dokumentasi gcloud beta compute instances ops-agents policies create.

    Untuk mengetahui contoh cara memformat perintah, lihat bagian Contoh dalam dokumentasi Google Cloud CLI.

    Untuk mengetahui informasi selengkapnya tentang perintah gcloud CLI yang tersedia dan opsi yang tersedia, lihat dokumentasi gcloud beta compute instances ops-agents policies.

Praktik terbaik untuk menggunakan Kebijakan Agen

Untuk mengontrol dampak terhadap sistem produksi selama peluncuran, sebaiknya gunakan label dan zona instance untuk memfilter instance tempat kebijakan diterapkan.

Berikut adalah contoh rencana peluncuran bertahap untuk VM CentOS 7:

Tahap 1: Buat kebijakan untuk menginstal agen Logging dan agen Monitoring lama di semua VM dengan label env=test dan app=myproduct.

gcloud beta compute instances \
    ops-agents policies create ops-agents-policy-safe-rollout \
    --agent-rules="type=logging,version=current-major,package-state=installed,enable-autoupgrade=true;type=metrics,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

Untuk mengetahui informasi selengkapnya tentang menentukan sistem operasi, lihat gcloud beta compute instances ops-agents policies create.

Fase 2: Perbarui kebijakan tersebut untuk menargetkan env=prod dan app=myproduct, serta hanya satu zona.

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --group-labels=env=prod,app=myproduct \
    --zones=us-central1-c \

Tahap 3: Perbarui kebijakan tersebut untuk menghapus filter zona sehingga diluncurkan secara global

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --clear-zones

Batasan

Agar Kebijakan berlaku di VM yang sudah ada Konfigurasi OS, penyiapan tambahan diperlukan untuk memastikan Agen Konfigurasi OS yang diandalkan kebijakan telah diinstal di VM. Untuk menginstal Agen Konfigurasi OS pada fleet VM, selesaikan langkah-langkah berikut:

  1. Pastikan Anda telah menjalankan skrip set-permissions.sh di bagian Membuat Kebijakan Agen.

  2. Tentukan VM mana yang ingin Anda instal di Agen Konfigurasi OS dan cantumkan dalam file CSV.

    Untuk menampilkan daftar semua instance yang tidak dikelola Google (misalnya oleh Google Kubernetes Engine atau Google App Engine) ke file csv, jalankan:

      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
    

    Bagian grep memfilter VM yang sudah menginstal dan mengaktifkan Agen Konfigurasi OS. Pengecualian label VM berdasarkan goog- memfilter VM Compute Engine yang dikelola oleh GKE, App Engine, dll.

    Untuk memfilter instance lebih lanjut menurut zona atau label, ubah --filter menjadi sesuatu yang mirip dengan berikut ini:

      "-labels.list(show="keys"):goog- AND zone:(ZONE_1,ZONE_2) AND labels.KEY_1:VALUE_1 AND labels.KEY_2=VALUE_2"
    
  1. Download dan jalankan skrip mass-install-osconfig-agent.sh dengan mengikuti petunjuk dalam skrip untuk menjalankan perintah seperti:

       bash mass-install-osconfig-agent.sh --project project-id --input-file instances.csv
    

    Skrip ini mengotomatiskan petunjuk Menginstal agen Konfigurasi OS.

Pemecahan masalah

Perintah kebijakan ops-agents gagal

Jika perintah kebijakan ops-agents gagal, perintah tersebut akan menampilkan error validasi yang sesuai. Perbaiki error tersebut dengan memperbaiki argumen dan tanda perintah seperti yang disarankan oleh pesan error.

Selain error validasi, Anda mungkin melihat error berikut:

  • Izin IAM tidak memadai

    Contoh error terlihat seperti ini:

    ERROR: (gcloud.beta.compute.instances.ops-agents.policies.XXX) PERMISSION_DENIED: Caller does not have required permission to XXX
    

    Pastikan Anda menjalankan skrip set-permissions.sh di bagian Membuat Kebijakan Agen untuk menyiapkan peran IAM khusus osconfig.guestPolicy.

    Untuk memastikan apakah Anda mengaktifkan peran kebijakan tamu OS Config yang memadai untuk project, Anda dapat menjalankan perintah berikut. Dalam contoh ini, perintah memeriksa apakah pengguna memiliki peran roles/osconfig.guestPolicyAdmin. GCLOUD_MEMBER harus dalam format user:USER_EMAIL atau serviceaccount:SERVICE_ACCOUNT_EMAIL.

    gcloud projects get-iam-policy project-id \
        --filter=--member=gcloud-member \
        | grep "roles/osconfig.guestPolicyAdmin" -B 2
    

    Berikut adalah output yang diinginkan:

    - members:
      - gcloud-member
      role: roles/osconfig.guestPolicyAdmin
    
  • Osconfig API tidak diaktifkan

    Contoh error terlihat seperti ini:

    API [osconfig.googleapis.com] not enabled on project [XXX].
    Would you like to enable and retry (this will take a few minutes)?
    (y/N)?
    

    Pastikan Anda menjalankan skrip set-permissions.sh di bagian Membuat Kebijakan Agen untuk memberikan semua izin yang diperlukan.

    Untuk memastikan apakah OS Config API diaktifkan untuk project, Anda dapat menjalankan perintah berikut:

    gcloud services list --project project-id \
        | grep osconfig.googleapis.com
    

    Berikut adalah output yang diinginkan:

    osconfig.googleapis.com    Cloud OS Config API
    
  • Kebijakan tidak ada

    Contoh error terlihat seperti ini:

    NOT_FOUND: Requested entity was not found
    

    Hal ini menunjukkan bahwa kebijakan telah dihapus. Pastikan ID kebijakan di perintah describe, update, atau delete dipetakan ke kebijakan yang sudah ada.

Kebijakan dibuat, tetapi tampaknya tidak berpengaruh

Agen OS Config di-deploy ke setiap instance Compute Engine untuk mengelola paket bagi agen Logging dan Monitoring. Kebijakan ini mungkin tampak tidak berpengaruh jika agen Konfigurasi OS yang mendasarinya tidak diinstal.

LINUX

Untuk memastikan agen OS Config telah diinstal, jalankan perintah berikut:

gcloud compute ssh instance-id \
    --project project-id \
    -- sudo systemctl status google-osconfig-agent

Contoh output-nya adalah:

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

Untuk memastikan agen OS Config telah diinstal, jalankan langkah-langkah berikut:

  1. Hubungkan ke instance Anda menggunakan RDP atau alat serupa, lalu login ke Windows.

  2. Buka terminal PowerShell, lalu jalankan perintah PowerShell berikut. Anda tidak memerlukan hak istimewa administrator.

    Get-Service google_osconfig_agent
    

Contoh output-nya adalah:

Status   Name               DisplayName
------   ----               -----------
Running  google_osconfig_a… Google OSConfig Agent

Instance Compute Engine SUSE dan Ubuntu tidak memiliki agen OS Config bawaan, jadi Anda harus mengikuti instructions penginstalan agen OS Config untuk menginstal agen OS Config pada instance Compute Engine tersebut.

Agen OS Config telah diinstal, tetapi tidak menginstal agen Operasional

Untuk memverifikasi apakah ada error saat agen OS Config menerapkan Kebijakan, Anda dapat memeriksa log agen OS Config. Hal ini dapat dilakukan melalui Logs Explorer atau melalui SSH / RDP ke setiap instance Compute Engine.

Untuk melihat log agen Konfigurasi OS di Logs Explorer, gunakan filter berikut:

resource.type="gce_instance"
logName="projects/project-id/logs/OSConfigAgent"

Untuk melihat log agen OS Config melalui SSH untuk setiap instance Compute Engine Linux, jalankan perintah berikut:

  • 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"
    

Untuk melihat log agen OS Config melalui RDP untuk setiap instance Windows Compute Engine, jalankan langkah-langkah berikut:

  1. Hubungkan ke instance Anda menggunakan RDP atau alat serupa, lalu login ke Windows.

  2. Buka aplikasi Event Viewer, di bagian Windows Logs => Application, telusuri log dengan Source yang sama dengan OSConfigAgent.

Jika terjadi error saat menghubungkan ke Layanan Konfigurasi OS, pastikan Anda menjalankan skrip set-permissions.sh di bagian Membuat Kebijakan Agen untuk menyiapkan metadata.

Untuk memastikan metadata Konfigurasi OS sudah aktif, Anda dapat menjalankan perintah berikut:

gcloud compute project-info describe \
    --project project-id \
    | grep "enable-osconfig\|enable-guest-attributes" -A 1

Berikut adalah output yang diinginkan:

- key: enable-guest-attributes
  value: 'TRUE'
- key: enable-osconfig
  value: 'TRUE'

Agen operasional sudah diinstal, tetapi tidak berfungsi dengan baik

Lihat halaman pemecahan masalah Agen logging dan Agen pemantauan untuk men-debug masalah tertentu.

Mengaktifkan log tingkat debug

Mengaktifkan logging tingkat debug agen OS Config saat melaporkan masalah akan sangat membantu.

Anda dapat menetapkan metadata osconfig-log-level: debug untuk mengaktifkan logging tingkat debug untuk agen Konfigurasi OS. Log yang dikumpulkan memiliki lebih banyak informasi untuk membantu penyelidikan.

Untuk mengaktifkan logging tingkat debug untuk seluruh project, jalankan perintah berikut:

gcloud compute project-info add-metadata \
    --project project-id \
    --metadata osconfig-log-level=debug

Untuk mengaktifkan logging tingkat debug untuk satu VM, jalankan perintah berikut:

gcloud compute instances add-metadata instance-id \
    --project project-id \
    --metadata osconfig-log-level=debug

Informasi tambahan

Apa fungsi skrip set-permissions.sh?

Dengan mempertimbangkan project ID, peran Identity and Access Management (IAM), dan email atau akun layanan, skrip set-permissions.sh akan melakukan tindakan berikut:

  • Mengaktifkan Cloud Logging API, Cloud Monitoring API, dan OS Config API untuk project.

  • Memberikan peran roles/logging.logWriter dan roles/monitoring.metricWriter ke akun layanan default Compute Engine sehingga agen dapat menulis log dan metrik ke Logging and Cloud Monitoring API.

  • Mengaktifkan metadata Konfigurasi OS untuk project sehingga agen Konfigurasi OS diaktifkan di VM.

  • Memberikan peran IAM yang ditentukan kepada pengguna gcloud atau akun layanan. Pemilik project memiliki akses penuh untuk membuat dan mengelola Kebijakan. Untuk semua pengguna atau akun layanan lainnya, pemilik project harus memberikan salah satu peran berikut:

    • roles/osconfig.guestPolicyAdmin: Memberikan akses penuh ke Kebijakan.

    • roles/osconfig.guestPolicyEditor: Memungkinkan pengguna mendapatkan, memperbarui, dan mencantumkan Kebijakan.

    • roles/osconfig.guestPolicyViewer: Memberikan akses hanya baca untuk mendapatkan dan mencantumkan Kebijakan.

    Saat menjalankan skrip, Anda hanya perlu menentukan bagian guestPolicy* dari nama peran. Skrip ini menyediakan bagian roles/osconfig. dari nama tersebut.

Pemanggilan skrip berikut akan mengaktifkan API, memberikan peran yang diperlukan ke akun layanan default, dan mengaktifkan metadata Konfigurasi OS:

bash set-permissions.sh --project=PROJECT_ID

Untuk menggunakan skrip guna memberikan juga salah satu peran OS Config kepada pengguna yang tidak memiliki peran roles/owner (Pemilik) pada project, jalankan skrip sebagai berikut:

bash set-permissions.sh --project=PROJECT_ID \
  --iam-user=USER_EMAIL \
  --iam-permission-role=guestPolicy[Admin|Editor|Viewer]

Untuk menggunakan skrip guna memberikan juga salah satu peran OS Config ke akun layanan non-default, jalankan skrip sebagai berikut:

bash set-permissions.sh --project=PROJECT_ID \
  --iam-service-account=SERVICE_ACCT_EMAIL \
  --iam-permission-role=guestPolicy[Admin|Editor|Viewer]

Untuk informasi selengkapnya, lihat konten skrip.

Apa fungsi skrip diagnose.sh?

Dengan mempertimbangkan project, ID instance Compute Engine, dan ID Kebijakan agen Operasional, skrip diagnose.sh secara otomatis mengumpulkan informasi yang diperlukan untuk membantu mendiagnosis masalah kebijakan:

  • Versi agen Konfigurasi OS

  • Kebijakan tamu Konfigurasi OS yang mendasarinya

  • Kebijakan yang berlaku untuk instance Compute Engine ini

  • Repositori paket agen yang ditarik ke instance Compute Engine

Integrasi Terraform

Dukungan Terraform dibangun berdasarkan perintah Google Cloud CLI. Untuk membuat Kebijakan Agen menggunakan Terraform, ikuti petunjuk modul Terraform.