ELK7.14.0日志分析系统搭建

2021-10-14 11:26:32 浏览数 (1)

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

0 人点赞