监控您的安装
本节包含有关监视CircleCI服务器安装的指标的信息。
指标概述
指标是用于监测和分析目的的技术统计数据。数据包括基本信息,例如CPU或内存用法,以及更高级计数器,例如执行的构建和内部错误。使用您可以使用指标:
快速检测事件和异常行为
动态缩放计算资源
追溯了解基础设施范围的问题
指数如何在Circleci服务器中工作
Telegraf是CircleCI服务器中用于度量收集的主要组件。Telegraf是一种服务器软件,可以将CircleCI服务发出的数据数据代理给Datadog或AWS CloudWatch等数据监控平台。

Circleci服务器中的指标集合工作如下:
服务器安装的每个组件将度量数据发送到运行在服务机器上的telegraf容器。
Telegraf监听端口8125/UDP,从所有组件(输入)接收数据,并应用配置的过滤器来确定数据应该保留还是删除。
对于某些公制类型,TeleGraa将在内部保留度量数据,并定期计算统计数据(例如最大,最小,平均值,STDEV,SUM)。
最后,Telegraf将数据发送到配置好的接收器(输出),比如stdout(在服务机器上)、Datadog和/或AWS CloudWatch。
值得注意的是,TeleGraf可以同时接受多个输入和输出类型,允许管理员配置单个Telegraf实例来收集和转发多个指标数据集到DataDog和CloudWatch。
标准指标配置
使用以下命令查看您的指标配置文件:
sudo docker inspect——format='{{range . mount}}{{println .Source "->" .Destination} {{end} ' telegraf | grep telegraf.conf | awk '{print $1}' | xargs cat
文件中有四个值得注意的块(有些块可能没有,这取决于您在管理控制台的配置):
[[inputs.statsd]]
- 通过8125 / UDP接收指标数据的输入配置(如上所述)[[outputs.file]]
- 输出配置,以发出STDOUT的指标。所有接受的指标都配置为在TeleGraf Docker日志中显示。这有助于调试度量标准配置。[[outputs.cloudwatch]]
-输出配置,以发出指标到CloudWatch[[outputs.datadog]]
- 输出配置以向DataDog发出指标
此配置文件由复制(用于管理和部署CircleCI服务器的服务)自动生成,并由复制完全管理。如果希望自定义标准配置,则需要将复制配置到不插入您想要更改的块。
不要尝试直接修改该文件。通过这种方式所做的任何更改都将在某些事件(如服务重启)上被复制而被销毁。例如,如果一个自定义[[inputs.statsd]] 块添加没有停止自动插值,您将在Telegraf尝试聆听时遇到错误8125 / UDP 两次,第二次尝试就会失败EADDRINUSE 。 |
在没有度量定制的标准配置中,上面讨论的主配置就是所需要的全部。如果您已经通过将文件放置在下面配置了度量定制/etc/circleconfig / telegraf
,这些配置被附加到主配置中——想象一下“cat”主配置和所有那些定制文件。有关定制度量的更多信息,请参见自定义指标部分。
系统监控指标
若要将指标转发到AWS Cloudwatch或Datadog,请按照您希望在支持的平台部分。以下部分概述了您的安装可用指标。
游牧工作指标
游牧工作指标由Nomad服务器代理启用和发出。报告了五种类型的度量标准:
度规 | 描述 |
---|---|
|
如果Nomad代理的最后一次轮询失败,则返回1,否则返回0。 |
|
返回整个集群中挂起作业的总数。 |
|
返回集群中正在运行的作业总数。 |
|
返回整个集群中完成的作业总数。 |
|
返回整个集群中死亡作业的总数。 |
当Nomad metrics容器正常运行时,不会将输出写入标准输出或标准错误。失败将引出一条消息到标准错误。
Circleci指标
在Circleci服务器v2.18中引入
|
跟踪工件上传失败的次数。 |
|
跟踪系统中有多少构建被认为是可运行的。 |
|
跟踪多少个1.0版本 |
|
跟踪CircleCI对github做了多少api调用 |
|
跟踪响应代码到CircleCi请求 |
|
跟踪nomad客户指标 |
|
跟踪有多少nomad服务器。 |
|
跟踪可追踪的构建需要多长时间。 |
|
跟踪每个构建器存在多少个容器(仅限1.0)。 |
|
跟踪有多少容器可用(仅1.0) |
|
追踪有多少容器被保留/使用(仅1.0)。 |
|
控件处理的RabbitMQ消息提供计时和计数 |
|
跟踪系统GRPC系统调用的延迟。 |
支持的平台
我们有两个内置的度量和监控平台:AWS CloudWatch和DataDog。下面的小节依次详细介绍如何启用和配置它们。
AWS CloudWatch.
要启用AWS CloudWatch完成以下内容:
导航到管理控制台中的settings页。你可以使用以下URL,替换你的CircleCI URL:
# cloudwatch_metrics your-circleci-hostname.com: 8800 /设置
。检查AWS CloudWatch指标下的Enabled来开始配置。
图2。使监测
AWS CloudWatch配置
配置有两个选项:
使用服务框的IAM实例配置文件并配置您的自定义区域和名称空间。
图3. CloudWatch Region和命名空间或者,您可以将AWS Access密钥和密钥与自定义区域和名称空间一起使用。
图4。访问密钥和秘密密钥
储蓄后可以验证这些数据通过AWS CloudWatch控制台进行转发。
DataDog
要启用Datadog,请完成以下步骤:
导航管理控制台设置。您可以使用以下URL,替换您的CircleCI主机名:
your-circleci-hostname.com:8800/settings#datadog_metrics.
在DataDog指标下启用已启用以开始配置。
图5。使Datadog指标输入您的DataDog API密钥。您可以通过转到DataDog度量摘要来验证度量正在转发。
图6。输入Datadog API密钥
自定义指标
使用Telegraf配置文件的自定义指标允许更精细的粗粒控制,而不是允许复制到DataDog或AWS CloudWatch的转发标准度量。
基本服务器度量配置只假定基本用例。它可能是有益的自定义的方式指标处理为您的安装以下方式:
将指标数据转发到您首选的平台(例如,您自己的流感数据库实例)
监视其他指标,以检测特定事件
减少发送到数据分析平台的指标数量(以减少总运营成本)
1.禁用标准度量设置
打开管理控制台。
在这一点设置页面,去自定义指标节并启用“使用自定义telegraf度量”选项。
图7。自定义指标向下滚动保存更改并重新启动服务。
将有停机时间以及服务重启。禁用后,无论复制的配置如何,您都必须手动将输出配置为DataDog和/或CloudWatch。 |
2.创建您的自定义配置
现在您可以做任何Telegraf支持的事情了!您需要提供的只是一个有效的Telegraf配置文件。
SSH进入服务机器
将以下内容添加到
/etc/circleconfig / telegraf / statsd.conf
[[inputs.statsd]] service_address =“:8125”parse_data_dog_tags = true metric_separator =“。”namepass= []
下
namepass
添加您希望接收的任何指标,下面的示例显示了选择配置上面列表中的前4个指标。(下面是一些配置的例子):[[inputs.statsd]] service_address =“:8125”parse_data_dog_tags = true metric_separator =“。”namepass= [ "circle.backend.action.upload-artifact-error", "circle.build-queue.runnable.builds", "circle.dispatcher.find-containers-failed", "circle.github.api_call" ]
通过运行以下程序重启telegraf容器:
sudo docker重新启动Telegraf
看到Telegraf自述查看配置语法的详细信息。 |
示例电报配置
场景1:记录两个流感数据库实例的标准度量
下面的示例记录了两个流感数据库实例的默认指标:一个是您的本地流感数据库服务器(your-influx-db-instance.example.com
),而另一个是InfluxDB云2。
[[inputs.statsd]] service_address =“:8125”parse_data_dog_tags = true metric_separator =“。”namepass= [ "circle.backend.action.upload-artifact-error", "circle.build-queue.runnable.builds", "circle.dispatcher.find-containers-failed", "circle.github.api_call", "circle.http.request", "circle.nomad.client_agent.*", "circle.nomad.server_agent.*", "circle.run-queue.latency", "circle.state.container-builder-ratio", "circle.state.lxc-available", "circle.state.lxc-reserved", "circle.vm-service.vm.assigned-vm", "circle.vm-service.vms.delete.status", "circle.vm-service.vms.get.status", "circle.vm-service.vms.post.status", "circleci.cron-service.messaging.handle-message", "circleci.grpc-response" ] [[outputs.influxdb]] url = "http://your-influx-db-instance.example.com:8086" database = "circleci" [[outputs.influxdb_v2]] urls = ["https://us-central1-1.gcp.cloud2.influxdata.com"] token = "YOUR_TOKEN_HERE" organization = "circle@example.com" bucket = "circleci"
场景2:将所有度量记录到Datadog
标准配置只处理所选择的指标,而且Telegraf丢弃了许多指标。如果要接收此丢弃的复杂数据,例如JVM统计数据和每个容器CPU使用情况,则可以通过删除NamePass过滤器来保持所有接收的指标。此示例还说明了如何将指标发出配置为DataDog。如上所述,无论复制的配置如何,您都需要将输出输出到DataDog。
这种情况会导致非常大量的数据。 |
[[inputs.statsd]] service_address =“:8125”parse_data_dog_tags = true metric_separator =“。”[[outputs.datadog]] apikey ='your_api_key_here'
场景3:将有限的指标发送到CloudWatch
AWS对CloudWatch按标量系列收取费用(即“平均值”或“总和”级别)。因为多个字段(例如平均值、最大值、最小值和总和)被计算为每个度量键(例如。circle.run-queue.latency.
)和一些字段可能是多余的,您可能想要选择哪些字段被发送到CloudWatch。这可以通过配置来实现[[outputs.cloudwatch]]
与fieldpass
。你也可以申报[[outputs.cloudwatch]]
多次获得多个指标,如下所示。
[[inputs.statsd]]# Accept all metrics at input level to 1) enable output configurations without thinking of inputs, and to 2) dump discarded metrics to stdout just in case. service_address = ":8125" parse_data_dog_tags = true metric_separator = "." [[outputs.cloudwatch]] # Fill in these two variables if you need to access CloudWatch with an IAM User, not an IAM Role attached to your Services box # access_key = 'ACCESS' # secret_key = 'SECRET' # Specify region for CloudWatch region = 'ap-northeast-1' # Specify namespace for easier monitoring namespace = 'my-circleci-server' # Name of metrics key to record namepass = ['circle.run-queue.latency'] # Name of metrics field to record; key and field are delimited by an underscore (_) fieldpass = ['mean'] [[outputs.cloudwatch]] # Outputs can be specified multiple times. # Fill in these two variables if you need to access CloudWatch with an IAM User, not an IAM Role attached to your Services box # access_key = 'ACCESS' # secret_key = 'SECRET' # Specify region for CloudWatch region = 'ap-northeast-1' # Specify namespace for easier monitoring namespace = 'my-circleci-server' # Name of metrics key to record namepass = ['mem'] # Name of metrics field to record; key and field are delimited by an underscore (_) fieldpass = ['available_percent']
额外提示
您可以通过运行来检查日志docker日志-f电报
确认您的输出提供者(例如,内流)已在配置输出中列出。另外,如果你想确保安装中的所有指标都是根据环境标记的,你可以在配置中添加以下代码:
[global_tags] Env = " < staging-circleci >”
请看涌入文档用于默认和高级安装步骤。
对配置的任何更改都需要重新启动CircleCI应用程序,这将需要停机。 |