Prometheus : Enable authentication and HTTPS2023/07/11 |
Enable basic authentication and HTTPS for Prometheus endpoint.
|
|
[1] |
Get SSL Certificate, or
Create self-signed Certificate.
It uses self signed Certificate on this example. |
[2] | Configure Prometheus. |
root@dlp:~#
apt -y install apache2-utils # generate password with bcrypt hash # set any username you like root@dlp:~# htpasswd -nB admin New password: Re-type new password: admin:$2y$05$Q1UhhbnsAMy4dJEKur9Sy.c3GhqkqLiFE5yI3sv/33GUFNPatrZgC
root@dlp:~#
cp /etc/ssl/private/{server.crt,server.key} /etc/prometheus/ root@dlp:~# chown prometheus:prometheus /etc/prometheus/{server.crt,server.key}
root@dlp:~#
vi /etc/prometheus/web.yml # create new # specify your certificate tls_server_config: cert_file: server.crt key_file: server.key # specify username and password generated above basic_auth_users: admin: $2y$05$Q1UhhbnsAMy4dJEKur9Sy.c3GhqkqLiFE5yI3sv/33GUFNPatrZgC
root@dlp:~#
vi /etc/default/prometheus # line 5 : add ARGS="--web.config.file=/etc/prometheus/web.yml"
root@dlp:~#
vi /etc/prometheus/prometheus.yml ..... ..... scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s scrape_timeout: 5s # metrics_path defaults to '/metrics' # scheme defaults to 'http'. # add settings for certificate and authentication scheme: https tls_config: cert_file: /etc/prometheus/server.crt key_file: /etc/prometheus/server.key # if using self-signed certificate, set [true] insecure_skip_verify: true basic_auth: username: 'admin' password: 'password' static_configs: # if using valid certificate, set the same hostname in certificate - targets: ["localhost:9090"]root@dlp:~# systemctl restart prometheus
|
[3] | Access to Prometheus endpoint via HTTPS, then that's OK if you can successfully authenticate with the username and password you set. |
Sponsored Link |