ELK 日志分析平台搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010568038/article/details/73009038

ELK:Elasticsearch、Logstash和Kibana三部分组成

Elasticsearch(简称ES)是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现。

Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。

需要相关安装包,可以直接去官网下载,地址:
下载页:https://www.elastic.co/cn/downloads
也可以通过以下链接下载

安装包

Elasticsearch5.4.0
kibana-5.4.0
jdk-8u131-linux-x64.tar.gz
这里写图片描述
logstash-2.4.1.tar(支持java8以下的版本),logstash-5.4.0.tar(Java 8 or higher is required for Logstash 5.x.),因只能上传60M内容,此处文件无法上传。

前提条件

因为 Kibana 需要 java 环境支持,所以需要配置 JDK
方法如下
(1)解压 JDK 到自己定义的目录

[zhou@myjavaweb myjre]$ pwd
/test1/myjre
[zhou@myjavaweb myjre]$ ll
total 181196
drwxr-xr-x 8   10  143      4096 Mar 15 16:35 jdk1.8.0_131
-rw-r--r-- 1 root root 185540433 May 26 17:17 jdk-8u131-linux-x64.tar.gz

(2)添加环境变量

[zhou@myjavaweb myjre]$ vi /etc/profile
.... 在配置文件下添加以下语句 ....
export JAVA_HOME=/test1/myjre/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
.... 保存退出 ...
[zhou@myjavaweb myjre]$ source /etc/profile

注:/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
编辑该配置文件,需要使用 source 命令,立即生效。
(3)测试 JDK

[zhou@myjavaweb ~]$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

解压即可使用,无需配置

(1)logstash-2.4.1 解压后,进入文件夹,执行命令测试

[zhou@myjavaweb ELK_tar]$ tar xvzf logstash-2.4.1.tar.gz
[zhou@myjavaweb ELK]$ cd logstash-2.4.1/
[zhou@myjavaweb logstash-2.4.1]$ ./bin/logstash -e "input{stdin{}}output{stdout{codec=>rubydebug}}"
.... 显示如下内容 ....
Settings: Default pipeline workers: 1
Pipeline main started
.... 可以键入 hello world ! 信息,待会会显示出来 ....
hello world !
{
       "message" => "hello world !",
      "@version" => "1",
    "@timestamp" => "2017-06-10T13:51:15.847Z",
          "host" => "myjavaweb"
}

(2)elasticsearch 解压后启动

[zhou@myjavaweb elasticsearch-5.4.0]$ ./bin/elasticsearch
[2017-06-10T22:13:45,652][INFO ][o.e.t.TransportService   ] [node-1] publish_address {192.168.231.134:9300}, bound_addresses {192.168.231.134:9300}
[2017-06-10T22:13:45,669][INFO ][o.e.b.BootstrapChecks    ] [node-1] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
[2017-06-10T22:13:48,810][INFO ][o.e.c.s.ClusterService   ] [node-1] new_master {node-1}{mw45jOGiQ5Cc6zp2Bf1JZQ}{xMEHc7UKTqGIlFZ44NhObw}{192.168.231.134}{192.168.231.134:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
[2017-06-10T22:13:48,935][INFO ][o.e.h.n.Netty4HttpServerTransport] [node-1] publish_address {192.168.231.134:9200}, bound_addresses {192.168.231.134:9200}

启动成功,才能看到以下端口信息,这里启动可能会遇到问题


[root@myjavaweb ~]# netstat -ntpl | grep java
tcp6       0      0 192.168.231.134:9200    :::*                    LISTEN      3634/java           
tcp6       0      0 192.168.231.134:9300    :::*                    LISTEN      3634/java           

浏览器访问部署 ES 的服务器地址(我的主机地址:192.168.231.134,需要端口号)
这里写图片描述

(3)启动 kibana ,并检查端口是否监听(5601,即待会通过浏览器访问的地址和端口号)

[zhou@myjavaweb kibana-5.4.0-linux-x86_64]$ ./bin/kibana
[root@myjavaweb ~]# netstat -ntpl

....  .....
tcp        0      0 192.168.231.134:5601    0.0.0.0:*               LISTEN      3322/./bin/../node/ 

测试环境

两台虚拟机中,均部署 logstash,另一台部署好 elasticsearch 以及 kibana,通过启动 logstash (指定配置文件),搜集日志,并传输到 elasticsearch ,最终展示在 kibana 上,注意先后顺序 logstash-> elasticsearch->kibana

示例
这里读取 Tomcat 的日志,指定 elasticsearch 的主机地址,都在一台主机上。

[zhou@myjavaweb conf]$ cat getTomcatlogs.conf 
input {
        file{
                path => ["/test1/local_Tomcat/tomcat8/logs/catalina.2017-06-10.log"]
                type => "proxy"
                start_position => "beginning"

        }

}
output{
#        stdout{
#                codec => rubydebug{}
#        }

    elasticsearch {
        hosts => ["192.168.231.134:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
    }

}

.... 加载配置文件启动 logstash ....
[zhou@myjavaweb conf]./bin/logstash -f ../conf/getTomcatlogs.conf 

这里写图片描述

常见问题

(1)以下报错,提示,不能以 root 用户运行 elasticsearch
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
(2)更换用户后启动依然报错,需要赋予权限

.... 错误信息 ....
/tmp/elasticsearch/logs/my-application.log) java.io.FileNotFoundException: /tmp/elasticsearch/logs/my-application.log (Permission denied) java.io.FileNotFoundException: /tmp/elasticsearch/logs/my-application.log (Permission denied)
.... 解决办法,给 zhou 创建这个路径文件权限 ....
 chown zhou.zhou -R /tmp/elasticsearch/logs/my-application.log

(3)启动异常:ERROR: bootstrap checks failed

.... 错误内容 ....
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

问题原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

(4)错误 ERROR: bootstrap checks failed

.... 错误内容 ....
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

解决方法:切换到root用户,编辑limits.conf 添加类似如下内容

vi /etc/security/limits.conf

添加如下内容:

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

(3)其他错误可以参见这个人的博客,很详细。
http://blog.csdn.net/u012246178/article/details/63253531

阅读更多
换一批

没有更多推荐了,返回首页