不止能用!Prometheus+node_exporter+Grafana 监控系统的搭建详解与安全配 ...

打印 上一主题 下一主题

主题 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检察最新版本):
  1. # 下载安装包(若速度慢可使用代理)
  2. wget https://github.com/prometheus/prometheus/releases/download/v3.3.0-rc.1/prometheus-3.3.0-rc.1.linux-amd64.tar.gz
  3. # 解压到/usr/local目录(生产环境建议统一存放软件)
  4. tar -zxvf prometheus-3.3.0-rc.1.linux-amd64.tar.gz -C /usr/local
  5. # 创建软连接(方便后续升级维护,无需修改配置路径)
  6. ln -s /usr/local/prometheus-3.3.0-rc.1.linux-amd64 /usr/local/prometheus
复制代码
2.2 创建专用运行用户

为了安全隔离,避免以root权限运行服务,我们创建专用用户和用户组:
  1. # 创建prometheus用户组
  2. groupadd prometheus
  3. # 创建prometheus用户(-s指定不允许登录系统,-g指定用户组)
  4. useradd -g prometheus -s /sbin/nologin prometheus
  5. # 为Prometheus主目录赋予权限(确保用户有权限访问配置和数据)
  6. chown -R prometheus:prometheus /usr/local/prometheus/
复制代码
2.3 配置systemd服务

通过systemd管理服务可以实现开机自启、自动重启等功能,操作如下:
  1. # 创建服务配置文件
  2. cat > /etc/systemd/system/prometheus.service <<EOF
  3. [Unit]
  4. Description=Prometheus Monitoring System
  5. Documentation=https://prometheus.io/docs/
  6. After=network.target  # 确保网络启动后再启动服务
  7. [Service]
  8. Type=simple
  9. User=prometheus       # 使用专用用户运行
  10. # 启动命令:指定配置文件和数据存储路径(默认是./data,建议单独目录便于管理)
  11. ExecStart=/usr/local/prometheus/prometheus \
  12.   --config.file=/usr/local/prometheus/prometheus.yml \
  13.   --storage.tsdb.path=/var/lib/prometheus
  14. Restart=on-failure    # 失败自动重启
  15. RestartSec=5          # 重启间隔5秒
  16. [Install]
  17. WantedBy=multi-user.target  # 加入多用户目标组,实现开机自启
  18. EOF
复制代码
注意:--storage.tsdb.path指定的/var/lib/prometheus目录需要提前创建并赋予权限:
  1. mkdir -p /var/lib/prometheus
  2. chown -R prometheus:prometheus /var/lib/prometheus
复制代码
2.4 启动并验证服务

  1. # 重新加载systemd配置
  2. systemctl daemon-reload
  3. # 启动服务
  4. systemctl start prometheus.service
  5. # 设置开机自启
  6. systemctl enable prometheus.service
  7. # 检查服务状态(确保Active: active (running))
  8. systemctl status prometheus.service
复制代码
验证服务是否正常:访问http://服务器IP:9090(默认端口9090),看到Prometheus的Web界面即安装成功。

三、安装node_exporter(服务器指标采集器)

node_exporter是Prometheus生态中专门用于采集服务器硬件和系统指标(如CPU、内存、磁盘、网络)的代理程序,需要安装到每台被监控的服务器上(包罗Prometheus所在服务器)。
3.1 下载并解压安装包

选择最新的1.9.1版本(GitHub Releases):
  1. wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz
  2. # 解压到/usr/local
  3. tar -zxvf node_exporter-1.9.1.linux-amd64.tar.gz -C /usr/local
  4. # 创建软连接
  5. ln -s /usr/local/node_exporter-1.9.1.linux-amd64 /usr/local/node_exporter
  6. # 赋予权限(使用之前创建的prometheus用户)
  7. chown -R prometheus:prometheus /usr/local/node_exporter/
复制代码
3.2 配置systemd服务

  1. cat > /usr/lib/systemd/system/node_exporter.service <<EOF
  2. [Unit]
  3. Description=Node Exporter for Prometheus
  4. Documentation=https://prometheus.io/docs/guides/node-exporter/
  5. After=network.target
  6. [Service]
  7. Type=simple
  8. User=prometheus
  9. # 启动命令:指定监听地址和认证配置(后续会讲解认证)
  10. ExecStart=/usr/local/node_exporter/node_exporter \
  11.   --web.listen-address=192.168.1.100:9101 \    # 固定IP:端口(可修改为服务器实际IP)
  12.   --web.config.file=/etc/node_exporter/web-auth.yaml  # 认证配置文件路径
  13. Restart=on-failure
  14. RestartSec=5
  15. [Install]
  16. WantedBy=multi-user.target
  17. EOF
