Mackerel에서 느슨한 Docker 모니터링

4204 단어 감시도커Mackerel

소개



안녕하세요. @blue271828입니다.

어제 12월 19일은 @FukMo10엔지니어가 학생용 기술 인턴을 2년 연속 기획부터 운영까지 했으므로 정리이었습니다. 오늘 12월 20일은, Mackerel을 사용한 Docker의 감시에 대해서 작은 재료를 소개하고 싶습니다.

Docker란?



Docker를 모르는 분들에게 간단히 설명하면 Docker는 Docker, Inc.가 제공하는 경량의 가상 환경인 것으로, 이 가상 환경을 컨테이너라고 부릅니다. 엄밀하게는 VM(가상 머신)과는 다릅니다만, 실행 환경을 그대로 Docker 이미지로서 보존할 수 있으므로, 앱을 간편하게 수중에서 동작 확인하거나, 배포하거나, 무엇인가와 편리하게 이용할 수 있습니다.



Mackerel이란?



Mackerel은 주식회사 하테나가 제공하는 웹 기반 서버 관리 서비스입니다. 모니터링하려는 서버에 Mackerel 에이전트를 설치하면 서버의 상태를 시각화하고 모니터링 할 수 있습니다. 웹 기반 서비스이므로 구축하지 않고 매우 간단하게 운용을 시작할 수 있습니다. 덧붙여서 Mackerel의 이름의 유래는 서버 → 사바 → Mackerel인 것 같습니다.



Docker 모니터링



그런 편리한 Docker와 Mackerel입니다만, 무려 공식적으로 Mackerel 에이전트가 포함된 Docker 이미지가 공개되고 있어 호스트측에의 인스톨 필요없이 사용하기 시작할 수 있습니다. Docker 컨테이너의 메트릭을 얻을 수있는 공식 mackerel-plugin-docker도 포함되어 있으며 구성 파일에 필요한 채우기를하면 쉽게 메트릭 검색이 시작됩니다.

다만, 이쪽 Docker 컨테이너내의 프로세스 감시의 기능이 제공되고 있지 않습니다. 공식 이미지에는 mackerel-check-plugins도 포함되어 있어 프로세스 감시 자체는 실시할 수 있습니다만, Docker의 사양상 Mackerel 컨테이너로부터 다른 컨테이너내의 프로세스를 직접 참조하는 것은 기본적으로는 할 수 없습니다. 조금 곤란한 상황입니다만, 조금 궁리를 하면 컨테이너내의 프로세스 감시도 할 수 있게 됩니다. 여기에서는 그 방법을 소개하고 싶습니다.

방법 1: 컨테이너의 프로세스를 Docker 명령으로 모니터링



실은 공식 이미지에서는 Docker 컨테이너의 메트릭스를 취득할 때에 Docker API를 이용하고 있어 컨테이너내의 프로세스도 같은 수속으로 mackerel-check-plugins 를 사용해 확인할 수 있습니다.



예를 들어 hoge_cntr 컨테이너의 hoge_app 프로세스를 확인하는 경우 다음과 같이 설정하면 docker exec 명령을 사용하여 확인할 수 있습니다.
[plugin.checks.hoge_app]
command = 'docker exec hoge_cntr ps | grep hoge_app || exit 2'

방법 2: HealthCheck 옵션을 사용하여 모니터링



또 다른 방법이지만 Docker의 HealthCheck 옵션을 사용하는 방법이 있습니다. Docker API를 통해 검색하는 것은 비슷하지만 HealthCheck은 컨테이너 단위로 healthy 여부를 확인할 수 있으므로 컨테이너 내에 여러 프로세스를 실행하는 경우에 일괄적으로 확인할 수 있습니다. 참고로 컨테이너가 healthy인지 여부는 컨테이너에 따라 다르므로 컨테이너에 HealthCheck 옵션 설정을 적용해야합니다.



다음은 설정 예입니다. hoge_app 설명이 필요하지 않으므로 컨테이너 단위로 관리 할 수 ​​있습니다.
[plugin.checks.hoge_cntr]
command = 'docker inspect --format "{{json .State.Health.Status}}" hoge_cntr | grep healthy || exit 2'

결론



과거에 자신이 비슷한 상황이 되었을 때, 조금 곤란한 경험이 있었기 때문에 소개해 보았습니다. 약간의 궁리가 발견되지 않을 때는, 좀처럼 발견되지 않거나 하는군요.

그런데 내일 12월 21일은 @tily씨의 「[HR-Tech] 직원의 프로필과 회사의 역사를 공유하기 위한 마이크로서비스 Profistory」입니다. 기대하세요.

좋은 웹페이지 즐겨찾기