ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记

前言

作者近日在一台笔记本电脑上搭建了ELK,包括Elasticsearch, Logstash和Kibana,版本都是6.2.4。注意只用了一台电脑。并且用Winlogbeat收集本机的日志,供ELK分析。在搭建过程中走过许多坑,特在此分享经验,供同学者参考。

 1 环境

电脑:Lenovo K2450笔记本,4G内存,Windows 7 64位专业中文版

虚拟化环境:VirtualBox 5.2.12

在VirtualBox中创建一个虚拟机,2132M内存,安装操作系统CentOS 7.2 64位。

 2 准备Linux环境

2.1更新Linux系统软件包

$yum update

2.2变更主机名

$hostname elk-test

2.3增加一个用户

因为Elasticsearch不能在root账号下运行,所以需要创建一个账号,作者使用的是elk-test。

$useradd elk-test

把elk-test加入sudo列表。改用root账号,先获得修改权限。

$chmod u+w /etc/sudoers

再修改文件。

$vi /etc/sudoers

在root账号那一行下边增加一行。

elk-test  ALL=(ALL) ALL

以下当遇有需要管理员权限的操作就可以用sudo了。

2.4 虚拟机的网卡设置

这个虚拟机设置了两块虚拟网卡,第1块设置为“仅主机(Host-Only)网络”,第2块设置为“桥接网络”。作者的目的是使虚拟机得到一个独立的IP地址。关于VirtualBox虚拟机网络设置问题,网上的许多帖子介绍,有兴趣的读者可以自行寻找。

由于作者的虚拟机是最小化安装,所以没有ifconfig命令,十分不便,于是运行以下命令安装网络工具。

$yum install net-tools.x86_64

运行ifconfig命令后,知道从DHCP得到的IP地址是192.168.1.112。

2.5 安装JDK

作者曾经尝试安装JDK9但在配置时总是遇到问题,所以安装了JDK8。

作者的网络环境中有一台群晖NAS,上面开启了FTP服务。作者的理念是:一切软件安装包、配置文件也要像代码一样,进行版本管理。虽然FTP在版本管理方面不如GIT,考虑到FTP使用方便,而且搭建这个系统不需要与他人协作,所以就把安装包和各个版本的配置文件保存在FTP中,需要时下载下来。当然,用WinSCP一类工具软下载也很方便。

用以下命令从FTP上下载。

$cd /usr/program
$Curl –O ftp://username:[email protected]/Software/java/jdk-8u162-linux-x64.tar

解压缩。

$tar -vxf jdk-8u162-linux-x64.tar

JDK1.8安装在/usr/program/下,在/etc/profile.d/中写好java.sh文件。

进入/etc/profile.d/创建java.sh文件。

$vi java.sh
JAVA_HOME=/usr/program/jdk1.8.0_162
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export JAVA_HOME PATH CLASSPATH

然后执行。

$source java.sh

再看看是否安装与配置正确。

$java -version

如果正常应该看到以下显示。

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第1张图片

3 在Windows电脑(宿主机)上安装Winlogbeat

Winlogbeat是一个代理程序,它把Windows操作系统的日志传送给Logstash或者Elasticsearch。当然网内的其它Windows服务器上也可以安装这个Winlogbeat,经过配置后向Logstash传送日志。

安装包的下载地址为:https://artifacts.elastic.co/downloads/beats/winlogbeat/winlogbeat-6.2.4-windows-x86_64.zip

解压后,把文件夹放在C:\中。

修改winlogbeat.yml文件,设置日志收集参数,作者希望将这个电脑中的Windows日志发送给Logstash。所以修改了日志收集参数和转发服务器参数。

在Logstash output这一节中,将原例修改为:

hosts:[“192.168.1.112:5044”]

需要把Elasticsearch output 中的hosts一行注释。作者最初没有注释掉这一行,结果导致Winlogbeat工作不正常。

注意Window操作系统中的防火墙设置,要允许访问到Logstash的5044端口。

做好以上准备工作后,就可以安装Winlogbeat了。

以管理员身份运行Powershell,执行以下命令

PS C:\>.\install-service-winlogbeat.ps1

作者在运行后遇到错误,在网上查了一些资料,可以用以下命令解决。

PS C:\>set-executionpolicy remotesigned

回答:y

PS C:\>set-executionpolicy bypass

执行以上两条命令后,再运行,就可以安装上了。网上有贴子详细介绍了如何在Powershell下获得执行脚本的权限,有兴趣的读者可以自行在网上寻找。

