Prometheus web UI에서 MongoDB 타겟이 401 오류로 실패합니다

Azure Prometheus를 사용하고 있으며, 이를 Atlas MongoDB와 통합하려고 합니다. Integrate with Prometheus - Atlas - MongoDB Docs 튜토리얼을 따라 이 통합을 구현하고, 아래는 해당 튜토리얼을 따라 얻은 scrape 설정입니다.

      - job_name: "sandbox-mongo-metrics"
        scrape_interval: 10s
        metrics_path: /metrics
        scheme: https

        basic_auth:
          username: "prometheus"
          password: "xxx"

        http_sd_configs:
          - url: https://cloud.mongodb.com/prometheus/v1.0/groups/xxx/discovery?targetScheme=PRIVATE
            refresh_interval: 60s
            basic_auth:
              username: "prometheus"
              password: "xxx"
metadata:
  name: ama-metrics-prometheus-config
  namespace: kube-system

아래 configmap 파일을 생성하여 scrape 설정을 Prometheus에 추가했습니다.

kind: ConfigMap
apiVersion: v1
data:
  prometheus-config: |-
    scrape_configs:
      - job_name: "sandbox-mongo-metrics"
        scrape_interval: 10s
        metrics_path: /metrics
        scheme: https

        basic_auth:
          username: "prometheus"
          password: "xxx"

        http_sd_configs:
          - url: https://cloud.mongodb.com/prometheus/v1.0/groups/xxx/discovery?targetScheme=PRIVATE
            refresh_interval: 60s
            basic_auth:
              username: "prometheus"
              password: "xxx"
metadata:
  name: ama-metrics-prometheus-config
  namespace: kube-system

Prometheus가 실행되는 Kubernetes pod 내부에서 대상 URL을 curl로 호출하면 문제없이 동작하고, MongoDB의 메트릭 엔드포인트를 성공적으로 반환이 됩니다. 근데, Prometheus web UI에서는 대상 스크레이프가 아래 오류와 함께 실패합니다.

server returned HTTP status 401 Unauthorized

위의 설정에서 빼먹거나, 잘못된 정보가 있는지 문의합니다.

1 Like

401 상태 코드의 경우 통신 자체는 성공하였으나, 인증 과정에서 실패했음을 의미합니다.

ID/PW 가 정확한지, yaml 상에 입력해야하는 인증 정보가 프로메테우스의 것인지 mongodb 의 것인지.

연동하시려는 프로메테우스 및 MongoDB 양쪽 모두의 인증 정책이 basic-auth 방식을 허용하는지 다시 한번 체크해보심이 어떨까 합니다.

참고로 401은 인증 자체의 정보가 맞지 않아(ID/PW를 틀렸거나) 발생하는 상태코드이고, 비슷하게 403은 ID/PW가 정상적으로 맞아 인증에는 성공하였으나, 해당 유저가 권한이 없음을 의미합니다.

2 Likes

@kalee 님! 에러 코드에 대한 정보는 대략적으로 이해만 했었는데… 얘기주신 내용으로 인증 정보 저장된 곳 모두 찾아보고 auth 방식도 확인해서 이것 저것 테스트해보니… 해결이 됐어요. 감사! 감사요! :blush: