我想使用 Terraform 在 GCP 中使用 slack 设置警报。
我的代码是:
resource "google_monitoring_notification_channel" "slack" {
display_name = "Prod Slack Alerts"
type = "slack"
labels = {
"channel_name" = "#alert-channel"
}
sensitive_labels {
auth_token = "one"
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是我如何获得auth_token?我看了这篇文章,但这个解决方案已经过时并且不起作用。另外,没有这方面的文档。我已经将 Google Cloud Monitoring 应用集成到我组织的 Slack 中。
我正在尝试监视实例组并拥有基于正则表达式的过滤器。查询看起来像这样
fetch instance_group
| metric 'compute.googleapis.com/instance_group/size'
| filter (resource.instance_group_name =~ 'nat-ecmp-[1|2]')
| group_by 1m, [value_size_mean: mean(value.size)]
| every 1m
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试在 terraform 中做同样的事情。
这就是我到目前为止所想到的
condition_threshold {
filter = <<-EOF
resource.type=\"instance_group\"
metric.type=\"compute.googleapis.com/instance_group/size\"
resource.label."instance_group_name"=~"nat-ecmp-[1|2]"
EOF
duration = "300s"
comparison = "COMPARISON_LT"
threshold_value = "1"
Run Code Online (Sandbox Code Playgroud)
但这会产生错误
Error creating AlertPolicy: googleapi: Error 400: Field alert_policy.conditions[0].condition_threshold.filter had an invalid value of "resource.type="instance_group"
metric.type="compute.googleapis.com/instance_group/size"
resource.label."instance_group_name"=~"nat-ecmp-[1|2]"
": Could not parse filter "resource.type=\"instance_group\"\nmetric.type=\"compute.googleapis.com/instance_group/size\"\nresource.label.\"instance_group_name\"=~\"nat-ecmp-[1|2]\"\n"; syntax error at line 3, column 37, token '=~'
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个
condition_threshold {
filter = <<-EOF
resource.type=\"instance_group\" …Run Code Online (Sandbox Code Playgroud) 我有一份基于 DSL 的种子工作。这就是看起来的样子
pipelineJob("job name") {
description('Some explanation')
triggers {
cron('@midnight')
upstream('someJob', 'SUCCESS')
}
parameters {
...
Run Code Online (Sandbox Code Playgroud)
当我运行作业时,它最终不稳定并出现错误消息
Warning: (Builds.groovy, line 53) triggers is deprecated
Run Code Online (Sandbox Code Playgroud)
所以现在我重新编写了代码如下
pipelineJob("job name") {
description('Some explanation')
properties {
pipelineTriggers {
triggers {
cron('@midnight')
upstream('someJob', 'SUCCESS')
}
}
parameters {
...
Run Code Online (Sandbox Code Playgroud)
现在我得到了错误
ERROR: (unknown source) No signature of method: javaposse.jobdsl.plugin.structs.DescribableListContext.cron() is applicable for argument types: (java.lang.String) values: [@midnight]
Possible solutions: grep(), print(java.io.PrintWriter), print(java.lang.Object), grep(java.lang.Object), wait(), any()
Run Code Online (Sandbox Code Playgroud)
现在我将其重写为
pipelineJob("job name") {
description('Some explanation')
properties {
pipelineTriggers { …Run Code Online (Sandbox Code Playgroud)