最后就是运行Winlogbeat。

PS C:/>.\winlogbeat.exe -c winlogbeat.yml

没有报错,但也没有其它文章中写的有两行成功的提示。

 

4 安装并配置Elasticsearch

安装包的下载地址为:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz

作者同样是从FTP服务器上将安装文件下载到/usr/program中。

然后解压缩。

进入/usr/program/elasticsearch-6.2.4目录,运行以下命令。

$./bin/elasticsearch

如果看到类似以下内容,则说明运行正常。

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第2张图片

Elasticsearch支持多节点运行,作者是单节点运行Elasticsearch,所以显示状态的屏幕输出没有什么意义。

作者在第一次运行时遇到系统报错,经查是内存不足造成的(最初只分配了一个G)。于是关掉虚拟机,把内存调高到2G,重启后再运行就好了。

如果不想看到运行状态,可以用以下命令,以守护进程方式运行Elasticsearch。

 

$./bin/elasticsearch -d

这时如果想看看是否安装成功,软件可以正常运行,可以在浏览器中输入地址:http://192.168.1.112:9200。

如果看到类似以下显示则说明Elasticsearch安装成功。

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第3张图片

5 安装并配置Kibana

安装包的下载地址为:https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz

 

作者同样是从FTP服务器上将安装文件下载到/usr/program中。

然后解压缩。

$sudo tar -xvf cabana-6.2.4-linux-x86_64.tar.gz

配置Kibana。

$vi config/kibana.yml

设置elasticsearch.url到Elasticsearch实例。

server.host:”192.168.1.112”
elasticsearch.url:”http://192.168.1.112:9200”
server.port:5601
server.host:”0.0.0.0”

配置完成后运行Kibana,

$ sudo ./bin/kibana

在浏览器内输入http://192.168.1.112:5601可以看到Kibana的界面。

 

6 安装并配置Logstash

安装包的下载地址为:https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz

作者同样是从FTP服务器上将安装文件下载到/usr/program中。

然后解压缩。

在配置Logstash时,需要创建一个文件,这个文件以.conf为后缀,这个配置文件指定了要使用的插件以及每个插件的设置。可以引用配置中的事件字段并使用条件来处理符合特定条件的事件。  作者在logstash文件夹中创建了一个文件:logstash.conf,文件内容如下:

input{
  beats{
    port=>5044
  }
  stdin{}
}
output{
  elasticsearch{
    hosts=>"192.168.1.112:9200"
    index=>"winlogbeat_index"
  }
  stdout{
    codec=>rubydebug
  }
}

作者在这里没有使用条件筛选(filter)。input下的beats是一个插件。output下指出了两种输出方式:elasticsearch和stdout,后者直接输出在命令行中,如果不想监视运行状态可以不要这一节。

7 运行与调试

以上安装工作全部完成后,逐一运行各个软件,观察运行效果。

7.1 在VirtualBox中运行CentOS虚拟机,使用elk-test账号登录。

运行Elasticsearch。

$cd /usr/program/elasticsearch-6.2.4
$./bin/elasticsearch -d

7.2 在虚拟机中运行Kibana。

$cd /usr/program/kibana-6.2.4-linux-x86_64
$./bin/kibana

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第4张图片

7.3 运行Logstash。

运行一个PuTTY,通过PuTTY启动Logstash。

在PuTTY中登录192.168.1.112:22,账号是elk-test。运行Logstash。

$cd /usr/program/logstash-6.2.4
$./bin/logstash -f logstash.conf

7.4 在本机(Windows)中以管理员身份运行PowerShell。

PS C:\>cd /winlogbeat
PS C:..>.\winlogbeat.exe -c winlogbeat.yml

这时在Logstash运行界面(PuTTY)可以看到大量Windows的日志出现,说明beat在向logstash传递日志。

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第5张图片

7.5 打开浏览器,输入http://192.168.1.112:5601。打开Kibana。

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第6张图片

7.6 在Kibana中配置。

进入Management-Index Patterns,点击Create Index Patterns,在筛选格内填写win*或winlogbeat-index,完成创建工作。

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第7张图片

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第8张图片

7.7 在Kibana中查看日志。

在左边的导航栏中选择Discover。可以看到Windows日志,通过选择过滤器对内容进行筛选。

ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记_第9张图片

结语

更多的ELK功能,作者还在学习中。

你可能感兴趣的:(ELK,Elasticsearch+Winlogbeat+Logstash+Kibana(6.2.4)搭建实验笔记)