AWS SDK for PHP를 사용하여 CloudWatch 지표 및 CloudWatchLogs 로그 보내기
6097 단어 PHPCloudWatchLogsCloudWatchAWS
환경
AIM 권한
Amazon CloudWatch 권한 참조을 참조하여 필요한 권한을 부여합니다.
이번에는 강한 권한이 붙어 있었기 때문에 생략했습니다만, 이것들이 필요하다고 생각합니다.
로그는 htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마 존 C ぉ 우도 tch / ぁ st / ぉ gs / 쿠이 ckS 터 C2 엥 s 단세. html # c ぉ 우도 t ch ぉ gs_이 m_로 _p
구현
메트릭은 CloudWatchClient::PutMetricData(array) 이고 로그는 CloudWatchLogs:: putLogEvents(array) 보냅니다.
다만, 각자 생각해야 할 일이 있습니다.
지표의 차원은 무엇입니까?
PutMetricData
의 Parameter Syntax 에 있는 Dimensions
가 수수께끼 파라미터였습니다.$result = $client->putMetricData([
'MetricData' => [ // REQUIRED
[
'Counts' => [<float>, ...],
'Dimensions' => [
[
'Name' => '<string>', // REQUIRED
'Value' => '<string>', // REQUIRED
],
// ...
],
'MetricName' => '<string>', // REQUIRED
'StatisticValues' => [
'Maximum' => <float>, // REQUIRED
'Minimum' => <float>, // REQUIRED
'SampleCount' => <float>, // REQUIRED
'Sum' => <float>, // REQUIRED
],
'StorageResolution' => <integer>,
'Timestamp' => <integer || string || DateTime>,
'Unit' => 'Seconds|Microseconds|Milliseconds|Bytes|Kilobytes|Megabytes|Gigabytes|Terabytes|Bits|Kilobits|Megabits|Gigabits|Terabits|Percent|Count|Bytes/Second|Kilobytes/Second|Megabytes/Second|Gigabytes/Second|Terabytes/Second|Bits/Second|Kilobits/Second|Megabits/Second|Gigabits/Second|Terabits/Second|Count/Second|None',
'Value' => <float>,
'Values' => [<float>, ...],
],
// ...
],
'Namespace' => '<string>', // REQUIRED
]);
CloudWatch의 지표를 선택할 때 공간 다음에 선택한 사람이 지표 이름의 왼쪽에 표시됩니다.
RDS의 차원에서 "DbClusterIdentifier, EngineName"을 선택하면 아래와 같이 표시되고 빨간색 테두리로 둘러싸인 부분이 차원입니다.
이 경우
VolumeBytesUsed
의 값을 전달할 때 Dimensions
를 아래와 같이 지정합니다.'Dimensions' => [
['Name' => 'DbClusterIdentifier', 'Value' => rdsのクラスターメ名],
['Name' => 'EngineName', 'Value' => 'aurora' ]
]
CloudWatchLogs의 putLogEvents 매개 변수 sequenceToken
API 레퍼런스에 쓰여진 대로, 로그 스트림이 비었을 때 이외는 지정하지 않으면 안됩니다.
비어 있지 않은 경우는, 이전의
putLogEvents
의 반환값으로부터 sequenceToken
를 얻어, 다음번의 파라미터에 이용합니다.You must include the sequence token obtained from the response of the previous call. An upload in a newly created log stream does not require a sequence token. You can also get the sequence token using DescribeLogStreams. If you call PutLogEvents twice using the same value for sequenceToken, both calls may be successful, or one may be rejected.
htps : // / cs. 아 ws. 아마존. m / a ws-sdk-php / v3 / api / api-gs-2014-03-28. html # 푸 t ㄉ ゔ
처리로서는 아래와 같습니다.
describeLogStreams
로 로그 스트림 정보를 가져옵니다. 얻은 경우에는 uploadSequenceToken
를 삼가한다. putLogEvens
의 sequenceToken
에 1. 에서 얻어진 uploadSequenceToken
를 설정한다. 얻지 못한 경우는 설정하지 않는다. putLogEvens
가 성공하면, 반환값의 연상 배열로부터 nextSequenceToken
를 취득한다. putLogEvens
의 sequenceToken
에는 3. 의 nextSequenceToken
를 지정한다. putLogEvens
가 성공하면, 반환값의 연상 배열로부터 nextSequenceToken
를 취득한다. 그리고는, 4와 5의 반복.
이를 지키지 않으면
putLogEvents
에서 InvalidSequenceTokenException
가 발생합니다.InvalidSequenceTokenException (client): The given sequenceToken is invalid. The next expected sequenceToken is: 49590143729088555375190966164052711632594785739741365618
이것은 깨달을 때까지 의미가없는 오류였습니다.
Reference
이 문제에 관하여(AWS SDK for PHP를 사용하여 CloudWatch 지표 및 CloudWatchLogs 로그 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akym03/items/7ef91a5656edb32ce825텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)