ELK+Spring Cloud搭建分布式日志中心

2024-09-08 04:48

本文主要是介绍ELK+Spring Cloud搭建分布式日志中心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ELK+Spring Cloud搭建分布式日志中心

  • 1.ELK简介
  • 2.资源包下载
  • 3.Elasticsearch安装
    • 3.1 解压Elasticsearch
    • 3.2 修改Elasticsearch的配置文件
    • 3.3 修改系统配置
    • 3.4 启动Elasticsearch
  • 4.ElasticSearch-head插件安装
  • 5.Logstash安装
  • 6.Kibana安装
  • 7.SpringCloud集成logstash
  • 7.安装过程的异常处理

1.ELK简介

ELK 是 Elasticsearch、Logstash、Kibana 的简称。

Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

2.资源包下载

各个组件版本及安装包(基于Linux搭建):
   elasticsearch-7.3.0-linux-x86_64.tar.gz
   elasticsearch-head.zip
   kibana-7.3.0-linux-x86_64.tar.gz
   logstash-7.3.0.tar.gz
   node-v12.18.4-linux-x64.tar
我把所有的依赖包都下载打成了一个包,需要的直接下载即可,下载地址:
链接:https://pan.baidu.com/s/1jTvZFVC_6XP7ErE_epP5Cg 密码: q7b2
下载完成后解压:

unzip package

3.Elasticsearch安装

3.1 解压Elasticsearch

tar -zxvf elasticsearch-7.3.0-linux-x86_64.tar.gz

3.2 修改Elasticsearch的配置文件

vim elasticsearch-7.3.0/config/elasticsearch.yml
# 如果需要部署集群,集群需要同样的集群名
cluster.name: my-application
# 每个 node 的名字需要唯一
node.name: node-1
# 数据存放目录,集群必须配置,否则无法加入集群,单机不需要配置。
# path.data: /var/lib/elasticsearch/nodes
# path.logs: /var/log/elasticsearch
# 配置服务器的内网地址,可以配置为服务器IP地址或者0.0.0.0
network.host: 192.168.0.30
# 配置端口号,默认 9200
http.port: 9200
# 配置集群节点,多个服务器["node-1", "node-2"]
cluster.initial_master_nodes: ["node-1"]
# discovery.seed_hosts: ["192.168.0.146", "192.168.0.147", "192.168.0.148"]
# 解决跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

注意:由于默认配置文件中的代码全部都是注释状态,所以直接在末尾添加即可。如何你用的不是这个版本,那么配置文件可能会有差异。

3.3 修改系统配置

3.3.1 解决max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]错误。

# 1.编辑 /etc/security/limits.conf
vim  /etc/security/limits.conf
# 2.在最后添加
* soft nofile 65536
* hard nofile 65536

3.3.2 解决max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]错误。

# 1.编辑/etc/sysctl.conf
vim /etc/sysctl.conf
# 2.在最后一行插入
vm.max_map_count=262144
# 3.立即生效
/sbin/sysctl -p

3.4 启动Elasticsearch

1、可以在elasticsearch-7.3.0/config/jvm.options中可以修改堆栈内存,Elasticsearch的默认内存大小是1G,可根据实际需求修改,由于JVM的限制,最大不能>=32G。
2、出现OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.可以通过修改jvm.options中-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC来解决。

-Xms4g
-Xmx4g

注意:Elasticsearch不能使用root用户启动,使用root用户会报错,需要我们手动创建用户。
创建用户:

#创建elk组
groupadd elk
#创建用户 useradd [用户名] -g [组名] -p [密码]
useradd elk -g elk -p elk
#elasticsearch目录授权
chown -R elk:elk elasticsearch-7.3.0

启动:

#切换用户
su elk
#进入bin目录启动es
nohup ./elasticsearch &

测试是否安装成功:
浏览器访问:http://192.168.0.30:9200
看到如下页面,则表示安装成功。
测试结果

4.ElasticSearch-head插件安装

