Artifactory & ElasticSearch:分析你的支持包日志

作为管理员,您每天面临的挑战之一是根据您自己预定义的参数和过滤器对正在发生的事件进行故障排除。根据进出服务器的活动,JFrog人工日志包含不同的条目和事件。在某些情况下,跟踪这些日志以搜索特定条目可能有效,但随着环境的扩展,您可能需要考虑其他方法。一个有效的方法来分析你的JFrog支持包日志,的麋鹿堆栈(三个开源项目的缩写:Elasticsearch,Logstash,Kibana)。
这篇博文将重点关注Kibana,它可以在本地运行(使用Docker),并提供基本的文件管理功能,可以在创建预定义矩阵的同时拆分日志文件。在不同的可用工具,如Splunk, Fluentd,甚至我们的本地集成与Sumologic.
Kibana提供直观的图表和报告,您可以使用这些图表和报告交互式地浏览Support Bundle中的大量日志数据。此外,ElasticSearch的速度非常快——这在分析“重型”支持包时至关重要且高效。
ELK的另一个好处是,在根据公司策略创建您自己的定制脚本和过滤器时,可以使用它用图表和图形可视化数据。
让我们看看它的实际应用吧!
下面的例子使用“Docker -compose”来运行一个多容器的Docker应用程序,ELK指向一个特定的候选支持包,并根据我们预定义的过滤器来分析它。为了实现所需的分析,我们遵循了Docker安装说明(使用版本6.7.0)。
Logstash
我们使用Logstash,这是一个服务器端数据处理管道,用于摄取,转换并将内容发送到“存储”- Elasticsearch。在我们的例子中,美元APP_HOME / logstash_conf /管道目录包含我们想要处理的Support Bundle中每个日志的配置文件(.cfg)。APP_HOME美元表示安装的默认目录位置。例如,下面是.cfg文件access.log在Artifactory:
输入{管道{地址=> artifactory_access_log}}过滤器{神交{Match => {"message" =>"%{TIMESTAMP_ISO8601:datelog} \[%{DATA:status}\] %{DATA:what} for %{GREEDYDATA:[request][from]}\。"}Add_field => ["received_at", "%{@timestamp}"]}}输出{管道{send_to => elastic}}
>了解更多关于grok模式的信息(例如TIMESTAMP_ISO8601, GREEDYDATA等)
Filebeat & Kibana
Filebeat允许我们将原木运送/转寄到基巴纳。在我们的例子中,美元APP_HOME / filebeat /进行G目录包含我们想要解析的每个日志的.yml文件。
例如,这里是相关的部分filebeat.yml申请artifactory_access_log(连同其他已解析的日志):
filebeat.inputs:-类型:日志启用:真道路:/ * . log - /usr/share/filebeat/data/artifactory /访问字段:service_id:“jfaccess@1234”log_type: artifactory_access_log
开始分析
一旦一切配置正确,我们就可以运行应用程序并开始分析了。默认情况下,可以通过端口5601:https://localhost:5601/app/kibana访问Kibana
下面是一些基于常见查询的仪表板示例,这些查询对分析日志和排除问题很有用。
本例中的指示板显示每个http状态码的请求数量(request.log)以及提交请求的用户名。换句话说,这个视图显示用户以及他们执行的操作。该指示在一些情况下是有用的,例如在看到重复的403/401错误时识别针对Artifactory的潜在滥用或误用。

单击其中一个http状态码将显示与状态码对应的相关请求/活动(例如403)。

自定义过滤器,而不是每次发生可疑活动时手动“跟踪”日志,可以节省大量时间,而且效率更高,因为您已经有了预定义的搜索参数。
下面是Method PIE过滤器的一个示例,它显示了request.log中的方法以及相关的用户名。如果您在服务器上识别出导致高CPU/MEM的可疑活动,那么请求方法(主要是PUT/GET)可以帮助您了解问题的根源。

下面显示了我们为了表示request.log中的方法而定义的字段度量。

下面显示了为创建请求者表(Artifactory用户)而定义的指标。

在Method PIE上选择一个方法,将显示请求的数量以及与所讨论的方法相关的用户名。例如,当单击DELETE方法时,我们可以看到与用户对应的请求数量以及请求总数。

在对Artifactory进行故障排除时,建议使用可定制的过滤器
- 按node.id过滤:在分析HA环境中的节点时,通过名称进行区分。
- 慢的请求:查看最长请求的顺序,有助于理解超时或对DB的有问题/繁重查询。
- 只包括/排除ERROR/INFO/DEBUG日志:只过滤错误作为分析的一部分。
- log高级过滤:根据自己的标准自定义显示在主日志中的值。
- ' caused_by '错误组:搜索堆栈跟踪或更多信息错误,以暴露代码内容。
这篇博文涵盖了分析支持包所需了解的高级细节。这个积分也可以在支持包存储库和你的内部ELK。我们建议阅读Elastic相关文档,以便了解如何在ELK和您希望从Artifactory发送的所需内容之间进行集成。
