웹사이트 검색

Zabbix 모니터링 도구를 사용하여 Docker 컨테이너를 모니터링하는 방법


Docker는 컨테이너 내부의 애플리케이션 개발, 배포 및 배송을 간소화하는 가장 소중한 DevOps 도구 중 하나입니다.

컨테이너화의 개념에는 컨테이너 이미지 활용이 수반됩니다. 이는 소스 코드, 라이브러리 및 종속성, 구성 파일을 포함하여 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 작고 가벼운 독립 실행형 실행 패키지입니다.

이렇게 하면 애플리케이션은 거의 모든 컴퓨팅 환경에서 실행될 수 있습니다. 전통적인 IT 인프라, 클라우드, 그리고 수많은 Linux/UNIX 버전이 있습니다.

컨테이너를 모니터링하면 운영 팀이 근본적인 문제를 식별하고 적시에 해결하는 데 도움이 됩니다. 컨테이너 모니터링에는 CPU 사용량, 메모리 사용량, 컨테이너 크기, 대역폭 사용량 등 몇 가지 기본 지표를 캡처하는 작업이 포함됩니다. 또한 디버깅에 도움이 되는 실시간 로그를 수집하고 확장 시기를 IT 팀에 알릴 수 있습니다.

Zabbix는 서버와 같은 물리적 장치와 라우터, 스위치와 같은 네트워크 장치를 포함하여 환경의 거의 모든 요소를 감시하는 널리 사용되는 IT 인프라 모니터링 도구입니다. 또한 애플리케이션, 서비스 및 데이터베이스를 모니터링할 수도 있습니다.

이 가이드에서는 Linux에서 Zabbix 모니터링 도구를 사용하여 Docker 컨테이너를 모니터링하는 방법을 보여줍니다.

요구사항

시작하기 전에 필요한 사항은 다음과 같습니다.

먼저 두 개의 노드가 있는지 확인하십시오. 첫 번째 노드는 Zabbix 서버입니다. 이는 원격 Docker 서버를 모니터링할 노드입니다. 다음과 같은 기사가 있습니다:

  • Rocky Linux 및 AlmaLinux에 Zabbix를 설치하는 방법
  • Debian 11/10에 Zabbix 모니터링 도구를 설치하는 방법
  • RHEL 8에 Zabbix를 설치하는 방법
  • Ubuntu에 Zabbix를 설치하는 방법

두 번째 노드는 Docker가 설치된 Docker 서버입니다. 이는 Docker 컨테이너를 실행하고 컨테이너 활동을 모니터링할 노드입니다.

  • Rocky Linux 및 AlmaLinux에 Docker를 설치하는 방법
  • Ubuntu 20.04에서 Docker를 설치하고 사용하는 방법
  • CentOS 및 RHEL 8/7에 Docker를 설치하는 방법

다음으로, sudo 사용자가 이미 구성되어 있는 Docker 서버 노드에 대한 SSH 액세스 권한이 있는지 확인하세요.

설정이 완료되면 이제 소매를 굴릴 수 있습니다!

1단계: Linux에 Zabbix-Agent 설치

원격 서버에서 Docker 컨테이너를 모니터링하려면 대상 노드에 배포되어 시스템 측정항목 및 기타 항목을 적극적으로 모니터링하는 모니터링 에이전트인 Zabbix 에이전트를 설치해야 합니다. 응용 프로그램.

먼저 Docker 노드에 Zabbix 저장소를 설치해야 합니다.

----------- On Ubuntu 20.04 ----------- 
sudo wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb
sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb
sudo apt update
sudo apt install zabbix-agent2

----------- On RHEL-based Distro ----------- 
sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
sudo dnf update
sudo dnf install zabbix-agent

----------- On Debian 11 ----------- 
sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1%2Bdebian11_all.deb
sudo dpkg -i zabbix-release_5.4-1%2Bdebian11_all.deb
sudo apt update
sudo apt install zabbix-agent2

----------- On Debian 10 ----------- 
sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1%2Bdebian10_all.deb
sudo dpkg -i zabbix-release_5.4-1%2Bdebian10_all.deb
sudo apt update
sudo apt install zabbix-agent2

2단계: Linux에서 Zabbix-Agent 구성

기본적으로 Zabbix 에이전트는 설치된 동일한 호스트의 Zabbix 서버로 측정항목을 전송하도록 설정되어 있습니다. 우리의 목표는 원격 서버의 docker 컨테이너를 모니터링하는 것이므로 몇 가지 추가 구성이 필요합니다.

따라서 Zabbix 에이전트 구성 파일에 액세스하세요.

sudo vim /etc/zabbix/zabbix_agent2.conf

구성 파일에는 메트릭이 전송되는 주소, 연결에 사용되는 포트 등을 지정하는 설정이 포함되어 있습니다. 대부분의 경우 기본 설정이 제대로 작동합니다.

측정항목을 Zabbix 서버로 보내도록 Zabbix 에이전트를 구성하려면 측정항목을 루프백 주소, 즉 간단히 말해 동일한 호스트 시스템으로 전달하도록 구성된 지시문을 찾으세요.

Server=127.0.0.1

Zabbix 서버의 주소를 반영하도록 주소를 설정하십시오.

Server=zabbix-server-IP

또한 '활성 검사' 섹션으로 이동하여 Zabbix 서버의 IP 주소를 가리키도록 지시어를 변경합니다.

ServerActive=zabbix-server-IP

이에 따라 Docker 서버의 호스트 이름도 조정해야 합니다. 내 Docker 서버의 호스트 이름은 Ubuntu20입니다.

Hostname=Ubuntu20

