(三)解決prometheus部署在公網IP上的安全認證問題

2020-10-14 15:00:21

prometheus相比於zabbix在網站登入的時候沒有賬密認證,就導致存取ip埠的時候會把自身監控的資訊全部暴露出去。因此prometheus的部署建議是不要部署在公網上,另外就是開啟認證了。所謂的認證就是在登陸的時候提示輸入賬號密碼。在這裡我們是通過nginx上的HTTP Basic Auth來實現。

1、部署nginx,忽略。

2、安裝apache-htpasswd工具

~:yum -y install httpd-tools

3、建立賬號密碼

~:cd /usr/local/nginx/conf/
~:htpasswd -c ht.passwd prometheus
New password: 
Re-type new password: 
Adding password for user prometheus

4、在nginx.conf裡面編輯反向代理

server {
	listen 19090;
    
	location / {
		proxy_pass http://localhost:9090;
		auth_basic "Basic Authentication";
		auth_basic_user_file "ht.passwd";
	}
 
}

這裡要提一下,反向代理為什麼要用http://localhost:9090,我這裡的prometheus和nginx是部署在同一臺伺服器上的,同時在請求9090的時候,只允許該臺伺服器的ip存取。

5、修改prometheus.yml檔案
在編輯prometheus.yml檔案之前,先在prometheus目錄下執行

~:./prometheus   --config.file=./prometheus.yml  --web.external-url=http://localhost:19090   --web.route-prefix="/"  --web.enable-lifecycle  --web.listen-address="localhost:9090"

目的是使prometheus對外的埠是19090,同時設定9090埠是為了對接nginx上的反向代理。

~:vim prometheus.yml
    static_configs:
    - targets: ['xxx.xxx.xxx.xxx:19090']
    basic_auth:
      username: prometheus
      password: 密碼

6、重新啟動prometheus
另外,這個時候如果grafana的監控出現問題的時候,需要重新新增prometheus的地址,並且點開Basic Auth,把剛剛設定的賬號密碼新增進去。