当前位置: 移动技术网 > IT编程>开发语言>Java > 荐 ELK 实时日志平台搭建并在 Spring Boot 和 Nginx 项目中使用

荐 ELK 实时日志平台搭建并在 Spring Boot 和 Nginx 项目中使用

2020年07月17日  | 移动技术网IT编程  | 我要评论
ELK 实时日志平台搭建并在 Spring Boot 和 Nginx 项目中使用
目录:
  1. ELK简介
  2. ELK的工作原理
  3. Elasticsearch
  4. Logstash
  5. Kibana
  6. Spring Boot 中使用 ELK
  7. Nginx 中使用 ELK

一. ELK简介

ELK 是一个开源的实时日志分析平台,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等

  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)

  • Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

二.ELK 的工作原理图

原理图

三. Elasticsearch

3.1 Elasticsearch 简介

Elasticsearch (ES)是一个分布式的 Restful 风格的搜索和数据分析引擎,它具有以下特点:

  • 查询:允许执行和合并多种类型的搜索 — 结构化、非结构化、地理位置、度量指标 — 搜索方式随心而变。
  • 分析:Elasticsearch 聚合让您能够从大处着眼,探索数据的趋势和模式。
  • 速度:很快,可以做到亿万级的数据,毫秒级返回。
  • 可扩展性:可以在笔记本电脑上运行,也可以在承载了 PB 级数据的成百上千台服务器上运行。
  • 弹性:运行在一个分布式的环境中,从设计之初就考虑到了这一点。
  • 灵活性:具备多个案例场景。支持数字、文本、地理位置、结构化、非结构化,所有的数据类型都欢迎。
3.2 安装
3.2.1 安装目录:
mkdir -p server/{application, tools}
cd server/tools
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz

下载安装之后进行解压

tar -avxf elasticsearch-7.3.0-linux-x86_64.tar.gz
#进入解压后的文件
cd elasticsearch-7.3.0-linux-x86_64
#可根据自身服务器的配置进行修改jvm的参数
vim /conf/jvm.options

配置修改成功之后,就可以进行启动

