Prometheus监控Windows系统并配置basic_auth访问权限
(一)下载windows_exporter
Prometheus
官方没有提供windows端的采集器,需要下载github
上大佬写的采集器
下载地址:github.com/prometheus-...
下载Latest
版本的.msi
安装包
.msi
安装包可以将windows_exporter
配置为windows服务(推荐版本)
.exe
是可执行文件,双击启动后可以直接运行采集器,后续可手动配置为windows服务,本文不采用该方式
(二)如何安装windows_exporter
由于参数较多,本文只列举了常用参数,详细参数请到github
上查看。安装方式相同。
通过cmd
输入命令的方式进行安装,下面是exporter
常用的参数
参数名 | 说明 | 默认值 |
---|---|---|
--web.listen-address |
设置采集器端口号 | :9182 |
--telemetry.path |
采集器的metrics的地址 | /metrics |
--telemetry.max-requests |
最大并发请求数。0表示禁用。 | 5 |
--collectors.enabled |
要使用的收集器的逗号分隔列表。使用[defaults] 作为占位符,该占位符展开后包含默认启用的所有收集器。" |
[defaults] |
--web.config.file |
web配置文件,负责TLS和权限 | None |
安装命令行参数,负责控制上述参数在安装时进行修改
参数名 | 说明 |
---|---|
ENABLED_COLLECTORS |
作为--collectors.enabled 标志,提供已启用收集器的逗号分隔列表 |
LISTEN_ADDR |
监听地址,默认为0.0.0.0 |
LISTEN_PORT |
端口号,默认为9182 |
METRICS_PATH |
采集器的metrics的地址。默认为 /metrics |
EXTRA_FLAGS |
额外参数,可以设置上述的所有参数名 |
通过msiexec
命令进行安装,例如:
css
msiexec /i <path-to-msi-file> ENABLED_COLLECTORS=os,iis LISTEN_PORT=5000
/i
为msiexec
的安装指令,后续填写msi
安装包的路径
ENABLED_COLLECTORS
可以设置采集器的采集指标
LISTEN_PORT
设置端口号
可以通过EXTRA_FLAGS
额外指定特殊的exporter
参数,例如:
css
msiexec /i <path-to-msi-file> LISTEN_PORT=5000 EXTRA_FLAGS="--web.config.file=<path-to-config-file>"
上述命令设置了采集器的--web.config.file
的配置文件路径,其他参数也可以通过这种方式进行设置。
详细安装步骤在配置完basic_auth(设置密码)之后。
(三)配置Prometheus和exporter的basic_auth(配置访问密码)
由于监控主机往往在暴露在公网环境中,最好是对Prometheus和exporter设置其访问密码,防止信息泄露。
3.1 设置密码加密
方式一(推荐):
在网站上输入自己的密码即可得到加密的密码字符串
本文以123456
作为密码为例,加密后得到:$2a$12$bVrC.ySI8j8eNHzhozeSx.XLZnzLwOFjqd0YQPGhH9mahcxVookDO
方式二(官网):
编写python脚本,作者在自己电脑上没有跑通,不知道什么原因:)
ini
import getpass
import bcrypt
password = getpass.getpass("password: ")
hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
print(hashed_password.decode())
3.2 编写Prometheus web配置文件
Prometheus服务端:
创建配置文件,路径都可以,推荐创建在Prometheus根目录下
vim web.yml
配置文件中写入如下内容:
perl
basic_auth_users:
admin: $2a$12$bVrC.ySI8j8eNHzhozeSx.XLZnzLwOFjqd0YQPGhH9mahcxVookDO
admin
为用户名,可以任意设置,后面写上刚才的加密后的字符串,注意冒号后面要加一个空格多个用户则设置多行即可
设置完成后保存,通过命令行进行校验:
arduino
$ promtool check web-config web.yml
web.yml SUCCESS
校验成功即该配置文件合法
之后启动Prometheus是加上启动参数即可让改配置文件生效
ini
prometheus --web.config.file=web.yml
这时候进入Prometheus后台管理界面时就需要输入刚才的密码了。
3.3编写windows_exporter配置文件
加密方式同上,同样在windows端在某个路径下编写一个配置文件,本文使用配置文件为:C:\windows_exporter\config.yml
配置文件中内容与上文相同,该设置的事exporter端的访问权限,也可以设置多个
perl
basic_auth_users:
admin: $2a$12$bVrC.ySI8j8eNHzhozeSx.XLZnzLwOFjqd0YQPGhH9mahcxVookDO
安装命令如下:
bash
msiexec /i ./windows_exporter-0.24.0-amd64.msi LISTEN_PORT=5000 EXTRA_FLAGS="--web.config.file=C:\windows_exporter\config.yml"
安装完成后再windows服务中查看名称为windows_exporter的服务,如果出现该服务则安装成功
如果未出现该服务,则说明命令行参数有误,安装失败。
如果需要卸载该服务,以管理员身份启动
cmd
,输入命令sc delete windows_exporter
即可。如果需要重新安装,则需要删除
C:\Program Files\windows_exporter
文件夹
安装成功后,windows端通过浏览器访问本地端口,并输入刚才设置的密码,成功进入页面则安装成功。
3.4编写Prometheus Job配置
编写Prometheus根目录下prometheus.yml
文件:
yaml
scrape_configs:
- job_name: "windows1"
basic_auth:
username: admin
password: 123456
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.0.1:5000"]
添加basic_auth
配置,用户名密码配置为exporter的密码即可
(四)测试
启动Prometheus服务端
ini
prometheus --web.config.file=web.yml
浏览器访问9090端口,在Status中查看Targets
观察到如上页面即配置成功。