ELK
1、 组成:Elasticsearch、Logstash、Kibana,这三者是核心套件的,但并非全部,架构不同,组件也有差别。ELK就是这三个组件的简称。
2、 功能:
a) Elasticsearch
简称为ES,是实时全文搜索和分析引擎,能够提供搜集、分析、存储数据三大功能,构建于Apache Lucene搜索引擎库智商,
b) Logstash
用来搜索、分析、过滤日志。支持几乎所有类型的日志,包括系统日志、错误日志和自定义应用程序日志。可以从许多源接收日志,这些源包括syslog、消息队列(eg:RabbitMQ)、JMX,并能够以多种方式输出数据,比如电子邮件、websockets、elasticsearch。若和Suricata进行结合,那么Logstash的输入即为Suricata的eve.json日志。
c) Kibana
基于Web的图形化界面,用于搜索、分析、可视化存储在Elasticsearch指标中的日志数据,利用Elasticsearch的REST接口进行检索数据。允许用户创建自定义的仪表板视图,同时用户还可以以特殊方式进行查询和过滤数据。有discover、visualize、dashboard、timelion、console、setting等功能。
3、 基本架构
根据suricata+elk文档说明,可推测其基本架构如下图所示:
Logstash搜集Suricata的eve.log日志信息、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储;Elasticsearch将数据以分配的形式压缩存储并提供多种API供用户查询、操作;Kibana提供可视化界面,用于显示Elasticsearch中存储的日志数据;用户或者管理员可以根据kibana面板显示的内容进行相应处理。
4、 组件的结合
Suricata与Logstash:配置Logstash时,创建logstash.conf文件,用于配置Logstash的日志源(input)、过滤规则(filter)、输出(output)。其中,要将input中的path设置为Suricata的eve.log路径,以便于获取Suricata收集到的日志信息。
Logstash与Elasticsearch:在logstash.conf中,在output选项中设置输出到Elasticsearch,这样就可以将Suricata、Logstash、Elasticearch组合成为一个整体。
配置内容:
# vim /etc/logstash/conf.d/logstash.conf
|
Elasticsearch与Kibana:若要将二者结合起来,需要告诉想要探索的Elasticsearch索引是哪些,需要配置一个或者更多的索引模式。
5、 优势所在
l 处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
l 配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
l 检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
l 集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
l 前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功问题。
6、 安装过程遇到了一些问题,目前的问题是Kibana显示elasticsearch版本过低,Kibana面板截图如下,查阅了相关资料,仍在解决中。另外,关于ELK中涉及到的关联和logstash过滤日志信息没有详细了解,接下来的时间会继续完成。
SELKS
一、 介绍
Stamus Networks提供了两个开源项目,SELKS和Scirius。前者是一个实时可安装的ISO,内置Suricata IDS / IPS,Scirius是专门用于Suricata规则集管理的Web界面。SELKS由S(Suricata IDPS)、E(Elasticsearch)、L(Logstash)、K(Kibana)、S(Scirius)组成。大多数公司创始人都是Suricata IDPS引擎的核心团队的成员,能够在性能和多功能性方面提供最好的技术。
SELKS:实时可安装,镜像iso,可以使用Suricata。Scirius用于Suricata规则管理的web界面。Scirius是专门用于Suricata规则集管理的Web界面。 它管理规则文件/类别。 规则集的源可以是本地(上传的文件)或远程文件(可通过HTTP或HTTPS访问归档,如EmergingThreats Open / PRO规则集)。Scirius是用Django编写的应用程序,Scirius根据GPLv3许可证发布。
二、 SELKS安装部署
任务栏:开始、文件、浏览器、切换桌面1 2 、剪切板管理器、cpu监视器(不可设置)、网络连接、时钟
快速启动栏
其中有很多已安装的程序,出了suricata、scirius、logstash、elasticsearch之外,还有比如vim、wireshark、python、jdk、gcc等应用程序,可以根据需要自定义启动器,我添加了终端,以便于执行命令行操作。
启动终端。
lx终端快捷键,debian系统。
设置lx终端字体,默认字体无法正常显示内容。好像没办法进行语法高亮。无法区分文件等。
三、 功能部件详解
S-Suricata
1、 安装目录
2、 配置目录
vim suricata.yaml,修改suricata.yaml内容,以满足监控需求。
3、 日志目录
发现,suricata一直处于运行状态。由于配置文件suricata.yaml中默认设置fast.log的enabled:no,因此日志中没有fast.log,就无法记录告警信息,需要手动打开。
4、 启动
按照suricata启动方式运行,看运行结果
日志信息
E-Elasticsearch
1、 配置目录
2、 配置文件
Elasticsearch默认端口为9200
Ip地址设置的是127.0.0.1,和logstash配置实例中的输出ip保持一致。
3、 启动Elasticsearch
1) service elasticsearch start
2) /ect/init.d/elasticsearch start
可见suricata、elasticsearch 、logstash、kibana都可以通过这条命令启动。
执行:curl ‘http://localhost:9200’,如能看到如下信息,证明成功开启Elasticsearch。
L-Logstash
1、 默认配置目录
2、 配置内容
Logstash用到的配置信息在/etc/logstash/conf.d中
logstash.conf部分截图
input部分:
filter部分:
output部分:
其中的hosts值“127.0.0.1“和Elasticsearch中设置一样。
suricata-logstash.conf截图
个人感觉,其内容已经包含到logstash.conf中了。
3、 启动Logstash
1) service logstash start
2) /etc/init.d/logstash start
Kibana
1、 启动
service kibana start或/etc/init.d/kibana
在iceweasel浏览器中输入localhost:5601,可得如下监控示意图。
这些source最终均来自suricata。
2、 功能
1)Discover
Discover 标签页用于交互式探索数据,用户可访问到匹配得上所选择的索引模式的每个索引的每条记录,可以提交搜索请求,过滤搜索结果,然后查看文档数据。还可以看到匹配搜索请求的文档总数,获取字段值的统计情况。如果索引模式配置了时间字段,文档的时序分布情况会在页面顶部以柱状图的形式展示出来。较早版本的示意图如下,最新版本类似,可作为参考。
设置时间过滤器
时间过滤器(Time Filter)限制搜索结果在一共特定的时间周期内,默认的时间过滤器设置约为最近15分钟,可以在页面顶部的时间选择器(Time Picker)来修改时间过滤器,可以选择一个特定的时间间隔,或者直方图的时间范围。
点击菜单栏右上角显示的 Time Filter 打开时间选择器。
a) Quick是快速过滤,直接选择一个短链接即可。
b) 要指定相对时间过滤,点击 Relative 然后输入一个相对的开始时间。可以是任意数字的秒、分、小时、天、月甚至年之前。
c) 要指定绝对时间过滤,点击 Absolute 然后在 From 框内输入开始日期,To 框内输入结束日期。
点击时间选择器底部的箭头隐藏选择器。
要从柱状图上设置事件过滤器,由以下三种方式:
a) 点击对应柱体,可放大相应的时间间隔
b) 单击并拖拽一个时间区域,等到光标变成加号,就表示这是一个有效的起始点。
若操作失误,可通过浏览器后退键来回退操作。
搜索数据
|
|
|
|
在Discover页提交一个搜索,即可搜索匹配当前索引模式的索引数据了。可以输入简单的请求字符串,即Lucene query syntax,也可以用完整的基于 JSON 的 Elasticsearch Query DSL。
当提交搜索的时候,直方图,文档表格,字段列表,都会自动反映成搜索的结果。hits(匹配的文档)总数会在直方图的右上角显示。文档表格显示前 500 个匹配文档。默认的,文档倒序排列,最新的文档最先显示。可以通过点击时间列的头部来反转排序。Eg:在搜索框中输入safari,就会在日志中搜索包含safari字段的内容,如果匹配了,hits值加1,表示匹配文档数量。
开始一个新的搜索
要清除当前搜索或者开始一个新搜索,点击Discover工具栏的New Search按钮。
保存搜索
可在Discover页加载已保存的搜索,也可用作visualization的基础。点击Discover工具栏的SaveSearch图标。
加载一个已存搜索
点击Discover页工具栏的Load Saved Search选择要加载的搜索。如果已保存的搜索模式与当前选择的索引模式不一样,加载这个搜索也会切换当前的已选索引模式。
自动刷新页面
可配置刷新间隔来自动刷新Discover页面的最新索引数据,这样会定期重新提交一次搜索请求。点击time pricker旁边的auto refresh,设置间隔,即可自动刷新。
查看文档数据
当提交一个搜索请求,最近的500 个搜索结果会显示在文档表格里。在 Advanced Settings 里通过 discover:sampleSize 属性配置表格里具体的文档数量。默认的,表格会显示当前选择的索引模式中定义的时间字段内容(转换成本地时区)以及 _source 文档。点击相应标签,即可查看详细信息,包括键值对的table和原始的json文档。
文档列表排序
用户可以用任意已建索引的字段排序文档表格中的数据。如果当前索引模式配置了时间字段,默认会使用该字段倒序排列文档。
要改变排序方式:点击想要用来排序的字段名。能用来排序的字段在字段名右侧都有一个排序按钮。再次点击字段名,就会反向调整排序方式。
给文档表格添加字段列
默认的,文档表格会显示当前选择的索引模式中定义的时间字段内容(转换成本地时区)以及 _source 文档。
1) 从字段列添加一列,点击字段列表的字段上的add按钮。
2) 从文档的字段数据添加一列,点击展开对应文档的toggle column in table按钮。
添加的字段会替换掉文档表格里的 _source列,同时还会显示在字段列表顶部的 Selected Fields 区域里。
要从文档表格删除字段列:
移动鼠标到字段列表的Selected Fields 区域里你想要移除的字段上,然后点击它的 remove 按钮 。
查看字段数据统计
在字段列表中,可以看到文档表格中有多少数据包含了这个字段,排名前5是是什么,以及包含各值的文档的占比。
过滤器(filter)的协同工作方式
在Kibana任意页面创建过滤器后,会在搜索输入框的下方出现椭圆形的过滤条件,鼠标移到过滤条件上,会出现几个图标,分别表示:
a) 过滤器开关:可以在不移除过滤器的情况下关闭过滤条件,再次点击则重新打开。
b) 过滤器图钉:点击图标即可钉住过滤器,被钉住的过滤器可以横贯Kibana各个标签生效,切换页面过滤器仍然存在。
c) 过滤器反转:默认情况下是绿色,表示只有匹配过滤条件的结果才会显示,点击会反转过滤器,变成红色,显示不匹配过滤条件的检索项。
d) 移除过滤器:删除过滤器。
e) 自定义过滤器:点击即可打开一个文本编辑框,框内可修改json形式的过滤器内容,并起一个alias别名。
2)Visualize
Visualize标签页用来设计可视化,可视化可以保存以备后用,或者加载合并到dashboard中,一个可视化可以基于如下集中数据源类型:一个新的交互式搜索、一个已保存的搜索、一个已保存的可视化。
创建一个新的可视化
l 选择可视化类型
a) Area chart:用区块图来可视化多个不同序列的总体贡献。
b) Data table:用数据表来显示聚合的原始数据。其他可视化可以通过点击底部的方式显示数据表。
c) Line chart:用折线图来比较不同序列。
d) Markdown widget:用 Markdown 显示自定义格式的信息或和你仪表盘有关的用法说明。
e) Metric:用指标可视化在你仪表盘上显示单个数字。
f) Pie chart:用饼图来显示每个来源对总体的贡献。
g) Tile map:用瓦片地图将聚合结果和经纬度联系起来。
h) Timeseries:计算和展示多个时间序列数据。
i) Vertical bar chart:用垂直条形图作为一个通用图形。
l 选择数据源
可以选择新建或者读取一个已经保存的搜索作为可视化的数据源。
l 可视化编辑器
主要由工具栏、聚合构建器、预览画布组成。
工具栏:提供用户交互式数据搜索的搜索框,用来创建、保存和加载可视化。
聚合构建器:配置可视化用的metric和bucket聚合,包括X轴、Y轴、颜色等配置内容。
预览画布:显示定义在聚合构建器里的可视化预览效果。
这是创建的一个area chart类型的可视化,命名为NewVisualization1。
这是创建的一个line chart类型的可视化,命名为NewVisualization2。
这是创建的一个pie chart类型的可视化,命名为NewVisualization3。
3)Dashboard
Dashboard能够自由排列一组已保存的可视化,便于多种角度分析文档数据。要想使用仪表盘,必须有已经保存的visualization。
点击创建新的dashboard,添加已保存的visualization,如下所示
即完成了一个dashboard的创建,各可视化界面可以调整大小,且实时显示,保存为New Dashboard1。
另外可以根据需求,进行相应配置等操作,比如配置time picker、加载已保存仪表盘、分享等。
4)Settings
包括indices、advanced、objects、status、about
Indices:要使用Kibana,需要告诉Kibana想要检索的Elasticsearch索引是什么,这就需要配置一个或多个索引模式。在Indices界面中就可以创建新的索引模式,默认的是带星号的,即logstash-*。
Advanced:高级设置页面允许用户编辑控制Kibana行为的设置,比如sampleSize 属性、default index、time picker等。但是修改高级参数有可能带来意想不到的后果,会损坏Kibana的部分功能,所以最好不要修改。(eg:当提交一个搜索请求,最近的 500 个搜索结果会显示在文档表格里。在Advanced Settings 里通过 discover: sampleSize 属性配置表格里具体的文档数量。)
Objects:管理已保存的搜索、可视化和dashboard对象,比如删除、修改,但是典型的objects修改是通过其相关应用程序进行的,所以最好通过专门的应用进行修改。
Status:显示当前Kibana运行状态,green为正常,red为异常。
About:有关于Kibana版本等信息。
5)Timelion
Timelion是kibana5默认分发的一个插件,没有安装,没有进行详细了解。
可参考官博:https://www.elastic.co/blog/timelion-timeline