注意:ElasticSearch-head插件需要node.js环境。
4.1 node.js安装
解压node-v12.18.4-linux-x64.tar

tar -xvf node-v12.18.4-linux-x64.tar

配置环境变量
编辑/etc/profile配置文件

vim /etc/profile

在底部插入此语句

export NODE_HOME=/home/u01/Development/node-v12.18.4-linux-x64
export PATH=$NODE_HOME/bin:$PATH

是配置文件立即生效

source /etc/profile

测试node.js环境是否安装成功

npm version

在这里插入图片描述
4.2. ElasticSearch-head安装
解压elasticsearch-head.zip,如果使用git clone命令下来的则无需解压

unzip elasticsearch-head.zip

进入elasticsearch-head目录

cd elasticsearch-head

安装

npm install

运行

npm run start &

测试
浏览器访问: http://192.168.0.30:9100,看到如下页面则表示安装成功。(新安装里面是没有数据的)
在这里插入图片描述

5.Logstash安装

  1. 解压logstash-7.3.0.tar.gz
tar -zxvf logstash-7.3.0.tar.gz
  1. 修改配置文件
vim logstash-7.3.0/config/logstash-sample.conf

最终修改结果:

input {beats { port => 5044 }tcp {port => 4569codec => json_lines}
}
output {elasticsearch {hosts => ["http://192.168.0.30:9200"]index => "logstash--%{+YYYY.MM.dd}"}
}
  1. 启动(需要jdk环境)
# 需要使用root用户启动
cd bin/
nohup ./logstash -f ../config/logstash-sample.conf &

6.Kibana安装

  1. 解压kibana-7.3.0-linux-x86_64.tar.gz
tar -zxvf kibana-7.3.0-linux-x86_64.tar.gz
  1. 修改配置文件
vim kibana-7.3.0-linux-x86_64/config/kibana.yml

修改配置文件属性如下:

#端口
server.port: 5601
#指定本机IP
server.host: 0.0.0.0
#请求elasticsearch服务器
elasticsearch.hosts: ["http://192.168.0.30:9200"]
#将语言设置为中文
i18n.locale: "zh-CN"
  1. 启动
#切换用户
su elk
# 在bin目录下执行,不能使用root用户启动
nohup ./kibana &
  1. 访问
    http://192.168.0.30:5601

7.SpringCloud集成logstash

  1. 在pom.xml文件中引入依赖
<!--logstash-logback-->
<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.2</version>
</dependency>
  1. logback-spring.xml中加入
<!-- logstash 设置 -->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><param name="Encoding" value="UTF-8"/><!-- logstash 服务器 ip --><remoteHost>192.168.0.30</remoteHost><!-- logstash tcp 端口--><port>4569</port><!-- encoder is required --><encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{"serviceName": "${name}","level": "%level","message": "%message","stack_trace": "%exception{5}","pid": "${PID:-}","thread": "%thread","class": "%logger{40}"}</pattern></pattern></providers></encoder><!-- 临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝,OFF>ERROR>WARN>INFO>DEBUG>TRACE>ALL --><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter>
</appender><!--异步发送日志--> 
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="LOGSTASH" /> 
</appender><!-- 日志输出级别 -->
<root level="INFO"><!-- 添加logstash日志输出 --><appender-ref ref="ASYNC" />
</root>

7.安装过程的异常处理

  1. npm install报错Failed at the phantomjs-prebuilt@2.1.16 install script
    解决方案,运行以下命令即可:
npm install phantomjs-prebuilt@2.1.14 --ignore-scripts

至此,ELK安装及集成Spring Cloud结束,当前教程中只罗列了ELK集成Spring Cloud的基本用法,本博客旨在让各位小伙伴在工作中能快速搭建并运行着一套分布式日志中心,如果需要完成更加复杂的需求,还是得系统的学习Elasticsearch、Logstash、Kibana的使用。

这篇关于ELK+Spring Cloud搭建分布式日志中心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147156

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听