Prometheus监控Windows系统并配置basic_auth访问权限

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

/imsiexec的安装指令,后续填写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 设置密码加密

方式一(推荐):

加密网站:bcrypt-generator.com/

在网站上输入自己的密码即可得到加密的密码字符串

本文以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

观察到如上页面即配置成功。

相关推荐
豆豆豆豆变18 小时前
Docker轻量级可视化工具Portainer
docker·容器·自动化运维
沛沛老爹1 天前
什么是 DevOps 自动化?
大数据·ci/cd·自动化·自动化运维·devops
北京_宏哥1 天前
python接口自动化(四十)- logger 日志 - 下(超详解)
python·前端框架·自动化运维
豆豆豆豆变3 天前
docker之compose篇
docker·容器·自动化运维
清瞳清6 天前
zabbix监控业务容器状态
docker·监控·zabbix-agent2
vivo互联网技术7 天前
Kafka Streams 在监控场景的应用与实践
监控·实时处理·kafka streams·消费倾斜
kida_yuan13 天前
【从零开始】9. RAG 应用调优-再续(番外篇)
人工智能·pytorch·监控
第八学期14 天前
用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP)
linux·nginx·重构·架构·ansible·自动化运维
第八学期15 天前
Ansible Eoles详解
linux·运维·自动化·ansible·自动化运维