保养

本章介绍系统检查和用户管理的基础知识。

系统检查

何时创建并销毁执行器实例?

回答:Circleci为每份工作创建一个新实例。实例将在作业结束时销毁。但是,鉴于云实例创建可能需要很大的时间(〜1到3分钟),Circleci提供预级选项,其中将在预期需求中创建一个设置的实例。这些将在工作结束时被杀。预先缩放实例的数量在管理控制台的“设置”部分中配置。在任何给定的时间,Circleci希望拥有预先缩放的实例和所需实例的基础,以便为服务当前作业负载。

executor实例是否重复使用?

回答:机器执行器VM从未为多个作业重用。EBS卷已重复使用多个作业,但仅在同一项目中的作业中共享。

EBS Volumes如何管理?

回答:由于Docker层可以很大(GBS),因此Circleci通过使用附加的EBS卷来使用对象存储来缓存(例如,S3)。当作业配置为使用Docker层缓存时,会创建卷(例如,设置docker_layer_caching:true在配置中)。注意:对于Docker层缓存工作,您不能使用预期的实例。您必须设置远程Docker和/或机器执行程序(取决于要在“按需”实例的复制设置中,您要使用DLC或两者)到0。否则,DLC将无法正常工作。

Circleci重新使用任何现有的求职量。如果没有(或所有现有卷都很忙),Circleci会为项目创建一个新卷。卷与项目相关联。出于安全原因,没有两个项目作业可以共享EBS卷。Circleci在少数情况下删除EBS卷(例如,当存在磁盘空间的风险时)。

EBS卷和EC2实例的数量可以界定吗?

回答:目前没有。您可以在达到特定阈值时使用提供给警报的指标。

您如何防止执行者无限期存在?

回答:流程运行,定期检测并停止任何泄露的VM(例如,完成的任务,但它的VM在n个小时内运行)。您还可以手动检查已运行超过24小时的实例(Circleci目前也是如此)。当检测到陈旧VM时,您还可以使用提供的指标。

我在哪里可以找到审计日志?

回答:在对象存储安装的根目录下找到审核日志/ audit-logs / audit_log / v1。审核日志服务(as circleci v2.13)处理审核日志事件的存储。在群集中运行的服务可能会消除此服务捕获的审核事件,并持续到AWS S3和主机的配置存储机制。

审核日志文件包含的内容是什么?

回答:自上次文件创建的时间段的JSON表示(每个文件以时间戳开始,通常是每小时)。例如;

{“ID”:“27AA77E3-0255-4464-93AD-F8236533AB53”,“版本”:1,“动作”:“Workflow.job.finish”,“成功”:true,“有效载荷”:{“作业”:{“ID”:“e8cef7c4-60d4-429b-8c94-09c05f309408”,“contexts”:[],“nob_name”:“remole_docker”,“Job_Status”:“成功”},“工作流”:{“ID”:“C022CA3C-5F6F-41BA-A6CA-05977F6A36A”,“VCS_BRANCH”:“MASTER”}},“目标”:{“ID”:“3C4886E1-B810-4765-A1A2-D588E6E4B9CB”,“类型”:“项目”},“请求”:{“ID”:“”},“演员”:{“ID”:“27075C88-9BA4-47D7-8523-FA576E839BFD”,“类型”:“用户”},“范围”:{“ID”:“3C4886E1-B810-4765-A1A2-D588E6E4B9CB”,“类型”:“项目”}}

有什么动作类型?

回答:

context.CreateConity.delete context.env_var.delete context.env_var.store project.andd project.foloul project.settings.update project.stop_building project.unfollow user.create user.logging_in user.logging_out user.suspended workfunded workflow.error工作流程。Job.Context.Request workflow.job.finish workflow.job.scheduled workflow.job.start workflow.retry workflow.start

如何访问文件并与他们做点什么?

回答:

  1. 设立awscli.JQ.或者您的操作系统的另一个JSON处理器。

  2. 在这个例子中,Grep为所有人workflow.job.start.事件。

    #!/ bin / bashbucket =您的桶名称在`aws s3api列表 - 对象--bucket bucket --prefix审计日志/ audit_log / v1 / --outputjson |JQ -R'.Contents []。Key'`;尽可能回声;AWS S3 CP --quiet S3://桶/ $键 -  |grep workflow.job.start;完成

如何确保正确注入内部CA证书?

回答:如果使用内部CA或自签名证书,则必须确保域服务信任签名证书以正确连接到Github Enterprise。金宝博娱乐官网网址

  1. 域服务使用Java TrustStore,加载keytool。必须匹配该工具支持的格式。

  2. 你需要完整的CA链,不仅仅是根/中级证书。

  3. CA证书链应保存在/ usr / local / share / ca-certificates /