cd elasticsearch-7.3.0-linux-x86_64
#!!!!:需要注意的是 elasticSearch 是不允许使用roo用户进启动的, 因此需要创建一个用户
useradd elk
#切换至此目录 分配权限 (注意:如果没有分配权限,在启动时,容易报错)
chown -R elk:elk elasticsearch-7.3.0-linux-x86_64
#一切成功之后进行启动
./bin/elasticsearch
#终端输入
[root@ElasticSearch-Server ~]# curl 127.0.0.1:9200
{
  "name" : "ElasticSearch-Server",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "E0ci937JSQ6-SekhOVvJ-g",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
表示安装成功

常见错误

max virtual memory areas vm.max_map_count [65530] is too low

max file descriptors [4096] for elasticsearch process is too low
解决方案

四:Logstash

4.1 Logstash 简介

官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。

4.2 Logstash的安装
#进入到工具目录
cd /server/tools
#下载链接
wget  https://artifacts.elastic.co/downloads/logstash/logstash-7.8.0.tar.gz
#下载成功之后进行解压
tar -avxf logstash-7.8.0.tar.gz
4.3 解压成功之后进行配置
input {
    kafka {
        bootstrap_servers => "10.211.55.13:9092"
        topics => ["logs"]
        consumer_threads => 5  
        decorate_events => false 
        codec => "plain"
        }
    }
    
output {
        elasticsearch {
            action => "index"
            hosts => ["127.0.0.1:9200"]
            index => "logs-%{+YYYY.MM.dd}"
            document_type => "logs"
        }
}

详细参数讲解请见官网: 官网地址

4.4 配置成功之后进行启动
#首先进行配置验证
./bin/logstash -f conf/logs.conf -t
#验证成功之后进行启动
./bin/logstash -f conf/logs.conf

在这里插入图片描述

4.5 验证

如显示上图, 则表示安装成功.

!!! 注意: 启动顺序

  1. elasticSearch, kibana
  2. kafaka, zookeeper
  3. logstash

五. Kibana

5.1 Kibana简介

Kibana 是一款开源的数据分析和可视化平台,它是Elastic Stack 成员之一,设计用于和Elasticsearch 协作。 您可以使用Kibana 对Elasticsearch 索引中的数据进行搜索、查看、交互操作。 您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。

5.2 Kibana 安装
#进入到工具目录
cd /server/tools
#下载链接
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz
#下载成功之后 先解压再 进行于 ES 的配置
tar -avxf kibana-7.8.0-linux-x86_64.tar.gz
#进行授权 (注:kibana于Elasticsearch一样同样不允许 root用户启动)
chown -R elk:elk kibana-7.8.0-linux-x86_64
#进行es配置
cd kibana-7.8.0-linux-x86_64/conf
vim kibana.yml

配置修改 kibana.yml

#常见的配置
server.port: 5601 #端口号
server.host: "0.0.0.0" #允许访问主机范围
elasticsearch.hosts: ["http://127.0.0.1:9200"] #es的地址和端口
elasticsearch.pingTimeout: 1500 #于es的ping超时时间
elasticsearch.requestTimeout: 30000 #q请求超时时间
elasticsearch.shardTimeout: 30000#等待分片响应时间,单位微秒,0即禁用
elasticsearch.startupTimeout: 5000#启动超时时间

比较全的讲解

server.port:
	默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号。
	
server.host:
	默认值: "localhost" 指定后端服务器的主机地址。
	
server.basePath:
	如果启用了代理,指定 Kibana 的路径,该配置项只影响 Kibana 生成的 URLs,转发请求到 Kibana 时代理会移除基础路径值,该配置项不能以斜杠 (/)结尾。
	
server.maxPayloadBytes:
	默认值: 1048576 服务器请求的最大负载,单位字节。
	
server.name:
	默认值: "您的主机名" Kibana 实例对外展示的名称。
	
server.defaultRoute:
	默认值: "/app/kibana" Kibana 的默认路径,该配置项可改变 Kibana 的登录页面。
	
elasticsearch.url:
	默认值: "http://localhost:9200" 用来处理所有查询的 Elasticsearch 实例的 URL 。
	
elasticsearch.preserveHost:
	默认值: true 该设置项的值为 true 时,Kibana 使用 server.host 设定的主机名,该设置项的值为 false 时,Kibana 使用主机的主机名来连接 Kibana 实例。
	
kibana.index:
	默认值: ".kibana" Kibana 使用 Elasticsearch 中的索引来存储保存的检索,可视化控件以及仪表板。如果没有索引,Kibana 会创建一个新的索引。
	
kibana.defaultAppId:
	默认值: "discover" 默认加载的应用。
	
tilemap.url:
	Kibana 用来在 tile 地图可视化组件中展示地图服务的 URL。默认时,Kibana 从外部的元数据服务读取 url,用户也可以覆盖该参数,使用自己的 tile 地图服务。例如:"https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"
tilemap.options.minZoom:
默认值: 1 最小缩放级别。

tilemap.options.maxZoom:
	默认值: 10 最大缩放级别。
	
tilemap.options.attribution:
	默认值: "© [Elastic Tile Service](https://www.elastic.co/elastic-tile-service)" 地图属性字符串。
	
tilemap.options.subdomains:
	服务使用的二级域名列表,用 {s} 指定二级域名的 URL 地址。
	
elasticsearch.username: 和 elasticsearch.password:
	Elasticsearch 设置了基本的权限认证,该配置项提供了用户名和密码,用于 Kibana 启动时维护索引。Kibana 用户仍需要 Elasticsearch 由 Kibana 服务端代理的认证。
	
server.ssl.enabled
	默认值: "false" 对到浏览器端的请求启用 SSL,设为 true 时, 
	server.ssl.certificate 和 server.ssl.key 也要设置。

server.ssl.certificate: 和 server.ssl.key:
	PEM 格式 SSL 证书和 SSL 密钥文件的路径。

server.ssl.keyPassphrase
	解密私钥的口令,该设置项可选,因为密钥可能没有加密。

server.ssl.certificateAuthorities
	可信任 PEM 编码的证书文件路径列表。
server.ssl.supportedProtocols
	默认值: TLSv1、TLSv1.1、TLSv1.2 版本支持的协议,有效的协议类型: TLSv1 、 TLSv1.1 、 TLSv1.2 。

server.ssl.cipherSuites
	默认值: ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, DHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA256, HIGH,!aNULL, !eNULL, !EXPORT, !DES, !RC4, !MD5, !PSK, !SRP, !CAMELLIA. 具体格式和有效参数可通过[OpenSSL cipher list format documentation](https://www.openssl.org/docs/man1.0.2/apps/ciphers.html#CIPHER-LIST-FORMAT) 获得。

elasticsearch.ssl.certificate: 和 elasticsearch.ssl.key:
	可选配置项,提供 PEM格式 SSL 证书和密钥文件的路径。这些文件确保 Elasticsearch 后端使用同样的密钥文件。

elasticsearch.ssl.keyPassphrase
	解密私钥的口令,该设置项可选,因为密钥可能没有加密。

elasticsearch.ssl.certificateAuthorities:
	指定用于 Elasticsearch 实例的 PEM 证书文件路径。

elasticsearch.ssl.verificationMode:
	默认值: full 控制证书的认证,可用的值有 none 、 certificate 、 full 。 full 执行主机名验证,certificate 不执行主机名验证。

elasticsearch.pingTimeout:
	默认值: elasticsearch.requestTimeout setting 的值,等待 Elasticsearch 的响应时间。

elasticsearch.requestTimeout:
	默认值: 30000 等待后端或 Elasticsearch 的响应时间,单位微秒,该值必须为正整数。

elasticsearch.requestHeadersWhitelist:
	默认值: [ 'authorization' ] Kibana 客户端发送到 Elasticsearch 头体,发送 no 头体,设置该值为[]。

elasticsearch.customHeaders:
	默认值: {} 发往 Elasticsearch的头体和值, 不管elasticsearch.requestHeadersWhitelist 如何配置,任何自定义的头体不会被客户端头体覆盖。

elasticsearch.shardTimeout:
	默认值: 0 Elasticsearch 等待分片响应时间,单位微秒,0即禁用。

elasticsearch.startupTimeout:
	默认值: 5000 Kibana 启动时等待 Elasticsearch 的时间,单位微秒。
pid.file:
指定 Kibana 的进程 ID 文件的路径。

logging.dest:
	默认值: stdout 指定 Kibana 日志输出的文件。

logging.silent:
	默认值: false 该值设为 true 时,禁止所有日志输出。

logging.quiet:
	默认值: false 该值设为 true 时,禁止除错误信息除外的所有日志输出。

logging.verbose
	默认值: false 该值设为 true 时,记下所有事件包括系统使用信息和所有请求的日志。

ops.interval
	默认值: 5000 设置系统和进程取样间隔,单位微妙,最小值100。

status.allowAnonymous
	默认值: false 如果启用了权限,该项设置为 true 即允许所有非授权用户访问 Kibana 服务端 API 和状态页面。

cpu.cgroup.path.override
	如果挂载点跟 /proc/self/cgroup 不一致,覆盖 cgroup cpu 路径。

cpuacct.cgroup.path.override
	如果挂载点跟 /proc/self/cgroup 不一致,覆盖 cgroup cpuacct 路径。

console.enabled
	默认值: true 设为 false 来禁用控制台,切换该值后服务端下次启动时会重新生成资源文件,因此会导致页面服务有点延迟。

elasticsearch.tribe.url:
	Elasticsearch tribe 实例的 URL,用于所有查询。

elasticsearch.tribe.username: 和 elasticsearch.tribe.password:
	Elasticsearch 设置了基本的权限认证,该配置项提供了用户名和密码,用于 Kibana 启动时维护索引。Kibana 用户仍需要 Elasticsearch 由 Kibana 服务端代理的认证。
elasticsearch.tribe.ssl.certificate: 和 elasticsearch.tribe.ssl.key:
可选配置项,提供 PEM 格式 SSL 证书和密钥文件的路径。这些文件确保 Elasticsearch 后端使用同样的密钥文件。

elasticsearch.tribe.ssl.keyPassphrase
	解密私钥的口令,该设置项可选,因为密钥可能没有加密。

elasticsearch.tribe.ssl.certificateAuthorities:
	指定用于 Elasticsearch tribe 实例的 PEM 证书文件路径。

elasticsearch.tribe.ssl.verificationMode:
	默认值: full 控制证书的认证,可用的值有 none 、 certificate 、 full 。 full 执行主机名验证, certificate 不执行主机名验证。

elasticsearch.tribe.pingTimeout:
	默认值: elasticsearch.tribe.requestTimeout setting 的值,等待 Elasticsearch 的响应时间。

elasticsearch.tribe.requestTimeout:
	Default: 30000 等待后端或 Elasticsearch 的响应时间,单位微秒,该值必须为正整数。

elasticsearch.tribe.requestHeadersWhitelist:
	默认值: [ 'authorization' ] Kibana 发往 Elasticsearch 的客户端头体,发送 no 头体,设置该值为[]。

elasticsearch.tribe.customHeaders:
	默认值: {} 发往 Elasticsearch的头体和值,不管 elasticsearch.tribe.requestHeadersWhitelist 如何配置,任何自定义的头体不会被客户端头体覆盖。

配置成功之后进行启动

cd /bin
./kibana

启动成功之后在浏览器中输入: 10.211.55.12:5601
在这里插入图片描述

本文地址:https://blog.csdn.net/App_IOS/article/details/107217455

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网