Drone CI のサーバーメトリクスを取得する
はじめに
Drone サーバーでは、/metrics エンドポイントで Prometheus から利用可能なメトリクスが公開されています。
https://drone.example.com/metrics
Go ランタイムによって公開されるパフォーマンスメトリックや
ビルド数などの Drone 固有のメトリクスを参照することができます。
Metrics
https://docs.drone.io/server/metrics/
メトリクスの取得方法も上記ドキュメントに記載があるのですが、2020年3月時点で
微妙に記載が誤っているようなので、こちらに手順を残します。
気をつけておきたいこと
メトリクスの取得は Enterprise Edtion のみの機能であるようです。
Open Source Edtion(OSS版)では /metrics エンドポイントにリクエストを行っても
空の応答が返ってきます。
Docker Hub で公開されているイメージ( https://hub.docker.com/r/drone/drone )は
Enterprise Edtion です。
個人または年間総収益が100万米ドル未満の組織では無料で利用できます。
それ以外の組織では商用ライセンスの購入が必要となりますが、
5000ビルドまでは無料でトライアルできます。
Enterprise FAQ
https://docs.drone.io/enterprise/
OSS版は Docker イメージなどは公開されていないため、以下の手順を参考に
ソースコードからビルドする必要があります。
手順
メトリクスエンドポイントにアクセスするにはユーザーの認証トークンが必要です。
以下は、モニタリング専用のユーザーを作成し、メトリクスの取得を行う例です。
Drone CLI( https://docs.drone.io/cli/install/ )を使用します。
※ユーザーを作成するにはadmin権限が必要です。
$ drone --verison
drone version 1.2.1
$ export DRONE_SERVER=http://drone.exapmle.com
$ export DRONE_TOKEN=60aac7c4e6c45c7fdab05b4aade6be28
$ drone info
User: your_username
Email:
monitor という名前のマシンユーザーを作成します。
ユーザー名は自由に設定できます。
$ openssl rand -hex 16
40528980ea85811431e065ef1bbc340b
$ drone user add monitor --machine --token=40528980ea85811431e065ef1bbc340b
Successfully added user monitor
Generated account token h1GmYpjK49dEKLqfctqQWFlUaQon9z8J
生成されたトークンで /metrics エンドポイントにアクセスできます。
Authorization ヘッダーの値として Authorization: Bearer <access_token>
の形式でリクエストします。
$ curl -i https://drone.example.com/metrics -H "Authorization: Bearer h1GmYpjK49dEKLqfctqQWFlUaQon9z8J"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0HTTP/1.1 200 OK
Content-Length: 5933
Content-Type: text/plain; version=0.0.4; charset=utf-8
Date: Fri, 13 Mar 2020 04:56:44 GMT
以下メトリクスの出力は省略
Prometheus でメトリクスを取得する場合は scrape_configs: に以下のような定義を
追加することで値を参照可能になります。
- job_name: 'drone'
# コンテナにマウントしたファイルを参照
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
# もしくはbearer_tokenで直書き
# bearer_token: h1GmYpjK49dEKLqfctqQWFlUaQon9z8J
static_configs:
- targets: ['drone.example.com']
アクセストークンがない場合は、Access deniedになります。
$ curl -i https://drone.example.com/metrics
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 36 100 36 0 0 734 0 --:--:-- --:--:-- --:--:-- 750HTTP/1.1 401 Unauthorized
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Fri, 13 Mar 2020 07:57:21 GMT
Content-Length: 36
Invalid or missing prometheus token
OSS版の場合、空のレスポンスが返ります。
$ curl -i https://drone.example.com/metrics
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0HTTP/1.1 200 OK
Date: Sat, 07 Mar 2020 01:27:12 GMT
Content-Length: 0
以上です。
参考になれば幸いです。
Author And Source
この問題について(Drone CI のサーバーメトリクスを取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/hayao_k/items/d590233197503dd3b8cc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .