搭建ELK日志分析平台

一、什么是ELK

ELK是一套开源的日志管理方案,包括Elasticsearch、Logstash和Kibana三个组件。

1、E(Elasticsearch),Elasticsearch是一个分布式的搜索和数据分析引擎,用于存储平台收集的数据,提供检索和分析功能;提供了CRUD REST 的API。

2、L(Logstash),Logstash是开源的服务器端数据处理软件,能够从多个来源采集数据,转换数据,然后将数据发送到存储库中;

3、K(Kibana),Kibana能够可视化Elasticsearch中的数据,通过Kibana使得管理员能够自由地选择如何呈现数据。

在使用ELK时,三个组件最好选用相同的版本,不同版本之间可能会存在不兼容的问题,版本不同还不利于将来系统升级。除了ELK这三个组件,我们可能还需要X-Pack以便提供用户验证、访问控制等功能,X-Pack集中了Elasticsearch、Kibana和Logstash的安全功能。

二、为什么需要ELK

在日常工作时,经常会需要翻阅日志文件以便获得自己需要的信息,目前企业内部的设备、系统每天都会产生海量的数据,依靠人工搜索找寻所需信息的方式已经变得不可取,ELK便是为了解决这一问题的开源软件;ELK会对日志进行收集汇总,提供查询接口,方便相关人员快速查找自己感兴趣的日志信息。

三、环境准备

1、安装JDK

1)、Elasticsearch和Logstash的运行都需要依赖Java环境,所以需要提前安装Java,测试发现使用JDK-11在运行Elasticsearch时会报模块缺失的错误,因此本次选用的JDK-8。

2)、查看机器是否安装了openjdk,若已安装则需要先卸载,命令如下:

查看:rpm -qa | grep java

删除:使用yum -y remove命令删除已经安装的openjdk

3)、下载JDK安装包:

JDK官方下载地址:

https://www.oracle.com/technetwork/java/javase/downloads/index.html

下载方式:

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz

之所以使用这方法是因为官方下载资源需要同意其安全要求

4)、安装JDK

创建Java文件夹

cd /usr/local/

mkdir java

移动并解压安装包

mv jdk-8u191-linux-x64.tar.gz /usr/local/java/
tar -zxvf jdk-8u191-linux-x64.tar.gz

配置环境变量

vim /etc/profile

在文件末尾加入如下配置

JAVA_HOME=/usr/local/java/jdk1.8.0_191
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

使能环境变量

source /etc/profile

5)、验证配置:

执行java -version若是输出如下,则表示配置完成

java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

2、新建ELK执行用户

groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch

四、安装Elasticsearch

1、下载

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz

2、解压

tar -xzvf elasticsearch-6.2.4.tar.gz

3、修改配置文件

修改elasticsearch.yml配置文件

vim /usr/local/elk/6.2.4/elasticsearch-6.2.4/config/elasticsearch.yml

elasticsearch.yml文件中的network.host: 0.0.0.0可以修改监听IP;cluster.name: elk可以修改集群名称;node.name: node-1可以修改节点名称

4、分配权限及启动

chown -R elsearch:elsearch  elasticsearch-6.2.4

进入到elasticsearch目录下,然后使用./bin/elasticsearch -d启动系统,并在后台保持运行(需要提前切换到elsearch用户)

启动后的输出中有如下内容,表示服务已经启动并监听相应接口:

[2018-12-04T13:16:45,116][INFO ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [O3gvwcD] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}

5、查看

使用netstat -ant和ps -aux | grep elasticsearch,可以对Elasticsearch运行情况进行查看

6、其他

使用java编写;bin里面是可执行文件;config里面是配置文件;lib下是依赖包;logs包含系统日志;modules包含核心的功能模块;plugins存放第三方的插件

五、安装Logstash

1、下载

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz

2、解压

tar -xvzf logstash-6.2.4.tar.gz

3、配置

进入到/usr/local/elk/6.2.4/logstash-6.2.4/bin,新建一个logstash.conf文件,并新增以下内容:

input{
    file{
      path => ["/var/log/*.log"]
    }
}

output{
   elasticsearch{
       hosts => ["172.16.86.10:9200"]
       index => "logstash__log"
  }
}

4、分配权限及启动

chown -R elsearch:elsearch  logstash-6.2.4

进入/usr/local/elk/6.2.4/logstash-6.2.4/bin,然后执行./logstash -f logstash.conf

六、安装Kibana

1、下载

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz

2、解压

tar -xzvf kibana-6.2.4-linux-x86_64.tar.gz

3、修改配置文件

修改kibana.yml文件

vim kibana-6.2.4-linux-x86_64/config/kibana.yml

kibana.yml中server.host更改为"0.0.0.0",以便外网访问;server.port可以修改监听端口,默认是5601;elasticsearch.url可以修改elasticsearch登录地址,默认是http://localhost:9200;logging.dest可以修改日志输出位置

4、分配权限及启用

chown -R elsearch:elsearch  kibana-6.2.4-linux-x86_64

进入到kibana的安装目录,然后在后台启动运行启动文件

cd /usr/local/elk/6.2.4/kibana-6.2.4-linux-x86_64
./bin/kibana -d

5、查看

使用netstat -ant查看端口是否处于监听状态,但是ps -aux | grep kibana是查不到kibana运行状态的,因为kibana是使用node.js编写的,软件运行是依赖于nodde.js

6、其他

Kibana是使用node.js编写的

七、安装X-Pack

1、下载

wget https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-6.2.4.zip

2、X-Pack提供了ELK三个部件的扩展功能,分别在三个地方进行安装,不用解压文件

3、在Elasticsearch中安装X-Pack

进入到elasticsearch的bin文件夹,然后执行安装命令

cd /usr/local/elk/6.2.4/elasticsearch-6.2.4/bin
./elasticsearch-plugin install file:///usr/local/elk/6.24/x-pack-6.2.4.zip

4、在Kibana中安装X-Pack

进入到kibana的bin文件夹,然后执行安装命令

cd /usr/local/elk/6.2.4/kibana-6.2.4-linux-x86_64/bin/
./kibana-plug install x-pack-6.2.4.zip

5、设置X-Pack在各个系统的初始登录密码

进入到elasticsearch中的x-pack文件夹,然后执行命令自动为ELK生成密码,并将密码输出到控制台

/usr/local/elk/6.2.4/elasticsearch-6.2.4/bin/x-pack/
./setup-passwords auto

6、配置Kibana

对kibana的配置文件kibana.yml进行修改

/usr/local/elk/6.2.4/kibana-6.2.4-linux-x86_64/config/kibana.yml

在文件中添加如下内容

elasticsearch.username: "kibana"
elasticsearch.password: "ReyJRHQdEfK1NE46vsgd"
xpack.security.enabled: true

7、配置Elasticsearch

对elasticsearch-6.2.4的配置文件elasticsearch.yml进行修改

cd /usr/local/elk/6.2.4/elasticsearch-6.2.4/config/elasticsearch.yml

在文件中添加如下内容

xpack.security.enabled: true

八、设置开机自动

1、Elasticsearch

1)、建立名为elsearch文件

2)、将一下内容添加到文件

#!/bin/sh
#chkconfig: 2345 80 05
#description: elasticsearch

export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export JAVA_BIN=/usr/local/java/jdk1.8.0_191/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

case "$1" in
start)
    sysctl -w vm.max_map_count=655360
    su elsearch<<!
    cd /usr/local/elk/6.2.4/elasticsearch-6.2.4
    ./bin/elasticsearch -d
!
    echo "elasticsearch startup"
    ;;

stop)
    es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
    kill -9 $es_pid
    echo "elasticsearch stopped"
    ;;
restart)
    es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
    kill -9 $es_pid
    echo "elasticsearch stopped"
    su elsearch<<!
    cd /usr/local/elk/6.2.4/elasticsearch-6.2.4
    ./bin/elasticsearch -d
!
    echo "elasticsearch startup"
    ;;
*)
    echo "start|stop|restart"
    ;;
esac
exit $?

3)、保存上述文件后,将文件移动到/etc/init.d/目录下,并对文件做如下设置

chmod +x elsearch

4)、设置开机自动启动

chkconfig --add elsearch

2、Logstash

1)、创建Logstash文件

2)、将以下内容添加到文件

#!/bin/sh
#chkconfig: 2345 80 05
#description: Logstash

