ELK简介
你还在为线上排查日志找不到节点服务器而犯愁吗?今天手把手教大家如何搭建一套日志收集系统,用来代替传统的人工登录服务器查看后台服务日志的方式。
在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常低下。
因此我们需要集中化的管理日志,ELK则应运而生。ELK=ElasticSeach+Logstash+Kibana,日志收集原理如下所示。
每台服务器集群节点安装Logstash日志收集系统插件
每台服务器节点将日志输入到Logstash中
Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中
浏览器使用安装Kibana查询日志信息
Elastic Search
简介
ElasticSearch是一个分布式搜索服务,提供的是一组Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。是目前全文搜索引擎的首选,可以快速的存储、搜索和分析海量数据。
安装
官网下载最新版本,地址是:https://www.elastic.co/cn/downloads/elasticsearch,下载下来的最新版本是:elasticsearch-7.4.2-linux-x86_64.tar.gz;
解压:# tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
命令:#cd elasticsearch-7.4.2,配置config里的elasticsearch.yml文件,配置如下。
1 | cluster.name: es-application |
常见问题
(1)can not run elasticsearch as root
解决思路:为了安全不允许使用root用户启动,需要新建一个es的账户,如下所示。
1 | # adduser es |
(2)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决思路:切换到root用户修改# vim /etc/security/limits.conf,在最后面追加下面内容,其中es 是启动ES的用户,不是root。
1 | es hard nofile 65536 |
(3)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决思路:切换到root用户修改配置sysctl.conf
1 | #vi /etc/sysctl.conf |
启动
1 | 后台启动:./elasticsearch -d |
验证
访问 ip:9200,成功显示如下json信息
ES Head
推荐安装chrome插件,也可以下载安装包进行安装。
Logstash
简介
Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。
安装与配置
- 解压logstash-7.4.2,修改logstash-7.4.2/config的logstash.conf文件;
- logstash.conf文件配置如下:
1 | input { |
- 执行命令
1 | # ../bin/logstash -f logstash.conf |
Spring boot集成Logstash
pom文件里引入jar包
1 | <!--logstash--> |
修改logback-spring.xml
1 | <!--logstash地址--> |
yml添加配置
1 | logstash: |
Kibana
简介
Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
安装与配置
- 解压kibana-7.4.2-linux-x86_64.tar.gz,并修改配置文件kibana.yml
- 执行命令
1 | # ./kibana --allow-root |
- 配置日期格式
- create index pattern
- 保存自定义筛选字段,供后续筛选