這是一個完整的 Grafana 儀表板系統,用於監控台股中 AI 供應鏈相關公司的股票價格、交易量,並視覺化供應鏈關係網路。
- 📊 即時股票監控:顯示 AI 供應鏈公司的當日收盤價和交易量
- 📈 時間序列圖表:追蹤股票價格和交易量的歷史趨勢
- 🔗 關係網路視覺化:以 Node Graph 形式展示 AI 供應鏈的上下游關係
- 📋 資料總覽表:以表格形式呈現所有公司的關鍵指標
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Data │────▶│ Prometheus │────▶│ Grafana │
│ Collector │ │ Pushgateway │ │ Dashboard │
└─────────────┘ └──────────────┘ └─────────────┘
- 2330 台積電 - 晶圓代工
- 2454 聯發科 - IC 設計
- 2308 台達電 - 電源供應
- 2382 廣達 - 伺服器/筆電
- 3231 緯創 - 伺服器/筆電
- 2357 華碩 - 筆電/主機板
- 2317 鴻海 - 組裝代工
- 3008 大立光 - 光學鏡頭
- 2379 瑞昱 - IC 設計
- 2458 義隆 - IC 設計
- 2383 台光電 - PCB 材料
- 3037 欣興 - PCB
- 2368 金像電 - PCB
- 8046 南電 - PCB
- 5347 世界先進 - 晶圓代工
- Docker 和 Docker Compose
- Python 3.11+ (如果要在本地執行資料收集器)
-
複製專案檔案
cd /Users/kevin.k/industry -
啟動所有服務
docker-compose up -d
-
訪問 Grafana
- 開啟瀏覽器訪問:http://localhost:3001
- 預設帳號:
admin - 預設密碼:
admin - 注意:如果端口 3000 被佔用,系統會自動使用端口 3001
-
查看儀表板
- 登入後,儀表板會自動載入
- 或前往 Dashboards → 台股 AI 供應鏈監控儀表板
如果需要在本機執行資料收集器:
# 安裝依賴
pip install -r requirements.txt
# 執行資料收集
python data_collector.py預設每 5 分鐘收集一次資料。可以在 Dockerfile.collector 中修改 cron 設定:
RUN echo "*/5 * * * * ..." # 修改 */5 為其他值,例如 */1 表示每分鐘編輯 data_collector.py 中的 AI_SUPPLY_CHAIN_STOCKS 字典來新增或移除公司。
編輯 data_collector.py 中的 SUPPLY_CHAIN_RELATIONS 字典來定義公司間的供應關係。
- 顯示所有監控公司的收盤價趨勢
- 時間範圍:過去 24 小時
- 自動更新:每 30 秒
- 顯示所有監控公司的交易量
- 以柱狀圖呈現
- 自動更新:每 30 秒
- Node Graph 視覺化
- 節點代表公司,邊代表供應關係
- 節點大小和顏色可根據價格或交易量調整
- 表格形式顯示所有公司的當前價格
- 包含公司代碼、名稱、分類等資訊
- 表格形式顯示所有公司的交易量
- 方便快速比較各公司交易活躍度
目前使用台灣證券交易所的公開 API。如需使用其他資料來源(如 yfinance、twstock 等),請修改 data_collector.py 中的 fetch_twse_stock_data 方法。
- 確認 Prometheus 容器正在運行:
docker ps - 檢查 Prometheus 日誌:
docker logs prometheus
- 檢查資料收集器日誌:
docker logs data-collector - 確認 Pushgateway 可訪問:
curl http://localhost:9091
- 確認資料來源配置正確
- 檢查 Prometheus 中是否有資料:訪問 http://localhost:9090
- 在 Prometheus 中查詢:
stock_price或stock_volume
- 在 Grafana 中編輯儀表板
- 匯出 JSON 配置
- 替換
grafana-dashboard.json檔案
可以在 Grafana 中設定告警,例如:
- 當股價下跌超過 5% 時發送通知
- 當交易量異常增加時發送通知
本專案僅供學習和研究使用。使用股票資料時請遵守相關法規和 API 使用條款。
歡迎提交 Issue 或 Pull Request 來改進此專案。
如有問題或建議,請開啟 GitHub Issue。