欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-26 18:25:23
ELK 实时日志平台搭建并在 Spring Boot 和 Nginx 项目中使用目录:ELK简介ELK的工作原理ElasticsearchLogstashKibanaSpring Boot 中使用 ELKNginx 中使用 ELK一. ELK简介ELK 是一个开源的实时日志分析平台,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引...
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 的工作原理图

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

三. 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

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

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
荐
                                                        ELK 实时日志平台搭建并在 Spring Boot 和 Nginx 项目中使用

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

相关标签: Linux 服务器