通过Prometheus监控Gitlab Runner
动机
我希望能尽早发现Gitlab CI Runner的问题。
-
- zabbixでもいいけど、監視対象に対してプロダクトが大きすぎる感
-
- gitlabがprometheus対応を前面に出している
1バイナリを監視対象にデプロイするだけ -> 楽そう
我想要对Runner进行自动缩放。
- Runner上で稼働しているJobの数等を分析したうえで適切にスケールさせたい
很流行
- 流行ってる
Prometheus是什么?
普罗米修斯
普罗米修斯服务器
参考安装
暂时启动
docker run -p 9090:9090 prom/prometheus
http://localhost:9090/ 可以选择多个选项:
我想使用config。
为了尽快进行,我准备好了源代码并开始进行。
根据源代码进行构建
$ mkdir -p $GOPATH/src/github.com/prometheus
$ cd $GOPATH/src/github.com/prometheus
$ git clone https://github.com/prometheus/prometheus.git
$ cd prometheus
$ make build
$ ./prometheus --config.file=prometheus.yml
Gitlab Runner 可以改写为:Gitlab 执行器
本次我們在AWS Lightsail上設置了Runner。使用Ubuntu 18.04作業系統。
我們將參考官方的GitLab倉庫安裝GitLab Runner。
安装和启动
$ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
$ sudo apt install gitlab-runner
确认跑步者的状态
$ sudo gitlab-runner status
将Runner注册到存储库中
$ sudo gitlab-runner register
在提示中要求输入URL和Token,按照要求进行输入后完成注册。
启用Runner的度量指标。
在Gitlab Runner的config.toml文件中进行如下编辑。
concurrent = 4
check_interval = 0
listen_address = "${ip or hostname}:${port}"
# 以下略
这次我尝试使用IP地址进行注册,但是在Lightsail中,必须将私有IP放入listen_address字段。
普罗米修斯的配置
scrape_configs:
- job_name: 'gitlab'
static_configs:
- targets: ['${ip or hostname}:${port}']
$ ./prometheus --config.file=prometheus.yml
执行后,请访问http:://localhost:9090/,在Status->Targets中。
只要使用PromQL对数据进行处理,就可以了解决了。
在Gitlab Runner的配置上花费了大量时间,而在Prometheus的配置上几乎没有花费太多时间… 需要自己添加认证和警报等必要的内容,但是基础是如此简单,真是令人赞叹。
展望未来
我想添加验证和警报功能,并在Grafana中显示漂亮的图表。