Docker는 애플리케이션과 해당 종속성을 컨테이너에 패키징하여 단일 휴대용 애플리케이션 단위로 실행할 수 있는 인기 있는 컨테이너화 기술입니다. 이 기술을 통해 개발자는 다양한 환경에서 애플리케이션을 쉽게 배포하고 관리할 수 있습니다. 실제 애플리케이션에서는 Docker 컨테이너의 로그 분석 및 예외 모니터링이 매우 필요합니다. 이 문서에서는 다음 측면을 포함하여 컨테이너의 로그 분석 및 예외 모니터링에 Docker를 사용하는 방법을 소개합니다.
먼저 Docker 컨테이너에 대한 로그를 이해해야 합니다.
1. Docker 컨테이너 로그
Docker 컨테이너 로그는 애플리케이션 출력 정보, 오류 정보, 액세스 로그, 시스템 로그 등을 포함하여 컨테이너에 작업 정보를 기록합니다. 이 정보는 애플리케이션 운영 및 유지 관리, 추적, 예외 처리 등에 매우 중요하므로 Docker 컨테이너의 로그를 수집하고 분석해야 합니다.
2. Docker log 명령을 사용하여 로그 보기
Docker는 컨테이너에서 출력된 로그 정보를 보는 데 사용할 수 있는 log 명령을 제공합니다. log 명령어를 이용하면 실행 중인 컨테이너의 실시간 출력 정보를 쉽게 확인할 수 있고, 이 정보를 콘솔에 출력하거나 파일로 저장할 수 있다. 다음은 log 명령어를 사용하여 컨테이너 로그를 보는 예이다.
// 查看容器ID为xxx的日志 docker logs xxx // 查看容器ID为xxx的日志,输出到控制台并实时更新 docker logs -f xxx // 查看容器ID为xxx的最近10条日志 docker logs --tail 10 xxx
log 명령어를 사용하면 개발자가 쉽게 컨테이너의 실시간 출력 정보를 보고 문제를 빠르게 판단할 수 있는데, 이 방법은 컨테이너에 적합하다. 단일 호스트에서는 컨테이너의 크기가 커지면 수동으로 로그를 보기가 어려워지기 때문에 로그를 자동으로 수집하고 분석하려면 로그 수집 도구를 사용해야 합니다.
3. 로그 수집 및 분석에 Logstash를 사용하세요
Logstash는 로그 수집, 필터링, 변환 및 전송을 위한 오픈 소스 도구입니다. 데이터는 입력 플러그인을 통해 수집되고 필터에 의해 처리 및 변환된 후 출력됩니다. 플러그인이 데이터를 처리합니다. 데이터는 Elasticsearch, Kafka, Amazon S3 등과 같은 대상으로 전송됩니다. Docker 컨테이너의 로그 수집에서 Logstash를 도구로 사용하여 로그를 수집하고 분석할 수 있습니다. 다음은 로그 수집 및 분석을 위해 Logstash를 사용하는 예입니다.
1. Logstash 설치
공식 홈페이지에서 Logstash를 다운로드한 후 압축을 풀어서 사용하세요. Logstash를 시작하는 명령은 다음과 같습니다.
cd logstash-7.15.1/bin ./logstash -f logstash.conf
2. Logstash 구성
Logstash를 컨테이너의 로그 수집 도구로 사용하려면 Logstash에서 입력 플러그인과 출력 플러그인을 구성해야 합니다. 다음은 logstash.conf 구성 파일의 예입니다.
input { docker { endpoint => "unix:///var/run/docker.sock" container_id => "ALL" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => "localhost:9200" } stdout { codec => "json_lines" } }
위 구성 파일은 모든 도커 컨테이너에서 로그 정보를 수집하고 grok 필터를 통해 데이터를 필터링 및 구문 분석한 후 최종적으로 처리된 데이터를 엘라스틱서치.
4. 데이터 인덱싱 및 저장에 Elasticsearch를 사용하세요
Elasticsearch는 다양한 유형의 문서를 검색하는 데 사용할 수 있는 분산 오픈 소스 검색 엔진입니다. Docker 컨테이너의 로그 수집에서는 Elasticsearch를 데이터의 인덱스 및 저장소로 사용합니다. 다음은 데이터 인덱싱 및 저장을 위해 Elasticsearch를 사용하는 예입니다.
1. Elasticsearch 설치
공식 홈페이지에서 Elasticsearch를 다운로드한 후 압축을 풀어 사용하세요. Elasticsearch를 시작하는 명령은 다음과 같습니다.
cd elasticsearch-7.15.1/bin ./elasticsearch
2. Elasticsearch 구성
elasticsearch.yml 파일을 수정하여 ES 클러스터의 이름과 노드 이름을 구성합니다. 다음은 간단한 elasticsearch.yml 구성 파일 예입니다.
cluster.name: docker-cluster node.name: es-node1 network.host: 0.0.0.0
위 구성은 노드 이름이 es-node1이고 ES 서비스가 사용 가능한 모든 네트워크 인터페이스에 바인딩된 docker-cluster라는 클러스터를 생성한다는 의미입니다.
3. 인덱스 생성
Elasticsearch에서는 먼저 데이터에 대한 인덱스를 생성하고 데이터의 필드를 지정해야 합니다. 샘플 코드는 다음과 같습니다.
PUT /logstash-test { "mappings": { "properties": { "host": { "type": "keyword" }, "message": { "type": "text" }, "path": { "type": "text" }, "verb": { "type": "keyword" } } } }
위 코드는 Elasticsearch에서 "logstash-test"라는 인덱스를 생성하고 인덱스에 포함되는 필드와 필드 유형을 정의합니다.
5. 데이터 시각화 표시를 위해 Kibana 사용
Kibana는 Elasticsearch에서 얻은 데이터를 표시하는 데 사용할 수 있는 오픈 소스 데이터 시각화 도구입니다. Docker 컨테이너의 로그 수집 프로세스 중에 데이터 시각화를 위해 Kibana를 사용합니다. 다음은 데이터 시각화 표시를 위해 Kibana를 사용하는 예입니다.
1. Kibana 설치
공식 홈페이지에서 Kibana를 다운로드한 후 압축을 풀어 사용하세요. Kibana를 시작하는 명령은 다음과 같습니다:
cd kibana-7.15.1/bin ./kibana
2. 인덱스 템플릿 설정
Kibana에서는 인덱스 템플릿을 설정해야 합니다. 인덱스 템플릿에는 데이터 필드 정의와 쿼리 분석 정보가 포함되어 있습니다. 샘플 코드는 다음과 같습니다.
PUT _index_template/logstash-template { "index_patterns": ["logstash-*"], "template": { "mappings": { "properties": { "@timestamp": { "type": "date" }, "@version": { "type": "keyword" }, "message": { "type": "text" }, "path": { "type": "text" } } } } }
위 코드는 "logstash-template"이라는 이름의 인덱스 템플릿을 생성하고 이름이 "logstash-*"로 시작하는 인덱스에 적용하는 것을 의미합니다.
3. 데이터 시각화
Kibana의 플러그인 패널에서 시각적 템플릿을 설정하고 관리하도록 선택할 수 있습니다. 패널을 통해 꺾은선형 차트, 막대형 차트, 파이 차트 등 다양한 형태의 시각적 차트를 쉽게 생성할 수 있습니다.
요약하자면, 이 글에서는 컨테이너 로그 분석 및 예외 모니터링을 위해 Docker를 사용하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. Docker 자체에서는 컨테이너의 로그를 볼 수 있는 log 명령을 제공하지만, 컨테이너 규모가 커질수록 로그를 수동으로 보기가 더 어려워집니다. Logstash, Elasticsearch, Kibana 등의 도구를 사용하면 컨테이너 로그를 자동으로 수집 및 분석하고 컨테이너의 실행 상태를 표시할 수 있어 애플리케이션 운영 및 유지 관리, 오류 처리에 매우 유용합니다.
위 내용은 컨테이너 로그 분석 및 예외 모니터링을 위해 Docker를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!