Datadog 및 Lambda를 사용하여 ElastiCache 작업 알림
14367 단어 AWSSlackdatadogElastiCachetech
개시하다
Amazon ElastiCache에서 를 다시 시작하거나 장애가 발생하면 이벤트로 기록됩니다.
관리 콘솔은
ElastiCache > イベント
에 기록된 이벤트를 다음과 같이 확인할 수 있습니다.이런 엘라스티카치의 활동에 대해 슬라스티카치에게 알리는 방법에 대해 여러 번 시도해 봤기 때문에 기재했다.
Slack 알림 방법
이번에 시도한 방법은 다음과 같은 네 가지가 있다.
메서드
메모
Datadog의 AWS Integration->Datadog Monitor->Slack
통지까지 몇 분 걸린다
ElastiCache -> SNS -> Datadog Monitor -> Slack
- 데이터 dog의 API 키를 처리하기 어렵습니다. - 이벤트를 필터할 수 없습니다.
ElastiCache -> SNS -> Chatbot -> Slack
원래 알릴 수가 없어요.
ElastiCache -> SNS -> Lambda -> Slack
- 즉시 알림 - 이벤트 필터링 가능
Datadog에서 전체를 감시하는 것을 전제로 앞부분의 두 가지 방법은 정보를 데이터dog에 집중시킨다.
후반부의 두 가지 방법은 데이터 집합에 얽매이지 않고 슬랙 알림 방법을 시도하고 있다.
1. Datadog의 AWS Integration->Datadog Monitor->Slack
Datadog의 AWS Integration이 활성화되면 ElastiCache의 활동이 Datadog과 자동으로 협력됩니다.
다음은 Datadog
Monitors > New Monitor > Event
과 선택할 때의 화면으로 ElastiCache의 이벤트를 보여 줍니다.이러한 이벤트를 감지하고 Slack 알림을 실행하려면 Datadog에 다음 새 모니터를 생성합니다.
Match events containing
를 failover
from
를 Amazon ElastiCache
tag
를 source_identifier:{ElastiCacheの名前}
모니터를 제작한 후 검증으로 ElastiCache의 고장 전이가 수동으로 발생한다.
다음은 수동 장애 조치 후 얼마 지나지 않아 관리 콘솔을 통해 확인된 ElastiCache의 활동입니다.
그리고 이 고장 전이 사건은 Datadog의 모니터에 의해 검출되었고 Datadog에서 Slack에 다음과 같이 통지되었습니다.
그러나 ElastiCache의 사건 발생 시간(23:43)과 슬랙의 발언 시간(23:51)을 비교해 보면 슬랙이 통지한 시간은 고장 발생 후 약 8분이라는 것을 알 수 있다.
Datadog의 AWS Integration에서 Elasti Cache의 활동이 자동으로 연합된 것은 사실이지만 Datadog에 대한 반응은 몇 분 정도 걸릴 것 같다.
이에 따라 Datadog의 모니터 테스트도 해당 시간이 지연됐고, 결과 슬랙 알림 시간도 고장 발생 수 분 뒤였다.
2. ElastiCache -> SNS -> Datadog Monitor -> Slack
ElastiCache에서는 파트너의 SNS 이슈를 지정할 수 있으며, SNS를 통해 이벤트를 다른 사람에게 알릴 수 있다.
여기서 ElastiCache의 파트너 SNS의 알림 주소를 Datadog의 종점으로 삼고 Datadog Monitor에서 슬랙을 알립니다.
우선 표준형 SNS 화제를 만들자.
SNS 주제에 대한 액세스 정책은 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Publish",
"Resource": "{自身のSNSトピックARN}",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "{自身のAWSアカウントID}"
}
}
}
]
}
다음은 해당 SNS 주제에 대한 필터링입니다.서브루틴 프로토콜 선택 HTTPS, 끝점 기재Datadog의 공식 문서
https://app.datadoghq.com/intake/webhook/sns?api_key=<API KEY>
https://app.datadoghq.com/account/settings#api에서 데이터 dog의 API 키를 가져옵니다.
결론적으로 엘라스티카치에서 발생한 사건은 SNS를 통해 데이터 독에 반영된다.
다음은 Datadog, 선택
Monitors > New Monitor > Event
할 때의 화면이지만, ElastiCache의 활동이 SNS를 통해 반영되었다는 것을 알 수 있다.Datadog의 모니터로 슬랙 알림을 감지하고 진행하기 위해 Datadog에서 다음과 같은 새로운 모니터를 제작한다.
Match events containing
를 공백으로 설정(공백의 이유는 뒤에 서술)from
를 Amazon SNS
tag
를 topic:{SNSトピックのの名前}
모니터를 제작한 후 재검증으로 수동으로 일라스티카치의 고장이 발생했을 때 Datadog에서 이를 감지하고 슬랙에 다음과 같은 통지를 보냈다.
그러나 이 방법은 SNS 구독의 단점 표시줄에 데이터 독의 API 키를 숨기지 않기 때문에 API 키를 참고할 수 있는 사람을 제한하기에는 적합하지 않다.
또 이번에는 Datadog Monitor가 다음 JSON에서 특정 활동 종류만 걸러내는 방법을 알지 못했다.
{
"ElastiCache:イベント名": "ElastiCache名"
}
따라서 Match events containing
를 빈 칸으로 삼았지만 결과적으로 모든 Elasti Cache 이벤트가 슬랙에 통지되어 실용성이 부족했다.3. ElastiCache -> SNS -> Chatbot -> Slack
이 경로를 통해 슬랙에 알릴 수 없습니다.
AWS Chaatbot은 ElastiCache의 활동을 지원하지 않는 것 같고, Chaatbot의 부분은 후술한 Lambda를 사용해야 한다.
4. ElastiCache -> SNS -> Lambda -> Slack
이 경로에서는 람다의 소스 코드를 관리해야 하지만 문제 없이 슬랙에 알릴 수 있습니다.
다음은 파이썬 람다의 코드 예입니다.이번에는 행사 종류의 축소 처리가 사랑스럽지만, 그런 인코딩을 추가하면 임의의 행사만 알릴 수 있을 것 같습니다.
또한 Slack의 Webhook URL은 환경 변수에서 매개변수 저장소에 미리 저장되어 있습니다.
import boto3
import json
import os
import urllib.request
def lambda_handler(event, context):
ssm = boto3.client('ssm')
ssm_res = ssm.get_parameter(
Name = os.environ['PARAMETER_STORE_PATH_WEBHOOK_URL'],
WithDecryption = True
)
url = ssm_res['Parameter']['Value']
data = {
'text': event['Records'][0]['Sns']['Message']
}
headers = {
'Content-Type': 'application/json',
}
req = urllib.request.Request(url, json.dumps(data).encode(), headers)
with urllib.request.urlopen(req) as res:
res_body = res.read().decode()
print(res_body)
매개변수 스토어를 참조하려면 Lambda에 지정된 IAM 스크롤 막대에 다음 권한을 추가합니다.// 略
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole",
"ssm:GetParameter"
],
"Resource": "*"
}
// 略
Lambda로 코드를 디버깅한 후 ElastiCache의 장애 복구가 수동으로 발생하면 SNS를 통해 시작된 Lambda가 Slack에 대해 다음과 같이 알립니다.(하나의 통지를 통일한 것처럼 보이지만 실제로는 세 번으로 나뉜다.)
ElastiCache의 이벤트 열에 표시된 이벤트 발생 시간과 비교하여 즉시 알릴 수도 있습니다.
끝맺다
이상은 ElastiCache의 이벤트를 Slack에 알리는 여러 가지 검증입니다.
실용성 면에서 마지막으로 소개한
ElastiCache -> SNS -> Lambda -> Slack
가 가장 좋다.이 기사를 참고할 수 있었으면 좋겠어요.
참고 자료
Reference
이 문제에 관하여(Datadog 및 Lambda를 사용하여 ElastiCache 작업 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/shonansurvivors/articles/c75f1dbab59fe5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)