监控您的安装

指标概述

指标是用于监测和分析目的的技术统计数据。数据包括基本信息,例如CPU或内存用法,以及更高级计数器,例如执行的构建和内部错误。使用您可以使用指标:

  • 快速检测事件和异常行为

  • 动态缩放计算资源

  • 追溯了解基础设施范围的问题

指数如何在Circleci服务器中工作

Telegraf是CircleCI服务器中用于度量收集的主要组件。Telegraf是一种服务器软件,可以将CircleCI服务发出的数据数据代理给Datadog或AWS CloudWatch等数据监控平台。

指标
图1所示。指标

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,请按照您希望在支持的平台部分。以下部分概述了您的安装可用指标。

VM服务和Docker指标

VM服务和Docker服务指标通过Telegraf,一个插件驱动的服务器代理,用于收集和报告指标。

启用以下度量标准:

游牧工作指标

游牧工作指标由Nomad服务器代理启用和发出。报告了五种类型的度量标准:

度规 描述

circle.nomad.server_agent.poll_failure

如果Nomad代理的最后一次轮询失败,则返回1,否则返回0。

circle.nomad.server_agent.jobs.pending

返回整个集群中挂起作业的总数。

circle.nomad.server_agent.jobs.running

返回集群中正在运行的作业总数。

circle.nomad.server_agent.jobs.complete

返回整个集群中完成的作业总数。

circle.nomad.server_agent.jobs.dead

返回整个集群中死亡作业的总数。

当Nomad metrics容器正常运行时,不会将输出写入标准输出或标准错误。失败将引出一条消息到标准错误。

Circleci指标

在Circleci服务器v2.18中引入

circle.Backend.action.upload-artifact-error

跟踪工件上传失败的次数。

circle.build-queue.runnable.builds.

跟踪系统中有多少构建被认为是可运行的。

circle.dispatcher.find-containers-failed

跟踪多少个1.0版本

circle.github.api_call

跟踪CircleCI对github做了多少api调用

circle.http.request

跟踪响应代码到CircleCi请求

circle.nomad.client_agent。*`

跟踪nomad客户指标

circle.nomad.server_agent。*

跟踪有多少nomad服务器。

circle.run-queue.latency.

跟踪可追踪的构建需要多长时间。

circle.state.container-builder-ratio

跟踪每个构建器存在多少个容器(仅限1.0)。

circle.state.lxc可用

跟踪有多少容器可用(仅1.0)

circle.state.lxc-reserved

追踪有多少容器被保留/使用(仅1.0)。

circleci.cron-service.messaging.handle-message

控件处理的RabbitMQ消息提供计时和计数cron-service

circleci.grpc-response.

跟踪系统GRPC系统调用的延迟。

支持的平台

我们有两个内置的度量和监控平台:AWS CloudWatch和DataDog。下面的小节依次详细介绍如何启用和配置它们。

AWS CloudWatch.

要启用AWS CloudWatch完成以下内容:

  1. 导航到管理控制台中的settings页。你可以使用以下URL,替换你的CircleCI URL:# cloudwatch_metrics your-circleci-hostname.com: 8800 /设置

  2. 检查AWS CloudWatch指标下的Enabled来开始配置。

    AWS CloudWatch.
    图2。使监测

AWS CloudWatch配置

配置有两个选项:

  • 使用服务框的IAM实例配置文件并配置您的自定义区域和名称空间。

    配置我
    图3. CloudWatch Region和命名空间
  • 或者,您可以将AWS Access密钥和密钥与自定义区域和名称空间一起使用。

    配置管理
    图4。访问密钥和秘密密钥

储蓄后可以验证这些数据通过AWS CloudWatch控制台进行转发。

DataDog

要启用Datadog,请完成以下步骤:

  1. 导航管理控制台设置。您可以使用以下URL,替换您的CircleCI主机名:your-circleci-hostname.com:8800/settings#datadog_metrics.

  2. 在DataDog指标下启用已启用以开始配置。

    启用DataDog.
    图5。使Datadog指标
  3. 输入您的DataDog API密钥。您可以通过转到DataDog度量摘要来验证度量正在转发。

    DataDog API密匙
    图6。输入Datadog API密钥

自定义指标

使用Telegraf配置文件的自定义指标允许更精细的粗粒控制,而不是允许复制到DataDog或AWS CloudWatch的转发标准度量。

基本服务器度量配置只假定基本用例。它可能是有益的自定义的方式指标处理为您的安装以下方式:

  • 将指标数据转发到您首选的平台(例如,您自己的流感数据库实例)

  • 监视其他指标,以检测特定事件

  • 减少发送到数据分析平台的指标数量(以减少总运营成本)

1.禁用标准度量设置

禁用Telegraf配置的复制插值以完全自定义和输出:

  1. 打开管理控制台。

  2. 在这一点设置页面,去自定义指标节并启用“使用自定义telegraf度量”选项。

    自定义指标
    图7。自定义指标
  3. 向下滚动保存更改并重新启动服务。

将有停机时间以及服务重启。禁用后,无论复制的配置如何,您都必须手动将输出配置为DataDog和/或CloudWatch。

2.创建您的自定义配置

现在您可以做任何Telegraf支持的事情了!您需要提供的只是一个有效的Telegraf配置文件。

  1. SSH进入服务机器

  2. 将以下内容添加到/etc/circleconfig / telegraf / statsd.conf

    [[inputs.statsd]] service_address =“:8125”parse_data_dog_tags = true metric_separator =“。”namepass= []
  3. 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" ]
  4. 通过运行以下程序重启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应用程序,这将需要停机。