그런 다음 변경 사항을 저장하고 Zabbix 구성 파일을 종료합니다.

Zabbix 에이전트가 Docker 컨테이너를 감시하려면 기본적으로 설치되는 Zabbix 사용자를 docker 그룹에 추가해야 합니다.

sudo usermod -aG docker zabbix

구성 파일에 대한 변경 사항을 적용하려면 Zabbix-agent 서비스를 다시 시작하고 시스템 시작 시 시작되도록 활성화하십시오.

sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2

다음과 같이 Zabbix 에이전트의 실행 상태를 확인합니다.

sudo systemctl status zabbix-agent2

Zabbix 에이전트는 포트 10050에서 수신 대기합니다. UFW 방화벽이나 방화벽이 실행 중인 경우 다음과 같이 포트를 여는 것을 고려해보세요.

----------- On UFW Firewall ----------- 
sudo ufw allow 10050/tcp
sudo ufw reload

----------- On Firewalld ----------- 
sudo firewall-cmd --add-port=10050/tcp --permanent
sudo firewall-cmd --reload

엄청난! 이제 절반 지점에 왔습니다. 이제 Zabbix 에이전트는 Docker 컨테이너 측정항목을 Zabbix 서버로 전송할 수 있습니다.

다음 단계에서는 Zabbix 웹 인터페이스에 Docker 서버를 추가하고 Docker 컨테이너를 모니터링하겠습니다.

3단계: 모니터링을 위해 Zabbix 서버에 Docker 추가

원격 호스트를 모니터링하려면 브라우저를 통해 Zabbix 서버의 대시보드에 추가해야 합니다. Zabbix는 다양한 서비스와 애플리케이션을 위한 수많은 템플릿을 제공합니다. 컨테이너를 구체적으로 모니터링하기 위해 적절한 템플릿을 Docker 호스트에 연결합니다. 하지만 먼저 Zabbix 서버의 로그인 페이지에 액세스하십시오.

http://zabbix-server-ip/zabbix

로그인한 후 오른쪽 사이드바로 이동하여 '구성'을 클릭한 다음 '호스트'를 클릭하세요.

맨 오른쪽 상단에서 '호스트 만들기'를 클릭합니다.

호스트 이름표시 이름과 같은 Docker 서버의 세부정보를 입력합니다. 그룹의 경우 'Docker 그룹'을 입력합니다(모든 호스트는 그룹과 연결되어야 함).

'인터페이스' 라벨 아래에서 '추가'를 클릭하고 나타나는 메뉴에서 '에이전트'를 선택합니다.

다음으로 Docker 서버의 개인 IP 주소를 입력하고 포트가 10050으로 설정되어 있는지 확인하세요.

그런 다음 템플릿 탭을 클릭하고 '새 템플릿 연결' 섹션에서 'Docker by Zabbix 에이전트 2'를 지정합니다. 그런 다음 '추가' 버튼을 클릭하세요.

추가 버튼을 클릭하면 표시된 대로 원격 Docker 호스트가 자동으로 추가됩니다.

이 시점에서 Zabbix 서버는 이제 Docker 서버를 모니터링하고 있습니다. 다음 단계에서는 컨테이너를 배포하고 모니터링할 수 있는 측정항목을 확인하겠습니다.

4단계: Zabbix 모니터링에서 Docker 지표 모니터링

Docker 측정항목 모니터링을 시작하기 위해 테스트 컨테이너를 시작할 예정입니다. 따라서 Docker 서버로 돌아가서 컨테이너를 시작하세요.

이 예에서는 Ubuntu 컨테이너 이미지를 가져와 docker_test_container라는 컨테이너를 만듭니다. 그런 다음 -it 옵션을 사용하여 셸 액세스 권한을 얻습니다. 작업에 대한 전체 명령은 다음과 같습니다.

sudo docker run --name docker_test_container -it ubuntu bash

CPU 사용률 및 네트워크 트래픽과 같은 측정항목을 생성하기 위해 Apache 또는 MariaDB와 같은 소프트웨어 패키지를 설치하는 등의 야심 찬 작업을 시도해 볼 수 있습니다.

이제 Zabbix 서버 대시보드로 돌아갑니다. '모니터링'을 클릭한 다음 '호스트'를 클릭하세요. Docker 서버 이름을 클릭하고 표시되는 메뉴 옵션에서 '최신 데이터'를 선택하세요.

컨테이너를 배포하고 몇 분 후에 Zabbix 서버는 컨테이너를 감지하고 일부 통계를 채우기 시작합니다.

또한 '호스트' 페이지에서 Docker 서버의 '그래프' 옵션을 클릭하여 다양한 컨테이너 측정항목의 그래프를 볼 수도 있습니다. 아래에서 CPU 및 메모리 사용량 측정항목을 볼 수 있습니다.

컨테이너 충돌을 시뮬레이션하기 위해 컨테이너 셸에서 아래 명령을 실행하여 컨테이너에서 예기치 않게 종료됩니다.

exit 2

이는 오류 코드 2로 컨테이너를 종료했음을 의미합니다. 이는 컨테이너의 메타데이터 내에 기록됩니다. 알림을 보려면 왼쪽 사이드바로 이동하여 '모니터링'을 클릭한 다음 '대시보드'를 클릭하세요.

아래에 경고가 표시됩니다.

오류를 수정하려면 컨테이너를 다시 시작하면 됩니다.

sudo docker start docker_test_container 

이것으로 이 가이드를 마치겠습니다. Zabbix 모니터링 도구를 사용하여 Docker 컨테이너를 모니터링하는 방법에 대한 단계별 절차를 안내해 드렸습니다.