抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

简单介绍

node_exporter是用来采集服务器的基本指标信息的,prometheus负责连接node_exporter来收集node_exporter获取到的数据,让grafana来负责展示prometheus采集到的数据。

简单看一下成果:

grafana

安装node_exporter

由于是给arm64的机器安装node_exporter来采集数据,所以本文中的例子皆以arm64机器为准:

下载node_exporter并且将二进制文件放到bin目录中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#去github找到最新的版本
https://github.com/prometheus/node_exporter/releases

#下载最新的版本文件(如果云服务器下载过长,可以先本地下载,然后上传到服务器)
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-arm64.tar.gz

#解压下载的文件
tar -zxvf node_exporter-1.3.1.linux-arm64.tar.gz

#将可执行文件复制到/usr/local/bin中
cp node_exporter-1.3.1.linux-arm64/node_exporter /usr/local/bin/

#给执行权限,不然有可能因为权限问题无法执行
chmod +x /usr/local/bin/node_exporter

增加安全访问措施

增加安全访问措施,主要分为两个主要步骤:

  1. 将地址设置为HTTPS,保障数据在传输过程中加密传输
  2. 加上基础的账号密码验证

我这边主要是参考node_exporter增加密码和https验证,主要步骤如下:

  • 创建ssl证书

    1
    2
    3
    4
    5
    6
    7
    8
    #存放证书的文件夹
    mkdir -p node_exporter_config/cert

    #打开文件夹
    cd node_exporter_config/cert

    #有效期10年的ssl自签名证书
    openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout server.key -out server.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=CJ/CN=127.0.0.1" -addext "subjectAltName = DNS:127.0.0.1"
  • 创建node_exporter的配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #存放配置的文件夹,一下都以该文件夹为准
    cd node_exporter_config/

    #生成对应的密码(如果没有htpasswd,那么用yum 安装即可),输入你要设置的密码,然后将生成的串保存
    htpasswd -nBC 10 "" | tr -d ':\n'; echo


    #创建配置文件
    vi config.yml

    #将以下内容写进去,对应的htpasswd就是上一步生成的字符串

    tls_server_config:
    cert_file: cert/server.crt
    key_file: cert/server.key
    basic_auth_users:
    node_exporter: <the-output-value-of-htpasswd>

将node_exporter设置为service

  • 使用命令vi /etc/systemd/system/node_exporter.service 创建service文件,并填充如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [Unit]
    Description=Node exporter
    After=network.target

    [Service]
    User=root
    Group=root
    Type=simple
    ExecStart=/usr/local/bin/node_exporter --path.rootfs=/data/logs/exporter --web.listen-address=:1006 --web.config=node_exporter_config/config.yml

    [Install]
    WantedBy=multi-user.target

考虑到实际情况,所以修改了具体的保存点和对应的端口,如果不需要可以修改或者移除--path.rootfs=/data/logs/exporter --web.listen-address=:1006

如果没有执行权限:chmod +x /etc/systemd/system/node_exporter.service

  • 启动node_exporter 并加入开启启动项
1
2
3
4
5
6
7
8
9
10
11
# reload daemon
systemctl daemon-reload

# 启动
systemctl start node_exporter.service

# 查看状态
systemctl status node_exporter.service

# 系统boot时 启用node_exporter
systemctl enable node_exporter.service

设置prometheus正确的采集数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#假定prometheus已安装好并且已经在使用状态下

#设置prometheus的配置文件
vi prometheus.yml

#增加如下配置,然后重启prometheus或者刷新配置即可:

scrape_configs:
- job_name: 'node-exporter-tls'
scheme: https
basic_auth:
username: node_exporter
password: ${你设置的密码明文}
tls_config:
ca_file: node_exporter_config/cert/server.crt
#很多文档中没有写,必须要加,node_export一直提示SSL握手失败
insecure_skip_verify: true
static_configs:
- targets: ['node-exporter-ip:1006']
labels:
instance: friendly-instance-name

总结

由于node_exporter的特殊性,一向喜欢用docker来进行管理的我这次选择了用源文件来安装对应的服务,实际上docker安装的效果是完全一致的。

本次的node_exporter主要遇到的坑点就是SSL一直提示握手失败,然后我各种搜文档,找资料。

最后一行代码解决:insecure_skip_verify: true,还是要多看官方文档,查看有没有可用的选项让你避免出现错误什么的。

参考文档:

评论