macOS 安装 Grafana + Prometheus + Node Exporter
macOS 安装指南:Grafana + Prometheus + Node Exporter
- 目录
- 简介
- 🚀 快速开始
- 安装 Homebrew
- 1. 安装 Homebrew
- 2. 更新 Homebrew
- 安装 Node Exporter
- 使用 Homebrew 安装
- 验证 Node Exporter
- 安装 Prometheus
- 使用 Homebrew 安装
- 验证安装
- 安装 Grafana
- 使用 Homebrew 安装
- 验证 Grafana 安装
- 一键安装所有组件
- 配置 Prometheus
- 1. 创建配置文件
- 2. Prometheus 配置内容
- 3. 创建告警规则(可选)
- 4. 启动 Prometheus
- 配置 Grafana
- 1. 首次登录配置
- 2. 添加 Prometheus 数据源
- 3. 配置通知渠道(可选)
- 导入监控面板
- 推荐的面板模板
- 1. 通过面板 ID 导入
- 2. 自定义面板 JSON
- 验证和测试
- 1. 检查所有服务状态
- 验证目标状态
- 3. Grafana 面板测试
- 故障排除
- 常见问题和解决方案
- 1. Node Exporter 无法启动
- 2. Prometheus 配置错误
- 3. Grafana 连接问题
- 4. 面板显示 "No data"
- 5. 权限问题
- 进阶配置
- 1. 配置告警管理器
- 2. 配置远程存储
- 3. 设置数据保留策略
- 4. 配置 HTTPS
- 5. 性能优化
- 最佳实践
- 1. 监控策略
- 2. 安全建议
- 总结
- ✅ 已完成的组件
- 🎯 实现的功能
- 🍺 Homebrew 安装优势
- 📊 常用访问地址
- 🔧 日常维护命令
- 🚀 下一步扩展
- 📋 快速参考
- 核心安装命令
- 服务管理
- 常用访问地址
- 配置文件位置
- 推荐 Grafana 面板 ID
- 故障排除命令
- 维护命令
目录
- 简介
- 系统要求
- 安装 Homebrew
- 安装 Node Exporter
- 安装 Prometheus
- 安装 Grafana
- 配置 Prometheus
- 配置 Grafana
- 导入监控面板
- 验证和测试
- 故障排除
- 进阶配置
- 总结
简介
在 macOS 系统上搭建监控
-
Node Exporter: 系统指标收集器
-
Prometheus: 时序数据库和监控服务器
-
Grafana: 数据可视化和仪表板平台
-
🍺 统一使用 Homebrew 安装 - 简洁、快速、可靠
-
🚀 一键安装命令 - 三个组件一次性搞定
-
📊 开箱即用 - 完整的配置模板和面板
-
🔧 自动化管理 - 服务自启动和状态监控
监控:
- 实时监控系统性能(CPU、内存、磁盘、网络)
- 设置告警规则
- 创建美观的监控仪表板
- 分析历史数据趋势
🚀 快速开始
安装 Homebrew
# 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
# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 验证安装
brew --version
2. 更新 Homebrew
# 更新 Homebrew 和包列表
brew update
安装 Node Exporter
Node Exporter 负责收集系统级别的指标数据。
使用 Homebrew 安装
# 安装 node_exporter
brew install node_exporter# 启动服务
brew services start node_exporter# 设置开机自启动
brew services enable node_exporter
验证 Node Exporter
# 检查服务状态
brew services list | grep node_exporter# 测试访问指标
curl http://localhost:9100/metrics | head -20# 检查进程
ps aux | grep node_exporter
安装 Prometheus
Prometheus 是核心的监控服务器,负责收集和存储时序数据。
使用 Homebrew 安装
# 安装 Prometheus
brew install prometheus# 查看安装信息
brew info prometheus
验证安装
# 检查版本
prometheus --version# 查看配置文件位置
ls -la /opt/homebrew/etc/prometheus.yml
# 或者(Intel 芯片)
ls -la /usr/local/etc/prometheus.yml
安装 Grafana
Grafana 提供强大的数据可视化和仪表板功能。
使用 Homebrew 安装
# 安装 Grafana
brew install grafana# 启动服务
brew services start grafana# 设置开机自启动
brew services enable grafana
验证 Grafana 安装
# 检查服务状态
brew services list | grep grafana# 访问 Web 界面
http://localhost:3000
默认登录信息:
- 用户名:
admin
- 密码:
admin
一键安装所有组件
一次性安装所有组件:
# 一次性安装所有监控组件
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. 创建配置文件
# 备份原配置文件
cp /opt/homebrew/etc/prometheus.yml /opt/homebrew/etc/prometheus.yml.backup# 编辑配置文件
nano /opt/homebrew/etc/prometheus.yml
2. Prometheus 配置内容
# 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: 5smetrics_path: /metrics# Node Exporter 监控- job_name: 'node-exporter'static_configs:- targets: ['localhost:9100']scrape_interval: 15smetrics_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/prometheusretention.time: 15dretention.size: 1GB# Web 配置
web:listen-address: 0.0.0.0:9090max-connections: 512read-timeout: 30s
3. 创建告警规则(可选)
# 创建规则目录
mkdir -p /opt/homebrew/etc/prometheus/rules# 创建基本告警规则
cat > /opt/homebrew/etc/prometheus/rules/basic_alerts.yml << EOF
groups:- name: basic_alertsrules:# 实例下线告警- alert: InstanceDownexpr: up == 0for: 5mlabels:severity: criticalannotations:summary: "实例 {{ \$labels.instance }} 已下线"description: "{{ \$labels.instance }} 已经下线超过 5 分钟"# 高 CPU 使用率告警- alert: HighCpuUsageexpr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80for: 5mlabels:severity: warningannotations:summary: "{{ \$labels.instance }} CPU 使用率过高"description: "CPU 使用率超过 80% 超过 5 分钟"# 高内存使用率告警- alert: HighMemoryUsageexpr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90for: 5mlabels:severity: warningannotations:summary: "{{ \$labels.instance }} 内存使用率过高"description: "内存使用率超过 90% 超过 5 分钟"# 磁盘空间不足告警- alert: DiskSpaceLowexpr: (node_filesystem_avail_bytes{fstype!="tmpfs"} / node_filesystem_size_bytes{fstype!="tmpfs"}) * 100 < 10for: 5mlabels:severity: criticalannotations:summary: "{{ \$labels.instance }} 磁盘空间不足"description: "磁盘 {{ \$labels.device }} 可用空间少于 10%"
EOF
4. 启动 Prometheus
# 验证配置文件
prometheus --config.file=/opt/homebrew/etc/prometheus.yml --dry-run# 启动 Prometheus 服务
brew services start prometheus# 重启服务(如果已经在运行)
brew services restart prometheus
配置 Grafana
1. 首次登录配置
- 访问 http://localhost:3000
- 使用默认账号登录:
admin
/admin
- 设置新密码
2. 添加 Prometheus 数据源
- 点击左侧菜单 “Configuration” → “Data Sources”
- 点击 “Add data source”
- 选择 “Prometheus”
- 配置以下信息:
- Name:
Prometheus
- URL:
http://localhost:9090
- Access:
Server (default)
- Name:
- 点击 “Save & Test”
3. 配置通知渠道(可选)
# 配置邮件通知
1. 进入 "Alerting" → "Notification channels"
2. 点击 "New Channel"
3. 选择通知类型(Email, Slack, Webhook 等)
4. 填写相关配置信息
导入监控面板
推荐的面板模板
1. 通过面板 ID 导入
- 点击左侧 “+” → “Import”
- 输入以下推荐的面板 ID:
# 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
- 点击 “Load”
- 选择 Prometheus 数据源
- 点击 “Import”
2. 自定义面板 JSON
创建简单的 macOS 监控面板:
{"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. 检查所有服务状态
# 检查所有相关服务
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 面板测试
- 访问 http://localhost:3000
- 选择导入的面板
- 确认数据正常显示
- 测试时间范围选择器
- 验证自动刷新功能
故障排除
常见问题和解决方案
1. Node Exporter 无法启动
# 检查端口是否被占用
lsof -i :9100# 查看错误日志
tail -f /var/log/node_exporter.log# 重启服务
brew services restart node_exporter
2. Prometheus 配置错误
# 验证配置文件语法
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 连接问题
# 测试 Prometheus 连接
curl http://localhost:9090/api/v1/query?query=up# 检查 Grafana 数据源配置
# 确保 URL 正确:http://localhost:9090
# 检查网络连接和防火墙设置
4. 面板显示 “No data”
# 检查查询语句
# 确认时间范围设置
# 验证数据源选择正确
# 检查标签匹配
5. 权限问题
# 修复配置文件权限
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. 配置告警管理器
# 安装 Alertmanager
brew install alertmanager# 启动服务
brew services start alertmanager
2. 配置远程存储
# 在 prometheus.yml 中添加
remote_write:- url: "http://remote-storage:9201/write"queue_config:max_samples_per_send: 1000max_shards: 200capacity: 2500
3. 设置数据保留策略
# 启动 Prometheus 时指定保留期
prometheus \--storage.tsdb.retention.time=30d \--storage.tsdb.retention.size=10GB
4. 配置 HTTPS
# 在 prometheus.yml 中添加
web:tls_config:cert_file: server.crtkey_file: server.key
5. 性能优化
# 调整抓取参数
global:scrape_interval: 30s # 减少抓取频率scrape_timeout: 10s # 优化超时时间# 优化存储
storage:tsdb:min-block-duration: 2hmax-block-duration: 24h
最佳实践
1. 监控策略
- 分层监控: 基础设施 → 应用 → 业务指标
- 合理的抓取间隔: 根据需求平衡精度和资源消耗
- 标签规范: 使用一致的标签命名约定
- 告警分级: 区分不同严重程度的告警
2. 安全建议
# 配置防火墙
sudo pfctl -e
sudo pfctl -f /etc/pf.conf# 限制访问IP
# 在生产环境中不要使用默认密码
# 配置HTTPS访问
# 定期更新软件版本
总结
在 macOS 上搭建监控:
✅ 已完成的组件
-
Node Exporter (端口 9100)
- 收集系统级别指标
- CPU、内存、磁盘、网络监控
- 自动启动配置
-
Prometheus (端口 9090)
- 时序数据库和监控服务器
- 数据收集和存储
- 告警规则配置
-
Grafana (端口 3000)
- 数据可视化平台
- 监控面板和仪表板
- 告警通知配置
🎯 实现的功能
- ✅ 实时系统监控
- ✅ 历史数据分析
- ✅ 可视化仪表板
- ✅ 告警规则设置
- ✅ 自动化服务管理
🍺 Homebrew 安装优势
通过统一使用 Homebrew 安装
- 🚀 快速安装: 一条命令安装多个组件
- 🔄 自动更新:
brew upgrade
轻松更新所有组件 - 📦 依赖管理: 自动处理依赖关系
- 🗑️ 简洁卸载:
brew uninstall
完全清理 - ⚙️ 统一配置: 配置文件位置标准化
- 🔧 服务管理:
brew services
统一管理所有服务
📊 常用访问地址
Node Exporter: http://localhost:9100/metrics
Prometheus: http://localhost:9090
Grafana: http://localhost:3000
🔧 日常维护命令
# 查看所有服务状态
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
🚀 下一步扩展
-
添加更多 Exporter
# 数据库监控 brew install mysqld_exporter# Web服务器监控 brew install nginx-prometheus-exporter# 网络探测 brew install blackbox_exporter
-
集成其他服务
- Docker 容器监控
- Kubernetes 集群监控
- 应用程序自定义指标
-
高级功能
- 配置集群模式
- 设置远程存储
- 实现高可用架构
📋 快速参考
核心安装命令
# 安装所有组件
brew install grafana prometheus node_exporter# 启动所有服务
brew services start grafana prometheus node_exporter# 设置开机自启动
brew services enable grafana prometheus node_exporter
服务管理
# 查看服务状态
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 | 配置查看 |
配置文件位置
# 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
1860 # Node Exporter Full(最受欢迎)
15797 # Node Exporter Mac OSX(macOS 专用)
11074 # Node Exporter for Prometheus Dashboard
405 # Node Exporter Server Metrics
故障排除命令
# 检查端口占用
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
维护命令
# 更新所有组件
brew upgrade grafana prometheus node_exporter# 完全卸载
brew services stop grafana prometheus node_exporter
brew uninstall grafana prometheus node_exporter