OpenTelemetry Collector

설치 확인

디렉터리 구조

HyperFrame이 정상적으로 설치되면 opentelemetry-collector 디렉터리 하위에 다음과 같은 디렉터리 구조가 생성됩니다.

opentelemetry-collector
|-- CONTRIBUTING.md
|-- LICENSE
|-- Makefile
|-- README.md
|-- cmd
|-- configs
|-- distributions
|-- go.mod
|-- go.sum
|-- otelcol
|-- scripts

실행

opentelemetry-collector(이하 otelcol)는 기본적으로 --config=${OTELCOL_HOME}/configs/otelcol.yaml 옵션과 함께 실행됩니다.

./otelcol --config=${OTELCOL_HOME}/configs/otelcol.yaml

otelcol을 사용자 설정으로 실행하려면 otelcol 실행 시 옵션을 설정해야 합니다.

환경 설정

otelcol의 설정을 변경하기 위해서는 ${OTELCOL_HOME}/configs/otelcol.yaml 파일을 수정하거나 새로운 YAML 파일을 생성하여 otelcol 스크립트 실행 시 --config 옵션의 경로를 변경합니다.

otelcol 설정 파일의 내부는 다음과 같이 총 세 가지 요소로 구성됩니다.

요소 설명

Receivers

모니터링 데이터를 어디에서 받아올지 등록합니다.

Processors

수신 받은 데이터를 가지고 처리할 내용을 등록합니다.

Exporters

받은 데이터를 설정한 곳으로 전달합니다.

Receivers, Processors, Exporters는 Service 섹션 내의 파이프라인을 통해서 활성화됩니다.

다음은 현재 모니터링에서 지원하는 엔진(HyperFrame에서 관리하는 엔진)을 기준으로 작성된 otelcol 설정 파일의 내용입니다.

receivers:
  otlp:
    # otlp의 protocols에 따로 지정을 안할 경우 기본값으로 설정
    # opentelemetry-javaagent에서는 grpc를 사용
    protocols:
      grpc: # 기본값 0.0.0.0:4317
      http: # 기본값 0.0.0.0:4318
  prometheus:
    config:
      scrape_configs:
        # Nginx 모니터링 시 추가
        - job_name: "nginx"
          scrape_interval: 10s # (10초 고정 권장)
          # file_sd_configs 설정을 통해 otelcol 중단 없이 수집 대상 수정 가능
          file_sd_configs:
            - files:
                # 파일의 경로
                - "/agent-home/nginx.json"
        # Apache 모니터링 시 추가
        - job_name: "apache"
          scrape_interval: 10s # (10초 고정 권장)
          # file_sd_configs 설정을 통해 otelcol 중단 없이 수집 대상 수정 가능
          file_sd_configs:
            - files:
              # 파일의 경로
              - "/agent-home/apache.json"

processors:
  batch:

exporters:
  otlp:
    # 백엔드 서버 모니터링
    endpoint: "localhost:11800"
    tls:
      insecure: true # 보안 설정 끄기
  # 데이터를 콘솔로 전달
  logging:
    logLevel: info
    # 수집되는 데이터 상세 정보
    # verbosity: detailed

service:
  # receivers, processors, exporters의 활성화
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp, logging]
    metrics:
      receivers: [otlp, prometheus]
      processors: [batch]
      exporters: [otlp, logging]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp]

file_sd_configs 옵션에 설정한 json 파일을 통해서 otelcol을 재기동하지 않고도 수집 대상에 대한 설정을 변경할 수 있습니다.

다음은 Apache 모니터링을 위해 file_sd_configs 옵션에 설정한 apache.json 및 nginx.json 파일의 작성 예시입니다.

apache.json
[
 {
  "labels": {
   "job": "apache",
   "service": "apache::apache"
  },
  "targets": [
   "${APACHE_SERVER_IP}:9117"
  ]
 }
]
nginx.json
[
 {
  "labels": {
   "job": "nginx",
   "service": "nginx::nginx"
  },
  "targets": [
   "${APACHE_SERVER_IP}:9113"
  ]
 }
]