ELK介绍 在平时的工作当中,需要一个日志分析系统来分析各种各样的告警信息,而ELK可以简单满足这个需求。
ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。
官方网站:https://www.elastic.co/
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
代码语言:javascript复制下载地址:https://www.elastic.co/downloads/elasticsearch
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用。
代码语言:javascript复制下载地址:https://www.elastic.co/downloads/logstash
Kibana 也是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
代码语言:javascript复制下载地址:https://www.elastic.co/downloads/kibana
Logstash收集服务器产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。
1.环境搭建
Ubuntu 16.0.4 2H4G IP为192.168.11.128
ElasticSearch: 7.14.0
Logstash: 7.14.0
Kibana: 7.14.0
Java: openjdk version "1.8"
ElasticSearch,Logstash和Kibana的版本最好一样
说明:这里为了演示ELK都安装在一台服务器上,服务器内存越大越好。
2.安装JDK
更新一下包
代码语言:javascript复制sudo apt update && sudo apt upgrade
查看java信息,发现没有安装java。
代码语言:javascript复制java -version
安装java
代码语言:javascript复制sudo apt install openjdk-8-jre-headless
可以看到java已安装
3.安装ElasticSearch
ElasticSearch不允许以root用户运行,因为我们当前用户是bolean,所以问题不大。
进入ElasticSearch页面查看安装包信息,选择适合ubuntu的安装包。
代码语言:javascript复制https://www.elastic.co/downloads/elasticsearch
下载elasticsearch并解压到当前目录
代码语言:javascript复制wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz
tar zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz
需要修改elasticsearch的配置文件
Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。
代码语言:javascript复制vim jvm.options
修改默认配置:-Xms1g -Xmx1g为512m,去掉前面的注释。
编辑elasticsearch.yml
代码语言:javascript复制vim elasticsearch.yml
修改以下数据,取消前面的注释。
代码语言:javascript复制node.name: node-1 #配置当前es节点名称(默认是被注释的,并且默认有一个节点名
network.host: 0.0.0.0 #绑定的ip,默认只允许本机访问,修改为0.0.0.0后则可以远程访问
http.port: 9200
cluster.initial_master_nodes: ["node-1"] #这个节点名称就是node.name设置的参数值
在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后,执行命令sysctl -p。
代码语言:javascript复制sudo vim /etc/sysctl.conf
修改/etc/security/limits.conf文件,增加配置信息。
代码语言:javascript复制* soft nofile 65536
* hard nofile 65536
在elasticsearch目录下启动elasticsearch,因为在一台服务器上启动多个软件,所以可以用screen新建一个会话窗口。
代码语言:javascript复制sudo apt install screen
screen -S elasticsearch
./bin/elasticsearch
访问http://192.168.11.128:9200/
4.安装kibana
查看安装包信息,选择适合ubuntu的安装包。
https://www.elastic.co/downloads/kibana
下载kibana并解压
代码语言:javascript复制wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-linux-x86_64.tar.gz
tar zxvf kibana-7.14.0-linux-x86_64.tar.gz
修改kibana的配置文件kibana.yml
主要修改这两项,取消前面的注释。
代码语言:javascript复制server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.11.128:9200"] #设置为你服务器的ip地址
新建一个screen会话,在kibana目录下运行kibana。
代码语言:javascript复制screen -S kibana
./bin/kibana
需要先运行elasticsearch才能运行成功
访问http://192.168.11.128:5601/app/home
可以看到有两个会话了,接下来还要安装一个软件。
5.安装logstash
查看logstash页面,选择适合logstash的安装包。https://www.elastic.co/downloads/logstash
下载kibana并解压
代码语言:javascript复制wget https://artifacts.elastic.co/downloads/logstash/logstash-7.14.0-linux-x86_64.tar.gz
tar zxvf logstash-7.14.0-linux-x86_64.tar.gz
Logstash管道有两个最基本元素,输入和输出,和一个可选的元素,拦截器。输入插件从一个输入源中消费数据,拦截器插件按照你指定的方式修改数据,然后输出插件将数据写入到一个目的地。
在bin目录新建一个配置文件logstash.conf。配置文件以suricata日志为例,请自行安装suricata,文件内容如下。
代码语言:javascript复制input {
file {
path => ["/var/log/suricata/eve.json"] #这里读取suricata的日志
codec => "json"
type => "SuricataAlert"
}
}
output {
elasticsearch {
action => "index"
hosts => ["http://192.168.11.128:9200"] #是指服务器的ip
index => "suricata-%{ YYYY.MM.dd}" #建立索引,记住suricata这个名称
}
}
新建一个screen会话,启动logstash
代码语言:javascript复制screen -S logstash
./logstash -f logstash.conf
成功如下所示
可以看到已经创建了三个会话
如果运行失败可以加个-t参数查看失败原因,这样不会运行,可以帮助排查错误。
代码语言:javascript复制./logstash -t -f logstash.conf
在2H2G的云服务器上运行logstash会显示失败,虚拟机运行没问题,初步认为这台云服务配置虚高。
如果带不动修改 jvm.options 文件。修改内容如下。
代码语言:javascript复制vim jvm.options
-Xms200m
-Xmx200m
下图为logstash启动失败页面
6.导入suricata日志
点击manage
选择index patterns,然后选择create。
匹配索引,suricata就是logstash配置文件中的索引,选择下一步。
选择筛选条件,然后点击创建。
接下来点击discover
可以看到suricata日志,但是还不太直观。
下载下面三个json文件并导入。
代码语言:javascript复制https://aka.ms/networkwatchersuricatadashboard
https://aka.ms/networkwatchersuricatavisualization
https://aka.ms/networkwatchersuricatasavedsearch
注意导入第二个和第三个的时候需要选择之前创建的索引。
三个文件导入完成后就可以方便的查看日志了
注意查看日志需要设置好时间,不然查看不到。上述只是介绍一下简单的配置方式,方便为了演示,如需配置更复杂的功能,请参考官方说明。
参考链接
代码语言:javascript复制https://www.cnblogs.com/weibanggang/p/11589464.html