ELK日志管理系统详细安装和配置

ELK组成

ELKElasticSearchLogstashKiabana三个开源工具组成。官方网站:https://www.elastic.co/cn/products/

Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash       是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

Kibana          是一个开源和免费的工具,它Kibana可以为Logstash ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

 

1. 四大组件

Logstash: logstash server端用来搜集日志;
Elasticsearch: 存储各类日志;
Kibana: web化接口用作查寻和可视化日志;
Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

2. Elasticsearch 简介和安装(ELK的三个组建版本必须保持一致)

 2.1  ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2.2  ELK官网下载Elasticsearch

https://www.elastic.co/downloads/elasticsearch
下载elasticsearch-6.1.0.tar.gztar包后,

使用 tar -xvf elasticsearch-5.2.1.tar 命令解压,使用cd命令进入文件夹目录

启动的时候一定要注意,因为es不可以进行root账户启动,所以你还需要开启一个elsearch账户。

groupadd elsearch                   #新建elsearch

useradd elsearch -g elsearch -p elasticsearch  #新建一个elsearch用户

chown -R elsearch:elsearch  ./elasticsearch    #指定elasticsearch所属elsearch

 接下来我们默认启动就好了,什么也不用配置,然后在日志中大概可以看到开启了92009300端口。

进入bin目录,使用./elasticsearch 命令启动elasticsearch如果没有出现报错信息的话!这个时候,已经成功启动了!

3. Logstash 安装

Logstash官方文档地址:

https://www.elastic.co/guide/en/logstash/current/index.html

* Logstash 的下载和安装*

3.1 下载对应的版本:

https://www.elastic.co/downloads/past-releases/logstash-6-4-3 

解压:

使用tar -xvf logstash-5.1.1.tar.gz 命令解压文件,解压后使用cd命令进入文件夹内部:

主要文件夹包含bin、data、lib、config等。其中bin包含了一写可执行脚本文件,data是用于存储数据的,lib是一些系统所依赖的jar文件,config包含一些配置文件。

解压完之后,我们到config目录中新建一个logstash.conf配置。

[root@slave1 config]# ls

jvm.options  log4j2.properties  logstash.conf  logstash.yml  startup.options

[root@slave1 config]# pwd/usr/myapp/logstash/config

[root@slave1 config]# vim logstash.conf

     然后做好input filteroutput三大块, 其中input是吸取logs文件下的所有log后缀的日志文件,filter是一个过滤函数,这里不用配置,output配置了导入到

hosts127.0.0.1:9200elasticsearch中,每天一个索引。

 

input {
     file {
        type => "log"
        path => "/logs/*.log"
        start_position => "beginning"
    }
}

output {
  stdout {
   codec => rubydebug { }
  }
  elasticsearch {
    hosts => "127.0.0.1"
    index => "log-%{+YYYY.MM.dd}"
  }
}

 

 

 

配置完了之后,我们就可以到bin目录下启动logstash了,配置文件设置为conf/logstash.conf,从下图中可以看到,当前开启的是9600端口。

3.2 测试Logstash安装,运行最基本的Logstash管道:

cd logstash-5.1.1

bin/logstash -e 'input { stdin { } } output { stdout {} }'

-e 参数表示执行后边的语句,标志使您能够直接从命令行指定配置。在命令行中指定配置允许您快速测试配置,而无需在迭代之间编辑文件。示例中的管道从标准输入stdin获取输入,并以结构化格式将输入移动到标准输出stdout。

3.3 等待片刻等提示信息之后,就可以在控制台输入任何内容,他都会输出:

 

至此,一个Logstash的安装与使用完成!

然后在终端上运行:

bin/logstash -f logstash.conf

-f 表示指定使用哪一个配置文件进行执行。

* 三、Logstash基本原理*

Logstash管道有两个必需的元素,输入和输出,以及一个可选元素,过滤器。输入插件从源消耗数据,过滤器插件根据您指定的内容修改数据,输出插件将数据写入目标。如下图:

 

 

Logstash事件处理管道有三个阶段:输入→过滤器→输出。输入生成事件,过滤器修改它们,并将输出发送到其他地方。输入和输出支持编解码器,使您能够在数据进入或退出流水线时对其进行编码或解码,而无需使用单独的过滤器。也就是说,其实Logstash是一个input–decode –filter–encode–output的数据流!

根据上图可以看到需要将Logstash和Elasticsearch进行关联,这样的话才可以将数据输入到Elasticsearch进行处理。

(1)修改上一篇文章中自己定义的配置文件 logstash.conf,修改为如下内容:

 

input {
    beats {
        port => "5044"
    }
}
 filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

 然后output输出为elasticsearch,退出保存!
(2)启动Filebeat
./filebeat -e -c filebeat.yml -d "publish"3)启动Logstash
 bin/logstash -f logstash.conf

 

 

4. Kibana  安装和配置

4.1 简介

Kibana是一个开源的分析和可视化平台,旨在与Elasticsearch一起工作。您使用Kibana搜索,查看和与存储在Elasticsearch索引中的数据进行交互。您可以轻松地在各种图表,表格和地图中执行高级数据分析和可视化数据。

4.2 下载-安装

下载

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

使用tar -xvf kibana-5.2.1-linux-x86_64.tar.gz命令进行解压,进入目录

配置Kibana

Kibana的配置文件是在config/kibana.yml

修改配置文件: vi /config/kibana.yml (添加如下配置)

#配置本机ip

server.host: "http://localhost:9200"

#配置es集群url

elasticsearch.url: "http://192.168.177.132:9200"

启动:

>bin/kibana & //&后台启动

[root@slave1 kibana]# cd bin
[root@slave1 bin]# ls
kibana  kibana-plugin  nohup.out
[root@slave1 bin]# ./kibana

  log   [01:23:27.650] [info][status][plugin:kibana@5.2.0] Status changed from uninitialized to green - Ready
  log   [01:23:27.748] [info][status][plugin:elasticsearch@5.2.0] Status changed from uninitialized to yellow - Waiting for Elasticsearch
  log   [01:23:27.786] [info][status][plugin:console@5.2.0] Status changed from uninitialized to green - Ready
  log   [01:23:27.794] [warning] You're running Kibana 5.2.0 with some different versions of Elasticsearch. Update Kibana or Elasticsearch to the same version to prevent compatibility issues: v5.6.4 @ 192.168.23.151:9200 (192.168.23.151)
  log   [01:23:27.811] [info][status][plugin:elasticsearch@5.2.0] Status changed from yellow to green - Kibana index ready
  log   [01:23:28.250] [info][status][plugin:timelion@5.2.0] Status changed from uninitialized to green - Ready
  log   [01:23:28.255] [info][listening] Server running at http://0.0.0.0:5601
  log   [01:23:28.259] [info][status][ui settings] Status changed from uninitialized to green - Ready

访问:http://192.168.177.132:5601/

浏览器中输入:http://192.168.23.151:5601/ 你就可以打开kibana页面了,,默认让我指定一个查看的Index

 

 

 接下来我们在本机的/logs文件夹下创建一个简单的1.log文件,内容为“hello world”,然后在kibana上将logstash-*  改成 log* Create按钮就会自动出来。

[root@slave1 logs]# echo 'hello world' > 1.log

 

 

进入之后,点击Discover,你就可以找到你输入的内容啦~~~~ 是不是很帅气。。。

 

如果你装了head安装包,你还可以看到它确实带了日期模式的Index索引,还自带5个默认分片数。

 

5.Elasticsearch的扩展

  根据业务需求,可添加中文分词器,查阅相关文档官方建议安装ik分词器,目前效果最匹配

5.1 ik分词器的安装

github上直接下载直接编译好的zip文件。
 https://github.com/medcl/elasticsearch-analysis-ik/releases
选择和已经下载的elasticsearch版本兼容的ik

②下载好了之后解压,将解压后的文件夹放在elasticsearch目录下的plugins目录下,并重命名为analysis-ik

上传至之前安装的/home/learn/elasticsearch/plugins下,并进行解压与重命名,重命名为iK
unzip elasticsearch-analysis-ik-6.4.3.zip -d ik-analyzer

ES的配置文件config/elasticsearch.yml中增加ik的配置,在最后增加:

⑤重启elasticsearch,进入elasticsearch/bin,执行./elasticsearch

5.2 ik分词器的使用

Ik带有两个分词器:

ik_max_word :会将文本做最细粒度的拆分;尽可能多的拆分出词语

ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有
看下边的例子就会明白他们的区别了:

一般在索引时采用细粒度,搜索时采用粗粒度

ik_smart正确请求方式如下(直接复制粘贴到xshell,回车即可):

 

返回结果:

 

ik_max_word正确请求方式如下:

 

返回结果:

 

自定义词库:

plugins下的ik下的config中,有一个IKAnalyzer.cfg.xml,文件内容如下:

 

指定自定义的扩展字典,然后创建该xxx.dic文件,把自定义的专用不想被拆分的词语添加进去,编码为utf-8,重启后生效。

 

posted @ 2019-04-17 16:48  A像我这样  阅读(502)  评论(1编辑  收藏  举报