AWS CloudWatch Iog Insights의 도움으로 서버 성능 보고서
6328 단어 cloudwatchawstoolinglog
Aws CloudWatch는 AWS 및 배포된 모든 애플리케이션을 위한 로깅 서비스입니다. 모든 로그는 로그 그룹 및 스트림이라는 2단계 계층 구조를 통해 저장 및 액세스됩니다. 이러한 로그는 서로 다른 지역에 대해 별도로 시스템 파일 및 폴더로 CloudWatch에 저장됩니다. 따라서 로그에 대한 전역 보기가 없으며 지역 기반입니다. 이러한 모든 로그는 JSON, CLF(공통 로그 형식) 또는 기타 원하는 형식으로 형식화할 수 있습니다. CLF는 AWS CloudWatch log Insights에서 보고서를 생성하는 데 사용됩니다.
CloudWatch 로그 인사이트
CloudWatch Logs Insights는 로그 데이터를 시각화하고 분석하는 대화형 로그 쿼리 도구입니다. 이 시스템에서 쿼리는 필터링할 수 있으며 로그 데이터 집계를 위해 그래프 또는 테이블을 생성하여 CloudWatch 대시보드에 시각화하고 게시할 수 있습니다.
CloudWatch 대시보드
AWS CloudWatch 대시보드는 단일 위치에서 리소스를 모니터링하도록 수정할 수 있는 사용자 지정 가능한 페이지입니다.
CloudWatch Log Insights를 사용하여 데이터를 추출하고 그래프를 그리는 방법.
처음에는 요구 사항과 그 목적을 명확하게 시각화해야 합니다. 내 프로젝트에서 정의된 시간 간격 동안 단일 서버에서 수신된 요청 수와 관련하여 각 API 및 SQL 쿼리의 평균, 최소 및 최대 대기 시간에 대한 데이터를 추출하고 동일한 그래프를 그려야 합니다. 프로젝트는 또한 오류/예외 메시지를 표시해야 하며 API와 관련하여 서버에서 계산하고 각 API의 요청, 성공적으로 실행 및 오류/예외를 표시해야 합니다.
요구 사항을 충족하려면 아래 설명된 대로 백엔드 서버에 사용자 지정 로그를 추가해야 합니다.
//Backend service name.
String serviceName="ContentService";
//Logs as API hits.
public void ApiStartLog(String apiName){
logger.info("service {} {} START Api ",serviceName,apiName);
}
//Logs as API successfully executed with its latency.
public void ApiEndLog(String apiName,long latency){
logger.info("service {} {} END Api latency {} ms.",serviceName,apiName,latency);
}
//Logs as API have some exception.
public void ApiExceptionLog(String apiName,String error){
logger.error("service {} {} EXCEPTION : {}",serviceName,apiName,error);
}
//Logs as SQL Query hits.
public void QueryStartLog(String queryName){
logger.info("service {} {} START Query ",serviceName,queryName);
}
//Logs as SQL Query ends with its latency.
public void QueryEndLog(String queryName,long latency){
logger.info("service {} {} END Query latency {} ms.",serviceName,queryName,latency);
}
위의 로그에서 "service","Api","Query"와 같은 텍스트가 추가되어 모든 로그를 필터링하고 결과에서 Api의 로그와 Query의 로그를 별도로 분류합니다. 위의 로그에서 "START","END","EXCEPTION"텍스트가 추가되어 해당 상태와 관련하여 로그를 구분합니다. Api/쿼리 이름, 대기 시간 및 serviceName과 같은 동적 값도 위의 로그에 추가됩니다. 다른 백엔드 서비스를 구별하기 위해 serviceName이 추가됩니다.
필드에는 로그 데이터가 포함되어 있으므로 그래프와 테이블을 구성하는 데 필요했습니다.
fields @message
| filter @message like "END"
| filter @message like "latency"
|parse @message "service * * * * latency * " as @service,@request,@status,@type,@latency
fields @message
| filter @message like "END"
| filter @message like "latency"
|parse @message "service * * * * latency * " as @service,@request,@status,@type,@latency
|stats avg(@latency) as avgg,max(@latency),min(@latency),count(@request) by @request,@type
|sort avgg desc
이제 평균 대기 시간으로 결과를 정렬합니다.
여기에서 "시각화"를 클릭하고 "막대 그래프"를 선택하여 이 테이블의 그래프를 확인하십시오.
이제 백엔드 서비스의 각 API/쿼리의 평균, 최소 및 최대 대기 시간을 보여주는 그래프가 있습니다.
이 쿼리를 사용하여 오류/예외 로그에 대한 테이블을 만들 수도 있습니다.
filter (
@message like " EXCEPTION :" or @message like " ERROR :")
|parse @message "service * * * : *" as @service,@function,@type,@msg
|stats count(*) as Count by @service,@type,@function,@msg
|sort Count desc
그리고 결국 아래와 같이 단일 페이지 CloudWatch 대시보드에 모든 리소스를 추가할 수 있습니다.
참조:
https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html
https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html
Reference
이 문제에 관하여(AWS CloudWatch Iog Insights의 도움으로 서버 성능 보고서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hritiksum/server-performance-report-with-cloudwatch-iog-insights-11b7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)