【Spring Cloud】微服务日志收集系统-ELK+Kafka

目录

  • 任务背景
  • 本文相关文件资料
  • Elasticsearch
    • 特性
  • Logstash
  • Kibana
  • ELK
    • ELK的缺点
    • 引入消息中间件
  • ELK+Kafka
    • Kafka
      • 概念
  • ELK+Kafka环境搭建
    • 1.将安装素材上传至服务器 cd /usr/local/soft
    • 2.防止Elasticsearch因虚拟内存问题启动失败
    • 3.创建镜像li/centos7-elasticsearch
    • 4.创建容器
    • 5.验证Elasticsearch服务【先开放端口或关闭防火墙】
    • 6.安装Kafka
      • 修改资料中server.properties
      • 创建镜像li/centos7-kafka
      • 创建容器
    • 7.安装Logstash
      • 修改资料中logstash.conf
      • 修改资料中logstash.yml
      • 创建镜像
      • 创建容器
      • 在Logstash中定义收集规则
        • input
        • output
    • 8.安装Kibana
      • 修改资料中kibana.yml
      • 创建镜像
      • 创建容器
      • 验证Kibana
  • 在项目中发送日志信息到Kafka
    • 1.创建demo-kafka-client项目
    • 2.添加依赖
    • 3.发送消息到Kafka
      • 代码分析
    • 4.添加配置
    • 5.启动服务

任务背景

  1. 随着业务复杂度的提升以及微服务的兴起,传统单一项目会被按照业务规则进行垂直拆分,另外为了防止单点故障我们也会将重要的服务模块进行集群部署,通过负载均衡进行服务的调用。
  2. 那么随着节点的增多,各个服务的日志也会散落在各个服务器上。这对于我们进行日志分析带来了巨大的挑战,总不能一台一台的登录去下载日志吧。那么我们需要一种收集日志的工具将散落在各个服务器节点上的日志收集起来,进行统一的查询及管理统计。
  3. 那么ELK就可以做到这一点。

本文相关文件资料

  • 查看本站(CSDN)资源:微服务日志收集系统-ELK+Kafka相关安装文件,也可以在我的主页去搜
  • 下载地址:

Elasticsearch

  • Elastic Stack 成员
  • Lucene
  • Java

特性

  • 分布式实时全文搜索引擎
  • 分布式实时分析搜索引擎
  • 分布式实时大数据处理引擎

Logstash

  • Elastic Stack 成员
  • 是一个开源数据收集引擎,具有实时流水线功能
  • 数据处理管道
    • Input(采集)
    • Output(迁移JSON数据到ES服务器中)

在这里插入图片描述

Kibana

  • Elastic Stack 成员
  • 开源
  • 数据分析和可视化
    • 图形
    • 表格
  • Web端访问

在这里插入图片描述

ELK

在这里插入图片描述

ELK的缺点

单纯使用EIK实现分布式日志收集缺点:

  • 当产生日志的服务节点越来越多,Logstash也需要部署越来越多,扩展不好。
  • 读取IO文件,可能会产生日志丢失。
  • 读取文件不是实时性。

引入消息中间件

  • 当业务量增大时,日志跟着增多,直接传入会使LogStash压力过大,可能挂掉,所以需要增加一个缓冲区。
  • 日志数据解耦。为其他数据分析平台提供日志,可从Kafka中获取日志进行实时分析处理。
  • 引入Kafka,日志实时发布到Kafka,Logstash订阅并实时获取消息

ELK+Kafka

在这里插入图片描述

Kafka

  • 高吞吐、分布式消息系统
  • 消息中间件

概念

  • Producer:生产者
  • Consumer:消费者
  • Topic:主题
    在这里插入图片描述

ELK+Kafka环境搭建

1.将安装素材上传至服务器 cd /usr/local/soft

2.防止Elasticsearch因虚拟内存问题启动失败

  • 查看当前值: sysctl -a|grep vm.max_map_count
  • 修改配置文件:vim /etc/sysctl.conf
  • 设置虚拟内存:vm.max_map_count=262144
  • 从指定的文件加载系统参数:sysctl -p
  • 重启docker服务:systemctl restart docker

3.创建镜像li/centos7-elasticsearch

cd /usr/local/soft/Elasticsearch
docker build -t li/centos7-elasticsearch .

4.创建容器

docker run -d -p 9200:9200 -p 9300:9300 --restart=always --name env_elasticsearch  li/centos7-elasticsearch

5.验证Elasticsearch服务【先开放端口或关闭防火墙】

  • 访问http://宿主机IP:9200
    在这里插入图片描述

6.安装Kafka

修改资料中server.properties

advertised.listeners=PLAINTEXT://192.168.5.166:9092

创建镜像li/centos7-kafka

cd /usr/local/soft/Kafka
docker build -t li/centos7-kafka .

创建容器

docker run -d -p 9092:9092  --restart=always --name env_kafka  li/centos7-kafka

7.安装Logstash

修改资料中logstash.conf

bootstrap_servers => ["192.168.5.166:9092"]
hosts=> ["192.168.5.166:9200"]

