用于收集sla数据的连续测试运行器
sla-runner的Python项目详细描述
#sla monitor worker
这是sla monitor/reporter的测试运行器部分。它重复执行测试(或任何您想要的命令),并将成功/失败发布到sns主题以进行外部处理(例如,使用lambda写入自定义的cloudwatch度量),还可以选择将日志上载到s3存储桶。
安装
我可以在AWS的生产环境中使用。这通过使用实际角色运行来模拟该环境。
terraform
excute the following in the root folder to run terraform.显然,安装了Terraform。将bucket和table变量设置为远程状态的现有后端资源。
**重要提示:如果要切换帐户(例如dev、stage、prod),请在新环境中运行之前删除.terraform文件夹**
```shell
`pip install iam starter
cd terraform&;&;\
导出aws_env="dev"&;\
导出aws_backend_region="us-east-1"&;\
导出aws_default_region="us-east-1"&;\
导出aws_remote_bucket="billtrust tfstate-$aws_env"&;\
导出aws_remote_table="tfstate_$aws_env"&;\
iam starter \
--配置文件$aws_env \
--命令\
"terraform init \
-后端配置=\"region=$aws_backend_region\"\
-后端配置=\"bucket=$aws_remote_bucket\"\
-后端配置=\"dynamodb_table=$aws_remote_table\"&;\
terraform apply \
--自动批准\
-var\"aws_env=$aws_env\"\
-var\"aws_region=$aws_default_region\"
````
在实际的ECS场景中,可以通过PYPI在服务容器中安装sla runner,并将"--image"设置为包含测试的服务容器的映像。
``bash
docker build-t sla monitor/sla runner:latest.
export aws_env="dev"
iam docker run\
-e slarunner_command="/bin/bash/src/test scripts/run tests.sh"\
-e slarunner_service=example service\
-e slarunner_groups="dev team,critical"\
-e slarunner_delay=30\
-e slarunner_snstopicname="sla monitor result published-$aws_env"\
-e slarunner_s3bucketname="sla监视日志-$aws_env"\
--完整入口点"sla runner"\
--区域US-East-1\
--配置文件$aws_env\
--角色sla monitor runner role-$aws_env\
--映像sla monitor/sla runner:latest
```
在ECS中,将这些添加为环境变量在任务定义或通过ssm starter从ssm加载中:
```
--完整入口点"ssm starter--ssm name sla runner--command‘sla runner’"
```
很直截了当。如果有中断,运行程序将尝试在退出前优雅地完成命令。
这将用作S3上载的前缀,并将在JSON事件中作为"服务"传递给SNS。
这将在json事件中作为"groups"作为列表传递给sns,如果多个服务是同一组件的一部分,则它将提供辅助统计信息。
它在命令之间以秒为单位运行。
它将作为json对象发布。例如,上面的命令将生成以下内容:
``json
{
"service":"example service",
"group":["dev team","critical"],
"succeeded":true,
"timestamp":"1574515200",
"testExecutionSecs":"914"
}
````
"s3 bucket"-name
$slarunner_s3bucketname
这是一个可选参数。对象将被命名为时间戳,后跟结果,以便按结果进行搜索,并且将以服务名称作为前缀。例如"example service/1574514000u success"
\帽子会写在桶上。它不会发布到sns或将对象写入s3。仅用于测试目的。
s-east-1\
--主机源路径。\
--容器源路径/src\
--shell
```
&;\
docker run--rm-it--entrypoint使sla runner发布
在提示下,输入pypi.org repo的用户名和密码。
这是sla monitor/reporter的测试运行器部分。它重复执行测试(或任何您想要的命令),并将成功/失败发布到sns主题以进行外部处理(例如,使用lambda写入自定义的cloudwatch度量),还可以选择将日志上载到s3存储桶。
安装
我可以在AWS的生产环境中使用。这通过使用实际角色运行来模拟该环境。
terraform
excute the following in the root folder to run terraform.显然,安装了Terraform。将bucket和table变量设置为远程状态的现有后端资源。
**重要提示:如果要切换帐户(例如dev、stage、prod),请在新环境中运行之前删除.terraform文件夹**
```shell
`pip install iam starter
cd terraform&;&;\
导出aws_env="dev"&;\
导出aws_backend_region="us-east-1"&;\
导出aws_default_region="us-east-1"&;\
导出aws_remote_bucket="billtrust tfstate-$aws_env"&;\
导出aws_remote_table="tfstate_$aws_env"&;\
iam starter \
--配置文件$aws_env \
--命令\
"terraform init \
-后端配置=\"region=$aws_backend_region\"\
-后端配置=\"bucket=$aws_remote_bucket\"\
-后端配置=\"dynamodb_table=$aws_remote_table\"&;\
terraform apply \
--自动批准\
-var\"aws_env=$aws_env\"\
-var\"aws_region=$aws_default_region\"
````
在实际的ECS场景中,可以通过PYPI在服务容器中安装sla runner,并将"--image"设置为包含测试的服务容器的映像。
``bash
docker build-t sla monitor/sla runner:latest.
export aws_env="dev"
iam docker run\
-e slarunner_command="/bin/bash/src/test scripts/run tests.sh"\
-e slarunner_service=example service\
-e slarunner_groups="dev team,critical"\
-e slarunner_delay=30\
-e slarunner_snstopicname="sla monitor result published-$aws_env"\
-e slarunner_s3bucketname="sla监视日志-$aws_env"\
--完整入口点"sla runner"\
--区域US-East-1\
--配置文件$aws_env\
--角色sla monitor runner role-$aws_env\
--映像sla monitor/sla runner:latest
```
在ECS中,将这些添加为环境变量在任务定义或通过ssm starter从ssm加载中:
```
--完整入口点"ssm starter--ssm name sla runner--command‘sla runner’"
```
很直截了当。如果有中断,运行程序将尝试在退出前优雅地完成命令。
这将用作S3上载的前缀,并将在JSON事件中作为"服务"传递给SNS。
这将在json事件中作为"groups"作为列表传递给sns,如果多个服务是同一组件的一部分,则它将提供辅助统计信息。
它在命令之间以秒为单位运行。
它将作为json对象发布。例如,上面的命令将生成以下内容:
``json
{
"service":"example service",
"group":["dev team","critical"],
"succeeded":true,
"timestamp":"1574515200",
"testExecutionSecs":"914"
}
````
"s3 bucket"-name
$slarunner_s3bucketname
这是一个可选参数。对象将被命名为时间戳,后跟结果,以便按结果进行搜索,并且将以服务名称作为前缀。例如"example service/1574514000u success"
\帽子会写在桶上。它不会发布到sns或将对象写入s3。仅用于测试目的。
s-east-1\
--主机源路径。\
--容器源路径/src\
--shell
```
&;\
docker run--rm-it--entrypoint使sla runner发布
在提示下,输入pypi.org repo的用户名和密码。