首页 > 编程语言 >Prometheus Node_exporter增加认证

Prometheus Node_exporter增加认证

时间:2023-02-06 16:25:23浏览次数:43  
标签:Node node exporter -- prometheus Prometheus key root

背景

因安全需要,现在对 node_exporter 进行配置以支持 TLS 和 Basic Auth,顺便把 Prometheus 升级到最新版 2.40.4

Node_exporter 1.0 以上版本才支持 TLS 和 Basic Auth

Node_exporter 配置

准备工作

下载地址:

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

解压 Node_exporter

tar zxvf node_exporter-1.5.0.linux-amd64.tar.gz

tls 证书生成

openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout node_exporter.key -out node_exporter.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=Moelove.info/CN=localhost"
Generating a RSA private key
...................+++++
.........................................................................................................................................................................................................................................................................+++++
writing new private key to 'node_exporter.key'
-----
root@zabbix:~/node_exporter# ll
total 16
drwxr-xr-x  2 root root 4096 Dec  1 14:58 ./
drwx------ 27 root root 4096 Dec  1 14:58 ../
-rw-r--r--  1 root root 1310 Dec  1 14:58 node_exporter.crt
-rw-------  1 root root 1704 Dec  1 14:58 node_exporter.key

通过上面的步骤,我们得到了 node_exporter.crt node_exporter.key 这两个文件。

basic auth 认证生成

安装 htpasswd 来生成密码 hash

#Ubuntu
apt install apache2-utils -y
#centos
yum install httpd-tools -y

在 Node_exporter 目录下执行

# htpasswd -nBC 12 '' | tr -d ':\n'   
New password: 
Re-type new password: 
$2y$12$LWDB21oY/67kz3lu8Y7bGOcerRodeAK4SfOSmielNq.BzMlrjw1/q

配置

将前面生成的 node_exporter.crt node_exporter.key 文件复制到 Node_exporter 解压目录下。

root@zabbix:/opt/node_exporter# cp /root/node_exporter/node_exporter.* .
root@zabbix:/opt/node_exporter# ll
total 19352
drwxr-xr-x 2 root root     4096 Dec  1 15:12 ./
drwxr-xr-x 5 root root     4096 Dec  1 15:07 ../
-rw-r--r-- 1 3434 3434    11357 Nov 30 03:05 LICENSE
-rw-r--r-- 1 3434 3434      463 Nov 30 03:05 NOTICE
-rwxr-xr-x 1 3434 3434 19779640 Nov 30 02:59 node_exporter*
-rw-r--r-- 1 root root     1310 Dec  1 15:12 node_exporter.crt
-rw------- 1 root root     1704 Dec  1 15:12 node_exporter.key
root@zabbix:/opt/node_exporter# 

编写配置文件,并保存为 config.yaml (命名随意):

tls_server_config:
  cert_file: node_exporter.crt
  key_file: node_exporter.key
basic_auth_users:
  # 当前设置的用户名为 prometheus , 可以设置多个
  prometheus: $2y$12$LWDB21oY/67kz3lu8Y7bGOcerRodeAK4SfOSmielNq.BzMlrjw1/q

启动

nohup ./node_exporter --web.listen-address=:39100 --web.config.file=config.yaml &

验证

root@zabbix:/opt/node_exporter# curl http://localhost:39100/metrics 
Client sent an HTTP request to an HTTPS server.
root@zabbix:/opt/node_exporter# curl https://localhost:39100/metrics 
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
root@zabbix:/opt/node_exporter# 

可以看到不能直接访问了,下面带上证书及用户密码再次测试

root@zabbix:/opt/node_exporter# curl -u prometheus -s  --cacert node_exporter.crt https://localhost:39100/metrics |grep node_exporter_build_info
Enter host password for user 'prometheus':
# HELP node_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which node_exporter was built.
# TYPE node_exporter_build_info gauge
node_exporter_build_info{branch="HEAD",goversion="go1.19.3",revision="1b48970ffcf5630534fb00bb0687d73c66d1c959",version="1.5.0"} 1

Prometheus 配置

下载最新版解压,并将前面生成的 node_exporter.crt node_exporter.key 文件复制到该目录下。

wget https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/LatestRelease/prometheus-2.40.4.linux-amd64.tar.gz

在 prometheus.yml 加入如下内容:

