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