100 ngày học DevOps (ngày 5) – CloudWatch to Slack Notification

Chúng ta đã đi được tới buổi thứ 5 rồi , hy vọng các bạn dành thời gian cùng mình tham gia hết khóa này nha =)) .

gọi vui là trong thế giới giang hồ Devops thì không ai phủ nhận tầm quan trọng của việc Notification especially trong các trường xảy ra các sự cố liên quan đến hạ tầng như (Server Down/CPU Utilization high…) , Trong bài này mình sẽ hướng dẫn các bạn tích hợp CloudWatch với Slack .

Để thực hiện điều này thì chúng ta cần thực hiện theo những bước bên dưới .

  • Create an AWS Access key and Secret Key
  • Create an IAM Role
  • Deploy the lambda function
  • Create an SNS topic
  • Create a Cloudwatch Alarm

Bước 1 : Create an AWS Access key and Secret Key

Sau khi tạo xong thì bạn nên lưu lại Access Key vs Secret Key để cho lần sau sử dụng .

Bước 2 : Create an IAM Role

  • Bạn tìm đến AWSLambdaBasicExecutRole
  • Đặt tên cho Role name
  • Click on create Role

Bước 3 : Deploy the Lambda Function

Bước 3.1 
git clone https://github.com/assertible/lambda-cloudwatch-slack.git
Cloning into 'lambda-cloudwatch-slack'...
remote: Enumerating objects: 244, done.
remote: Total 244 (delta 0), reused 0 (delta 0), pack-reused 244
Receiving objects: 100% (244/244), 668.48 KiB | 3.56 MiB/s, done.
Resolving deltas: 100% (120/120), done.

Bước 3.2
cd lambda-cloudwatch-slack/

Bước 3.3
cp .env.example .env
  • Bây giờ chúng ta cần thực hiện một số cấu hình tại Slack
  • Di chuyển đến Slack , chọn App và click Add apps
  • Chúng ta search incoming-webhook
  • Nhập tên Channel mà bạn muốn gửi thông báo, đồng thời lưu lại URL Webhook
  • Trong file  .env các bạn thiêt lập cấu hình sau
ENCRYPTED_HOOK_URL= you can use ENCRYPTED_HOOK_URL if you want
UNENCRYPTED_HOOK_URL=Bước 3
AWS_FUNCTION_NAME=cloudwatch-to-slack
AWS_REGION=us-west-2
AWS_ROLE="Bước 2"

You can get AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY here: https://console.aws.amazon.com/iam/home#/users
Click on user -> Security credentials -> Access keys -> Create access key
AWS_ACCESS_KEY_ID=
Bước 1
AWS_SECRET_ACCESS_KEY=
Bước 1

Sau khi chúng thực hiện đầy đủ các bước trên thì tiếp tục chạy npm install .
Nếu bạn nào chưa biết npm thì có thể đọc tại đây

npm install
added 136 packages in 4.039s
╭─────────────────────────────────────╮
│ │
│ Update available 5.6.0 → 5.8.0 │
│ Run npm i -g npm to update │
│ │
╰─────────────────────────────────────╯

và cuối cùng là deploy nó =))

npm run deploy
> lambda-cloudwatch-slack@0.3.0 deploy /cuongnp2/Documents/lambda-cloudwatch-slack
> ./scripts/deploy.sh
Warning!!! You are building on a platform that is not 64-bit Linux (darwin.x64).
If any of your Node dependencies include C-extensions, they may not work as expected in the Lambda environment.
=> Moving files to temporary directory
=> Running npm install --production
=> Zipping deployment package
=> Zipping repo. This might take up to 30 seconds
=> Reading zip file to memory
=> Reading event source file to memory
=> Uploading zip file to AWS Lambda us-west-2 with parameters:
{ FunctionName: 'cloudwatch-to-slack',
Code: { ZipFile: <Buffer 50 4b 03 04 14 00 08 00 08 00 20 10 4a 4e 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 2e 65 6e 76 6d 90 5d 4f 83 30 18 85 ef f9 15 8d bb 5c 18 9b ... > },
Handler: 'index.handler',
Role: 'arn:aws:iam::XXXXXX:role/cloudwatch-to-lambda',
Runtime: 'nodejs8.10',
Description: 'Better Slack notifications for AWS CloudWatch',
MemorySize: 128,
Timeout: 60,
Publish: false,
VpcConfig: { SubnetIds: [], SecurityGroupIds: [] },
Environment: { Variables: { UNENCRYPTED_HOOK_URL: 'https://hooks.slack.com/services/XXXXXXXX' } },
KMSKeyArn: '',
DeadLetterConfig: { TargetArn: null },
TracingConfig: { Mode: null } }
╭─────────────────────────────────────╮
│ │
│ Update available 5.6.0 → 6.7.0 │
│ Run npm i -g npm to update │
│ │
╰─────────────────────────────────────╯

Nếu mọi thứ đều ổn như trên thì bạn đã cấu hình thành công , đên đây bạn sẽ thấy chức năng mới lambda

Bước 4 : Create an SNS topic

  • Tạo Topic
  • Tạo subscription

Bước 5 : Create CloudWatch Alarm

  • Sau đó điền vào tất cả các chi tiết cần thiết .

Tới đây bạn có thể sử dụng tool stress tool để test như bên dưới xem có đúng chưa .

stress --cpu 10 --timeout 300
stress: info: [15259] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd
stress: info: [15259] successful run completed in 300s


Mong các bạn tham gia hành trình này và dành tối thiểu một giờ mỗi ngày trong 100 ngày tiếp theo cho công việc DevOps .
Chúc các bạn Thành công , nếu co thắc mắc gì có thể comment bên dưới nha .

Trả lời

Email của bạn sẽ không được hiển thị công khai.