我对 AWS CloudWatch 日志查询语法很陌生,正在寻找解决我的问题的方法。
我想提出适当的 CloudWatch 查询,如果一个日志包含一个唯一值,它将显示来自特定日志流的所有日志。看起来像是根据前一个的结果执行 1 个查询。
第一个看起来像:
fields @message, @logStream
| filter @message like /UNIQUE_VALUE/
Run Code Online (Sandbox Code Playgroud)
它产生以下形式的结果:
# @message @logStream
1 UNIQUE_VALUE log_stream/1a23c4
Run Code Online (Sandbox Code Playgroud)
最后一个查询:
fields @message
| filter @logStream like "log-stream/1a23c4"
| sort asc
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想让它成为参数化的 CloudWatch 查询 - 我输入 UNIQUE_VALUE 并接收last query的输出。
amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights
我正在尝试用 yq 替换 yaml 文件中的所有子字符串。
文件:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: <SOME_NAME>
name: <SOME_NAME>
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: <SOME_NAME>
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: <SOME_NAME>
spec:
serviceAccountName: api
containers:
- image: some-docker-repo/<SOME_NAME>:latest
Run Code Online (Sandbox Code Playgroud)
现在我正在使用这样的命令:
yq e '
.metadata.labels.app = "the-name-to-use" |
.metadata.name = "the-name-to-use" |
.spec.selector.matchLabels.app = "the-name-to-use" |
.spec.template.metadata.labels.app = "the-name-to-use" |
.spec.template.spec.containers[0].image |= sub("<SOME_NAME>", "the-name-to-use")
' template.yaml > result.yaml
Run Code Online (Sandbox Code Playgroud)
但我确信它可以作为一句台词来完成。我尝试使用不同的变体
yq e …Run Code Online (Sandbox Code Playgroud)