Tingkatkan kinerja operasional dengan mengaktifkan Amazon DevOps Guru di beberapa Wilayah AWS, akun, dan OUs dengan AWS CDK - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tingkatkan kinerja operasional dengan mengaktifkan Amazon DevOps Guru di beberapa Wilayah AWS, akun, dan OUs dengan AWS CDK

Dr. Rahul Sharad Gaikwad, Amazon Web Services

Ringkasan

Pola ini menunjukkan langkah-langkah untuk mengaktifkan layanan Amazon DevOps Guru di beberapa Wilayah, akun, dan unit organisasi () Amazon Web Services (AWSOUs) dengan menggunakan AWS Cloud Development Kit (AWS CDK) di. TypeScript Anda dapat menggunakan tumpukan AWS CDK untuk menerapkan CloudFormation StackSets AWS dari akun AWS administrator (utama) untuk mengaktifkan DevOps Amazon Guru di beberapa akun, alih-alih masuk ke setiap akun dan DevOps mengaktifkan Guru satu per satu untuk setiap akun.

Amazon DevOps Guru menyediakan fitur operasi kecerdasan buatan (AIOps) untuk membantu Anda meningkatkan ketersediaan aplikasi dan menyelesaikan masalah operasional dengan lebih cepat. DevOps Guru mengurangi upaya manual Anda dengan menerapkan rekomendasi yang didukung pembelajaran mesin (ML), tanpa memerlukan keahlian ML apa pun. DevOps Guru menganalisis sumber daya dan data operasional Anda. Jika mendeteksi anomali apa pun, ia menyediakan metrik, peristiwa, dan rekomendasi untuk membantu Anda mengatasi masalah tersebut.

Pola ini menjelaskan tiga opsi penerapan untuk mengaktifkan Amazon DevOps Guru:

  • Untuk semua sumber daya tumpukan di beberapa akun dan Wilayah

  • Untuk semua sumber daya tumpukan OUs

  • Untuk sumber daya tumpukan tertentu di beberapa akun dan Wilayah

Prasyarat dan batasan

Prasyarat

Versi produk

  • AWS CDK Toolkit versi 1.107.0 atau yang lebih baru

  • npm versi 7.9.0 atau yang lebih baru

  • Node.js versi 15.3.0 atau yang lebih baru

Arsitektur

Teknologi

Arsitektur untuk pola ini mencakup layanan berikut:

Tumpukan AWS CDK

Pola ini menggunakan tumpukan AWS CDK berikut: 

  • CdkStackSetAdminRole— Membuat peran administrator AWS Identity and Access management (IAM) untuk membangun hubungan kepercayaan antara administrator dan akun target.

  • CdkStackSetExecRole— Membuat peran IAM untuk mempercayai akun administrator.

  • CdkDevopsGuruStackMultiAccReg— Mengaktifkan DevOps Guru di beberapa Wilayah AWS dan akun untuk semua tumpukan, dan menyiapkan notifikasi Amazon Simple Notification Service (Amazon SNS).

  • CdkDevopsGuruStackMultiAccRegSpecStacks— Mengaktifkan DevOps Guru di beberapa Wilayah AWS dan akun untuk tumpukan tertentu, dan menyiapkan notifikasi Amazon SNS.

  • CdkDevopsguruStackOrgUnit— Mengaktifkan DevOps Guru di seluruh OUs, dan mengatur notifikasi Amazon SNS. 

  • CdkInfrastructureStack— Menyebarkan komponen aplikasi tanpa server sampel seperti API Gateway, Lambda, dan DynamoDB di akun administrator untuk menunjukkan injeksi kesalahan dan pembuatan wawasan.

Contoh arsitektur aplikasi

Diagram berikut menggambarkan arsitektur aplikasi tanpa server sampel yang telah digunakan di beberapa akun dan Wilayah. Pola ini menggunakan akun administrator untuk menerapkan semua tumpukan AWS CDK. Ini juga menggunakan akun administrator sebagai salah satu akun target untuk mengatur DevOps Guru.

  1. Ketika DevOps Guru diaktifkan, pertama-tama ini mendasarkan perilaku setiap sumber daya dan kemudian menyerap data operasional dari CloudWatch metrik yang dijual.

  2. Jika mendeteksi anomali, itu berkorelasi dengan peristiwa dari CloudTrail, dan menghasilkan wawasan.

  3. Wawasan memberikan urutan peristiwa yang berkorelasi bersama dengan rekomendasi yang ditentukan untuk memungkinkan operator mengidentifikasi sumber daya pelakunya.

  4. Amazon SNS mengirimkan pesan notifikasi ke operator.