case "$1" in
start)
    su elsearch<<!
    cd /usr/local/elk/6.2.4/logstash-6.2.4
    ./bin/logstash -f logstash.conf &
!
    echo "Logstash startup"
    ;;
esac

exit $?

3)、保存上述文件后,将文件移动到/etc/init.d/目录下,并对文件做如下设置

chmod +x logstash

4)、设置开机自动启动

chkconfig --add logstash

3、Kibana

1)、创建kibana文件

2)、将以下内容添加到文件

#!/bin/sh

#chkconfig: 2345 80 05

#description: Kibana


case "$1" in
start)
    su elsearch<<!
    cd /usr/local/elk/6.2.4/kibana-6.2.4-linux-x86_64
    ./bin/kibana &
!
    echo "Kibana startup"
    ;;
esac

exit $?

3)、保存上述文件后,将文件移动到/etc/init.d/目录下,并对文件做如下设置

chmod +x elsearch

4)、设置开机自动启动

chkconfig --add kibana

九、故障记录

1、运行Elasticsearch报如下错误

java.lang.RuntimeException: can not run elasticsearch as root

故障原因:

出于系统安全层面考虑,elasticsearch不能使用root用户运行

解决方案:

新建用户用于运行elasticsearch软件

groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch

更改elasticsearch文件夹及内部文件所属用户及用户组

chown -R elsearch:elsearch  elasticsearch-6.2.4

2、在更改elasticsearch.yml的监听地址后,运行Elasticsearch报错:

[2018-12-04T14:51:01,451][INFO ][o.e.b.BootstrapChecks    ] [O3gvwcD] bound or publishing to a non-loopback address, enforcing bootstrap checks ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

故障原因:

序号[1]的原因是Elasticsearch的文件描述符配置要求为32k或64k

序号[2]的原因是操作系统的vm.max_map_count参数设置太小,需要调整该参数

解决方案:

序号[1]的解决方案为修改安全配置文件vi /etc/security/limits.conf,在该文件末尾加入如下内容:

elsearch soft nofile 65536
elsearch hard nofile 65536
*       soft nproc 4096
*       hard nproc 4096

其中elsearch是用户名,*表示所有用户

序号[2]的解决方案为修改/etc/sysctl.conf的配置,在文件后直接添加vm.max_map_count=655360,或者在root用户下执行sysctl -w vm.max_map_count=655360,可以使用sysctl -a | grep "vm.max_map_count"查看更改结果

3、安装x-pack时提示如下错误:

Exception in thread "main" java.nio.file.NoSuchFileException: /usr/local/elk/elasticsearch-6.5.1/plugins/.installing-7782325561649031705/plugin-descriptor.properties

故障原因:

没有使用正确权限运行文件

解决方法:

切换到elasticsearch的执行账户下,再运行该命令。

4、在elesticreasearch中安装x-pack时报错以下文开头:

Exception in thread "main" java.net.UnknownHostException: usr

故障原因:

x-pack文件夹没有赋予elasticsearch运行账户可执行权限

解决方法:

在root用户下执行赋权命令

chown -R elsearch:elsearch  x-pack-6.2.4.zip

5、Kibana中安装X-Pack时,一直卡在Optimizing and caching browser bundles...,最后报错或者进程自动被kill,再次运行Kibana时会有报错

故障原因:

Kibana安装X-Pack需要更多的虚拟内存空间

解决方法:

为服务器添加虚拟内存空间,在将虚拟内存提升到4G 以上后问题解决

6、安装Elasticsearch会报如下错误

which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
could not find java; set JAVA_HOME or ensure java is in PATH

故障原因:

操作系统中没有安装Java

解决方法:

为操作系统安装Java,本次测试使用的是JDK-8,在测试使用JDK-11发现会报错误,具体安装方法见前文

十、参考文档

本文借鉴了以下文章的内容

http://www.54tianzhisheng.cn/2017/09/09/Elasticsearch-install/

https://blog.csdn.net/tzs_1041218129/article/details/78907350

https://my.oschina.net/liuyuantao/blog/1798724

https://blog.csdn.net/whg18526080015/article/details/73737546

https://www.elastic.co/guide/en/logstash/current/config-examples.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值