

手把手教你如何搭建 ELK 日志收集系统
source link: https://geekvic.top/post/5c1c8f0.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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
2
3
4
5
6
7
8
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
(1)can not run elasticsearch as root
解决思路:为了安全不允许使用 root 用户启动,需要新建一个 es 的账户,如下所示。
1
2
3
4
5
6
# adduser es
# passwd es
# chown -R es elasticsearch-7.4.2
# su elasticsearch
启动ES:
# ./bin/elasticsearch
(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
2
es hard nofile 65536
es soft nofile 65536
(3)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决思路:切换到 root 用户修改配置 sysctl.conf
1
2
3
4
5
#vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
1
2
后台启动:./elasticsearch -d
停止命令:./elasticsearch -stop
访问 ip:9200,成功显示如下 json 信息

ES Head
推荐安装 chrome 插件,也可以下载安装包进行安装。
Logstash
Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。
安装与配置
- 解压 logstash-7.4.2,修改 logstash-7.4.2/config 的 logstash.conf 文件;
- logstash.conf 文件配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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}"
}
}
1
# ../bin/logstash -f logstash.conf
Spring boot 集成 Logstash
pom 文件里引入 jar 包
1
2
3
4
5
6
<!--logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.2</version>
</dependency>
修改 logback-spring.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!--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 添加配置
1
2
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
1
# ./kibana --allow-root
- 配置日期格式
- create index pattern
- 保存自定义筛选字段,供后续筛选
Recommend
-
57
上节课和大家介绍了 Kubernetes 集群中的几种日志收集方案 ,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch 、
-
69
一、Flume简介 Apache Flume 是一个分布式,高可用的数据收集系统。它可以从不同的数据源收集数据,经过聚合后发送到存储系统中,通常用于日志数据的收集。Flume 分为 NG 和 OG (1.0 之前) 两个版本,NG 在 OG 的基础上进行了...
-
21
引言 大搜车日志分为两种:业务日志和链路日志。 业务日志是业务开发人员在代码里面自己打印的日志,为方便开发人员快速查阅分布在多台机器上的日志,我们提供了业务日至平台,供开发自助接入。目前接入的系统 400+,...
-
11
Java里的各种日志框架,相信大家都不陌生。Log4j/Log4j2/Logback/jboss logging等等,其实这些日志框架核心结构没什么区别,只是细节实现上和其性能上有所不同。本文带你从零开始,一步一步的设计一个日志框架。输出内容 - LoggingEvent提到日志框...
-
11
手把手教你如何Linux系统中安装Git ...
-
14
背景:市面上的监控系统有很多,大多收费,对于小型前端项目来说,必然是痛点。另一点主要原因是,功能通用,却未必能够满足我们自己的需求, 所以我们自给自足。 这是搭建前端监控系统的第二章,主要是介绍如何统计js报错,跟着...
-
10
在 Kubernetes 上搭建 EFK 日志收集系统[更新]-阳明的博客|Kubernetes|Istio|Prometheus|Python|Golang|云原生 EFK Stack 上节课和大家介绍了...
-
4
日志收集系统设计 发表于 2020-06-30...
-
11
Nginx+Lua实现访问日志收集系统 | 是潘达呀Nginx+Lua实现访问日志收集系统 发表于 2017-12-28 | 分类于 开发 | | 浏览4 次 | 字数统计: 1.4k | 阅读时长 ≈ 6网站数据统...
-
13
V2EX › 编程 大伙们,来聊聊日志收集系统的设计吧
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK