当前位置:   article > 正文

Elasticsearch学习及环境搭建_搭建elasticsearch项目

搭建elasticsearch项目

0、为啥学习ES

在公司开发一段时间以来,我一直对公司提供的统一日志平台很感兴趣。在容器化部署项目时,我们都没有关心过日志打印到哪里去了,有没有落盘,之后要想查询应用日志,只需要去统一日志平台页面搜索一下就完事儿了。

但是一直没有想过这个是怎么实现的。

通过研究发现,目前的日志之所以能从日志平台搜索到,我了解的大概有2个途径:

1、日志落盘放到某个路径下,然后采集工具(例如logstash、filebeat)采集路径下的日志数据推送给elasticsearch

2、在项目中引入统一日志平台的开发jar包依赖,然后应用在使用log.info、log.error等接口时,直接把日志输出给elasticsearch

springboot项目中,slf4j提供了一套日志打印的API,然后各个日志框架只需要实现这些API,就可以完成对日志的打印。例如:log4j、logback等。

因此,有的日志框架可以在实现slf4jAPI的同时,可以直接把日志按照一定的格式,推送给elasticsearch,这样一来,我们的日志文件就没有必要把日志输出到文件里面了。之后要查询日志,只需要去检索es就可以了。

一、Elasticsearch快速入门

可以参考这篇文章: https://www.cnblogs.com/sunsky303/p/9438737.html

二、ELK系统的搭建
ELK不是单独指某个系统,而是elasticsearch、logstash、kibana的合称。

E:elasticsearch的简称,主要用于检索

L: logstash,主要用于搜集数据提供给elasticsearch,提供数据保障

K:kibana,es是不提供前端UI展现的(elasticsearch-head可以部分展现,但是功能不够强大),但是提供了很多API,kibana就是专门用于展现es数据的一个系统,通过他可以直观的展现es数据

个人搭建: 搭建elk系统,最好保持三个应用的版本一直,我的线下实验中,使用的版本都是 7.6.2,目前已经准确搭建成功,并能在自己的java实验项目中完成了日志搜集及查询的功能,也完成了搜索关键字联想的功能

2.1、elasticsearch的搭建

为了快速搭建,采用docker搭建,安装有问题时,随时可以铲除容器实例,重新安装,对于新手来说,十分方便

搭建可以参考文章: https://cloud.tencent.com/developer/article/1612794

2.2、logstash的搭建

搭建可以参考文章: https://cloud.tencent.com/developer/article/1703928

其中,在编写采集配置文件时,例如如下配置,

input {
file {
#标签
type => “systemlog-localhost”
#采集点
path => “/var/log/messages”
#开始收集点
start_position => “beginning”
#扫描间隔时间,默认是1s,建议5s
stat_interval => “5”
}
}

output {
elasticsearch {
hosts => [“192.168.31.196:9200”]
index => “logstash-system-localhost-%{+YYYY.MM.dd}”
}
}

需要注意的是,path => “/var/log/messages” 只是定义了采集特定目录的文件,若想配置采集某个目录下,子目录下的特定后缀名的文件内容,可以修改为:

path => "/var/log/messages//*.log 或者 path => "/var/log/messages//.

例如:我的Springboot实验项目,日志文件夹的存放路径格式为:

/home/ecs-datadisk-01/tiansj-portal-logs/

2021-11-01/

    2021-11-01-0.log

    2021-11-01-1.log

2021-11-02/

   2021-11-02-0.log
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

我的配置为: path => "/home/ecs-datadisk-01/tiansj-portal-logs/**/*.log;

2.3、kibana的搭建

搭建可以参考文章: https://cloud.tencent.com/developer/article/1705098

三、elk环境搭建总结

在使用docker搭建elk环境时,不要上来就编写容器创建脚本,需要多收集资料,查看es、logstash、kibana的各个关键路径,例如数据文件、配置文件、日志输出、用户自定义配置文件、插件等的输出路径,将这些路径通过挂载到本机的路径的方式

持久化到本机的特定目录。系统相关的路径挂载到操作系统路径,日志和数据文件相关的路径持久化到外挂数据盘的路径,便于数据的恢复。

我在搭建过程中遇到的问题:

1、logstash配置文件扫描路径后,没有扫描到数据

解决方案: 引起的原因是因为我的日志文件夹里面包含太多子文件夹,因此需要修改日志扫描文件的扫描路径,path => "/home/ecs-datadisk-01/tiansj-portal-logs//*.log; 加入了的通配符

2、elk系统首次搭建完毕后,基本上都是不需要认证的,在生产环境是相当危险的

解决方案: 在elasticsearch配置xpack,然后配置认证文件等,具体过程可以百度一下,然后可以将es生成的各种系统默认的用户名和密码配置到logstash、kibana的配置文件中。再次访问kibana、es时,就需要输入用户名和密码了

3、通过kibana检索日志数据时,有时候中文词检索命中的搜索结果不是很准确

解决方案: elasticsearch默认的分词器对中文的分词不是很准,需要安装第三方的中文分词器插件,可以百度一下国内比较流行的中文分词器插件自行安装

四、我了解的ES的用途

1、日志检索

2、用户搜索历史检索

3、搜索关键字联想,例如京东搜索某个商品时,如果某个词,页面会自动查询这个关键字对应的可能的搜索目标,如搜索手机,可能出现 小米手机、苹果手机、手机壳等等

4、全文检索

注意:以上内容纯属参考,若发现有错误或误解,敬请谅解,可以留言告知我修改哈

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号