【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 {@Resourceprivate 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方法发送消息

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型备案项目补贴政策一览【保持更新】

大模型项目、AI类项目、大模型备案通过后等一篮子财政补贴政策 上海市 加快创新体系构建 1. 提升自主创新水平&#xff1a;对引领大模型发展或取得颠覆性突破的项目&#xff0c;最高给予1000万元补贴支持。 2. 加强算力资源保障&#xff1a;实施算力伙伴计划&#xff0c;对…

学生信息管理系统C++

设计目的 使学生进一步理解和掌握课堂上所学的面向对象C编程知识&#xff0c;巩固和加深学生对C面向对象课程的基本知识的理解和掌握。掌握C面向对象编程和程序调试的基本技能&#xff0c;学会利用C语言进行基本的软件设计&#xff0c;着重提高运用C面向对象语言解决实际问题的…

kali系统baopoWiFi密码

kali系统baopoWiFi密码,仅供学习 取决强大的密码字典,如果别人密码设置的足够安全,也无法破解成功,并不是100%破解 一、准备一个无线网卡&#xff0c;需要免驱动&#xff0c;最好知道频率2.4HGZ还是5.0GHZ 二、插上USB接口&#xff0c;vmware模拟器选择连接虚拟机 三、输入命…

超强算力 Orange Pi Kunpeng Pro 开发板基础测评与体验

目录 开箱体验资源简介系统启动连接网络登录系统通过桌面登录通过串口登录通过 SSH 登录配置散热风扇 算力测试MNIST示例MBNET示例 体验总结 大家好&#xff0c;我是 Hello 阿尔法&#xff0c;有幸接到 CSDN 的邀请参与 Orange Pi Kunpeng Pro 开发板的测评活动&#xff0c;本文…

基于数据驱动的自适应性小波构造(MATLAB)

以地震领域为例&#xff0c;时频变换能够刻画地震资料的时频特征&#xff0c;进而辅助地质构造解释。在各种时频分析工具中&#xff0c;连续小波变换CWT是描述地震资料时频特征的常用工具。选择合适的基小波是CWT的关键问题。对于不同类型的信号前人有针对性的设计了许多基小波…

基于单片机的超声波倒车雷达设计

摘 要&#xff1a;文 章设计了一种基于单片机的超声波倒车雷达系统&#xff0c;以 AT89C51 型单片机作为控制核心&#xff0c;集距离测量、显示&#xff0c;方位显示和危险报警于一体&#xff0c;以提高驾驶者在倒车泊车时的安全性和舒适性。本设计采用 Keil 软件对系统程序…

Linux开发工具(个人使用)

Linux开发工具 1.Linux yum软件包管理器1.1Linux安装程序有三种方式1.2注意事项1.3如何查看&#xff0c;安装&#xff0c;卸载软件包1.3.1查看软件包1.3.2安装软件包1.3.3卸载软件 2.Linux vim编辑器2.1vim的基本操作2.2vim正常模式命令集2.3vim底行模式命令集2.4vim配置 3.Lin…

就凭这张图,下订华为享界S9

文 | Auto芯球 作者 | 雷慢 冲啦&#xff01;就在刚刚&#xff0c; 我们团队下订了一辆享界S9&#xff0c; 还琢磨买奔驰S级&#xff0c;宝马7系和奥迪A8的老板们&#xff0c; 是应该试试享界S9了&#xff0c; 至少先占个坑&#xff0c;8月底S9上市当天&#xff0c; 可以…

微型导轨在自动化制造中有哪些优势?

微型导轨在自动化制造中发挥重要作用&#xff0c;能够满足自动化设备制造中对精度要求较高的工艺环节。适用于自动装配线、自动检测设备和机器人操作等环节&#xff0c;推动了行业的进步与发展。那么&#xff0c;微型导轨在使用中有哪些优势呢&#xff1f; 1、精度高和稳定性强…

FPGA DMA IP核使用指南

摘要 本文旨在介绍FPGA中DMA(Direct Memory Access)IP核的使用,包括其基本框架、测试代码编写以及仿真波形的分析。DMA是一种允许外围设备直接与内存进行数据交换的技术,无需CPU的介入,从而提高了数据传输的效率。 1. 引言 在现代FPGA设计中,DMA IP核因其…

android睡眠分期图

一、效果图 做医疗类项目&#xff0c;经常会遇到做各种图表&#xff0c;本文做的睡眠分期图。 二、代码 引入用到的库 api joda-time:joda-time:2.10.1 调用代码 /*** 睡眠* 分期*/private SleepChartAdapter mAdapter;private SleepChartAttrs mAttrs;private List<SleepI…

C基础-标准库上

下:http://t.csdnimg.cn/LXa0J C 标准库是一组 C 内置函数、常量和头文件&#xff0c;比如 <stdio.h>、<stdlib.h>、<math.h>&#xff0c;等等。 目录 一. assert.h 二. ctype.h 三. errno.h 四. float.h 五.limits.h 六. locale.h 一. assert.h 源码…

基于梯度提升树回归模型的房地产价格估计

目录 1. 作者介绍2. 梯度提升树回归算法介绍2.1 算法原理2.2 算法讲解与分析 3. 实验过程3.1 数据集介绍3.2 代码介绍3.3 完整代码实现3.4 测试结果 参考文献 1. 作者介绍 雷强&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2023级研究生 研究方向&#xff…

论文精读--Swin Transformer

想让ViT像CNN一样分成几个block&#xff0c;做层级式的特征提取&#xff0c;从而使提取出的特征有多尺度的概念 Abstract This paper presents a new vision Transformer, called Swin Transformer, that capably serves as a general-purpose backbone for computer vision. …

对人脸图像进行性别和年龄的判断

判断性别和年龄 导入必要的库加载预训练的人脸检测模型加载预训练的性别和年龄识别模型定义性别和年龄的标签列表创建Tkinter窗口&#xff1a;定义选择图片的函数&#xff1a;创建一个按钮&#xff0c;用于打开文件选择对话框定义显示图片的函数创建预测性别和年龄的函数创建预…

vue2 bug求助!!!(未解决,大概是浏览器缓存的问题或者是路由的问题)

我的vue2项目出现了一个超级恶心的bug 过程&#xff1a; 1 操作流程&#xff1a;页面a点击a标签->到页面b->页面b用户退出刷新页面->点击浏览器的返回按钮返回上一页 2 结果&#xff1a;返回页面后页面没有刷新导致用户名还显示着&#xff0c;页面没有发生任何变化&a…

基于Pytorch框架的深度学习ShufflenetV2神经网络十七种猴子动物识别分类系统源码

第一步&#xff1a;准备数据 17种猴子动物数据&#xff1a; self.class_indict ["白头卷尾猴", "弥猴", "山魈", "松鼠猴", "叶猴", "银色绒猴", "印度乌叶猴", "疣猴", "侏绒"…

​研学活动方案模板,详细制作步骤!​

研学活动&#xff0c;作为教育实践的重要组成部分&#xff0c;为我们的学生提供了一个广阔的学习平台。在这个平台上&#xff0c;学生们能够将书本上的知识与现实世界紧密联系起来&#xff0c;通过实践探索来培养能力。但对于咱们老师来说&#xff0c;学校组织研学活动要考虑到…

“雪糕刺客”爆改“红薯刺客”,钟薛高给了消费品牌哪些启示?

夏日袭来&#xff0c;一支价格高昂却让人眼前一亮的雪糕&#xff0c;曾一度成为市场热议的焦点。然而&#xff0c;随着消费者对性价比的日益关注&#xff0c;曾经的“雪糕刺客”钟薛高&#xff0c;其创始人林盛近期以直播带货红薯开启他的还债之路&#xff0c;高打情怀“直播自…

STM32学习和实践笔记(33):待机唤醒实验

1.STM32待机模式介绍 很多单片机具有低功耗模式&#xff0c;比如MSP430、STM8L等&#xff0c;我们的STM32也不例外。默认情况下&#xff0c;系统复位或上电复位后&#xff0c;微控制器进入运行模式。在运行模式下&#xff0c;HCLK 为CPU提供时钟&#xff0c;并执行程序代码。这…