修改资料中logstash.yml

xpack.monitoring.elasticsearch.url: http://192.168.5.166:9200

创建镜像

cd /usr/local/soft/Logstash
docker build -t li/centos7-logstash .

创建容器

docker run -d --restart=always --name env_logstash  li/centos7-logstash

在Logstash中定义收集规则

logstash.conf

input
  • bootstrap_servers:指向Kafka服务
  • group_id:可以自由指定
  • topics:数组形式,可以填写多个
  • type:可以自由指定
output
  • hosts:指向Elasticsearch服务地址,可以有多个,注意IP和端口和实际保持一致
  • index:表示在Elasticsearch中生成index的规则
  • user和password:Elasticsearch的用户名和密码

8.安装Kibana

修改资料中kibana.yml

elasticsearch.url: "http://192.168.5.166:9200"

创建镜像

cd /usr/local/soft/Kibana
docker build -t li/centos7-kibana .

创建容器

docker run -d -p 5601:5601  --restart=always --name env_kibana  li/centos7-kibana

验证Kibana

  • 访问http://宿主机IP:5601
    在这里插入图片描述

在项目中发送日志信息到Kafka

1.创建demo-kafka-client项目

2.添加依赖

在pom.xml中添加依赖

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

3.发送消息到Kafka

@RestController
public class KafkaController {
    @Resource
    private KafkaTemplate<String, String> kafkaTemplate;
    @RequestMapping(value = "/sendMsgToKafka")
    public String sendMsgToKafka() {
        for (int i = 1; i <=10; i++) {
            kafkaTemplate.send("elkservice", "elk", "hello,Kafka!--->" + i);
        }
        return "发送消息到Kafka完毕";
    }
}

代码分析

kafkaTemplate.send(“elkservice”, “elk", “hello,Kafka!—>” + i);

  • "elkservice":Kafka中的topic,读取消息时需要指定
  • "elk":key值,Kafka用key值确定value存放在哪个分区
  • "hello,Kafka!--->" + i:发送的具体数据

4.添加配置

  • application.yml

    spring:
     kafka:
      producer:
        bootstrap-servers: 192.168.5.210:9092 # Kafka服务地址,可以配置多个,以逗号分隔
    

5.启动服务

  • 调用sendMsgToKafka方法发送消息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/664263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编译安装PHP服务(LAMP3)

目录 1.初始化设置&#xff0c;将安装PHP所需软件包传到/opt目录下 &#xff08;1&#xff09;关闭防火墙 &#xff08;2&#xff09;上传软件包到/opt目录 2.安装GD库和GD库关联程序&#xff0c;用来处理和生成图片 3.配置软件模块 4.编译及安装 5.优化把PHP 的可执行程…

先导微型数控桌面式加工中心

随着数控技术、传感器技术、人工智能等技术的不断发展&#xff0c;制造业的快速发展和技术的不断进步&#xff0c;小型五轴加工中心的性能将不断提升&#xff0c;五轴联动技术作为解决异性复杂零件高效优质加工问题的重要手段&#xff0c;使其具有更广泛的应用前景。小型五轴加…

【康耐视国产案例】智能AI相机:深度解析DataMan 380大视野高速AI读码硬实力

随着读码器技术的不断更新迭代&#xff0c;大视野高速应用成为当前工业读码领域的关键发展方向。客户对大视野高速读码器的需求源于其能显著减少生产成本并提升工作效率。然而&#xff0c;大视野应用场景往往伴随着对多个条码的读取需求&#xff0c;这无疑增加了算法的处理负担…

Playwright 自动化操作

之前有见同事用过playwright进行浏览器模拟操作&#xff0c;但是没有仔细了解&#xff0c;今天去详细看了下&#xff0c;发现playwright着实比selenium牛逼多了 Playwright 相对于selenium优点 1、自动下载chromnium, 无需担心chrome升级对应版本问题&#xff1b; 2、支持录屏操…

突破 LST/LRT 赛道中心化困境,Puffer Finance 何以重塑以太坊再质押未来

纵观过去的 2023 年&#xff0c;LST 赛道竞争进入“白热化”状态。去中心化、DeFi 增强、全链化成为市场争夺关键词&#xff0c;诸多 LST 赛道老牌项目纷纷陷入“中心化矛盾”&#xff0c;指责对方在以太坊去中心化进程中的不利作为。 在这样的竞争情形下&#xff0c;以太坊联…

从Socket到WebSocket

前言 不知道大家在学习网络编程的时候都是怎样的一种方式&#xff0c;我谨以此文章来记录我自己从头开始学习C网络编程时的经历&#xff0c;中间有许多我自己的一些想法和思考。当然作为一个刚开始学习的新手来说&#xff0c;有些内容也许不那么正确&#xff0c;只是代表了我在…

flink 操作mongodb的例子

简述 该例子为从一个Collection获取数据然后插入到另外一个Collection中。 Flink的基本处理过程可以清晰地分为以下几个阶段&#xff1a; 数据源&#xff08;Source&#xff09;&#xff1a; Flink可以从多种数据源中读取数据&#xff0c;如Kafka、RabbitMQ、HDFS等。Flink会…

通过 CXCR4 靶向纳米线修补细胞表面以抑制癌症转移

引用信息 文 章&#xff1a;Cell surface patching via CXCR4-targeted nanothreads for cancer metastasis inhibition. 期 刊&#xff1a;Nature Communications&#xff08;影响因子&#xff1a;16.6&#xff09; 发表时间&#xff1a;2024/3/29 作 者&#xff1…

基于springboot实现大学生一体化服务平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现大学生一体化服务平台系统演示 摘要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统大学生综…

vivado 时序约束

时间限制 以下ISE设计套件时序约束可以表示为XDC时序约束 Vivado设计套件。每个约束描述都包含一个UCF示例和 等效的XDC示例。 在未直接连接到边界的网络上创建时钟时&#xff0c;UCF和XDC不同 的设计&#xff08;如端口&#xff09;。在XDC中&#xff0c;当在上定义带有create…

LwIP 之十 详解 TCP RAW 编程、示例、API 源码、数据流

我们最为熟知的网络通信程序接口应该是 Socket。LwIP 自然也提供了 Socket 编程接口,不过,LwIP 的 Socket 编程接口都是使用最底层的接口来实现的。我们这里要学习的 TCP RAW 编程则是指的直接使用 LwIP 的最底层 TCP 接口来直接实现应用层功能。这里先来一张图,对 LwIP 内部…

【JS重点知识02】栈、堆与数据类型 关系

一&#xff1a;栈堆空间分配区别&#xff1a; 1 栈&#xff1a;由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈&#xff1b; 简单数据类型存放在栈中 2 堆&#xff1a;存储复杂数据类型&#xff08;对象&#xff09;&#xff0c;…

C#知识|通用数据访问类SQLHelper的编写

哈喽,你好啊,我是雷工! 前面学习了C#操作SQLServer数据库数据的增删改查, 《C#知识|通过ADO.NET实现应用程序对数据库的增、删、改操作。》 其中实现的过程中有很多代码是重复的,此时作为高阶程序员为了使代码更优雅,避免重复, 从而要考虑代码的复用技术,针对此案例中代…

vscode 编程工具配置Java开发环境

vs code 开发环境配置。 环境准备&#xff1a; 1. 安装JDK/安装maven/安装vs code 首先安装好vs code 之后&#xff0c;需要安装 Extension Pack for Java 这么个插件 配置maven&#xff0c;进入setting&#xff0c; 3&#xff1a;配置 maven安装目录&#xff0c;4&#xff1a…

【机器学习】深入探索机器学习:利用机器学习探索股票价格预测的新路径

❀机器学习 &#x1f4d2;1. 引言&#x1f4d2;2. 多种机器学习算法的应用&#x1f4d2;3. 机器学习在股票价格预测中的应用现状&#x1f389;数据收集与预处理&#x1f389;模型构建与训练&#x1f308;模型评估与预测&#x1f31e;模型评估&#x1f319;模型预测⭐注意事项 &…

msvcp100.dll丢失怎样修复?几种快速有效修复msvcp100.dll丢失的方法

在使用电脑时是不是遇到过关于msvcp100.dll丢失文件丢失的情况&#xff1f;出现这样的情况有什么办法可以将丢失的msvcp100.dll文件快速恢复&#xff1f;今天的这篇文章就将教大家几种能够有效的解决msvcp100.dll丢失问题的方法。 方法一&#xff1a;重启电脑 重启电脑是一种简…

sqliteSQL基础

SQL基础 SQLite 数据库简介 SQLite 是一个开源的、 内嵌式的关系型数据库&#xff0c; 第一个版本诞生于 2000 年 5 月&#xff0c; 目前最高版本为 SQLite3。 下载地址&#xff1a; https://www.sqlite.org/download.html 菜鸟教程 : https://www.runoob.com/sqlite/sqlit…

项目VS运营

一、项目与运营的定义与区别 项目与运营是企业管理中的两个重要概念&#xff0c;尽管在实际运作中它们常被视为同义词&#xff0c;但它们之间存在明显的区别。 项目&#xff0c;指的是为达到特定目标&#xff0c;通过临时性、系统性、有计划的组织、协调、控制等系列活动&…

活动预告|6月13日Apache Flink Meetup·香港站

6 月 13 日 | 香港 | 线下 Apache Flink Meetup 的风吹到了香江之畔&#xff0c;Apache Flink 香港 Meetup 来啦&#xff01;本次活动&#xff0c;我们邀请了来自阿里云的顶尖专家&#xff0c;帮助开发者全面了解 Apache Flink 的流批一体的数据处理能力&#xff0c;流式数据湖…

第100+9步 ChatGPT文献复现:ARIMA预测百日咳

基于WIN10的64位系统演示 一、写在前面 我们来继续换一篇文章来学习学习&#xff1a; 《BMC Public Health》杂志的2022年一篇题目为《ARIMA and ARIMA-ERNN models for prediction of pertussis incidence in mainland China from 2004 to 2021》文章的模拟数据做案例。 这…