获取Drone CI服务器的指标数据
首先
在无人机服务器上,通过/metrics端点公开了Prometheus可用的指标。
https://drone.example.com/metrics
可以查看由 Go 运行时公开的性能指标和构建次数等 Drone 特定的指标。
指标
https://docs.drone.io/zh/server/metrics/
在上述文档中还详细说明了获取指标的方法,但是截至2020年3月似乎有轻微错误,因此我在此记录下正确的步骤。
要注意的事项
据推测,仅限Enterprise Edition才能获取指标。
即使在Open Source Edition(OSS版)中向/metrics端点发送请求,
也会收到空的响应。
在Docker Hub上发布的图像(https://hub.docker.com/r/drone/drone)是企业版。个人或年总收入小于100万美元的组织可以免费使用。其他组织需要购买商业许可证,但可以免费试用5000个构建。
企业常见问题解答
https://docs.drone.io/enterprise/
由于OSS版没有公开Docker镜像等,因此需要根据以下步骤来从源代码构建。
操作步骤
访问指标终端需要用户的身份验证令牌。
以下是创建用于监控的用户并获取度量的示例。
使用无人机 CLI(https://docs.drone.io/cli/install/)。
※创建用户需要管理员权限。
$ 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: Bearer 的格式发送请求。
$ 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']
如果没有访问令牌,将会出现拒绝访问的状态。
$ 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
希望这些对你有所帮助。