iT邦幫忙

1

用 Grafana 跟 Prometheus 架一個追蹤狗狗幣Reddit社群的訂閱人數增長

因為狗狗幣最近在美國很火, Reddit 上的社群人數也不斷變多, 而我原本想去找些能追蹤 Reddit 社群的訂閱成長趨勢網站, 因為如果訂閱人數成指數飆高, 說不定狗幣能上月球, 不過可惜的是都找不到, 所以就決定自己來做一個了。(還有另一點是因為我買了很多狗狗幣啦, 有夠關心它的價格的)

先看一下成品: 網頁入口

https://ithelp.ithome.com.tw/upload/images/20210605/20128423dv8lZ6N0z3.png

而這是GitHub連結: 專案連結程式碼都可以自由取用

架設方法

首先環境必須要有 docker 與 docker-compose 才能架設,
原理是利用 Reddit的 API 去抓出訂閱人數, https://www.reddit.com/r/dogecoin/about.json
搜尋裡面的 subscribers 會得出訂閱人數, 所以我們只需要做一直去發送網路請求, 抓取目前數據就好,
我做了一個很簡易的 Nodejs web, 只負責輸出目前的 subscribers 數字, 資料儲存交給Prometheus
而圖表顯示交給 Grafana 來完成就好。

接下來先用Nodejs做一個網頁服務去抓取資料,

  1. 初始化專案
npm init -y
  1. 安裝套件
npm install express
npm install request
  1. 創建app.js檔案, 然後用 node app.js 執行
const express = require('express');
const request = require('request');
const app = express();
const port = 3000;

let countSubscribers = -1;

app.get('/metrics', (req, res) => {
  if(countSubscribers !== -1) {
    res.send('subscribers ' + countSubscribers);
  }
});


setInterval(function() {

  request('https://www.reddit.com/r/dogecoin/about.json', { json: true }, (err, res, body) => {
    if (err) {
      return console.log(err);
    }

    if( body.data !== undefined && body.data.subscribers !== undefined) {
      countSubscribers = body.data.subscribers;
    } else {
      console.log(" body.data.subscribers === undefined");
    }

  });
}, 5000);

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}/metrics`);
  console.log(`Dog to the moon`);
});
  1. 用無痕瀏覽器開啟 http://localhost:3000/metrics 就會看到以下頁面:
    https://ithelp.ithome.com.tw/upload/images/20210605/20128423L3VpdBrnXN.png

  2. 接下來要設定 Prometheus 去抓取你架的網站的資料, prometheus.yml設定如下:
    重點就是 static_configs 的 targets 要去設定你架的網站的路徑。

global:
  scrape_interval: 1s 

  external_labels:
    monitor: 'codelab-monitor'

scrape_configs:
  
  - job_name: 'dogecoin'

    scrape_interval: 1s

    static_configs:
      - targets: ['get_dogecoin_subscribers:3000']
      
  1. 部屬服務, 這部分因為只要有Docker的基礎就可以看GitHub上的程式碼理解了,
    可以直接下 docker-compose up -d --build 在接著 GitHub上 README.md 的步驟教學。
    沒意外的話成功機率很高, 我自己有測試檢查過幾次。

我覺得學會這招還蠻方便的, 可以快速架設一些監控不同數據的網頁, 所以想分享給大家,
如果有遇到問題歡迎留言:)


尚未有邦友留言

立即登入留言