论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
安全
›
网络安全
›
不止能用!Prometheus+node_exporter+Grafana 监控系统 ...
不止能用!Prometheus+node_exporter+Grafana 监控系统的搭建详解与安全配 ...
西河刘卡车医
论坛元老
|
4 天前
|
显示全部楼层
|
阅读模式
楼主
主题
1926
|
帖子
1926
|
积分
5778
媒介
最近正好需要搭建一套监控平台,调研发现在服务器运维和应用监控范畴,Prometheus(普罗米修斯)+Grafana的组合堪称“黄金搭档”。Prometheus负责采集和存储监控指标,node_exporter作为轻量级代理网络服务器硬件/系统指标,Grafana则提供可视化图表展示。本文将以
CentOS 7/8系统
为例,手把手教你从安装到配置,搭建一套完备的服务器监控体系。因为是生产环境,要在用户、端口、认证等方面都要非常注意,以是相较于其他教程,会多一些安全上的处理。
搭建完成后界面:
一、环境预备
1.1 前置条件
操作系统:CentOS 7或更高版本(本文以CentOS 8为例)
用户权限:建议使用root用户操作(或具备sudo权限的用户)
网络要求:需访问GitHub、Grafana官网下载安装包(可提前预备代理或本地镜像)
硬件要求:Prometheus默认资源占用较低,测试环境建议至少1核2G内存;生产环境根据监控规模调整
二、安装Prometheus焦点服务
2.1 下载并解压安装包
Prometheus官方提供了预编译的二进制包,我们选择最新的
3.3.0-rc.1版本
(制止2025年5月,可到GitHub Releases检察最新版本):
# 下载安装包(若速度慢可使用代理)
wget https://github.com/prometheus/prometheus/releases/download/v3.3.0-rc.1/prometheus-3.3.0-rc.1.linux-amd64.tar.gz
# 解压到/usr/local目录(生产环境建议统一存放软件)
tar -zxvf prometheus-3.3.0-rc.1.linux-amd64.tar.gz -C /usr/local
# 创建软连接(方便后续升级维护,无需修改配置路径)
ln -s /usr/local/prometheus-3.3.0-rc.1.linux-amd64 /usr/local/prometheus
复制代码
2.2 创建专用运行用户
为了安全隔离,避免以root权限运行服务,我们创建专用用户和用户组:
# 创建prometheus用户组
groupadd prometheus
# 创建prometheus用户(-s指定不允许登录系统,-g指定用户组)
useradd -g prometheus -s /sbin/nologin prometheus
# 为Prometheus主目录赋予权限(确保用户有权限访问配置和数据)
chown -R prometheus:prometheus /usr/local/prometheus/
复制代码
2.3 配置systemd服务
通过systemd管理服务可以实现开机自启、自动重启等功能,操作如下:
# 创建服务配置文件
cat > /etc/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus Monitoring System
Documentation=https://prometheus.io/docs/
After=network.target # 确保网络启动后再启动服务
[Service]
Type=simple
User=prometheus # 使用专用用户运行
# 启动命令:指定配置文件和数据存储路径(默认是./data,建议单独目录便于管理)
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus
Restart=on-failure # 失败自动重启
RestartSec=5 # 重启间隔5秒
[Install]
WantedBy=multi-user.target # 加入多用户目标组,实现开机自启
EOF
复制代码
注意
:--storage.tsdb.path指定的/var/lib/prometheus目录需要提前创建并赋予权限:
mkdir -p /var/lib/prometheus
chown -R prometheus:prometheus /var/lib/prometheus
复制代码
2.4 启动并验证服务
# 重新加载systemd配置
systemctl daemon-reload
# 启动服务
systemctl start prometheus.service
# 设置开机自启
systemctl enable prometheus.service
# 检查服务状态(确保Active: active (running))
systemctl status prometheus.service
复制代码
验证服务是否正常:访问http://服务器IP:9090(默认端口9090),看到Prometheus的Web界面即安装成功。
三、安装node_exporter(服务器指标采集器)
node_exporter是Prometheus生态中专门用于采集服务器硬件和系统指标(如CPU、内存、磁盘、网络)的代理程序,需要安装到
每台被监控的服务器
上(包罗Prometheus所在服务器)。
3.1 下载并解压安装包
选择最新的
1.9.1版本
(GitHub Releases):
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz
# 解压到/usr/local
tar -zxvf node_exporter-1.9.1.linux-amd64.tar.gz -C /usr/local
# 创建软连接
ln -s /usr/local/node_exporter-1.9.1.linux-amd64 /usr/local/node_exporter
# 赋予权限(使用之前创建的prometheus用户)
chown -R prometheus:prometheus /usr/local/node_exporter/
复制代码
3.2 配置systemd服务
cat > /usr/lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter for Prometheus
Documentation=https://prometheus.io/docs/guides/node-exporter/
After=network.target
[Service]
Type=simple
User=prometheus
# 启动命令:指定监听地址和认证配置(后续会讲解认证)
ExecStart=/usr/local/node_exporter/node_exporter \
--web.listen-address=192.168.1.100:9101 \ # 固定IP:端口(可修改为服务器实际IP)
--web.config.file=/etc/node_exporter/web-auth.yaml # 认证配置文件路径
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
复制代码
3.3 启动并验证服务
systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter
# 检查状态
systemctl status node_exporter
# 验证指标是否正常暴露(访问http://服务器IP:9101/metrics)
curl http://192.168.1.100:9101/metrics
复制代码
若返回大量以node_开头的指标(如node_cpu_seconds_total),说明node_exporter运行正常。
四、安装Grafana(监控可视化工具)
Grafana用于将Prometheus的指标数据可视化成图表,支持丰富的仪表盘模板和告警功能。
4.1 下载并安装(RPM包)
Grafana提供企业版和社区版,本文以企业版11.6.1为例:
# 下载RPM包(若无法访问官网,可使用镜像源)
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.6.1-1.x86_64.rpm
# 安装(自动处理依赖)
yum install -y grafana-enterprise-11.6.1-1.x86_64.rpm
复制代码
4.2 启动并配置
# 启动服务
systemctl restart grafana-server
# 设置开机自启
systemctl enable grafana-server
# 检查状态
systemctl status grafana-server
复制代码
4.3 访问Grafana界面
浏览器访问http://服务器IP:3000(默认端口3000),初始用户名/密码为admin/admin(首次登录会提示修改密码)。
五、Prometheus配置监控node_exporter
5.1 配置Prometheus抓取任务
Prometheus通过prometheus.yml配置需要监控的目标(称为“Job”)。我们需要添加对node_exporter的抓取任务:
# 编辑主配置文件
vim /usr/local/prometheus/prometheus.yml
复制代码
在scrape_configs部分添加以下内容(示例监控本地node_exporter):
scrape_configs:
- job_name: 'linux-node-cluster' # 任务名称(自定义)
static_configs:
- targets: ['localhost:9100'] # node_exporter的IP:端口(若监控远程服务器,替换为实际IP)
复制代码
注意
:若node_exporter修改了默认端口(如本文设置为9101),需将targets中的端口改为9101。
5.2 验证配置并重启Prometheus
# 检查配置文件语法(输出"Checking prometheus.yml... SUCCESS"即正确)
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
# 重启Prometheus使配置生效
systemctl restart prometheus
复制代码
5.3 检察监控目标状态
访问Prometheus Web界面(http://服务器IP:9090/targets),在“Status”列应看到UP状态,说明Prometheus已成功抓取node_exporter的指标。
六、进阶配置:启用Basic Auth认证
为了防止node_exporter的指标接口被未授权访问,我们可以启用Basic Auth认证。
6.1 安装密码生成工具
使用htpasswd生成加密密码(需安装httpd-tools):
yum install -y httpd-tools # 安装htpasswd工具
复制代码
6.2 生成加密认证文件
# 创建认证目录并设置权限(仅prometheus用户可访问)
mkdir -p /etc/node_exporter
chmod 750 /etc/node_exporter
chown prometheus:prometheus /etc/node_exporter
# 生成加密密码(替换"prometheus"为用户名,按提示输入密码)
htpasswd -nBC 12 prometheus | tr -d ':\n' > /etc/node_exporter/web-auth.yaml
复制代码
执行后会输出类似以下内容(已加密的密码):
prometheus$2y$12$yVe23232323S0JR/423322/5jU222C3333226
复制代码
6.3 配置node_exporter认证
编辑web-auth.yaml文件(删除用户名前的明文部分):
vim /etc/node_exporter/web-auth.yaml
复制代码
修改为:
basic_auth_users:
prometheus: "$2y$12$yVe23232323S0JR/423322/5jU222C3333226" # 仅保留加密字符串
复制代码
6.4 更新node_exporter服务配置
修改node_exporter.service文件,确保--web.config.file指向认证文件:
vim /usr/lib/systemd/system/node_exporter.service
复制代码
调整后的ExecStart行:
ExecStart=/usr/local/node_exporter/node_exporter \
--web.listen-address=192.168.1.100:9101 \ # 替换为实际IP
--web.config.file=/etc/node_exporter/web-auth.yaml
复制代码
6.5 重启服务使认证生效
systemctl daemon-reload
systemctl restart node_exporter
复制代码
验证认证:访问http://服务器IP:9101/metrics,会提示输入用户名(prometheus)和之前设置的密码,输入正确后才气检察指标。
七、配置Prometheus监控远程生产服务器
若需要监控多台远程服务器(如生产环境的多台主机),只需在每台服务器安装node_exporter,然后在Prometheus的prometheus.yml中添加对应的抓取任务。
7.1 示例配置(监控远程服务器)
scrape_configs:
- job_name: 'node_exporter_prod' # 生产环境任务名称
scheme: http # 若使用HTTPS需改为https
basic_auth: # 若远程node_exporter启用了认证,需填写用户名密码
username: prometheus
password: prometheus # 与node_exporter的web-auth.yaml一致
static_configs:
- targets: ['192.168.1.100:9100', '192.168.1.101:9100'] # 远程服务器IP:端口
复制代码
7.2 重启Prometheus生效
systemctl restart prometheus
复制代码
八、Grafana配置Prometheus数据源
最后一步是将Prometheus的数据接入Grafana,实现可视化:
登录Grafana(http://服务器IP:3000),点击左侧菜单Configuration > Data Sources。
点击Add data source,选择Prometheus。
在URL字段填写Prometheus的访问所在(如http://192.168.1.100:9090)。
点击Save & Test,提示“Data source is working”即连接成功。
导入仪表盘模板:在Grafana市场搜刮Node Exporter Full(ID: 1860),直接导入即可看到丰富的服务器监控图表。
九、常见问题排查
Q1:Prometheus状态显示“DOWN”
查抄node_exporter是否正常运行(systemctl status node_exporter)。
确认防火墙是否开放了node_exporter的端口(如9100/9101):
firewall-cmd --add-port=9101/tcp --permanent
firewall-cmd --reload
复制代码
查抄prometheus.yml配置是否正确(使用promtool check config验证)。
Q2:Grafana无法连接Prometheus
确认Prometheus服务是否运行(systemctl status prometheus)。
查抄Grafana的数据源URL是否正确(确保IP和端口与Prometheus实际监听所在一致)。
若Prometheus启用了认证(如Basic Auth),需在Grafana数据源配置中填写认证信息。
Q3:node_exporter指标不完备
查抄node_exporter是否有缺失的采集器(可通过--collectors.enabled参数启用特定采集器)。
确认服务器内核或系统版本是否兼容(node_exporter支持主流Linux发行版)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
西河刘卡车医
论坛元老
这个人很懒什么都没写!
楼主热帖
【容器~原始真解】Docker —— 容器的 ...
轻量级CI/CD发布部署环境搭建及使用_06 ...
工行、建行、农行的 IT 架构是什么样的 ...
全双工与半双工技术剖析
PHP判断远程文件是否存在的四种方法 ...
超融合一体机上新,打通信创落地的“顶 ...
Spring--循环依赖的原理(四)--为什么用 ...
继承和多重继承
MySQL高可用架构搭建实战
一文了解华为FusionInsight MRS HBase ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
数据安全
人工智能
Java
linux
前端开发
快速回复
返回顶部
返回列表