31.1. Menyiapkan webhook Alertmanager ServiceNow

Perkiraan waktu penyelesaian: 2 jam

Pemilik komponen yang dapat dioperasikan: TS

Dokumen ini berisi petunjuk untuk mengonfigurasi webhook Alertmanager ServiceNow dan memungkinkan Anda membuat pemberitahuan di instance sistem tiket ServiceNow yang aktif.

31.1.1. Sebelum memulai

Sebelum menyiapkan webhook ServiceNow, lakukan langkah-langkah berikut:

  1. Buat secret midserver-secret secara manual.
  2. Ikuti langkah-langkah dalam runbook TS-R0012 untuk menyiapkan secret dengan benar.
  3. Pastikan yq telah diinstal di sistem.

    root@bootstrapper:~# yq --version
    yq (https://github.com/mikefarah/yq/) version v4.40.4
    
  4. Untuk mendapatkan izin yang diperlukan untuk mengakses objek di namespace obs-system dan mengelola aplikasi ServiceNow, minta Admin Keamanan Anda untuk memberi Anda peran berikut:

    • Debugger Observabilitas (observability-admin-debugger untuk cluster admin root dan observability-system-debugger untuk cluster admin org dan sistem)
    • Grafana Viewer (grafana-viewer)
    • Admin ServiceNow (system-service-now-admin)

    Untuk mengetahui informasi selengkapnya tentang peran ini, lihat Peran operator infrastruktur.

31.1.2. Menyiapkan webhook

Ikuti langkah-langkah berikut untuk mengonfigurasi webhook ServiceNow Alertmanager:

  1. Anda dapat mengonfigurasi webhook ServiceNow di organisasi.

    Jika Anda ingin mengonfigurasi webhook ServiceNow di cluster sistem untuk organisasi, minta Operator Infrastruktur (IO) Anda untuk menjalankan runbook OPA-R0005 dengan informasi berikut:

    • Nilai untuk variabel lingkungan IO_GROUP adalah grup pengguna tempat pengguna Anda berada.
    • Nilai untuk variabel lingkungan CONSTRAINT_NAME adalah restrict-system-project-namespace-resources.
  2. Buat akun layanan ServiceNow untuk membuat insiden berdasarkan pemberitahuan dari organisasi:

    1. Buka URL antarmuka web ServiceNow:

      https://support.gdchservices.GDC_URL/navpage.do
      

      Ganti GDC_URL dengan URL organisasi Anda di Google Distributed Cloud (GDC) air-gapped.

      Selalu gunakan gdchservices sebagai nama organisasi IT Operations Center Anda.

    2. Pilih Semua > Administrasi Pengguna > Pengguna.

    3. Klik New.

    4. Di jendela baru, masukkan nilai berikut:

      • Di kolom ID Pengguna, masukkan SVC_ALERT_ORG.
      • Di kolom Nama depan, masukkan SVC_ALERT_ORG.
      • Centang kotak Akses layanan web saja.

      Ganti ORG dengan nama organisasi Anda. Saat melakukan langkah ini di cluster admin root, gunakan nilai root untuk nama ORG.

    5. Klik Kirim.

      Data pengguna baru akan muncul dalam daftar akun ServiceNow.

  3. Tambahkan peran itil ke akun layanan:

    1. Buka data pengguna dari daftar.

    2. Klik tab Peran, lalu klik tombol Edit....

    3. Pilih peran itil dari menu Koleksi.

    4. Klik tombol Tambahkan () untuk memindahkan peran ke menu Daftar Peran.

    5. Klik Simpan.

  4. Tetapkan sandi akun layanan ServiceNow:

    1. Buka data pengguna dari daftar.

    2. Klik Setel Sandi, lalu Buat.

    3. Salin sandi yang ditampilkan oleh jendela dan simpan di tempat yang aman.

    4. Klik Simpan Sandi, lalu tutup jendela.

  5. Buka antarmuka command line.

  6. Tetapkan variabel lingkungan berikut:

    export ORG=ORGANIZATION
    export SERVICENOW_INSTANCE_URL=SERVICENOW_INSTANCE_URL
    export SERVICENOW_USERNAME=SERVICENOW_USERNAME
    export SERVICENOW_PASSWORD=SERVICENOW_PASSWORD
    export SERVICENOW_AUTORESOLVE=SERVICENOW_AUTORESOLVE
    export SERVICENOW_AUTORESOLVE_REOPEN_DURATION=SERVICENOW_AUTORESOLVE_REOPEN_DURATION
    

    Ganti kode berikut:

    • ORGANIZATION: nama organisasi Anda
    • SERVICENOW_INSTANCE_URL: URL antarmuka web ServiceNow, misalnya, https://support.gdchservices.GDC_URL.
    • SERVICENOW_USERNAME: nama pengguna akun layanan ServiceNow
    • SERVICENOW_PASSWORD: sandi akun layanan ServiceNow
    • SERVICENOW_AUTORESOLVE: 'true' jika Anda ingin menyelesaikan insiden ServiceNow secara otomatis setelah pemberitahuan yang sesuai berhenti dipicu, atau 'false' jika tidak
    • SERVICENOW_AUTORESOLVE_REOPEN_DURATION: durasi di mana insiden ServiceNow yang telah diselesaikan dapat dibuka kembali jika pemberitahuan yang sama diaktifkan lagi. Contoh: '5m', '30s', '24h', dll.
  7. Jalankan perintah berikut:

    cat << EOF > ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    apiVersion: lcm.private.gdc.goog/v1
    kind: SubcomponentOverride
    metadata:
      name: mon-alertmanager-servicenow-webhook
    spec:
      subComponentRef: "mon-alertmanager-servicenow-webhook"
      backend:
        operableParameters:
          servicenowCredentials:
            instanceName: ${SERVICENOW_INSTANCE_URL:?}
            username: ${SERVICENOW_USERNAME:?}
            password: ${SERVICENOW_PASSWORD:?}
          serviceNowSettings:
            autoResolve: ${SERVICENOW_AUTORESOLVE:?}
            autoResolveReopenDuration: ${SERVICENOW_AUTORESOLVE_REOPEN_DURATION:?}
    EOF
    cat << EOF > ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    apiVersion: lcm.private.gdc.goog/v1
    kind: SubcomponentOverride
    metadata:
      name: meta-alertmanager-servicenow-webhook
    spec:
      subComponentRef: "mon-meta-monitoring"
      backend:
        operableParameters:
          servicenowCredentials:
            instanceName: ${SERVICENOW_INSTANCE_URL:?}
            username: ${SERVICENOW_USERNAME:?}
            password: ${SERVICENOW_PASSWORD:?}
          serviceNowSettings:
            autoResolve: ${SERVICENOW_AUTORESOLVE:?}
            autoResolveReopenDuration: ${SERVICENOW_AUTORESOLVE_REOPEN_DURATION:?}
    EOF
    cat << EOF > ~/ts-networking-subcomponentoverride.yaml
    apiVersion: lcm.private.gdc.goog/v1
    kind: SubcomponentOverride
    metadata:
      name: ts-networking
    spec:
      subComponentRef: "ts-networking"
      backend:
        operableParameters:
          serviceNowEndpoint: ${SERVICENOW_INSTANCE_URL:?}
    EOF
    
  8. Lakukan langkah-langkah berikut untuk mengonfigurasi webhook ServiceNow di cluster:

Cluster admin root

  1. Tetapkan variabel lingkungan berikut:

    export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • PATH_TO_ROOT_ADMIN_KUBECONFIG: jalur file kubeconfig untuk cluster admin root
  2. Temukan deployment webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output harus menampilkan status READY dan terlihat seperti contoh berikut:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    mon-alertmanager-servicenow-webhook-backend   1/1     1            1           8h
    
  3. Periksa apakah file YAML configmap ada:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                         DATA   AGE
    mon-alertmanager-servicenow-webhookbackend   1      8h
    
  4. Periksa apakah file YAML Secret ada:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                          TYPE     DATA   AGE
    mon-alertmanager-servicenow-webhook-backend   Opaque   2      8h
    
  5. Konfigurasi file YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Output yang diharapkan:

    subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook created
    
  6. Mengonfigurasi jaringan:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yaml
    

    Output yang diharapkan:

    subcomponentoverride.lcm.private.gdc.goog/ts-networking created
    
  7. Mulai ulang deployment webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/mon-alertmanager-servicenow-webhook-backend restarted
    
  8. Mulai ulang deployment webhook stack pemantauan sekunder:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/alertmanager-servicenow-webhook restarted
    
  9. Periksa log deployment alertmanager-servicenow-webhook untuk memvalidasi konfigurasi:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    
  10. Jika log berisi string listening on: :9877, berarti konfigurasi telah selesai. Jika tidak, minta bantuan pemecahan masalah.

  11. Temukan deployment webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-system
    

    Output harus menampilkan status READY dan terlihat seperti contoh berikut:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    meta-alertmanager-servicenow-webhook          1/1     1            1           8h
    
  12. Periksa apakah file YAML configmap ada:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                         DATA   AGE
    meta-alertmanager-servicenow-webhook         1      8h
    
  13. Periksa apakah file YAML Secret ada:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                          TYPE     DATA   AGE
    meta-alertmanager-servicenow-webhook          Opaque   2      8h
    
  14. Konfigurasi file YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Output yang diharapkan:

    subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook created
    
  15. Mulai ulang deployment webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  16. Mulai ulang deployment webhook stack pemantauan sekunder:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  17. Periksa log deployment meta-alertmanager-servicenow-webhook untuk memvalidasi konfigurasi:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-system
    
  18. Jika log berisi string listening on: :9877, berarti konfigurasi telah selesai. Jika tidak, minta bantuan pemecahan masalah.

Cluster Org Infra

  1. Tetapkan variabel lingkungan berikut:

    export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG
    export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIG
    

    Ganti kode berikut:

    • PATH_TO_ROOT_ADMIN_KUBECONFIG: jalur file kubeconfig untuk cluster admin root
    • PATH_TO_INFRA_KUBECONFIG: jalur file kubeconfig untuk cluster infrastruktur
  2. Temukan deployment webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output harus menampilkan status READY dan terlihat seperti contoh berikut:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    mon-alertmanager-servicenow-webhook-backend   1/1     1            1           8h
    
  3. Periksa apakah file YAML configmap ada:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                         DATA   AGE
    mon-alertmanager-servicenow-webhookbackend   1      8h
    
  4. Periksa apakah file YAML Secret ada:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                          TYPE     DATA   AGE
    mon-alertmanager-servicenow-webhook-backend   Opaque   2      8h
    
  5. Konfigurasi file YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Output yang diharapkan:

    subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook created
    
  6. Mengonfigurasi jaringan:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yaml
    

    Output yang diharapkan:

    subcomponentoverride.lcm.private.gdc.goog/ts-networking created
    
  7. Mulai ulang deployment webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/mon-alertmanager-servicenow-webhook-backend restarted
    
  8. Mulai ulang deployment webhook stack pemantauan sekunder:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/alertmanager-servicenow-webhook restarted
    
  9. Periksa log deployment alertmanager-servicenow-webhook untuk memvalidasi konfigurasi:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    
  10. Jika log berisi string listening on: :9877, berarti konfigurasi telah selesai. Jika tidak, minta bantuan pemecahan masalah.

  11. Temukan deployment webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-system
    

    Output harus menampilkan status READY dan terlihat seperti contoh berikut:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    meta-alertmanager-servicenow-webhook          1/1     1            1           8h
    
  12. Periksa apakah file YAML configmap ada:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                         DATA   AGE
    meta-alertmanager-servicenow-webhook         1      8h
    
  13. Periksa apakah file YAML Secret ada:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system
    

    Output harus terlihat seperti contoh berikut:

    NAME                                          TYPE     DATA   AGE
    meta-alertmanager-servicenow-webhook          Opaque   2      8h
    
  14. Konfigurasi file YAML configmap:

    kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Output yang diharapkan:

    subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook created
    
  15. Mulai ulang deployment webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  16. Mulai ulang deployment webhook stack pemantauan sekunder:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system
    

    Output memverifikasi keberhasilan seperti yang terlihat dalam contoh berikut:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  17. Periksa log deployment meta-alertmanager-servicenow-webhook untuk memvalidasi konfigurasi:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-system
    
  18. Jika log berisi string listening on: :9877, berarti konfigurasi telah selesai. Jika tidak, minta bantuan pemecahan masalah.

31.1.3. Verifikasi konfigurasi

Ikuti langkah-langkah berikut untuk memverifikasi bahwa konfigurasi berhasil:

  1. Buka URL antarmuka web ServiceNow:

    https://support.gdchservices.GDC_URL/navpage.do
    

    Ganti GDC_URL dengan URL organisasi Anda di Google Distributed Cloud (GDC) air-gapped.

  2. Buka halaman Service Desk > Incidents.

  3. Periksa apakah ada insiden dengan deskripsi singkat IgnoreThisAlwaysFiringAlert untuk setiap organisasi di semesta GDC.

  4. Pastikan kolom berikut diisi dalam insiden:

    • Angka
    • Prioritas
    • Penelepon
    • Kode komponen
    • ID Zona
    • Status insiden
    • ID Organisasi
    • ID Zona
    • Deskripsi singkat
    • Deskripsi (harus berisi sidik jari)