使用ELK堆栈进行StorageGRID 日志分析
作者:郑安杰
通过StorageGRID系统日志转发功能、您可以配置外部系统日志服务器来收集和分析StorageGRID日志消息。ELK (Elasticsearch、Logstash、Kibana)已成为最受欢迎的日志分析解决方案之一。观看以查看示例的 "使用ELK视频进行StorageGRID 日志分析" 模拟配置、以及如何使用它来识别失败的S3请求并对其进行故障排除。StorageGRID均衡器支持将负载平衡器端点访问日志导出到外部系统日志服务器。观看此视频 "YouTube视频"、了解有关此新功能的更多信息。本文提供了Logstash配置、Kibana查询、图表和信息板的示例文件、可帮助您快速开始StorageGRID 日志管理和分析。
要求
-
StorageGRID 11.6.0.2或更高版本
-
ELK (Elasticsearch、Logstash和Kibana)已安装并运行7.1x或更高版本
示例文件
-
"下载Logstash 7.x示例文件包" +* MD5 checksum* 148c23d0021d9a4bb4a6c0287464deab +* SHA256 checksum* f5ec9e2e3f842d5a7861566b167a561b4373038b4e7bb3b3d522adf2d6
-
"下载Logstash 8.x示例文件包" +* MD5 checksum* e11ba3a662f87c3ef363d0fe06835 +* SHA256 checksum* 5c670755742cfdf5aa723a596b087e0153a65bcaef3934afdb682f61cd278d
-
"下载适用于StorageGRID 11.9的Logstash 8.x示例文件包"+* md5校验和* 41272857c4a54600f95995f6ed74800d +* SHA256校验和* 77048ee86610527 19990851e1ad960d4902fe537a6e135e8600177188da677c9
假设
读者熟悉StorageGRID 和ELK的术语和操作。
说明
由于Grok模式定义的名称不同、因此提供了两个示例版本。+例如、Logstash配置文件中的SYSLOGBASE格式根据安装的Logstash版本定义不同的字段名称。
match => {"message" => '<%{POSINT:syslog_pri}>%{SYSLOGBASE} %{GREEDYDATA:msg-details}'}
-
Logstash 7.17示例*
-
Logstash 8.23示例*
-
步骤 *
-
根据您安装的ELK版本解压缩提供的示例。此示例文件夹包含两个Logstash配置示例:* sglog-2-file.conf:此配置文件会将StorageGRID 日志消息输出到Logstash上的文件中、而不会进行数据转换。您可以使用此命令来确认Logstash正在接收StorageGRID 消息、或者帮助了解StorageGRID 日志模式。+ sglog-2-es.conf:*此配置文件使用各种模式和筛选器转换StorageGRID 日志消息。其中包括示例drop语句、这些语句根据模式或筛选器丢弃消息。输出将发送到Elasticsearch以编制索引。+根据文件中的说明自定义选定的配置文件。
-
测试自定义的配置文件:
/usr/share/logstash/bin/logstash --config.test_and_exit -f <config-file-path/file>
如果返回的最后一行与以下行类似、则此配置文件没有语法错误:
[LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
-
将自定义的conf文件复制到Logstash服务器的配置:/etc/logstash/conf.d+如果尚未在/etc/logstash/logstash.yml中启用config.reload.automatic、请重新启动Logstash服务。否则、请等待配置重新加载间隔过。
grep reload /etc/logstash/logstash.yml # Periodically check if the configuration has changed and reload the pipeline config.reload.automatic: true config.reload.interval: 5s
-
检查/var/log/logstash/logstash-plain.log并确认在使用新配置文件启动Logstash时没有错误。
-
确认TCP端口已启动并正在侦听。+在此示例中、使用TCP端口5000。
netstat -ntpa | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 25744/java
-
在StorageGRID 管理器图形用户界面中、配置外部系统日志服务器以向Logstash发送日志消息。有关详细信息、请参见 "演示视频" 。
-
您需要在Logstash服务器上配置或禁用防火墙、以允许StorageGRID 节点连接到定义的TCP端口。
-
在Kibana GUI中、选择Management → Dev Tools。在控制台页面上、运行此get命令以确认已在Elasticsearch上创建新索引。
GET /_cat/indices/*?v=true&s=index
-
在Kibana GUI中、创建索引模式(ELK 7.x)或数据视图(ELK 8.x)。
-
在Kibana GUI的顶部中间的搜索框中输入"saved objects"。+在已保存对象页面上、选择导入。在导入选项下、选择"请求冲突操作"
导入ELK <version>-query-chart -sample.ndjson。+当系统提示您解决冲突时、请选择您在第8步中创建的索引模式或数据视图。
导入了以下基巴纳对象:* Query** audy-msg-s3rq-orln * bycast log S3相关消息* loglevel WARNING或 以上+失败的安全事件+ NGINS-GW端点访问日志(仅在elk8-sSample—for-sg119.zip中提供)* Chart** S3请求计数(基于bycast.log * HTTP状态)按审核类型分类)+ S3*信息板+审核请求的平均响应时间)。
-
现在、您可以使用Kibana执行StorageGRID 日志分析了。