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からデータを取る
$ 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にデータを登録する
$ 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に入れときます。
- cronで登録します。
#!/bin/bash /usr/local/grouthforecast/grouthforecast.pl /usr/local/grouthforecast/scripts > /dev/null 2>&1
他にも色々出来そう。