我需要将我的cloudwatch日志发送到日志分析服务.
现在,我正在尝试使用Terraform(角色/策略,安全组,cloudwatch日志组,lambda以及从日志组触发lambda)自动执行所有这些操作.
但我无法弄清楚如何使用TF来配置AWS以从cloudwatch日志中触发lambda.
我可以通过执行以下操作手动将两个TF资源链接在一起(在Lambda Web控制台UI中):
完成后,lambda将显示在订阅列中的cloudwatch日志控制台上 - 显示为"Lambda(cloudwatch-sumologic-lambda)".
我尝试使用以下TF资源创建订阅:
resource "aws_cloudwatch_log_subscription_filter" "cloudwatch-sumologic-lambda-subscription" {
name = "cloudwatch-sumologic-lambda-subscription"
role_arn = "${aws_iam_role.jordi-waf-cloudwatch-lambda-role.arn}"
log_group_name = "${aws_cloudwatch_log_group.jordi-waf-int-app-loggroup.name}"
filter_pattern = "logtype test"
destination_arn = "${aws_lambda_function.cloudwatch-sumologic-lambda.arn}"
}
Run Code Online (Sandbox Code Playgroud)
但它失败了:
aws_cloudwatch_log_subscription_filter.cloudwatch-sumologic-lambda-subscription:InvalidParameterException:供应商lambda的destinationArn不能与roleArn一起使用
我找到了关于为预定事件设置类似事情的答案,但这似乎与我上面描述的控制台操作没有相同(控制台UI方法不会创建我能看到的事件/规则) ).
有人能给我一个关于我做错的指针吗?
我正在从日志中解析 json 字段,其中一些字段中有数组。\xc2\xa0Sumo 似乎可以很好地理解数组,但我没有看到提取数组中项目数量的方法。(长度、数量等)
\nlength似乎仅用于字符数。但我添加了一个屏幕截图来演示我想要做什么。在本例中,body是一个对象数组。
我在 HTTP 中传递一个 JSON 数组对象POST作为
[{"level":"INFO","data": "Test 1"},{"level":"INFO","data": "Test 2"}]
Run Code Online (Sandbox Code Playgroud)
该消息在 SumoLogic 中被视为 1 个对象/日志消息。我如何告诉 SumoLogic 将每个 JSON 对象视为一个独立的对象并显示 2 条日志消息而不是一条?
我们的应用程序(MapReduce 作业、微服务)完全在 AWS 上运行。
我们打算使用单一服务来查看(出于调试目的)、监控和警报(基于阈值的通知)日志。
与 AWS 本身提供的服务(本例中为 cloudwatch)相比,使用相扑逻辑等外部服务提供商有什么具体好处吗?
我对 Sumologic 中的搜索查询有点迷失。我需要获取_sourceHost包含的日志production
对于 SQL,它看起来像这样
WHERE app="my-app" AND _sourceHost LIKE "%production%"
Run Code Online (Sandbox Code Playgroud)
有人知道 Sumologic 是否可能吗?
我有一个 Sumologic 日志收集器,它是一个通用日志收集器。我希望日志收集器查看来自不同容器的日志和配置文件。我该如何实现这个目标?
所以我有一个这种格式的日志:
{
"date":1598808279.785381,
"log":"{\"level\":\"info\",\"ts\":15988.7852,\"caller\":\"server/middlewares.go:26\",\"msg\":\"Request Log\",\"status\":200,\"method\":\"GET\",\"url\":\"/health\",\"duration\":0.000008323}",
"container_id":"someid",
"container_name":"/service-name",
"source":"stdout"
}
Run Code Online (Sandbox Code Playgroud)
我想提取该log领域内的状态。阅读文档后,我看起来应该能够做到:
_collector="MyService" | json auto | fields log.status
Run Code Online (Sandbox Code Playgroud)
但是,这会引发语法错误.
我认为的另一个解决方案是,根据其他语言的工作方式,管道通常返回对象,因此如果我可以增量返回字段,这应该可以工作:
_collector="MyService" | json auto | fields (log) | fields (status)
Run Code Online (Sandbox Code Playgroud)
但这也行不通。
我尝试指定给定字段:
_collector="MyService" | json auto "fields.log.status"
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。
我还尝试使用如下字段直接提取该值:
_collector="MyService" | json field=Message "log.status"
Run Code Online (Sandbox Code Playgroud)
最后,我尝试做所有这些变化:
_collector="MyService" | json auto field=log "status"
_collector="MyService" | json auto field=log | fields status
_collector="MyService" | json auto field=log "status"
_collector="MyService" | json auto field=log "log.status"
Run Code Online (Sandbox Code Playgroud)
但无济于事。
有什么想法我哪里出错了吗?
我有这样的路径(单行):
/
/abc
/def/
/ghi/jkl
/mno/pqr/
/stu/vwx/yz
/abc/def/ghi/jkl
Run Code Online (Sandbox Code Playgroud)
我只需要与第三个“/”匹配的模式。换句话说,路径仅包含“/”以及最多前 2 个目录。然而,我的一些目录以“/”结尾,有些则不然。所以我想要的结果是:
/
/abc
/def/
/ghi/jkl
/mno/pqr/
/stu/vwx/
/abc/def/
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试过了(\/|.*\/),但这并没有得到没有“/”结尾的路径。
我希望能够json编码异常对象.我正在将我的日志推送到sumologic并且希望能够推送json编码的异常,以便我可以在sumo中解析和过滤这些日志.
但是,我不能json编码异常并得到此错误:
Cannot JSON encode object of class: class java.lang.Class: class clojure.lang.ExceptionInfo
Run Code Online (Sandbox Code Playgroud)
这是我的compojure-api异常处理程序:
(defn exception-handler
"Handles exceptions."
[f]
(fn [^Exception ex data request]
(log/error (json/generate-string {:request-id log-helper/*request-id*
:error ex}))
(f (.getMessage ex))))
Run Code Online (Sandbox Code Playgroud) 我正在尝试对匹配以下正则表达式的日志进行相扑逻辑搜索:
"Authorization \d+ for story is not voided. Story not removed"
Run Code Online (Sandbox Code Playgroud)
也就是说,\d+由一位或多位数字组成,但它们究竟是什么并不重要。
基于搜索示例备忘单(https://help.sumologic.com/05Search/Search-Cheat-Sheets/General-Search-Examples-Cheat-Sheet),我尝试为此使用一种* | parse regex模式,但是不起作用:
我收到“在正则表达式中找不到捕获组”错误。不过,我实际上对捕获数字并不感兴趣,只是在我的搜索中匹配正则表达式。我怎样才能做到这一点?