macOS 安装 Grafana + Prometheus + Node Exporter

macOS 安装指南:Grafana + Prometheus + Node Exporter

    • 目录
    • 简介
      • [🚀 快速开始](#🚀 快速开始)
    • [安装 Homebrew](#安装 Homebrew)
      • [1. 安装 Homebrew](#1. 安装 Homebrew)
      • [2. 更新 Homebrew](#2. 更新 Homebrew)
    • [安装 Node Exporter](#安装 Node Exporter)
      • [使用 Homebrew 安装](#使用 Homebrew 安装)
      • [验证 Node Exporter](#验证 Node Exporter)
    • [安装 Prometheus](#安装 Prometheus)
      • [使用 Homebrew 安装](#使用 Homebrew 安装)
      • 验证安装
    • [安装 Grafana](#安装 Grafana)
      • [使用 Homebrew 安装](#使用 Homebrew 安装)
      • [验证 Grafana 安装](#验证 Grafana 安装)
    • 一键安装所有组件
    • [配置 Prometheus](#配置 Prometheus)
      • [1. 创建配置文件](#1. 创建配置文件)
      • [2. Prometheus 配置内容](#2. Prometheus 配置内容)
      • [3. 创建告警规则(可选)](#3. 创建告警规则(可选))
      • [4. 启动 Prometheus](#4. 启动 Prometheus)
    • [配置 Grafana](#配置 Grafana)
      • [1. 首次登录配置](#1. 首次登录配置)
      • [2. 添加 Prometheus 数据源](#2. 添加 Prometheus 数据源)
      • [3. 配置通知渠道(可选)](#3. 配置通知渠道(可选))
    • 导入监控面板
      • 推荐的面板模板
        • [1. 通过面板 ID 导入](#1. 通过面板 ID 导入)
        • [2. 自定义面板 JSON](#2. 自定义面板 JSON)
    • 验证和测试
      • [1. 检查所有服务状态](#1. 检查所有服务状态)
      • [3. Grafana 面板测试](#3. Grafana 面板测试)
    • 故障排除
      • 常见问题和解决方案
        • [1. Node Exporter 无法启动](#1. Node Exporter 无法启动)
        • [2. Prometheus 配置错误](#2. Prometheus 配置错误)
        • [3. Grafana 连接问题](#3. Grafana 连接问题)
        • [4. 面板显示 "No data"](#4. 面板显示 "No data")
        • [5. 权限问题](#5. 权限问题)
    • 进阶配置
      • [1. 配置告警管理器](#1. 配置告警管理器)
      • [2. 配置远程存储](#2. 配置远程存储)
      • [3. 设置数据保留策略](#3. 设置数据保留策略)
      • [4. 配置 HTTPS](#4. 配置 HTTPS)
      • [5. 性能优化](#5. 性能优化)
    • 最佳实践
      • [1. 监控策略](#1. 监控策略)
      • [2. 安全建议](#2. 安全建议)
    • 总结
      • [✅ 已完成的组件](#✅ 已完成的组件)
      • [🎯 实现的功能](#🎯 实现的功能)
      • [🍺 Homebrew 安装优势](#🍺 Homebrew 安装优势)
      • [📊 常用访问地址](#📊 常用访问地址)
      • [🔧 日常维护命令](#🔧 日常维护命令)
      • [🚀 下一步扩展](#🚀 下一步扩展)
    • [📋 快速参考](#📋 快速参考)

目录

简介

在 macOS 系统上搭建监控

  • Node Exporter: 系统指标收集器

  • Prometheus: 时序数据库和监控服务器

  • Grafana: 数据可视化和仪表板平台

  • 🍺 统一使用 Homebrew 安装 - 简洁、快速、可靠

  • 🚀 一键安装命令 - 三个组件一次性搞定

  • 📊 开箱即用 - 完整的配置模板和面板

  • 🔧 自动化管理 - 服务自启动和状态监控

监控:

  • 实时监控系统性能(CPU、内存、磁盘、网络)
  • 设置告警规则
  • 创建美观的监控仪表板
  • 分析历史数据趋势

🚀 快速开始

安装 Homebrew

bash 复制代码
# 1. 安装所有组件
brew install grafana prometheus node_exporter

# 2. 启动所有服务
brew services start grafana prometheus node_exporter

# 3. 验证安装
http://localhost:3000  # Grafana 面板
http://localhost:9090  # Prometheus 监控
http://localhost:9100

安装 Homebrew

Homebrew 是 macOS 上最流行的包管理器

1. 安装 Homebrew

bash 复制代码
# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 验证安装
brew --version

2. 更新 Homebrew

bash 复制代码
# 更新 Homebrew 和包列表
brew update

安装 Node Exporter

Node Exporter 负责收集系统级别的指标数据。

使用 Homebrew 安装

bash 复制代码
# 安装 node_exporter
brew install node_exporter

# 启动服务
brew services start node_exporter

# 设置开机自启动
brew services enable node_exporter

验证 Node Exporter

bash 复制代码
# 检查服务状态
brew services list | grep node_exporter

# 测试访问指标
curl http://localhost:9100/metrics | head -20

# 检查进程
ps aux | grep node_exporter

安装 Prometheus

Prometheus 是核心的监控服务器,负责收集和存储时序数据。

使用 Homebrew 安装

bash 复制代码
# 安装 Prometheus
brew install prometheus

# 查看安装信息
brew info prometheus

验证安装

bash 复制代码
# 检查版本
prometheus --version

# 查看配置文件位置
ls -la /opt/homebrew/etc/prometheus.yml
# 或者(Intel 芯片)
ls -la /usr/local/etc/prometheus.yml

安装 Grafana

Grafana 提供强大的数据可视化和仪表板功能。

使用 Homebrew 安装

bash 复制代码
# 安装 Grafana
brew install grafana

# 启动服务
brew services start grafana

# 设置开机自启动
brew services enable grafana

验证 Grafana 安装

bash 复制代码
# 检查服务状态
brew services list | grep grafana

# 访问 Web 界面
http://localhost:3000

默认登录信息:

  • 用户名:admin
  • 密码:admin

一键安装所有组件

一次性安装所有组件:

bash 复制代码
# 一次性安装所有监控组件
brew install grafana prometheus node_exporter

# 启动所有服务
brew services start grafana
brew services start prometheus  
brew services start node_exporter

# 设置开机自启动
brew services enable grafana
brew services enable prometheus
brew services enable node_exporter

# 验证所有服务状态
brew services list | grep -E "(grafana|prometheus|node_exporter)"

配置 Prometheus

1. 创建配置文件

bash 复制代码
# 备份原配置文件
cp /opt/homebrew/etc/prometheus.yml /opt/homebrew/etc/prometheus.yml.backup

# 编辑配置文件
nano /opt/homebrew/etc/prometheus.yml

2. Prometheus 配置内容

yaml 复制代码
# prometheus.yml
global:
  scrape_interval: 15s          # 全局抓取间隔
  evaluation_interval: 15s      # 规则评估间隔
  scrape_timeout: 10s          # 抓取超时

# 规则文件配置
rule_files:
  - "/opt/homebrew/etc/prometheus/rules/*.yml"

# 抓取配置
scrape_configs:
  # Prometheus 自身监控
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
    scrape_interval: 5s
    metrics_path: /metrics

  # Node Exporter 监控
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['localhost:9100']
    scrape_interval: 15s
    metrics_path: /metrics

  # 可选:添加其他服务器的监控
  - job_name: 'remote-servers'
    static_configs:
      - targets: 
          - 'server1.example.com:9100'
          - 'server2.example.com:9100'
    scrape_interval: 30s

# 存储配置
storage:
  tsdb:
    path: /opt/homebrew/var/prometheus
    retention.time: 15d
    retention.size: 1GB

# Web 配置
web:
  listen-address: 0.0.0.0:9090
  max-connections: 512
  read-timeout: 30s

3. 创建告警规则(可选)

bash 复制代码
# 创建规则目录
mkdir -p /opt/homebrew/etc/prometheus/rules

# 创建基本告警规则
cat > /opt/homebrew/etc/prometheus/rules/basic_alerts.yml << EOF
groups:
  - name: basic_alerts
    rules:
      # 实例下线告警
      - alert: InstanceDown
        expr: up == 0
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "实例 {{ \$labels.instance }} 已下线"
          description: "{{ \$labels.instance }} 已经下线超过 5 分钟"

      # 高 CPU 使用率告警
      - alert: HighCpuUsage
        expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "{{ \$labels.instance }} CPU 使用率过高"
          description: "CPU 使用率超过 80% 超过 5 分钟"

      # 高内存使用率告警
      - alert: HighMemoryUsage
        expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "{{ \$labels.instance }} 内存使用率过高"
          description: "内存使用率超过 90% 超过 5 分钟"

      # 磁盘空间不足告警
      - alert: DiskSpaceLow
        expr: (node_filesystem_avail_bytes{fstype!="tmpfs"} / node_filesystem_size_bytes{fstype!="tmpfs"}) * 100 < 10
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "{{ \$labels.instance }} 磁盘空间不足"
          description: "磁盘 {{ \$labels.device }} 可用空间少于 10%"
EOF

4. 启动 Prometheus

bash 复制代码
# 验证配置文件
prometheus --config.file=/opt/homebrew/etc/prometheus.yml --dry-run

# 启动 Prometheus 服务
brew services start prometheus

# 重启服务(如果已经在运行)
brew services restart prometheus

配置 Grafana

1. 首次登录配置

  1. 访问 http://localhost:3000
  2. 使用默认账号登录:admin / admin
  3. 设置新密码

2. 添加 Prometheus 数据源

  1. 点击左侧菜单 "Configuration" → "Data Sources"
  2. 点击 "Add data source"
  3. 选择 "Prometheus"
  4. 配置以下信息:
    • Name : Prometheus
    • URL : http://localhost:9090
    • Access : Server (default)
  5. 点击 "Save & Test"

3. 配置通知渠道(可选)

bash 复制代码
# 配置邮件通知
1. 进入 "Alerting" → "Notification channels"
2. 点击 "New Channel"
3. 选择通知类型(Email, Slack, Webhook 等)
4. 填写相关配置信息

导入监控面板

推荐的面板模板

1. 通过面板 ID 导入
  1. 点击左侧 "+" → "Import"
  2. 输入以下推荐的面板 ID:
bash 复制代码
# Node Exporter 经典面板
1860    # Node Exporter Full(最受欢迎)
11074   # Node Exporter for Prometheus Dashboard
405     # Node Exporter Server Metrics

# macOS 专用面板
15797   # Node Exporter Mac OSX
12486   # Node Exporter macOS Dashboard
  1. 点击 "Load"
  2. 选择 Prometheus 数据源
  3. 点击 "Import"
2. 自定义面板 JSON

创建简单的 macOS 监控面板:

json 复制代码
{
  "dashboard": {
    "id": null,
    "title": "macOS 系统监控",
    "tags": ["macos", "node-exporter"],
    "timezone": "browser",
    "panels": [
      {
        "id": 1,
        "title": "CPU 使用率",
        "type": "stat",
        "targets": [
          {
            "expr": "100 - (avg by(instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
            "legendFormat": "CPU 使用率 %"
          }
        ],
        "fieldConfig": {
          "defaults": {
            "unit": "percent",
            "min": 0,
            "max": 100,
            "thresholds": {
              "steps": [
                {"color": "green", "value": null},
                {"color": "yellow", "value": 70},
                {"color": "red", "value": 90}
              ]
            }
          }
        },
        "gridPos": {"h": 8, "w": 6, "x": 0, "y": 0}
      },
      {
        "id": 2,
        "title": "内存使用率",
        "type": "stat",
        "targets": [
          {
            "expr": "(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100",
            "legendFormat": "内存使用率 %"
          }
        ],
        "fieldConfig": {
          "defaults": {
            "unit": "percent",
            "min": 0,
            "max": 100,
            "thresholds": {
              "steps": [
                {"color": "green", "value": null},
                {"color": "yellow", "value": 70},
                {"color": "red", "value": 90}
              ]
            }
          }
        },
        "gridPos": {"h": 8, "w": 6, "x": 6, "y": 0}
      }
    ],
    "time": {
      "from": "now-1h",
      "to": "now"
    },
    "refresh": "30s"
  }
}

验证和测试

1. 检查所有服务状态

bash 复制代码
# 检查所有相关服务
brew services list | grep -E "(prometheus|grafana|node_exporter)"

# 检查端口占用
lsof -i :9090  # Prometheus
lsof -i :3000  # Grafana
lsof -i :9100  # Node Exporter
验证目标状态

访问 http://localhost:9090/targets 确保所有目标都是 "UP" 状态。

3. Grafana 面板测试

  1. 访问 http://localhost:3000
  2. 选择导入的面板
  3. 确认数据正常显示
  4. 测试时间范围选择器
  5. 验证自动刷新功能

故障排除

常见问题和解决方案

1. Node Exporter 无法启动
bash 复制代码
# 检查端口是否被占用
lsof -i :9100

# 查看错误日志
tail -f /var/log/node_exporter.log

# 重启服务
brew services restart node_exporter
2. Prometheus 配置错误
bash 复制代码
# 验证配置文件语法
prometheus --config.file=/opt/homebrew/etc/prometheus.yml --dry-run

# 检查规则文件
promtool check rules /opt/homebrew/etc/prometheus/rules/*.yml

# 查看日志
tail -f /opt/homebrew/var/log/prometheus.log
3. Grafana 连接问题
bash 复制代码
# 测试 Prometheus 连接
curl http://localhost:9090/api/v1/query?query=up

# 检查 Grafana 数据源配置
# 确保 URL 正确:http://localhost:9090
# 检查网络连接和防火墙设置
4. 面板显示 "No data"
bash 复制代码
# 检查查询语句
# 确认时间范围设置
# 验证数据源选择正确
# 检查标签匹配
5. 权限问题
bash 复制代码
# 修复配置文件权限
sudo chown $(whoami) /opt/homebrew/etc/prometheus.yml
sudo chmod 644 /opt/homebrew/etc/prometheus.yml

# 修复数据目录权限
sudo chown -R $(whoami) /opt/homebrew/var/prometheus
sudo chown -R $(whoami) /opt/homebrew/var/grafana

进阶配置

1. 配置告警管理器

bash 复制代码
# 安装 Alertmanager
brew install alertmanager

# 启动服务
brew services start alertmanager

2. 配置远程存储

yaml 复制代码
# 在 prometheus.yml 中添加
remote_write:
  - url: "http://remote-storage:9201/write"
    queue_config:
      max_samples_per_send: 1000
      max_shards: 200
      capacity: 2500

3. 设置数据保留策略

bash 复制代码
# 启动 Prometheus 时指定保留期
prometheus \
  --storage.tsdb.retention.time=30d \
  --storage.tsdb.retention.size=10GB

4. 配置 HTTPS

yaml 复制代码
# 在 prometheus.yml 中添加
web:
  tls_config:
    cert_file: server.crt
    key_file: server.key

5. 性能优化

yaml 复制代码
# 调整抓取参数
global:
  scrape_interval: 30s      # 减少抓取频率
  scrape_timeout: 10s       # 优化超时时间

# 优化存储
storage:
  tsdb:
    min-block-duration: 2h
    max-block-duration: 24h

最佳实践

1. 监控策略

  • 分层监控: 基础设施 → 应用 → 业务指标
  • 合理的抓取间隔: 根据需求平衡精度和资源消耗
  • 标签规范: 使用一致的标签命名约定
  • 告警分级: 区分不同严重程度的告警

2. 安全建议

bash 复制代码
# 配置防火墙
sudo pfctl -e
sudo pfctl -f /etc/pf.conf

# 限制访问IP
# 在生产环境中不要使用默认密码
# 配置HTTPS访问
# 定期更新软件版本

总结

在 macOS 上搭建监控:

✅ 已完成的组件

  1. Node Exporter (端口 9100)

    • 收集系统级别指标
    • CPU、内存、磁盘、网络监控
    • 自动启动配置
  2. Prometheus (端口 9090)

    • 时序数据库和监控服务器
    • 数据收集和存储
    • 告警规则配置
  3. Grafana (端口 3000)

    • 数据可视化平台
    • 监控面板和仪表板
    • 告警通知配置

🎯 实现的功能

  • ✅ 实时系统监控
  • ✅ 历史数据分析
  • ✅ 可视化仪表板
  • ✅ 告警规则设置
  • ✅ 自动化服务管理

🍺 Homebrew 安装优势

通过统一使用 Homebrew 安装

  • 🚀 快速安装: 一条命令安装多个组件
  • 🔄 自动更新 : brew upgrade 轻松更新所有组件
  • 📦 依赖管理: 自动处理依赖关系
  • 🗑️ 简洁卸载 : brew uninstall 完全清理
  • ⚙️ 统一配置: 配置文件位置标准化
  • 🔧 服务管理 : brew services 统一管理所有服务

📊 常用访问地址

bash 复制代码
Node Exporter:  http://localhost:9100/metrics
Prometheus:     http://localhost:9090
Grafana:        http://localhost:3000

🔧 日常维护命令

bash 复制代码
# 查看所有服务状态
brew services list | grep -E "(prometheus|grafana|node_exporter)"

# 一键启动所有服务
brew services start grafana prometheus node_exporter

# 一键重启所有服务
brew services restart grafana prometheus node_exporter

# 一键停止所有服务
brew services stop grafana prometheus node_exporter

# 更新所有组件
brew upgrade grafana prometheus node_exporter

# 查看日志
tail -f /opt/homebrew/var/log/prometheus.log
tail -f /opt/homebrew/var/log/grafana/grafana.log

🚀 下一步扩展

  1. 添加更多 Exporter

    bash 复制代码
    # 数据库监控
    brew install mysqld_exporter
    
    # Web服务器监控
    brew install nginx-prometheus-exporter
    
    # 网络探测
    brew install blackbox_exporter
  2. 集成其他服务

    • Docker 容器监控
    • Kubernetes 集群监控
    • 应用程序自定义指标
  3. 高级功能

    • 配置集群模式
    • 设置远程存储
    • 实现高可用架构

📋 快速参考

核心安装命令

bash 复制代码
# 安装所有组件
brew install grafana prometheus node_exporter

# 启动所有服务
brew services start grafana prometheus node_exporter

# 设置开机自启动
brew services enable grafana prometheus node_exporter

服务管理

bash 复制代码
# 查看服务状态
brew services list | grep -E "(grafana|prometheus|node_exporter)"

# 启动服务
brew services start [service_name]

# 停止服务
brew services stop [service_name]

# 重启服务
brew services restart [service_name]

# 禁用开机启动
brew services disable [service_name]

常用访问地址

服务 地址 用途
Grafana http://localhost:3000 数据可视化面板
Prometheus http://localhost:9090 监控服务器界面
Node Exporter http://localhost:9100/metrics 系统指标数据
Prometheus Targets http://localhost:9090/targets 监控目标状态
Prometheus Config http://localhost:9090/config 配置查看

配置文件位置

bash 复制代码
# Apple Silicon (M1/M2)
/opt/homebrew/etc/prometheus.yml
/opt/homebrew/etc/grafana/grafana.ini

# Intel 芯片
/usr/local/etc/prometheus.yml
/usr/local/etc/grafana/grafana.ini

推荐 Grafana 面板 ID

bash 复制代码
1860    # Node Exporter Full(最受欢迎)
15797   # Node Exporter Mac OSX(macOS 专用)
11074   # Node Exporter for Prometheus Dashboard
405     # Node Exporter Server Metrics

故障排除命令

bash 复制代码
# 检查端口占用
lsof -i :3000  # Grafana
lsof -i :9090  # Prometheus  
lsof -i :9100  # Node Exporter

# 查看日志
tail -f /opt/homebrew/var/log/grafana/grafana.log
tail -f /opt/homebrew/var/log/prometheus.log

# 验证配置
prometheus --config.file=/opt/homebrew/etc/prometheus.yml --dry-run

维护命令

bash 复制代码
# 更新所有组件
brew upgrade grafana prometheus node_exporter

# 完全卸载
brew services stop grafana prometheus node_exporter
brew uninstall grafana prometheus node_exporter
相关推荐
小番茄夫斯基2 小时前
团队效率神器!Mac 下 Homebrew 从入门到精通
macos
空安小菜鸟9 小时前
Mac 重启电脑导致代理失效
macos
是垚不是土2 天前
Prometheus接入“飞书“实现自动化告警
运维·安全·自动化·github·飞书·prometheus
sweethhheart2 天前
【typora激活使用】mac操作方式
前端·数据库·macos
库奇噜啦呼3 天前
【iOS】简单的四则运算
macos·ios·cocoa
HoJunjie3 天前
macOS sequoia 15.7.1 源码安装node14,并加入nvm管理教程
macos·node.js
心灵宝贝3 天前
Principal v6.15 中文汉化版安装教程|Mac .dmg 文件安装步骤详解
macos
你好龙卷风!!!3 天前
mac | Windows 本地部署 Seata1.7.0,Nacos 作为配置中心、注册中心,MySQL 存储信息
windows·mysql·macos
朱包林3 天前
Prometheus监控K8S集群-ExternalName-endpoints-ElasticStack采集K8S集群日志实战
运维·云原生·容器·kubernetes·prometheus
源文雨3 天前
MacOS 下 Warp ping 局域网设备报错 ping: sendto: No route to host 的解决方法
运维·网络协议·安全·macos·网络安全·ping