安全性和访问控制

Circleci进行持续的安全检查,例如,Circleci在发布之前扫描Circleci容器。circleci做进行持续的安全检查您的环境。

密码和个人身份信息(PII)到位是什么样的安全性?密码是否具有强大的哈希函数和盐渍?

回答:密码使用10个字符的Salt和SHA265散列,请参阅安全章节以获取更多详细信息。

主机和NOMAD客户将如何监视安全问题?

回答:您的内部安全团队负责监控私有数据中心或云中安装的主机和Nomad客户端。在发布之前,Circleci容器被扭曲扫描。

系统配置

如何为系统管理配置?

回答:复制管理控制台处理所有安装后配置。安装特定配置由Terraform或Shell脚本管理。

配置秘密如何管理?

回答:配置秘密存储在主机上的纯文本中。

指标

将生成哪些重要的指标?

回答:参考监测有关监控和指标的详细信息部分。

如何了解每天运行多少个构建?

回答:

使用 var coll = db.builds var项目= coll.find({start_time“:{$ GTE:Isodate(”2018-03-15T00:00:00.000Z“),$ LT:Isodate(”2018-03-16T00:00:00.000z“)}}})项目.Count()

用法统计

如何找到使用统计数据?

回答:

docker exec服务器 - 使用 -  stats / src / builds / elizt

健康检查

如何评估依赖性的健康状况(组件和系统)?系统如何报告自己的健康状况?

回答:就绪代理可用于确定系统的运行状况。复制到服务器就绪 - 代理API,有一个200响应。服务器就绪 - 代理等待从所有列出的服务接收200,报告5xx,直到所有服务都在线,然后报告200.您可以将日志尾笔尾笔以确定当前和最终状态,如下所示:

Docker logs -f Ready-Agent

服务健康

每个文档的服务都提供/健康检查/健康检查/状态HTTP端点:200表示基本健康,500表示不良配置。要确定各个服务的健康,您必须将其SSH放入您的服务VM(所有容器正在运行的情况下)并提出请求。下面列出了曝光检查的当前服务列表:

  • 前端localhost:80 /健康检查

  • API服务localhost:8082 /状态

  • 工作流量导体localhost:9999 / healthcheck

  • 联合服务localhost:8090 /状态

  • 权限服务localhost:3013 /状态

  • 上下文服务localhost:3011 /状态

  • 域服务localhost:3014 /状态

  • Cron服务localhost:4261 /状态

  • VM服务* localhost:3001 /状态

*如果启用

作为一个例子,以下是您如何确定前端是否健康:

curl -s -o / dev / null -i -w“%{http_code} \ n”0.0.0.0:80/Health-check

依赖性的健康

使用/健康揭露它的内部组件的HTTP端点。其他系统和外部端点:通常使用HTTP 200除了一些服务的一些合成检查。

运营任务

该软件如何部署?回滚如何发生?

回答:Circleci使用Ente金宝博娱乐官网网址rprise-Setup Terraform或静态Bash脚本进行部署,已安装复制,并将所有容器拉到VPC中。回滚只能通过重新加载先前的备份而发生,并且无法通过复制来进行。

发生了什么样的缩放活动?

回答:停机时间可能是垂直缩放服务和Nomad客户端,可以在没有停机时间的情况下水平缩放Nomad客户端。有关详细信息,请参阅配置章节的“监控”部分。

经常发生什么样的检查?

回答:所有/健康应每60秒检查端点,包括复制端点。

故障排除

如何发生故障排除?有哪些工具?

回答:

值得注意的是两件事。首先,REPT是一个极其强大的工具,可能在不正确使用时对系统造成无法弥补的损坏。我们无法保证任何一个repl在本指南之外的命令是安全的安全,不支持自定义repl在我们的壳中运行。第二件事是,要运行我们的任何命令,您需要在下面运行以下命令:

  1. ssh进入服务盒

  2. Circleci Dev-Console

如果上面不会将您带入一个提及的Repl,它是Circleci Dev-Console您可以运行备用命令。

  1. ssh进入服务盒

  2. sudo docker exec -it frontend bash

  3. Lein Repl:Connect 6005

一旦您在REPT中,您可以复制和粘贴下面的任何命令,并使必要的替换为进行命令工作。

如何查看所有用户?

回答:

