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,把刚刚设置的账号密码添加进去。