読者です 読者をやめる 読者になる 読者になる

Atlassian Stashの利用者数の推移をグラフ化する

Stashから取れる情報をGrowthForecastで見えるようにする

  • あと何ライセンス余っているとかいちいち管理画面を見なくてもいいようにユーザ数とか取りたい。
    • あとはプロジェクト数、リポジトリ数なんかを見えるようにしておくといいかも。

grouthforecast-workerを使って簡単にグラフを増やせるようにする

  • まずはインストールします。
    • Ubuntu Server 14.04 LTSでやってます。
$ cd /usr/local
$ sudo mkdir grouthforecast-worker
$ cd grouthforecast-worker/

$ sudo cpanm -n Path::Class
$ sudo wget https://raw.github.com/yappo/grouthforecast-worker/master/grouthforecast.pl
$ sudo chmod 755 grouthforecast.pl
  • GrowthForecastのURLとservice_nameを指定します。
$ sudo vi grouthforecast.pl
---
# GrowthForecast の /api の URL
my $growthforecast_endpoint = 'http://gf.example.com:5125/api';

# グラフをどのサービスに属するかを example の変わりに入れてね
my $service_name = 'git.example.com';
---
$ sudo mkdir scripts
  • とりあえず動かしてみます。
$ ./grouthforecast.pl ./scripts
  • LWP::UserAgentが無いと言われ、makeが無いと言われ、libwww-perlが無いと言われるので順次入れていきます。(メッセージは省略)
$ sudo cpanm -n LWP::UserAgent
$ sudo aptitude install make
$ sudo cpanm -n LWP::UserAgent
$ sudo aptitude install libwww-perl
$ sudo cpanm -n LWP::UserAgent
  • これで取りあえず動くようになりました。

Stashからデータを取る

  • StashにREST API Browser Pluginを入れているので取れる情報を確認します。

    • 管理>REST API Browserで見えます。スゴイ便利!
  • curlでデータを取ってみます。

$ curl -u user:pass http://git.example.com/rest/api/1.0/admin/license
{"creationDate":1401112800000,"purchaseDate":1398348000000,"expiryDate":null,"numberOfDaysBeforeExpiry":2147483647,"maintenanceExpiryDate":1429884000000,"numberOfDaysBeforeMaintenanceExpiry":248,"gracePeriodEndDate":null,"numberOfDaysBeforeGracePeriodExpiry":2147483647,"maximumNumberOfUsers":25,"unlimitedNumberOfUsers":false,"serverId":"XXXX-XXXX-XXXX-XXXX","supportEntitlementNumber":"XXX-9999999","license":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","status":{"currentNumberOfUsers":21,"serverId":"XXXX-XXXX-XXXX-XXXX"}}
  • jqで見やすく整形してみます。
$ sudo aptitude install jq
$ curl -u user:pass http://git.example.com/rest/api/1.0/admin/license | jq .
{
  "status": {
    "serverId": "XXXX-XXXX-XXXX-XXXX",
    "currentNumberOfUsers": 21
  },
  "license": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "supportEntitlementNumber": "XXX-9999999",
  "serverId": "XXXX-XXXX-XXXX-XXXX",
  "unlimitedNumberOfUsers": false,
  "maximumNumberOfUsers": 25,
  "creationDate": 1401112800000,
  "purchaseDate": 1.398348e+12,
  "expiryDate": null,
  "numberOfDaysBeforeExpiry": 2147483647,
  "maintenanceExpiryDate": 1.429884e+12,
  "numberOfDaysBeforeMaintenanceExpiry": 248,
  "gracePeriodEndDate": null,
  "numberOfDaysBeforeGracePeriodExpiry": 2147483647
}
  • 更にjqを使ってライセンス数のみを取得できるようにします。
$ curl -u user:pass http://git.example.com/rest/api/1.0/admin/license | jq .status
{
  "serverId": "BKLX-9ZIA-IQLP-J885",
  "currentNumberOfUsers": 21
}

$ curl -u user:pass http://git.example.com/rest/api/1.0/admin/license | jq .status.currentNumberOfUsers
21

GrowthForecastにデータを登録する

  • scriptsの下にディレクトリを作成して、スクリプトを作ります。
    • このディレクトリとスクリプトがそのままGrowthForecastの階層になります。
$ cd /usr/local/grouthforecast-worker/scripts
$ sudo mkdir -p stash
$ cd stash
$ sudo vi currentNumberOfUsers
---
#!/bin/bash

curl -u user:pass http://git.example.com/rest/api/1.0/admin/license | jq .status.currentNumberOfUsers
---
  • とりあえず実行してグラフが出ることを確認しておきます。
$ ./currentNumberOfUsers
21

$ cd ../..
$ ./grouthforecast.pl ./scripts
  • 出来ました!
    • cronで登録します。
      • 1日1回でいいならスクリプトをcron.dailyに入れときます。
#!/bin/bash

/usr/local/grouthforecast/grouthforecast.pl /usr/local/grouthforecast/scripts  > /dev/null 2>&1

他にも色々出来そう。