(circle.model.user / here {:$和[{:sign_in_count {::$ gte 0}},{:login {:$ ne nil}}:仅[:login])

如何删除用户?

回答:

(circle.http.api.admin-commands.user / delete-by-login-vcs-type!“sirparthington”:github)

如何为用户提供管理员?

回答:

(circle.model.user / set-fields!(circle.model.user / find-oon-by-gith-login“您的github-username-werse”){:admin“全部”})

如何获得用户统计数据?

回答:如果a如果您需要一些基本统计信息(名称,电子邮件,登录历史记录),请运行以下repl命令:

  • 整天

circleci dev-console(circle.model.user / where where {}
  • 上个月

(circle.model.User / where {:last_sign_in_at {:$ gt(clj-time.core / minus(clj-time.core / home)(clj-time.core / monty 1))}:仅限[:name:登录:电子邮件:admin:dev_admin:激活:sign_in_count:current_sign_in_in:current_sign_in_ip:last_sign_in_in:last_sign_in_ip])

如何创建新管理员?

回答:默认情况下,第一个用户在启动后访问Circleci服务器安装将成为admin。

指定其他管理员用户的选项位于管理部分的“用户”页面下找到https:// [域到您的安装] / admin /用户

如果管理员未知,或者在不创建新管理员的情况下离开公司,您可以按以下方式推广用户:188bet娱乐官网

  1. ssh进入服务盒

  2. 使用命令打开circleci dev控制台Circleci Dev-Console

  3. 运行此命令(用您想要推广的人的GitHub用户名替换\

( - >(circle.model.user / find-in-by-login“”)(circle.model.user / set-fields!{:admin“写入设置”}))

如何重置管理控制台密码?

  1. ssh进入服务盒

  2. 使用以下命令:复制auth重置删除密码

  3. 访问:8800 / Create-Password创建新密码或连接LDAP。

如何解决VM旋转/拆卸问题的情况?

回答:确保不需要构建,需要远程Docker环境或机器执行程序,并确保首先终止任何运行的预期/远程VM EC2实例。然后,完成以下内容:

  1. ssh进入服务盒

  2. 登录Postgres容器中的VM服务数据库:sudo docker exec-it postgres psql -u circle vm

  3. 删除这些记录:删除VMS.TASKS;从VMS.Volumes中删除;从VMS.VMS中删除;

  4. 将管理控制台中的设置配置为按需Instancing(例如,设置为0以防止使用预先曝光的实例)

  5. 终止当前正在运行的所有现有的VM EC2实例。

  6. Circleci Dev-Console要解决。您现在应该能够运行以下命令来检查队列。

  7. 使用下面的命令检查队列后,将设置更改为原始值。

队列

如果您正在运行2.10或更早版本,则队列可能会成为您的问题。由于1.0构建堆积并阻止从运行的任何构建,运行下面的命令以获得队列所在的时间。然后,您可以从用法队列向运行队列推广构建,也可以从运行队列中取消它们。

检查使用队列

(in-ns'circle.backend.build.usage-queue)( -  >>(全构建)计数)#将为您提供队列中有多少构建的计数( -  >>(全构建)(拿3)(地图Deref)(Map Circle.http.paths / build-url)#如果要检查队列顶部的前三个版本。( -  >>(All-Builds)反向(取3)(map circle.http.paths / build-url)#如果要检查队列末尾的构建。#如果要从使用队列向运行队列推广构建,则可以执行以下操作:(允许[构建( -  >>(All-Builds)(迈出3)(映射Circle.http.paths / build-url)(地图circle.model.build/find-one-by-circle-url))(doseq [builds](cirect.backend.build.usage-queue / forwary-build b)))它安全地执行此操作这是100的,但不要把整个队列放在。

检查运行队列

(circle.Backend.Build.Run-Queue / Queue-Depths)#返回队列中的数量( -  >>(circle.backend.build.run-queue /全构建)(迈出3)(Map Circle。http.paths / build-url))#检查run-queue#中的前三个构建#如果构建已卡住运行以下内容。您可以批量取消100.( -  >>(cirect.Backend.Build.Run-Queue / All-Builds)(迈出100)(Map Cirlor.Backend.Build.Cancel / Cancel!)))
请记住在检查队列后将值设置为在设置后返回原件。

节省夏令时的变化

是否受到夏令时的变化(客户端和服务器)影响的软件?

回答:不可以。在处理之前,所有日期/时间数据转换为UTC。

数据清算

需要清除哪些数据?多常?哪些工具或脚本控制清算?

回答:如果使用On-Host存储和静态,则应安装所有存储。

日志旋转

是否需要日志旋转?它是如何控制的?

回答:Docker自动旋转日志。

复制故障转移和恢复过程

当系统的某些部分未能到达备用系统时需要发生什么?恢复期间需要发生什么?

回答:有关详细信息,请参阅本文档的备份和故障排除部分。

用户管理

如何提供管理员用户?

回答:登录Circleci应用程序的第一个用户将自动指定管理员用户。指定其他管理员用户的选项位于管理部分的“用户”页面下找到https:// [域到您的安装] / admin /用户