Contoh aplikasi tanpa server yang telah digunakan di beberapa akun dan Wilayah.

Otomatisasi dan skala

GitHub Repositori yang disediakan dengan pola ini menggunakan AWS CDK sebagai alat infrastruktur sebagai kode (IAc) untuk membuat konfigurasi untuk arsitektur ini. AWS CDK membantu Anda mengatur sumber daya dan mengaktifkan Guru DevOps di beberapa akun AWS, Wilayah, dan. OUs

Alat

Layanan AWS

  • AWS CDK — AWS Cloud Development Kit (AWS CDK) membantu Anda mendefinisikan infrastruktur cloud Anda sebagai kode dalam salah satu dari lima bahasa pemrograman yang didukung: TypeScript,, JavaScript Python, Java, dan C#.

  • AWS CLI — AWS Command Line Interface (AWS CLI) Command Line Interface (AWS CLI) adalah alat terpadu yang menyediakan antarmuka baris perintah yang konsisten untuk berinteraksi dengan layanan dan sumber daya AWS.

Kode

Kode sumber untuk pola ini tersedia di GitHub, di repositori Sampel CDK DevOps Guru Amazon. Kode AWS CDK ditulis dalam TypeScript. Untuk mengkloning dan menggunakan repositori, ikuti instruksi di bagian selanjutnya.

penting

Beberapa cerita dalam pola ini termasuk contoh perintah AWS CDK dan AWS CLI yang diformat untuk Unix, Linux, dan macOS. Untuk Windows, ganti karakter kelanjutan garis miring terbalik (\) di akhir setiap baris dengan tanda sisipan (^).

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan profil bernama AWS.

Siapkan profil bernama AWS Anda sebagai berikut untuk menerapkan tumpukan di lingkungan multi-akun.

Untuk akun administrator:

$aws configure --profile administrator AWS Access Key ID [****]: <your-administrator-access-key-ID> AWS Secret Access Key [****]: <your-administrator-secret-access-key> Default region name [None]: <your-administrator-region> Default output format [None]: json

Untuk akun target:

