ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cloudwatch 의 로그를 이용해 매트릭 수집하기 (Filter)
    개발/Monitoring 2022. 10. 8. 02:20

    개요

    유저에게 문자등 메세지를 전송하기 위해 벤더사의 에이전트 프로그램을 사용하게 되는데, 이 에이전트의 단위시간당 처리 속도를 알고 싶은 니즈가 생겼다.
    처리 속도를 측정하기 위해선 메트릭을 수집해야하지만, 특정 벤더사가 제공하는 프로그램이기 때문에 직접 코드를 수정하거나 할 수 없다.
    그래서 메트릭 수집을 하는 코드를 심는 대신, 이 에이전트가 남기는 로그를 활용하여 매트릭을 수집하기로 하였다.
    Cloudwatch는 Filter를 통해 특정 로그를 매트릭으로 수집하는 기능을 제공한다. 이 Filter 사용 방법을 정리한다.

    실습

    연습용으로.. 어떤 요청이 종료된 개수를 수집하고 싶다고 가정한다.
    요청이 종료되면 'Finished ~~~' 이런 로그를 남기는데, 해당 로그를 이용해 메트릭을 수집할 것이다.


    1. 로그 그룹 선택 및 매트릭 필터 생성

    우선 Cloudwatch - Logs - Log groups 에서 추출할 로그 그룹을 선택한다.
    그리고 Create metric filter 를 클릭한다.


    2. Define pattern - 필터 패턴을 입력한다.

    입력 후 내가 원하는 결과가 필터링 되는지 패턴을 테스트해볼 수 있다. (Test pattern)

    텍스트만 입력하면 일치하는 텍스트를 포함하는 로그가 필터링된다.
    (참고: Filter and pattern syntax)

    대괄호 [ ] 를 사용하면 특정 패턴을 변수로 뽑아낼 수도 있다.
    (참고: Using metric filters to extract values from space-delimited log events)

    3. Assign metric - 매트릭 정보를 입력한다

    Filter name 은 매트릭에 대한 정보가 아닌, 지금 설정하는 필터를 식별하기 위한 이름이다.

    Metric namespace : 여러 서비스가 있을때 같은 이름의 필터나 매트릭 등이 생길 수 있으니 이를 구분하기 위한 것이다. 소속팀, 서비스 등으로 구분해주면 될 것 같다.
    Metric name : 수집할 매트릭의 이름이다.
    Metric value : 수집했을 때 나타나는 숫자 값이다.

    • 특정 값을 단순히 카운트 하는 목적이라면 이 값이 중요하진 않으므로 그냥 1을 입력하면 된다.
      값이 몇이든 매트릭은 1개씩 쌓일 것이고 이렇게 쌓이 개수만 알면 된다. (ex. 요청 성공/실패의 개수, 404 응답의 개수 등..)
      이 경우는 필터 패턴에서 변수를 뽑아내지 않고, 단순 텍스트만 입력하게 될 것이다.
    • 구체적인 값이 필요하다면 필터 패턴에서 변수를 추출해내고, 그 변수를 입력해주면 될 것이다. (ex. 전송된 byte, 상품 개수 등..)

    Grafana 대시보드 구성

    datasource 를 Cloudwatch로 설정하고 필터에 입력한 정보를 쿼리에도 입력하면 된다.
    예제에서는 '종료된 요청의 개수'를 측정하는게 목표였으니, 수집된 매트릭의 합을 보기 위해서 'Stats = Sum' 으로 설정하였다.

    수집된 매트릭을 그래프로 이렇게 확인할 수 있다~


    참고

    https://docs.amazonaws.cn/en_us/AmazonCloudWatch/latest/logs/MonitoringLogData.html
    https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric

    댓글

Designed by Tistory.