复制代码
3.3 启动并验证服务

  1. systemctl daemon-reload
  2. systemctl start node_exporter
  3. systemctl enable node_exporter
  4. # 检查状态
  5. systemctl status node_exporter
  6. # 验证指标是否正常暴露(访问http://服务器IP:9101/metrics)
  7. 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为例:
  1. # 下载RPM包(若无法访问官网,可使用镜像源)
  2. wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.6.1-1.x86_64.rpm
  3. # 安装(自动处理依赖)
  4. yum install -y grafana-enterprise-11.6.1-1.x86_64.rpm
复制代码
4.2 启动并配置

  1. # 启动服务
  2. systemctl restart grafana-server
  3. # 设置开机自启
  4. systemctl enable grafana-server
  5. # 检查状态
  6. 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的抓取任务:
  1. # 编辑主配置文件
  2. vim /usr/local/prometheus/prometheus.yml
复制代码
在scrape_configs部分添加以下内容(示例监控本地node_exporter):
  1. scrape_configs:
  2.   - job_name: 'linux-node-cluster'  # 任务名称(自定义)
  3.     static_configs:
  4.       - targets: ['localhost:9100']  # node_exporter的IP:端口(若监控远程服务器,替换为实际IP)
复制代码
注意:若node_exporter修改了默认端口(如本文设置为9101),需将targets中的端口改为9101。
5.2 验证配置并重启Prometheus

  1. # 检查配置文件语法(输出"Checking prometheus.yml... SUCCESS"即正确)
  2. /usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
  3. # 重启Prometheus使配置生效
  4. 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):
  1. yum install -y httpd-tools  # 安装htpasswd工具
复制代码
6.2 生成加密认证文件

  1. # 创建认证目录并设置权限(仅prometheus用户可访问)
  2. mkdir -p /etc/node_exporter
  3. chmod 750 /etc/node_exporter
  4. chown prometheus:prometheus /etc/node_exporter
  5. # 生成加密密码(替换"prometheus"为用户名,按提示输入密码)
  6. htpasswd -nBC 12 prometheus | tr -d ':\n' > /etc/node_exporter/web-auth.yaml
复制代码
执行后会输出类似以下内容(已加密的密码):
  1. prometheus$2y$12$yVe23232323S0JR/423322/5jU222C3333226
复制代码
6.3 配置node_exporter认证

编辑web-auth.yaml文件(删除用户名前的明文部分):
  1. vim /etc/node_exporter/web-auth.yaml
复制代码
修改为:
  1. basic_auth_users:
  2.   prometheus: "$2y$12$yVe23232323S0JR/423322/5jU222C3333226"  # 仅保留加密字符串
复制代码
6.4 更新node_exporter服务配置

修改node_exporter.service文件,确保--web.config.file指向认证文件:
  1. vim /usr/lib/systemd/system/node_exporter.service
复制代码
调整后的ExecStart行:
  1. ExecStart=/usr/local/node_exporter/node_exporter \
  2.   --web.listen-address=192.168.1.100:9101 \  # 替换为实际IP
  3.   --web.config.file=/etc/node_exporter/web-auth.yaml
复制代码
6.5 重启服务使认证生效

  1. systemctl daemon-reload
  2. systemctl restart node_exporter
复制代码
验证认证:访问http://服务器IP:9101/metrics,会提示输入用户名(prometheus)和之前设置的密码,输入正确后才气检察指标。

七、配置Prometheus监控远程生产服务器

若需要监控多台远程服务器(如生产环境的多台主机),只需在每台服务器安装node_exporter,然后在Prometheus的prometheus.yml中添加对应的抓取任务。
7.1 示例配置(监控远程服务器)

  1. scrape_configs:
  2.   - job_name: 'node_exporter_prod'  # 生产环境任务名称
  3.     scheme: http  # 若使用HTTPS需改为https
  4.     basic_auth:    # 若远程node_exporter启用了认证,需填写用户名密码
  5.       username: prometheus
  6.       password: prometheus  # 与node_exporter的web-auth.yaml一致
  7.     static_configs:
  8.       - targets: ['192.168.1.100:9100', '192.168.1.101:9100']  # 远程服务器IP:端口
复制代码
7.2 重启Prometheus生效

  1. 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):
    1. firewall-cmd --add-port=9101/tcp --permanent
    2. 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 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表