$aws configure --profile target AWS Access Key ID [****: <your-target-access-key-ID> AWS Secret Access Key [****]: <your-target-secret-access-key> Default region name [None]: <your-target-region> Default output format [None]: json

Untuk informasi selengkapnya, lihat Menggunakan profil bernama dalam dokumentasi AWS CLI.

DevOps insinyur

Verifikasi konfigurasi profil AWS.

(Opsional) Anda dapat memverifikasi konfigurasi profil AWS di config file credentials dan dengan mengikuti petunjuk di Setel dan melihat pengaturan konfigurasi dalam dokumentasi AWS CLI.

DevOps insinyur

Verifikasi versi AWS CDK.

Verifikasi versi AWS CDK Toolkit dengan menjalankan perintah berikut:

$cdk --version

Pola ini membutuhkan versi 1.107.0 atau yang lebih baru. Jika Anda memiliki AWS CDK versi sebelumnya, ikuti petunjuk dalam dokumentasi AWS CDK untuk memperbaruinya.

DevOps insinyur

Kloning kode proyek.

Kloning GitHub repositori untuk pola ini dengan menggunakan perintah:

$git clone https://github.com/aws-samples/amazon-devopsguru-cdk-samples.git
DevOps insinyur

Instal dependensi paket dan kompilasi file. TypeScript

Instal dependensi paket dan kompilasi TypeScript file dengan menjalankan perintah berikut:

$cd amazon-devopsguru-cdk-samples $npm install $npm fund

Perintah ini menginstal semua paket dari repositori sampel.

penting

Jika Anda mendapatkan kesalahan tentang paket yang hilang, gunakan salah satu perintah berikut:

$npm ci

— atau —

$npm install -g @aws-cdk/<package-name>

Anda dapat menemukan daftar nama dan versi paket di Dependencies bagian /amazon-devopsguru-cdk-samples/package.json file. Untuk informasi selengkapnya, lihat npm ci dan npm install di dokumentasi npm.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan alamat email untuk notifikasi Amazon SNS.

Ikuti langkah-langkah berikut untuk memberikan alamat email untuk notifikasi Amazon SNS:

  1. Edit file /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-multi-acc-reg-stack.ts dan/amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-org-uni-stack.ts.

  2. Di Subscription bagianDevOpsGuruTopic, perbarui Endpoint parameter dengan alamat email Anda.

  3. Simpan dan tutup file.

DevOps insinyur

Membangun kode proyek.

Buat kode proyek dan sintesis tumpukan dengan menjalankan perintah:

npm run build && cdk synth

Anda akan melihat output yang serupa dengan yang berikut: 

$npm run build && cdk synth > cdk-devopsguru@0.1.0 build > tsc Successfully synthesized to ~/amazon-devopsguru-cdk-samples/cdk.out Supply a stack id (CdkDevopsGuruStackMultiAccReg,CdkDevopsGuruStackMultiAccRegSpecStacks, CdkDevopsguruStackOrgUnit, CdkInfrastructureStack, CdkStackSetAdminRole, CdkStackSetExecRole) to display its template.

Untuk informasi dan langkah selengkapnya, lihat aplikasi AWS CDK pertama Anda di dokumentasi AWS CDK.

DevOps insinyur

Buat daftar tumpukan AWS CDK.

Jalankan perintah berikut untuk mencantumkan semua tumpukan AWS CDK:

$cdk list

Perintah menampilkan daftar berikut:

CdkDevopsGuruStackMultiAccReg CdkDevopsGuruStackMultiAccRegSpecStacks CdkDevopsguruStackOrgUnit CdkInfrastructureStack CdkStackSetAdminRole CdkStackSetExecRole
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menerapkan tumpukan AWS CDK untuk membuat peran IAM.

Pola ini menggunakan AWS CloudFormation StackSets untuk melakukan operasi tumpukan di beberapa akun. Jika Anda membuat kumpulan tumpukan pertama, Anda harus membuat peran IAM berikut untuk menyiapkan izin yang diperlukan di akun AWS Anda:

  • AWSCloudFormationStackSetAdministrationRole

  • AWSCloudFormationStackSetExecutionRole

catatan

Peran harus memiliki nama-nama yang tepat ini.

  1. Buat AWSCloudFormationStackSetAdministrationRole peran IAM di akun administrator (primer) dengan menjalankan perintah CLI berikut:

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Buat AWSCloudFormationStackSetExecutionRole peran IAM di semua akun target tempat Anda ingin menjalankan instance tumpukan. Untuk membuat peran ini, jalankan perintah CLI ini:

    $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile administrator   $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile target

Untuk informasi selengkapnya, lihat Memberikan izin yang dikelola sendiri dalam dokumentasi CloudFormation AWS.

DevOps insinyur

Terapkan tumpukan AWS CDK untuk mengaktifkan DevOps Guru di beberapa akun.

CdkDevopsGuruStackMultiAccRegTumpukan AWS CDK membuat kumpulan tumpukan untuk menerapkan instance tumpukan di beberapa akun dan Wilayah. Untuk menyebarkan tumpukan, jalankan perintah CLI berikut dengan parameter yang ditentukan:

$cdk deploy CdkDevopsGuruStackMultiAccReg \ --profile administrator \ --parameters AdministratorAccountId=<administrator-account-ID> \ --parameters TargetAccountId=<target-account-ID> \ --parameters RegionIds="<region-1>,<region-2>"

Saat ini Amazon DevOps Guru tersedia di Wilayah AWS yang tercantum dalam FAQ DevOps Guru.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Ekstrak OU IDs.

Di konsol AWS Organizations, identifikasi unit organisasi tempat Anda ingin mengaktifkan DevOps Guru. IDs

DevOps insinyur

Aktifkan izin yang dikelola layanan untuk. OUs

Jika Anda menggunakan AWS Organizations untuk manajemen akun, Anda harus memberikan izin yang dikelola layanan untuk mengaktifkan Guru. DevOps Alih-alih membuat peran IAM secara manual, gunakan akses tepercaya berbasis organisasi dan peran terkait layanan (). SLRs

DevOps insinyur

Terapkan tumpukan AWS CDK untuk mengaktifkan DevOps Guru di seluruh. OUs

CdkDevopsguruStackOrgUnitTumpukan AWS CDK memungkinkan layanan DevOps Guru di seluruh OUs. Untuk menyebarkan tumpukan, jalankan perintah berikut dengan parameter yang ditentukan:

$cdk deploy CdkDevopsguruStackOrgUnit \ --profile administrator \ --parameters RegionIds="<region-1>,<region-2>" \ --parameters OrganizationalUnitIds="<OU-1>,<OU-2>"
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menerapkan tumpukan AWS CDK untuk membuat peran IAM.

Jika Anda belum membuat peran IAM yang diperlukan yang ditampilkan di opsi pertama, lakukan itu terlebih dahulu:

  1. Buat AWSCloudFormationStackSetAdministrationRole peran IAM di akun administrator (primer) dengan menjalankan perintah CLI berikut:

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Buat AWSCloudFormationStackSetExecutionRole peran IAM di semua akun target tempat Anda ingin menjalankan instance tumpukan. Untuk membuat peran ini, jalankan perintah CLI:

    $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile administrator $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile target

Untuk informasi selengkapnya, lihat Memberikan izin yang dikelola sendiri dalam dokumentasi CloudFormation AWS.

DevOps insinyur

Hapus tumpukan yang ada.

Jika Anda sudah menggunakan opsi pertama untuk mengaktifkan DevOps Guru untuk semua sumber daya tumpukan, Anda dapat menghapus tumpukan lama dengan menggunakan perintah berikut:

$cdk destroy CdkDevopsGuruStackMultiAccReg --profile administrator

Atau, Anda dapat mengubah  RegionIds parameter saat menerapkan ulang tumpukan untuk menghindari kesalahan Stacks already exist.

DevOps insinyur

Perbarui tumpukan AWS CDK dengan daftar tumpukan.

  1. Edit file /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-multi-acc-reg-spec-stack.ts

  2. Di bawah ResourcesCloudFormation,StackNames,, daftar tumpukan yang ingin Anda aktifkan DevOps Guru. Untuk tujuan demonstrasi, parameter menentukan CdkInfrastructureStack tumpukan, tetapi Anda dapat mengedit entri ini berdasarkan kebutuhan Anda.

  3. Simpan dan tutup file .

  4. Untuk mensintesis dan memperbarui template tumpukan, jalankan:

     $cdk synth
Insinyur data

Terapkan tumpukan AWS CDK untuk mengaktifkan DevOps Guru untuk sumber daya tumpukan tertentu di beberapa akun.

CdkDevopsGuruStackMultiAccRegSpecStacksTumpukan AWS CDK memungkinkan DevOps Guru untuk sumber daya tumpukan tertentu di beberapa akun. Untuk menyebarkan tumpukan, jalankan perintah berikut:

$cdk deploy CdkDevopsGuruStackMultiAccRegSpecStacks \ --profile administrator \ --parameters AdministratorAccountId=<administrator-account-ID> \ --parameters TargetAccountId=<target-account-ID> \ --parameters RegionIds="<region-1>,<region-2>"
catatan

Jika sebelumnya Anda menerapkan tumpukan ini untuk opsi 1, ubah RegionIds parameter (pastikan untuk memilih dari Wilayah yang tersedia) untuk menghindari kesalahan Stacks sudah ada.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menerapkan contoh tumpukan infrastruktur tanpa server.

CdkInfrastructureStackTumpukan AWS CDK menerapkan komponen tanpa server seperti API Gateway, Lambda, dan tabel DynamoDB untuk mendemonstrasikan wawasan Guru. DevOps Untuk menyebarkan tumpukan, jalankan perintah berikut: 

$cdk deploy CdkInfrastructureStack --profile administrator
DevOps insinyur

Masukkan catatan sampel di DynamoDB.

Jalankan perintah berikut untuk mengisi tabel DynamoDB dengan catatan sampel. Berikan jalur yang benar untuk populate-shops-dynamodb-table.json skrip.

$aws dynamodb batch-write-item \ --request-items file://scripts/populate-shops-dynamodb-table.json \ --profile administrator

Perintah menampilkan output berikut:

{ "UnprocessedItems": {} }
DevOps insinyur

Verifikasi catatan yang dimasukkan di DynamoDB.

Untuk memverifikasi bahwa tabel DynamoDB menyertakan catatan sampel dari populate-shops-dynamodb-table.json file, akses URL untuk ListRestApiEndpointMonitorOperator API, yang diterbitkan sebagai output dari tumpukan AWS CDK. Anda juga dapat menemukan URL ini di tab Output CloudFormation konsol AWS untuk CdkInfrastructureStack tumpukan. Output AWS CDK akan terlihat mirip dengan berikut ini:

CdkInfrastructureStack.CreateRestApiMonitorOperatorEndpointD1D00045 = https://oure17c5vob.execute-api.<your-region>.amazonaws.com/prod/ CdkInfrastructureStack.ListRestApiMonitorOperatorEndpointABBDB8D8 = https://cdff8icfrn4.execute-api.<your-region>.amazonaws.com/prod/
DevOps insinyur

Tunggu sumber daya untuk menyelesaikan baselining.

Tumpukan tanpa server ini memiliki beberapa sumber daya. Kami menyarankan Anda menunggu selama 2 jam sebelum Anda melakukan langkah selanjutnya. Jika Anda menerapkan tumpukan ini di lingkungan produksi, mungkin diperlukan waktu hingga 24 jam untuk menyelesaikan baselining, tergantung pada jumlah sumber daya yang Anda pilih untuk dipantau di Guru. DevOps

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Perbarui tumpukan infrastruktur AWS CDK.

Untuk mencoba wawasan DevOps Guru, Anda dapat membuat beberapa perubahan konfigurasi untuk mereproduksi masalah operasional yang khas.

  1. Edit file /amazon-devopsguru-cdk-samples/lib/infrastructure-stack.ts

  2. Pada DDB Table bagian ini, ubah kapasitas baca untuk tabel DynamoDB dari 5 menjadi 1.

  3. Simpan dan tutup file .

  4. Jalankan perintah berikut untuk mensintesis dan menerapkan tumpukan infrastruktur AWS CDK yang diperbarui:

    $cdk synth $cdk deploy CdkInfrastructureStack --profile administrator
DevOps insinyur

Menyuntikkan permintaan HTTP pada API.

Menyuntikkan lalu lintas masuk dalam bentuk permintaan HTTP pada API: ListRestApiMonitorOperatorEndpointxxxx

  1. Edit skrip Python. /amazon-devopsguru-cdk-samples/scripts/sendAPIRequest.py

  2. Perbarui url variabel dengan tautan API untukListRestApiMonitorOperatorEndpointxxxx. Anda dapat menemukan URL ini di output perintah penerapan AWS CDK atau di konsol AWS Cloudformation, di tab Output untuk tumpukan.

  3. Simpan dan tutup file .

  4. Jalankan skrip Python dengan menggunakan perintah:

    $python sendAPIRequest.py
  5. Pastikan Anda mendapatkan kode status 200.

  6. Anda mungkin perlu menjalankan skrip melalui beberapa (lebih disukai empat) terminal untuk menyuntikkan lalu lintas dengan kecepatan tinggi.

  7. Setelah skrip berjalan sekitar 10 menit dalam satu lingkaran, Anda dapat melihat wawasan operasional di konsol DevOps Guru.

DevOps insinyur

Tinjau wawasan DevOps Guru.

Dalam kondisi standar, dasbor DevOps Guru menampilkan nol di penghitung wawasan yang sedang berlangsung. Jika mendeteksi anomali, itu menimbulkan peringatan dalam bentuk wawasan. Di panel navigasi, pilih Wawasan untuk melihat detail anomali, termasuk ikhtisar, metrik agregat, peristiwa yang relevan, dan rekomendasi. Untuk informasi selengkapnya tentang meninjau wawasan, lihat Mendapatkan wawasan operasional dengan menggunakan posting blog AIOps Amazon DevOps Guru.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Bersihkan dan hapus sumber daya.

Setelah Anda menelusuri pola ini, Anda harus menghapus sumber daya yang Anda buat untuk menghindari biaya lebih lanjut. Jalankan perintah ini:

$cdk destroy CdkDevopsGuruStackMultiAccReg --profile administrator $cdk destroy CdkDevopsguruStackOrgUnit --profile administrator $cdk destroy CdkDevopsGuruStackMultiAccRegSpecStacks --profile administrator $cdk destroy CdkInfrastructureStack --profile administrator $cdk destroy CdkStackSetAdminRole --profile administrator $cdk destroy CdkStackSetExecRole --profile administrator $cdk destroy CdkStackSetExecRole --profile target
DevOps insinyur

Sumber daya terkait