CloudWatch Logs Insights 신입 훈련
16012 단어 AWSCloudWatchLogsInsights
CloudWatch Logs Insights
로그 파일을 감시, 저장 및 액세스할 수 있습니다.
클라우드 감시 로그 Insights 인터랙티브 검색 및 분석 로그 데이터를 사용할 수 있습니다.조회는 조작 문제를 효과적으로 해결할 수 있다.
EC2instance의 Apache access_log와tomcat log를 수집하고 저장하며 AWS 컨트롤러에서 조회 인용과 분석을 할 수 있습니다.
뭐 공부 해요?
구름 파산 무섭지 않아요?
네, 요금표.
https://aws.amazon.com/jp/cloudwatch/pricing/
무료 사용 범위
로그 5GB 데이터(아카이브 캡처, 저장, 로그 Insights 검색 데이터)
양에 따라 요금을 받다
분석(Logs Insights 쿼리)GB당 스캔 데이터 0.0076달러
비용 예제
웹 애플리케이션 액세스 로그 1GB x 30일 = 30GB
CloudWatch 월 비용 = 12.53달러
위쪽은 무료 상자의 5GB입니다.너의 시급시간 맞잖아.
로그 조사는 대부분 최근의 로그만 있으면 이루어지기 때문에 스캔 데이터의 범위를 한정하면 두려워하지 않는다.
보존 기간 1~10년 선택 가능
관리자는 조사 가능한 범위와 비용을 저울에 달아 적당한 시간을 유지한다. 컨트롤러의 변형이라면 최근 한 시간은 스캐닝 범위이기 때문에 두려워할 필요가 없다.
시작 단계
[Run Query]
fields @timestamp, @message
| sort @timestamp desc
| limit 20
대상 로그 그룹의 최신 로그 20줄을 표시합니다.조회는 파이프를 통해 연결되고 간단한 처리를 조립합니다.제이슨이 처리한 제이슨이랑 좀 닮았어요?
아날로그 SQL로 다시 표현하면 이런 느낌이겠죠.
SELECT timestamp_, message_ FROM 'homura/tomcat/current'
ORDER BY timestamp_ DESC
LIMIT 20;
줄의 상세한 상황을 표시하려면 줄의 ▶
을 클릭하십시오.▶ 2 2021-01-23T14:56:02.045+09:00 @40000000600bba7b34e32194 SCIM [HTTP Response Header]:Content-Type=application/scim+json;charset=UTF-8
Field Value
@ingestionTime 1611381366827
@log <account>:homura/tomcat/current
@logStream 101a
@message @40000000600bba7b34e32194 SCIM [HTTP Response Header]:Content-Type=application/scim+json;charset=UTF-8
@timestamp 1611381362045
항목에서 사용할 수 있는 모든 패밀리를 봅니다.@ingestionTime은 CloudWatch Logs에서 로그 이벤트를 수신한 시간을 나타냅니다.
fields
는 로그 원본을 표시하는 문자열입니다. 모든 instance의aws-cloudwatch-agent 설정 파일에서 왔습니다.설정된 변형은 instance-id이지만 AutoScale을 사용하지 않고 같은 소수의 instance를 사용해온 개발, 시험 환경에서
instance의pet-name에서 설정한 것도 있겠지.
두 번째 단계
@logstream
에서도 추가fields
하자.SEVERE/ERROR 로그 확인
500 Internal Server Error 등을 반환했다고 가정하고 로그 조사 연습을 해보십시오.
fields @timestamp, @logStream, @message
| filter @message like /(SEVERE|ERROR)/
| sort @timestamp desc
| limit 10
찾았어요?부합된다면 로그의 검색 범위를 넓혀보세요.초기 값은 과거 1h이므로 3h, 12h입니다.
다시 보면 Custom에서 4week까지 간단하게 지정할 수 있습니다.
히트하면 시간축과 히트수의 직사각형도 나오기 때문에 언제부터, 주파수가 얼마인지 금방 파악할 수 있다.
SEVERE/ERROR 로그 이후의 Stack trace
Exception이 나왔나봐요.이 Stack trace에서 Exception의 발생 장소를 찾습니다.
만약 시작점
@logStream
행이 이렇다면@logStream 101b
@message @40000000600a66f41b958bdc 22-Jan-2021 05:47:22.461 INFO [ajp-nio-8009-exec-9] com.example.servlet.ScimUsersServlet.httpMethod end(69ms)--->HTTP 500 INTERNAL_SERVER_ERROR
@timestamp 1611294447291
fields @timestamp, @logStream, @message
| filter @logStream = "101b"
| filter @timestamp >= 1611294447291
| sort @timestamp asc
| limit 30
ERROR
행과 같은 logStream(같은 instance)ERROR
timsstamp행에 이어 30행ERROR
의 라이브러리나 at javax.
의 중간부품이 아닌 개발, 시험 중인 패키지가 나타나면 이 클래스와 줄 번호부터 원본을 조사할 수 있다.스태킹 궤적이 너무 길면
at org.apache.
행 수를 조정합니다.Export results
잘 주울 수 있다면 콘솔
limit
을 사용하세요.여기 마크다운 결과 붙여.CSV에서 클립을 다운로드할 수도 있습니다.
@timestamp
@logStream
@message
2021-01-22 05:47:27.291
101b
@40000000600a66f41b958bdc22-Jan-2021 05:47:22.461 정보 [ajp-nio-8009-exec-9]com.example.servlet.ScimUsersServlet.httpMethod end(69ms)--->HTTP 500 INTERNAL_SERVER_ERROR
2021-01-22 05:48:46.663
101b
@40000000600a6748232cff4c at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
2021-01-22 05:48:46.663
101b
@40000000600a67482331ae84 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2021-01-22 05:48:46.663
101b
@40000000600a674822dc1474 java.lang.NullPointerException
2021-01-22 05:48:46.663
101b
@40000000600a67482336c734 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2021-01-22 05:48:46.663
101b
@40000000600a6748233e77f4 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
2021-01-22 05:48:46.663
101b
@40000000600a67482343a814 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
2021-01-22 05:48:46.663
101b
@40000000600a674823486ebc at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
2021-01-22 05:48:46.663
101b
@40000000600a674822e1f45c at com.example.common.service.mybatis.MybatisUserServiceImpl.getSystemSqlSession(MybatisUserServiceImpl.java:277)
2021-01-22 05:48:46.663
101b
@40000000600a674822e53c34 at com.example.common.service.mybatis.MybatisUserService3Impl.getUser(MybatisUserService3Impl.java:430)
2021-01-22 05:48:46.663
101b
@40000000600a674822e9f33c at com.example.common.service.mybatis.MybatisUserService3Impl.getUser(MybatisUserService3Impl.java:422)
2021-01-22 05:48:46.663
101b
@40000000600a6748234d4504 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
2021-01-22 05:48:46.663
101b
@40000000600a67482351f43c at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
2021-01-22 05:48:46.663
101b
@40000000600a67482356c2b4 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
2021-01-22 05:48:46.663
101b
@40000000600a6748235da084 at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:486)
2021-01-22 05:48:46.663
101b
@40000000600a674823628284 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
2021-01-22 05:48:46.663
101b
@40000000600a6748236735a4 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
2021-01-22 05:48:46.663
101b
@40000000600a6748236cbbb4 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
2021-01-22 05:48:46.663
101b
@40000000600a674822f009d4 at com.example.documentservice.servlet.documentmanagerservlet.UserService3.login(UserService3.java:1341)
조사 Issue에 바로 이 결과를 붙이면 되는 거죠?
또 슬랙에도 붙이면
Export results
개발 패키지 부분의 단축판만 붙이는 것이 좋다.너무 긴 로그를 붙이면 채널 자체가 읽기 어려워요.@timestamp
@logStream
@message
2021-01-22 05:47:27.291
101b
@40000000600a66f41b958bdc22-Jan-2021 05:47:22.461 정보 [ajp-nio-8009-exec-9]com.example.servlet.ScimUsersServlet.httpMethod end(69ms)--->HTTP 500 INTERNAL_SERVER_ERROR
2021-01-22 05:48:46.663
101b
@40000000600a674822dc1474 java.lang.NullPointerException
2021-01-22 05:48:46.663
101b
@40000000600a674822e1f45c at com.example.common.service.mybatis.MybatisUserServiceImpl.getSystemSqlSession(MybatisUserServiceImpl.java:277)
2021-01-22 05:48:46.663
101b
@40000000600a674822e53c34 at com.example.common.service.mybatis.MybatisUserService3Impl.getUser(MybatisUserService3Impl.java:430)
2021-01-22 05:48:46.663
101b
@40000000600a674822e9f33c at com.example.common.service.mybatis.MybatisUserService3Impl.getUser(MybatisUserService3Impl.java:422)
2021-01-22 05:48:46.663
101b
@40000000600a674822f009d4 at com.example.documentservice.servlet.documentmanagerservlet.UserService3.login(UserService3.java:1341)
어때?ssh login이 grep, less가 로그 조사를 하는 시대는 아니죠?
com.example.*
필드를adhoc로 구조화하는 연습.
Reference
이 문제에 관하여(CloudWatch Logs Insights 신입 훈련), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masudakz/items/367310c1a0024a34804a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)