如何为普罗米修斯(在码头容器上运行)的UI/Dashboard添加基本身份验证?

eyh26e7m  于 2022-10-23  发布在  Docker
关注(0)|答案(1)|浏览(293)

我已经使用以下docker-compose.yml文件创建了一个普罗米修斯码头容器。

version: '3.7'

services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus/:/etc/prometheus/
    ports:
      - "9090:9090"

prometheus/prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: monitoring
    metrics_path: /metrics
    static_configs:
      - targets:
          - host.docker.internal:8000

它工作正常,我可以通过以下URL查看普罗米修斯的UI/ Jmeter 板
http://localhost:9090/graph
现在,我需要为Prometheus UI/ Jmeter 板添加一个基本身份验证。以便只有具有有效凭据的用户才能访问该用户界面。
我已经引用了这个github issue,并将以下配置添加到prometheus/prometheus.yml文件

server:
  extraArgs:
    web.config.file: /etc/config/web_config.yml
  probeHeaders:
    - name: Authorization
      value: Basic <'username:password' in base64> 

serverFiles:
  web.config.yml:
    basic_auth_users:
      <username>: '<bcrypt password>'

我已经将<'username:password' in base64>替换为Base64编码字符串admin:password,并将<username>替换为admin<bcrypt password>替换为Base64编码字符串password,这是用户的密码。
我的prometheus/web_config.yml文件:

basic_auth_users:
  admin: <base64 password>

当我运行docker-compose up命令时,我得到以下错误:

caller=main.go:455 level=error msg="Error loading config (--config.file=/etc/prometheus/prometheus.yml)" file=/etc/prometheus/prometheus.yml err="parsing YAML file /etc/prometheus/prometheus.yml: yaml: unmarshal errors:\n  line 12: field server 
not found in type config.plain\n  line 19: field serverFiles not found in type config.plain"
pkwftd7m

pkwftd7m1#

您正在遵循的指南引用了一个Helm Chart模板(针对Kubernetes),该模板误导了您的需求(Docker Compose)。
basic_auth_users需要用户(!)明文作为密钥和Base64编码的密码(仅限!)就像价值一样。
请参见... Using Basic Auth
在主机的./prometheus文件夹中创建第二个文件:
web.yml

basic_auth_users:
    admin: {base64-encoded password}

然后,在运行Docker Compose时,将标志--web.config.file添加到Prometheus容器映像:

version: '3.7'

services:
  prometheus:
    image: prom/prometheus
    volumes:
    - ./prometheus/:/etc/prometheus/
    command:
    - --config.file=/etc/prometheus/prometheus.yml
    - --web.config.file=/etc/prometheus/web.yml
    ports:
      - "9090:9090"

相关问题