mackerel으로 인프라를 감시해보자 – 2(서버 감시하기)

매커렐으로 서버의 호스트 등록부터 경보 메시지의 테스트까지 해보는 글을 적은 블로그입니다
2021.08.03

지금부터 매커렐을 이용하여 서버를 감시하는 방법을 알아보겠습니다.
이번 글에선 서버의 호스트 등록부터 경보 메시지의 테스트하는 방법을 작성하였습니다.
글이 길어 보이지만 작업 내용 자체는 간단하니 따라 해보시길 바랍니다.
서버 이외의 호스트 등록과 로그 감시, 이 외의 팁 등은 다음 글에 작성합니다.
가입이나 언어 변경 등은 지난번 글을 참고해주세요.

사용해보기

도입하고 사용하는 데에는 다음과 같은 순서로 진행됩니다.

  1. 오거니제이션 등록
  2. 호스트 등록
  3. 서비스 작성
  4. 롤 작성
  5. 모니터 작성
  6. 등록한 호스트에 롤을 적용
  7. 경보 메시지 대상 추가

매커렐에서도 사용 가이드를 볼 수 있습니다.
어떤 화면에서도 위쪽 빨간 박스의 로고를 누르면 대시보드로 돌아갈 수 있습니다.
그리고 대시보드의 왼쪽에 있는 [Start Up Guide]를 누르면 이미지와 같이 가이드와 현재 어느 단계까지 했는지 알 수 있습니다.

가입한 후 오거니제이션을 바로 작성했기 때문에 호스트를 등록하는 단계부터 시작하겠습니다.

시연 환경

AWS EC2와 RDS를 감시해보도록 하겠습니다.
EC2의 OS는 Ubuntu 20.04.2.0 LTS를 사용하도록 하겠습니다.
EC2를 작성하는 방법은 본 글에서 설명하지 않습니다.

호스트 등록하기

매커렐에서 호스트는 "시스템을 구성하는 가장 작은 단위"입니다. 물리적 서버, 가상 서버 또는 관리 서비스일 수도 있습니다. -공식 문서

2번째 단계인 [Register a new Host]를 클릭하거나 왼쪽 사이드바의 [Hosts] 탭 에서 호스트 화면으로 이동합니다.
화면의 [Register New Host]를 눌러서 호스트를 등록합니다.

서버의 호스트를 등록하는 경우, 등록하려는 OS를 클릭하면 매커렐 에이전트를 설치하는 스크립트가 표시됩니다. 저는 우분투로 해보겠습니다.

설치 후 sudo systemctl start mackerel-agent로 에이전트를 실행해줍니다.
혹시 wget/curl 등을 사용할 수 없는 경우 apt 나 dpkg로도 설치할 수 있습니다.
공식 문서의 각 OS별 인스톨 방법을 참고해주세요.
스크립트를 실행하고 사이드바의 [Hosts]를 클릭해보면 이미지와 같이 호스트가 추가된 화면을 볼 수 있습니다.

설치된 에이전트를 삭제하면 호스트 등록이 삭제됩니다 호스트가 추가된 것을 확인했다면 다음으로 서비스를 생성하겠습니다.

서비스 생성하기

각 서버나 데이터베이스를 호스트라고 한다면 호스트를 묶어서 [서비스]라고 하는 유닛으로 관리합니다.

감시 내용을 실질적으로 설정하는 유닛이 아니기 때문에 저 같은 경우엔 어플리케이션과 웹 서비스를 나누어서 관리하는데 사용하였습니다.
사이드바의 [Services]를 눌러 이동하여 오른쪽 위의 [New Service]를 눌러 서비스를 생성합니다.

서비스 생성은 간단하게 이름과 메모를 입력할 수 있습니다. 이름은 필수이지만 메모는 자유입니다.
저는 메모에 각 호스트의 특이 사항이나 특별히 신경 쓸 필요가 있는 매트릭스의 내용을 적어서 사용하고 있습니다. 메모는 언제나 변경할 수 있습니다.

생성 후 사이드바의 [Services]의 밑에 생성한 서비스가 추가된 것을 확인할 수 있습니다.
서비스의 삭제는 해당 서비스의 상단에 있는 [Settings]에서 삭제할 수 있습니다.
생성한 서비스를 눌러 내용을 확인해 봅시다. 문제없이 생성할 수 있었다면 이어서 롤을 작성하겠습니다.

롤 생성하기

서비스가 호스트의 집단을 다루는 유닛이라면 롤은 감시 내용을 설정한 모니터를 관리하는 유닛입니다.
각 호스트는 적용된 롤의 모니터를 기준으로 임계치를 판단하고 경보를 발생시킵니다.

생성한 서비스에서 오른쪽 위의 [New Role]을 눌러 롤을 생성합니다.

서비스와 마찬가지로 이름은 필수이지만 메모는 자유입니다.

작성 후 서비스 화면에 롤이 추가된 것을 확인할 수 있습니다.

롤의 삭제는 적용된 서비스의 상단에 있는 [Settings]에서 [Roles]탭에서 해당 롤 [Edit]에서 삭제할 수 있습니다.
문제없이 작성하였다면 실질적으로 감시 내용인 모니터를 생성하겠습니다.

모니터 생성하기

모니터는 감시 내용을 설정합니다.
생성한 모니터링은 복수의 호스트에 적용할 수 있습니다.

사이드바의 [Monitors]에서 [New Monitors]로 생성합니다.
가장 먼저 이미지와 같이 모니터의 종류를 선택합니다.

각 모니터 종류를 간단하게 설명하자면 아래와 같습니다.

  • Host metric monitor
    • 호스트의 지표를 감시합니다
  • Host connectivity monitor
    • 호스트의 연결 상태를 감시합니다
  • Service metric monitor
    • 서비스와 관련된 지표의 평균을 감시합니다
  • External Http monitor
    • Http/Https의 접속 상태를 감시합니다
  • Expression monitor
    • 지표를 식으로 계산하여 값을 감시합니다
  • Anomaly Detection for roles
    • 기계 학습을 통해 과거의 지표를 학습하고, 현재의 지표에 이상 징후가 있는지를 감시합니다
  • Check monitor
    • 지표 및 로그를 감시하여 OK/NG로 감시합니다. 지표가 시각화되지 않습니다

이 중 Host metric monitor를 선택하여 디스크의 사용률을 감시하는 모니터를 생성해보겠습니다.

몇 가지 옵션에 대하여 설명하자면 다음과 같습니다.

  • Metric
    • 감시에 사용할 지표를 선택합니다. 현재 감시할 수 있는 지표만 표시됩니다.
  • Threshold
    • 경보의 기준이 되는 임계치입니다. 보통 warning과 critical의 경보 수신 대상을 다르게 하여 사용합니다.
  • Duration
    • 경보를 판단하는데 사용할 지표의 포인트입니다. 이미지에서는 5로 지정하였기 때문에 지표의 최근 5개 포인트의 평균으로 경보를 판단합니다
  • Max number of attempts before an alert is triggered
    • 임계치를 몇 번 넘으면 경보를 발생할지를 지정합니다
  • Scope refinement
    • 해당 롤을 어떤 서비스 / 롤에 적용할지 선택합니다
  • Notification interval
    • 경보가 해결되기 전에 몇 분마다 반복하여 경보를 발생할 것인지 설정합니다.

따라서 이미지의 설정은

  • Filesystem 지표를 감시하며 70/90% 로 중요도를 나눕니다.
  • 5개 포인트의 평균치로 경보를 판단하며 평균치가 한번이라도 임계치를 넘으면 경보가 발생합니다.
  • 해당 모니터는 ec2-app의 test-app 롤에만 적용합니다.
  • 이름은 check filesystems 입니다.
  • 경보 메시지의 반복은 없습니다.

가 됩니다.
작성 후 서비스를 확인해보면 모니터 목록이 늘었습니다. 하지만 아직 호스트에 롤을 적용하지 않았기 때문에 그래프가 표시되지 않습니다.

이어서 호스트에 롤을 적용해보겠습니다.

등록한 호스트에 롤을 적용

호스트에 롤을 적용하여 설정한 감시가 적용되도록 합니다.

사이드바의 [Hosts]로 이동하여 호스트 목록을 확인합니다.
호스트의 SERVICE:ROLE를 클릭하면 롤을 선택하는 창이 표시됩니다.
이 중 원하는 롤을 선택하여 업데이트하면 호스트의 롤이 변경됩니다.
복수의 롤을 지정하여 하나의 호스트를 여러 서비스에서 참조할 수 있습니다.
설정 후 서비스 목록을 다시 확인해보면 서비스에 호스트가 추가된 것을 확인할 수 있습니다.

AWS의 우분투 AMI를 사용한 경우에는 loop 디스크의 사용률 때문에 설정 후 바로 경보가 발생합니다.
우선은 무시하고 진행해주세요. 디스크의 무시와 로그 감시 등의 설정 파일을 수정은 다음 글에서 설정하겠습니다.
호스트까지 등록을 완료했다면 마지막으로 해당 경보의 수신처를 설정하겠습니다.

경보 메시지 대상 추가

매커렐에서는 다양한 경보 채널(송신처)를 설정할 수 있습니다.
이러한 경보 그룹은 감시할 서비스와 채널을 선택합니다. 설정한 서비스에서 경보가 발생하면 선택한 채널로 메시지가 송신됩니다.
해당 글에선 메일로의 설정만 해보겠습니다.

우선 사이드바의 [Channels]에서 [New Channel/Group]으로 채널을 추가합니다.

notification events로 경보를 발생시킬 이벤트를 지정합니다.
특이한 설정없이 경보를 받을 메일만 지정한 후 생성합니다.

채널을 생성한 후에는 그룹을 생성합니다. 채널과 똑같이 [New Channel/Group]으로 그룹을 추가합니다.
경보를 감시할 서비스와 메시지를 보낼 채널은 선택한 후 생성합니다.

이후 채널 목록에 그룹이 추가된 것을 확인할 수 있습니다.
CPU 사용률을 감시하는 모니터를 생성하여 통지를 테스트해보겠습니다.
기존에 만들었던 디스크 사용률의 warning / critical 의 임계치를 1 으로 변경하여 테스트해도 됩니다.
메일함에 이미지와 같이 메일이 도착했습니다.

이로써 매커렐 화면에서 서버의 감시를 설정하는 방법들을 모두 알아보았습니다.

마치며

간단한 작업들인데 옵션들을 설명하면서 하다보니 의외로 길어졌네요..
아직 RDS의 감시나 로그 감시 등 하지 않은 부분은 다음 글에서 이어서 설정하도록 하겠습니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용의 피드백은 must01940지메일 로 보내주시면 감사드립니다.

관련 글