通过Prometheus监控Gitlab Runner

动机


我希望能尽早发现Gitlab CI Runner的问题。

    • zabbixでもいいけど、監視対象に対してプロダクトが大きすぎる感

 

    • gitlabがprometheus対応を前面に出している

1バイナリを監視対象にデプロイするだけ -> 楽そう


我想要对Runner进行自动缩放。

    Runner上で稼働しているJobの数等を分析したうえで適切にスケールさせたい

很流行

    流行ってる

Prometheus是什么?

普罗米修斯


普罗米修斯服务器

参考安装


暂时启动

docker run -p 9090:9090 prom/prometheus

http://localhost:9090/ 可以选择多个选项:


コメント 2019-07-09 202144.png

我想使用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中。


コメント 2019-07-10 012351.png

只要使用PromQL对数据进行处理,就可以了解决了。

在Gitlab Runner的配置上花费了大量时间,而在Prometheus的配置上几乎没有花费太多时间… 需要自己添加认证和警报等必要的内容,但是基础是如此简单,真是令人赞叹。


展望未来

我想添加验证和警报功能,并在Grafana中显示漂亮的图表。

广告
将在 10 秒后关闭
bannerAds