global:
  scrape_interval:     15s 
  evaluation_interval: 15s 

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    scheme: https
    tls_config:
      ca_file: node_exporter.crt
      insecure_skip_verify: true
    basic_auth:
      username: prometheus
      password: 123456
    static_configs:
    - targets: ['localhost:9100']

启动 Prometheus 即可。

批量更新 Node_exporter

下载、解压

wget https://xfts.xzspj.tangshan.gov.cn/shell/node_exporter_ansible.zip
unzip node_exporter_ansible.zip
# 文件如下
[root@0001 yy]# ll
total 105612
-rw-r--r-- 1 root root       69 Dec  1 15:54 main.yaml
drwxr-xr-x 6 root root       59 Dec  1 15:44 node_exporter

这个 ansible roles 里包含了 Node_exporter 二进制文件, node_exporter.crt node_exporter.key,config.yaml ,systemd 文件。

[root@0001 yy]# cd node_exporter/
[root@0001 node_exporter]# ls
default  files  tasks  vars
[root@0001 node_exporter]# ls *
default:

files:
node_exporter.service  node_exporter.zip

tasks:
main.yaml

vars:
[root@0001 node_exporter]# cat tasks/main.yaml 
---


- name: unrar node to agent.
  unarchive:
    src: node_exporter.zip
    dest: /opt/

- name: Copy systemd to agent.
  copy:
    src: node_exporter.service
    dest: /etc/systemd/system/node_exporter.service

- name: start service
  systemd:
    state: started
    daemon_reload: yes
    name: node_exporter
[root@0001 node_exporter]# 

main.yaml

[root@0001 yy]# cat main.yaml 
- hosts: localhost
  gather_facts: no
  roles:
    - node_exporter

以后重启 Node_exporter,需要使用 systemd

systemctl restart node_exporter

建议先找一台机器进行测试。

标签:Node,node,exporter,--,prometheus,Prometheus,key,root
From: https://www.cnblogs.com/fsckzy/p/17095739.html

相关文章

  • android 编译 node js 14
    本文基于wslubuntu22.04.1LTS系统上成功编译安卓版nodejs14.15.4的一些记录.编译环境:nodejs用到两套编译器分别用来编译本机的一些工具链和目标平台的node二......
  • 对比开源丨Prometheus 服务多场景存储压测全解析
    作者:智真在Gartner发布的**《2023年十大战略技术趋势》[1]**报告中,「应用可观测性」再次成为热门趋势。用户需要建立可观测体系来统筹、整合企业数字化所产生的指......
  • node中的fs模块和http模块的学习
    读取文件fs模块第1个参数就是要读取的文件路径第2个参数是一个回调函数(error,data)=>{}error如果读取失败,error就是错误对象如果读取成功,error就是nu1lda......
  • 撸机智云羊毛-nodemcu 环境监测-之一
    前段时间,有个朋友家厨房漏水,半夜起来上厕所才发现,满地都是水,然后打算买个水滴传感器。买了个小米水滴传感器发现单独无法使用,需要配上网关,一套下来也要100+了,索性退了,......
  • Node.JS 配置cnpm
    视频百度npm搜到淘宝npm镜像npminstall-gcnpm--registry=//registry.npm.taobao.org这样既不影响npm访问美国服务器,又不影响cnpm访问中国服务器......
  • Node.JS npm简介
    视频npm的命令npm-v查看npm的版本npmversion查看所有模块的版本npmsearch包名搜索包npminstall/i包名安装包npmremove/r包名删除包npminsta......
  • Node.JS包简介(讲解了json文件怎么看)
    视频json文件不能写注释......
  • Node.JS exports和module.exports区别
    视频05.module.jsvarhello=require("./helloModule");/* exports和module.exports -通过exports只能使用.的方式来向外暴露内部变量 exports.xxx=xxx......
  • Node.JS模块化详解(Math加乘实现/模块外包围)
    视频math.js/* 定义一个模块math -在该模块中提供两个方法 add(a,b);//求两个数的和 mul(a,b);//求两个数的积*/module.exports.add=function(a......
  • nodejs系列-如何用JS代码连接远程服务器并执行命令创建文件-ssh2
    ssh2是什么?SSH2clientandserver模块用纯JavaScript为node.js编写。我们可以在代码里使用它链接远端服务器,执行一些必要的操作为什么要使用ssh2?作为一名前端,我们......