分享程式代碼相關筆記
目前文章總數:172 篇
最後更新:2025年 03月 22日
Grafana中文官網
查询、可视化和理解数据,并获取数据警报,无论数据存储在何处。
在 Grafana,您可以通过美观、灵活的数据面板创建、探索和共享所有数据。
簡單說:Grafana 的強大在於跟任何數據來源都能很好的支援,只負責獲取資料,呈現視覺化的圖表。
付費方案分成 Grafana OSS(開源免費)、Grafana Enterprise(企業付費版)
Grafana OSS | Grafana Enterprise | |
---|---|---|
可視化與監控 | 核心儀表板功能 | 相同,並有額外優化 |
數據來源支援 | 支援 Prometheus, Loki, InfluxDB, Elasticsearch 等 | 企業級數據來源(如 Splunk …) |
用戶權限管理 | 只有基本角色(Admin/Editor/Viewer) | 有,更進階 |
SSO / LDAP 整合 | 需手動設定 | 建 SSO(Google SSO 等) |
報告功能 | 沒有 | 內建 PDF / CSV 報告排程 |
日誌 | 沒有 | 追蹤使用者行為 |
儀表板快取 | 沒有 | 有、效能好 |
技術支援 | 論壇、GitHub | 企業級技術支援(SLA 保障) |
價格 | 免費 | 可參考官網報價(極貴) |
以上是兩者的差異,如果是小型專案免費版基本上夠用,如果是大型企業才會有需要考慮更高效能的監控、報告
官網報價
官網安裝指南資訊,有建議安裝需求:
以下是最低限制:
Hardware recommendations
Grafana requires the minimum system resources:
Minimum recommended memory: 512 MB
Minimum recommended CPU: 1 core
Some features might require more memory or CPUs, including:
1. 記憶體 512 MB |
2. 最小 CPU 1 核心 |
Grafana 的強大之處就在於只是收集資料的中繼點,耗費效能的事情都是資料來源的伺服器要煩惱的事情。
以下是 Grafana 常見的 資料來源、對應的插件,以及主要用途:
資料來源 | 插件類型 | 主要用途 |
---|---|---|
Prometheus | 官方 | 監控指標數據(Metrics),適用於基礎架構、Kubernetes、應用程式監控 |
InfluxDB | 官方 | 時序數據(Time-Series Data),可用於 IoT、系統監控 |
Loki | 官方 | 日誌(Logs),與 Prometheus 互補,用於日誌管理 |
Elasticsearch | 官方 | 全文檢索 & 日誌數據,適合 Log 監控、APM(應用程式效能管理) |
Graphite | 官方 | 時序數據分析,與 Prometheus 類似,常用於監控 |
MySQL / PostgreSQL | 官方 | 關聯式數據庫查詢,可視覺化 SQL 查詢結果 |
MSSQL | 官方 | 適用於企業的 SQL Server 監控 |
Azure Monitor | 官方 | 監控 Azure 雲端資源,如 VM、應用服務 |
Google Cloud Monitoring | 官方 | 監控 GCP(Google Cloud Platform)資源 |
AWS CloudWatch | 官方 | 監控 AWS 資源,如 EC2、Lambda、RDS |
OpenTelemetry | 官方 | APM 追蹤數據,與 Jaeger / Zipkin 相似 |
Jaeger | 官方 | 分佈式追蹤(Tracing),用於 APM(Application Performance Monitoring) |
Zipkin | 官方 | 另一種分佈式追蹤方案,與 Jaeger 競爭 |
Splunk | 官方 | 日誌與安全監控(SIEM),企業級方案 |
Datadog | 官方 | 監控指標與日誌,適用於 Datadog 用戶 |
New Relic | 官方 | APM & 監控應用程式效能 |
Snowflake | 官方 | 雲端數據分析,適用於大數據查詢 |
MongoDB | 社群 | 監控 MongoDB 的查詢效能與指標 |
Zabbix | 社群 | 整合 Zabbix 監控系統 |
Ceph | 社群 | 監控 Ceph 分佈式存儲 |
Redis | 社群 | 監控 Redis 記憶體、查詢效能 |
RabbitMQ | 社群 | 監控訊息佇列(MQ)狀態 |
Kafka | 社群 | 監控 Kafka 訊息流與 Broker 狀態 |
ClickHouse | 社群 | 查詢 ClickHouse 的 OLAP 數據 |
目標 : 可以透過 Grafana 監控機器的 CPU,記憶體資源,因此整體的架構如圖:
對應圖片,由用戶發起查詢有以下對應流程:
1. 用戶進行查詢 |
2. 機器收到後呼叫 Grafana 服務 |
3. Grafana 服務收到後呼叫 Prometheus |
4. Prometheus 服務收到後將紀錄資料回傳給 Grafana |
5. 最終用戶可以看到查詢的結果 |
其中 Prometheus 會持續向 Node Exporter 索取資料,來進行紀錄
以下擷取自 Prometheus 的 Github
Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts when specified conditions are observed.
大意是說:提供了雲、系統監控、每個時序中收集數據。並且提供依照過濾條件顯示特定的資訊。
※定期抓取數據 & 存儲(可查詢歷史趨勢)
如同資料收集的中樞,有需要的時候可以跟 Prometheus 調閱資料
圖片來源
其中 Node Exporter 是 Prometheus 中的一個收集數據套件,但仍可以獨立運行
優點如下:
1. 完全開源 & 免費 |
2. 時間序列數據高效能 |
3. 警告管理自定義 |
4. Grafana 無縫整合 |
5. 可水平擴展,適合微服務 |
缺點如下:
1. 沒有內建長期存儲 |
2. 只適合數值型監控 |
3. 單機性能有限 |
4. 存儲空間需求較大 |
Node Exporter 與 Prometheus 高度整合的套件,通常兩者會一起使用
Node Exporter指南官方提供安裝操作流程,本篇整合在 docker-compose.yml 中 ,具體也可參考Github
Node Exporter 是為了視覺化 Prometheus 的資料,顯示系統指標的圖示,特色如下:
1. 免費 & 開源 |
2. 輕量 & 高效 |
3. 監控系統資源指標 |
如果只安裝 Node Exporter 會即刻回傳當前機器系統資源的資料,但無法回顧歷史資料(歷史資料在 Prometheus )
先進入 Ubuntu 主機上,新建以下 DockerCompose.yml 檔案,內容如下:
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
ports:
- "9200:9090" # 外部使用 9200 連接到內部的 9090
networks:
- grafana-net
node-exporter:
image: prom/node-exporter
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- "9201:9100" # 外部使用 9201 連接到內部的 9100
networks:
- grafana-net
grafana:
image: grafana/grafana
container_name: grafana
restart: unless-stopped
volumes:
- grafana_data:/var/lib/grafana
ports:
- "9202:3000" # 外部使用 9202 連接到內部的 3000
networks:
- grafana-net
depends_on:
- prometheus
volumes:
prometheus_data:
grafana_data:
networks:
grafana-net:
為了說明,Port 有自定義,對應如下:
Prometheus | 9200 |
Node Exporter | 9201 |
Grafana | 9202 |
接著在 Ubuntu 上建立 Prometheus 的配置檔案,要與 Node Exporter 取得資料
這邊 Node Exporter 用 9100 是對應的 Container 內部的 Port 號,而非宿主機的 9201
便於容器內網路相互溝通
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
在對應的位置貼上 Container 綁定的 Volumn
在對應目錄上執行 docker-compose.yml 檔案進行安裝
該範例對應 *\louistemp\grafana* 目錄
docker docker-compose.yml -u -p
正常運行後,可以執行以下,或進入 Portainer 觀察容器運行
docker ps -a
接著開啟瀏覽器,登入 Grafana 容器提供的 Web URL
http://192.168.1.100:9202/Login
帳號密碼預設為 : admin
要可視覺化 CPU, 記憶體 硬體配置運行資源,需要以 Prometheus 做為資料來源
左側 Menu -> Connections -> Data Source
點開後,執行中間的按鈕 -> Add Data Source
選擇 Prometheus 當來源
為了讓 Grafana 可以得到 Prometheus 的資料,因此要讓 Grafana 訪問 Prometheus 的 API
在 Connection 的地方輸入對應的 API URL
http://192.168.1.100/
拉到最下方,點擊按鈕 Save & Test,成功的話會出現 Successfuly … 的訊息
資料來源有了後,就可以透過 Prometheus 查詢歷史資料
可以進入 Grafana 官網的 DashBoard 套件查詢
輸入 Node Exporter -> 查詢
可以在 URL 看到 ID 號碼
為了要能在 Grafana 儀表版看到視覺化資料,需要在 DashBoard Import Node Exporter,依序選擇
將 Step 13. 獲得的 Node Exporter ID輸入
選擇 Prometheus -> Import
可以在 DashBoard 上看到 CPU , Memory 等資訊,可以在右上角選擇 5s 加快刷新頻率
可在 Ubuntu 輸入,取得記憶體:
free -h
比對 Grafana 儀表板後確實記憶體已耗盡,完成 Grafana 監控硬體資源的實現。