简单介绍
node_exporter是用来采集服务器的基本指标信息的,prometheus负责连接node_exporter来收集node_exporter获取到的数据,让grafana来负责展示prometheus采集到的数据。
简单看一下成果:
安装node_exporter
由于是给arm64的机器安装node_exporter来采集数据,所以本文中的例子皆以arm64机器为准:
下载node_exporter并且将二进制文件放到bin目录中
1 | #去github找到最新的版本 |
增加安全访问措施
增加安全访问措施,主要分为两个主要步骤:
- 将地址设置为HTTPS,保障数据在传输过程中加密传输
- 加上基础的账号密码验证
我这边主要是参考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 | # reload daemon |
设置prometheus正确的采集数据
1 | #假定prometheus已安装好并且已经在使用状态下 |
总结
由于node_exporter的特殊性,一向喜欢用docker来进行管理的我这次选择了用源文件来安装对应的服务,实际上docker安装的效果是完全一致的。
本次的node_exporter主要遇到的坑点就是SSL一直提示握手失败,然后我各种搜文档,找资料。
最后一行代码解决:insecure_skip_verify: true
,还是要多看官方文档,查看有没有可用的选项让你避免出现错误什么的。
参考文档: