ELK入门及搭建 (亲测有效)

一   ELK是什么?

在项目初期的时候,大家都是赶着上线,一般来说对日志没有过多的考虑,当然日志量也不大,所以用log4j就够了,随着应用的越来越多,日志散落在各个服务器的logs文件夹下,确实有点不大方便。

当我们需要日志分析的时候你大概会这么做:直接在日志文件中 grep、awk 就可以获得自己想要的信息。

那你们想过这种方式的问题吗?

1.日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询

2.应用太多,面临数十上百台应用时你该怎么办

3.随意登录服务器查询log对系统的稳定性及安全性肯定有影响

4.如果使用人员对Linux不太熟练那面对庞大的日志简直要命。

ELK因此就应运而生,那么为什么要用ELK呢?ELK又能给我们解决哪些问题呢?

1.日志统一收集,管理,访问。查找问题方便安全:收集放到搜索引擎中。也就就是ELK中的E表示es:分布式搜索引擎存储库。是一个Nosql。其核心是倒排索引库。可存TB级的数据。

2.使用简单,可以大大提高定位问题的效率:一个页面搞定所有查询。K:kibana。

3.可以对收集起来的log进行分析。L:Logstash,就是用收集日志。会部署到应用服务器上面。还可以提供过滤功能。

4.能够提供错误报告,监控机制。

 

二   ELK架构设计

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件

1. LogStash

     它可以流放到各自的服务器上收集Log日志,通过内置的ElasticSearch插件解析后输出到ES中

2.ElasticSearch

   这是一个基于Lucene的分布式全文搜索框架,可以对logs进行分布式存储,有点像hdfs。此为ELK的核心组件,日志的分析以及存储全部由es完成,因此在后面的课程中我们还会对此进行重点讲解。

3. Kibana:论坛。大屏展示

   它可以多维度的展示es中的数据。可提供图表展示,造出一些非常炫酷的页面。这也解决了用mysql存储带来了难以可视化的问题。他提供了丰富的UI组件,简化了使用难度,数据在es中的展示是比较让人蛋疼的,后面再讲es的时候让大家看看。

目前ELK主要有两种框架:

1.普通框架:这一套框架不会影响生成应用。唯一形象的就是logstash会耗一点系统资源。

2.个性化扩展框架(针对日志数据需要二次处理以及多方使用的场景):kafka(不建议用,除非针对TB数据):

Filebeat:

 

三、如何快速搭建一套稳定的ELK环境

1.官方下载(链接如下,该链接可以选各种es插件和版本)

       https://www.elastic.co/downloads/past-releases

 

2.建议版本:elasticsearch 2.4.6, lucene版本. 5.x。 6. 7.(我搭的2.4.6,注意:es5.+版本,比较麻烦,2.4.6够用了)

                                              单机版EKL的安装(集群和单机差不多,按上边架构搭就ok了)

1  下载好,elasticsearch 2.4.6,kibana4.6.1 ,logstash2.4.0 (注意一定要安装JDK7+,tomcat 运行一个项目)

2  把这些插件上传到centos上

3 在/home目录下建一个soft文件夹,用于装这个机械上的插件,命令:cd /home/        mkdir soft

 

4 在soft文件夹中新建一个elk文件夹,装es2.4.6和logstash和kibana

5 把上传的e,l,k cp到soft/elk目录下:cp /home/xxx/elasticsearch 2.4.6.tar.gz kibana4.6.1.tar.gz logstash2.4.0.tar.gz /home/soft/elk/

6 切换到elk 目录  :cd /home/soft/elk/     然后分别解压:tar -zxvf elasticsearch 2.4.6.tar.gz  ,其他的同理。一一解压就好

7.1 安装es2.4.6,先cd /elasticsearch 2.4.6  在cd /config  在修改elasticsearch.yml     vim elasticsearch.yml

vim elasticsearch.ym

cluster.name: my-es#注意一个集群里面的机器一定要保持一致

node.name: node-01 #集群需要改名字 同一个集群里面的名字不能相同(这是节点名字可以自己随便写)

node.master: true#尽量配置机器差作为主节点 注意只有两个节点的话第二个请配置为false

node.data: true

network.host: 192.168.0.15(这个最好配置0.0.0.0  这样就是外网可以访问了)

http.port: 9200  (http端口,将来访问就是这个端口)

transport.tcp.port: 9300 (数据传输端口)

端口9300 需要想防火墙开放,防火墙关了也需要开放    命令:

     firewall-cmd --zone=public --add-port=9200/tcp --permanent

     firewall-cmd --reload

8   可以启动了,(注意root无法启动,可以新建一个用户 elk  ,并且把soft这个文件的所有者改成elk,这样elk就可以操作          soft文件夹下的所有文件了,)root启动权限太高,不允许,elk用户启动需要又写和执行的权限操作,所以直接把soft文件      夹一次性把所有者改成elk    命令:cd /home/     chown -R elk soft  这样就把soft文件夹的所有者改成elk了,这样就可以去      启动了

     命令:cd /home/soft/elk/       cd elasticsearch-2.4.6/    ./bin/elasticsearch(前台启动)  ./bin/elasticsearch -d (后台启动)

打开谷歌浏览器 在地址栏输入xxxx.xxx.xxxx:9200

 

9   安装es 的head插件   命令:在bin目录下:./ plugin install mobz/ elasticsearch-head

     输入  http://192.168.0.xxx:9200/_plugin/head/  验证  出现下面界面成功

 

2    安装logstash  

      1   刚刚在soft里的elk中已经解压了logstash了,直接修改配置文件就好

      2   先cd logstash-2.4.0/   ,再mkdir config   再cd config/   再 touch  log.conf 文件 再vim  log,conf

        

       

input {
        file {
                type => "log" 
                path => ["/export/home/tomcat/domains/*/*/logs/*.out"]
                start_position => "end"
		ignore_older => 0
		codec=> multiline {             //配置log换行问题
                        pattern => "^%{TIMESTAMP_ISO8601}"
                        negate => true
                        what => "previous"
                }
        }
        beats {
            port => 5044
        }
}
output {
        if [type] == "log" {
		elasticsearch {
			hosts => ["http://127.0.0.1:9200"]
			index => "log-%{+YYYY.MM}"
		}	
	}
}

  og,conf 的配置赋值上边即可,就是改一改input中的path  你的项目运行的日志生产目录

3 logstash 就搞好了  然后启动    再logstash-2.4.0的目录下执行:./bin/logstash -f config/log.config(前台启动)

   后台启动:nohup ./bin/logstash -f config/log.conf > log.log &

4 启动完成后   刷新刚刚的链接就多处一个索引库

 

三  安装kibana4.6.1

1  kibana4.6.1刚刚也在soft文件夹中解压了,直接进入kibana4.6.1 的config目录下修改kibana.yml

   目录vim  kibana.yml

2 启动kibana  命令:./bin/kibana(前台) nohup ../bin/kibana &(后台启动)

3 验证  再谷歌浏览器中  输入  http://xxx.xxx.xxx:5601

4 记住  es 的端口,和logstash和kibana的端口dou'都要开放,并且logstash中的日志生成的文件夹的所有者必须是是一个人  elk  用户,不然  logstash读不到 项目产生的日志,权限不够   改文件所有者就用   chown -R 用户名 wen'文件夹  这条命令吧

总结:es logstash  kibana  解压,修改各自的配置文件,开放端口。启动,测试,和所有的或日志生成目录所有者是一个人,就ok了,其实前面说的大部分都是废话,欢迎大家技术交流,小弟是初学蛰,勿见笑

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章