PrometheusによるGithubプル要求の監視


問題


あなたのオープンソースの貢献を追跡したいことがありますか?または、おそらくいくつかの種類のイベントのために複数のユーザーによってなされる貢献をモニターします?よく、私は全く同じ問題を持ちました😊.
With Hacktoberfest ちょうど角を離れて、私は自動的に賞品や類似して参加をincentivizeできるようにオープンソースの貢献を追跡する方法を望んだ.GUTTUBのプロジェクトに大規模な組織の中でどのようなプロジェクトへのプル要求を開くのかを追跡するのはかなり難しいですが、男の子はあなたに解決策を持っています.

解決策


私は建築prometheus exporter これは、ユーザーのリストを使用して設定ファイルを受け取り、そのユーザーによって作成されたプル要求を見つけるためにgithub検索APIを使用します.この輸出者は、例えばuser , created_at , status and link .

プロメテウス輸出者は何ですか?


Prometheus オープンソース時系列データベースは、“プル”モデルを使用して、それがエクスポートされたクライアント(基本的にプラグイン)にエクスポートされます.その後、一般的に15秒で構成された間隔を介して輸出者からのデータをインスト.

私はいくつかのユーザーのプル要求を見たいですか?


あなたがPrometheusに精通しているならば、あなたはgithub pr輸出者ドキュメントを見ることができますhere .
たぶんあなたはプロメテウスに慣れていない、どのように始めるために沿って従ってください!

どうやって動くの?


輸出者はGo 利用するGitHub client library Github検索APIを使用して検索を実行します.輸出者は基本的に引数を通して設定オプションを取ろうとするCLIです、そして、定期的に新しい引きリクエストデータを探すループでウェブサーバを走らせます.

検索


輸出者は検索APIを使用して、あらゆるユーザーのためにこの検索を実行します:"type:pr author:<user> created:>=<calculated timeframe>"検索APIは、検索APIの256文字の制限のために一括検索の代わりにユーザごとに1回実行されますが、検索APIは未認証クライアントに対して毎分10回の検索速度を制限しているので、各レート制限を避けるために、各ユーザのプルリクエストデータを収集するのにハード6秒の待ち時間があります.これは、この種のデータのために完全にすばらしい90分につきおよそ1000人のユーザーを処理するので、これは大きな取引でありません.

設定オプション

  • --config YAML設定ファイル
  • --days-ago 現在のどのように多くの日前からプル要求を取得します.デフォルトは90
  • --ignore-user-repos ユーザが自分のリポジトリに対して行ったプルリクエストを無視します.デフォルトはfalse .
  • --interval どのくらいの期間(秒単位)新しいデータのチェックの間にスリープ状態に.デフォルトは21600 (6時間)
  • --port Webサーバを実行するポート.デフォルトは8080
  • github pr輸出者、プロメテウスとグラファナを配備すること



    データを使用するために、起動して実行するために必要な3つのコンポーネントがあります.
  • github-pr-exporter
  • Prometheus
  • Grafana
  • また、Docker、Dockerの作成、およびgitをインストールする必要があります.これは上記の3つのコンポーネントをコンテナの形で実行し、Dockerネットワークを介して接続します.
  • ディレクトリにrepoとcd ' ingをクローニングすることから始めます
  • git clone https://github.com/circa10a/github-pr-exporter.git
    cd github-pr-exporter
    
  • コンテナを起動する
  • docker-compose up -d
    
  • 利益!
  • これでGrafanaにアクセスできますhttp://localhost:3000 で設定済みのダッシュボードhttp://localhost:3000/d/h_PRluMnk/pull-requests?orgId=1

    The default admin login is username: admin password: admin


    独自のユーザーまたはその他の監視


    デフォルトの設定を変更するにはexamples/config.yaml Githubのユーザ名を含むようにするには、実行してコンテナを再作成します.
    docker-compose down
    docker-compose up -d
    
    次に、ダッシュボード上の新しい詳細をチェック!新しいデータを反映するようにダッシュボードのために約2分かかることができますので、さわやかなまたは自動リフレッシュを有効にしてください.