手把手教你如何搭建 ELK 日志收集系统

·  阅读 2832
手把手教你如何搭建 ELK 日志收集系统

如果觉得文章有用或写得好,还请在左边点个赞哦!

本文已收录到个人博客:geekvic.top ,欢迎来撩!

ELK简介

你还在为线上排查日志找不到节点服务器而犯愁吗?今天手把手教大家如何搭建一套日志收集系统,用来代替传统的人工登录服务器查看后台服务日志的方式。

在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常低下。 因此我们需要集中化的管理日志,ELK则应运而生。ELK=ElasticSeach+Logstash+Kibana,日志收集原理如下所示。

  1. 每台服务器集群节点安装Logstash日志收集系统插件

  2. 每台服务器节点将日志输入到Logstash中

  3. Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中

  4. 浏览器使用安装Kibana查询日志信息 

elk-.png

Elastic Search

简介

ElasticSearch是一个分布式搜索服务,提供的是一组Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。是目前全文搜索引擎的首选,可以快速的存储、搜索和分析海量数据。

安装

  1. 官网下载最新版本,地址是:www.elastic.co/cn/download…

  2. 解压:# tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz

  3. 命令:#cd elasticsearch-7.4.2,配置config里的elasticsearch.yml文件,配置如下。

 cluster.name: es-application
 node.name: es-node-1
 network.host: 0.0.0.0
 http.port: 9200
 discovery.seed_hosts: ["192.168.1.169"]
 cluster.initial_master_nodes: ["es-node-1"]
 path.data: /var/data/es
 path.logs: /var/log/es
复制代码

常见问题

can not run elasticsearch as root

解决思路:为了安全不允许使用root用户启动,需要新建一个es的账户,如下所示。

# adduser es
# passwd es
# chown -R  es elasticsearch-7.4.2 
# su elasticsearch
启动ES:
# ./bin/elasticsearch
复制代码

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决思路:切换到root用户修改# vim /etc/security/limits.conf,在最后面追加下面内容,其中es 是启动ES的用户,不是root。

es hard nofile 65536
es soft nofile 65536
复制代码

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决思路:切换到root用户修改配置sysctl.conf

#vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
复制代码

启动

后台启动:./elasticsearch -d
停止命令:./elasticsearch -stop
复制代码

验证

访问 ip:9200,成功显示如下json信息

es.png

ES Head

推荐安装chrome插件,也可以下载安装包进行安装。

Logstash

简介

Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。

安装与配置

  • 解压logstash-7.4.2,修改logstash-7.4.2/config的logstash.conf文件;
  • logstash.conf文件配置如下:
input {
tcp {
mode => "server"
host => "192.168.1.169"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "192.168.1.169:9200"
index => "springboot-logstash-%{+YYYY.MM.dd}"
}
}
复制代码
  • 执行命令
# ../bin/logstash -f logstash.conf
复制代码

Spring boot集成Logstash

pom文件里引入jar包

<!--logstash-->
<dependency>
   <groupId>net.logstash.logback</groupId>
   <artifactId>logstash-logback-encoder</artifactId>
   <version>6.2</version>
</dependency>
复制代码

修改logback-spring.xml

<!--logstash地址-->
<springProperty scope="context" name="LOGSTASH_ADDRESS" source="logstash.address"/>
<!--输出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash日志收集端口-->
<destination>${LOGSTASH_ADDRESS}</destination>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"app": "java-study",
"level": "%-5level",
"thread": "%thread",
"logger": "%logger{50} %M %L ",
"message": "%msg"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>


<root level="INFO">
<appender-ref ref="LOGSTASH"/>
</root>
复制代码

yml添加配置

logstash:
     address: 192.168.1.169:4560
复制代码

Kibana

简介

Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

安装与配置

  • 解压kibana-7.4.2-linux-x86_64.tar.gz,并修改配置文件kibana.yml
  • 执行命令
# ./kibana --allow-root
复制代码
  • 配置日期格式

dateformat.png

  • create index pattern
  • 保存自定义筛选字段,供后续筛选

kibana.png

左手敲键盘,右手投篮,一个爱好篮球的码农~~~

同步个人博客:geekvic.top/post/5c1c8f…

声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改