假设我有以下 Terraform 脚本:
locals {
provisioned_product_vpc_name = "provision-vpc-product"
}
resource "aws_cloudformation_stack" "provisioned_product_vpc" {
name = local.provisioned_product_vpc_name
template_body = "<foobar>"
}
data "aws_cloudformation_stack" "product_vpc" {
name = local.provisioned_product_vpc_name
depends_on = [aws_cloudformation_stack.provisioned_product_vpc]
}
Run Code Online (Sandbox Code Playgroud)
aws_cloudformation_stack.product_vpc我如何以交互方式查看包含值的所有字段。目前我必须手动打开 AWS 控制台并在那里查找正确的值。
或者这是不可能的
假设我在 Linux 计算机上有一个完全空的 Python+Pip+R (pip 19.3.1) 环境,并且我想使用rpy2pip 安装该包。由于我位于公司防火墙后面,因此我将 pip 配置为使用私有存储库。
[global]
index-url = http://private.com/artifactory/api/pypi/PyPI/simple
trusted-host = private.com
Run Code Online (Sandbox Code Playgroud)
现在我执行pip install rpy2,我会得到以下错误:
Couldn't find index page for 'cffi'
Download error on https://pypi.python.org/simple/
Run Code Online (Sandbox Code Playgroud)
cffi因此,pip 尝试通过从官方 PyPi 存储库查找和安装来解决嵌套依赖关系。它完全忽略我配置的存储库。
当我pip install cffi && pip install rpy2一次又一次地运行时,一切都按预期进行。
这是完整的错误输出:
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-8vuadu93/rpy2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-8vuadu93/rpy2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-8vuadu93/rpy2/pip-egg-info
cwd: /tmp/pip-install-8vuadu93/rpy2/
Complete …Run Code Online (Sandbox Code Playgroud) 我编写了一个小脚本来检测 Flask 应用程序,我想编写单元测试,其中每个测试都可以针对模拟 Flask 应用程序编写请求并测试指标,而无需处理来自以前测试方法的指标/请求,如下所示:
def test_grouped_codes():
app = create_app()
instrument(app)
# test stuff
Run Code Online (Sandbox Code Playgroud)
但我无法“重置”注册表,因此我总是收到错误“CollectorRegistry 中的时间序列重复”。
如何在运行时重置 Prometheus Python 客户端库的注册表(或将其设置为空注册表)?
除其他外,我尝试了以下方法,但它不起作用:
def create_app():
app = Flask(__name__)
registry = CollectorRegistry() # Create new registry.
prometheus_client.REGISTRY = registry # Try to override global registry.
prometheus_client.registry.REGISTRY = registry # Try to override global registry.
@app.route("/")
def home():
return "Hello World!"
# More functions ...
@app.route("/metrics")
@FlaskInstrumentator.do_not_track()
def metrics():
data = generate_latest(registry)
headers = {
"Content-Type": CONTENT_TYPE_LATEST,
"Content-Length": str(len(data))}
return data, 200, headers
return …Run Code Online (Sandbox Code Playgroud) 我有一个包含多个容器定义service-A的任务定义task-A,例如nginx和grafana。这些容器如何相互通信?使用的网络是默认的桥接网络。
我试过了curl grafana:3000,但容器无法解析名称。如果我在本地机器上尝试相同的方法,它会起作用。我错过了什么?
这是我的任务定义:
resource "aws_ecs_task_definition" "this" {
family = "x"
execution_role_arn = "x"
task_role_arn = "x"
container_definitions = jsonencode(local.task_definition)
}
Run Code Online (Sandbox Code Playgroud)
容器定义摘录:
locals {
task_definition = [
{
name: "nginx",
image: "nginx:latest",
portMappings: [{
containerPort: 80,
hostPort: 0,
protocol: "tcp"
}],
dependsOn: [{
"containerName": "grafana",
"condition": "START"
}]
},
{
name: "grafana",
image: "grafana/grafana:latest",
portMappings: [{
containerPort : 3000,
hostPort: 0,
protocol: "tcp"
}]
}
]
}
Run Code Online (Sandbox Code Playgroud) 在 PromQL 中,我们使用范围向量选择器来获取诸如 之类的函数的范围向量rate()。Grafana 提供了动态变量$__interval,其使用方式如下:
sum(rate(my_metric{foo="bar"}[$__interval]))
Run Code Online (Sandbox Code Playgroud)
它的值是一个近似值,因此生成的范围向量包含大约每个像素(或更多)的一个条目。据我了解,这可以防止过度获取。
到目前为止,一切都很好。但看看 Grafana Cloud 中可用的多个仪表板或例如 Robust Perception 的演示仪表板,没有人使用$__interval. 相反,人们选择1m或5m即使不使用记录规则或警报。
这是有原因的吗?
如果我的部署仅定义了一个副本,我能否确保只有一个 pod 正在运行?
我注意到,当我kubectl rollout在很短的时间内执行类似操作时,我会在日志中看到两个 Pod。
prometheus ×2
amazon-ecs ×1
artifactory ×1
docker ×1
grafana ×1
kubernetes ×1
pip ×1
python ×1
python-cffi ×1
rpy2 ×1
terraform ×1