ELk日志分析系统搭建

article/2025/11/7 9:24:31

一、什么是ELK
​ ELK是Elasticsearch + Logstash + Kibana 这种架构的简写.

二、ELK常见的架构
Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。

Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。

Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如rabbitmq(集群化)) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。

下面如何搭建:


1.es 搭建

1.Create a file called elasticsearch.repo in the /etc/yum.repos.d/

[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

2.sudo yum install --enablerepo=elasticsearch elasticsearch

3.配置:vim /etc/elasticsearch/elasticsearch.yml  

path.data: /data/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearchnetwork.host: 0.0.0.0
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
http.port: 9200
xpack.security.enabled: false

4.修改同目录下:jvm.options 保证 -xms -xmx 保证是系统内存一半以下或者保证自己服务器合适大小

5.创建文件夹 并授权 如上的 pat.data=

   mkdir  /data/elasticsearch 

   chown -R elasticsearch:elasticsearch  /data/elasticsearch/

6.启动:

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.servicesudo systemctl start elasticsearch.service

2.官网下载  下载logstash (rabbitmq 中间件安装跳过自己百度搜索)

        1.选择自己的操作系统下载 进行解压  

         2.修改配置文件  conf/logstash-sample.conf   

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.input {#对接 filebeat  我们使用java 链接不用这个beats {port => 5044}#对接 tcptcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_lines}#对接rocketmqrabbitmq {host=>"localhost"                    vhost => "/"                     port=> 5672                             user=>"guest"                        password=>"guest"                    queue=>"station_Route"                          durable=> true                          codec=>json}
}output {elasticsearch {hosts => ["http://ip:9200"]index => "rabbitmq-%{+YYYY.MM.dd}"#user => "elastic"#password => "changeme"}
}

   3. 启动  logstash -f logstash.conf

3.安装 kibana 官网下载

  1.解压完成修改配置文件 conf/kibana.yml

i18n.locale: "zh-CN"
elasticsearch.hosts: ["http://localhost:9200"]
server.name: "test-kin"
server.port: 5601# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "0.0.0.0"

2.启动 

 nohup ./kibana --allow-root >/dev/null & 

3.注意防火墙 访问 地址

4.Spring boot 项目整合

 1.添加依赖

      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>2.5.5</version></dependency>

2.配置yml 

spring:application:name: testmvc:static-path-pattern: /**rabbitmq:host: localhostport: 5672username: guestpassword: guest

3.修改 logback-spring.xml 自定义一个logback拦截器 只有当使用Marker 再进行记录

/*** @author chenkang* @date 2022/5/19 13:24*/
public class LogStashFilter extends Filter<ILoggingEvent> {public final static Marker LOGSTASH = MarkerFactory.getMarker("logstash");@Overridepublic FilterReply decide(ILoggingEvent iLoggingEvent) {Marker marker = iLoggingEvent.getMarker();return Optional.ofNullable(marker).filter(m->m.equals(LOGSTASH)).map(m->FilterReply.ACCEPT).orElse(FilterReply.DENY);}
}
 <springProperty name="rabbitmqHost" source="spring.rabbitmq.host"/><springProperty name="rabbitmqPort" source="spring.rabbitmq.port"/><springProperty name="rabbitmqUsername" source="spring.rabbitmq.username"/><springProperty name="rabbitmqPassword" source="spring.rabbitmq.password"/><appender name="AMQP" class="org.springframework.amqp.rabbit.logback.AmqpAppender"><!--Layout(纯文本)而不是格式化的JSON --><filter class="com.chenkang.test.config.LogStashFilter" /><layout><pattern><![CDATA[%msg]]></pattern></layout><host>${rabbitmqHost}</host><port>${rabbitmqPort}</port><username>${rabbitmqUsername}</username><password>${rabbitmqPassword}</password><declareExchange>false</declareExchange><exchangeType>direct</exchangeType><exchangeName>exchanges.route</exchangeName><routingKeyPattern>route_exchange</routingKeyPattern><generateId>true</generateId><charset>UTF-8</charset><durable>false</durable><deliveryMode>NON_PERSISTENT</deliveryMode></appender>

最后是测试:

        Message message = new Message();message.setDeviceCode("code123");message.setDeviceName("deviceName3345");message.setIndex("1024");log.info(LogStashFilter.LOGSTASH,JSON.toJSONString(message));log.info(JSON.toJSONString(message));

输出日志就会推送rabbitmq  订阅 然后  logstash 消费  存储到 es 

KIbana 查询数据 自己本地实测 每秒 1-2 千没啥问题 但是10000 时候就崩掉了 logstash 假死


http://chatgpt.dhexx.cn/article/mVUuSY9s.shtml

相关文章

Linux 基础命令入门 创建文件

Linux 基础命令入门 创建文件 实操 从当前目录下切换到根目录下 su 或者 su root创建yibodong命名的文件夹 创建文件夹并查看列表 mkdir yibodong显示当前路径 pwd在yibodong命名的文件夹下创建一个文件YBD mkdir -p yibodong/YBD创建该文件的软连接 ln -s yibodong/YBD…

Linux之shell命令

1、shell入门 在计算机科学中,shell就是一个命令解释器。 shell是位于操作系统和应用程序之间,是他们二者最主要的接口。 shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序。 一句话,shell就是在操作系统和应用程序之间的一个命…

Linux 基础命令入门 man

Linux 基础命令入门 man 1、使用man命令查看find命令的用法 输入Man&#xff0c;系统会提示您需要什么册页&#xff1f; man输入Man find &#xff08;下图只是一部分&#xff09; man find按下CtrlZ退出 2、创建以2017开头的多个文件 touch 20179999.txt 20171111.txt 2…

Linux之ping命令

【Linux常用命令速查手册】关注【入门小站】&#xff0c;后台回复 「1001」 自取。 ping命令是用于排除故障&#xff0c;测试和诊断网络连接问题的最常用的命令之一。 Ping通过将一个或多个ICMP&#xff08;Internet控制消息协议&#xff09;Echo请求包发送到指定目标IP并等待回…

Linux命令学习教程【建议收藏】

大家好&#xff0c;我是辣条。 目录 一、操作系统 二、虚拟机软件 三、Ubuntu操作系统 四、Linux内核及发行版 五、查看目录命令 六、切换目录命令 七、绝对路径和相对路径 八、创建、删除文件及目录命令 九、复制、移动文件及目录命令 十、终端命令格式的组成 十…

Linux 命令完全手册

这本《Linux 命令完全手册》将涵盖你作为开发者需要用到的 60 个核心 Bash 命令。每个命令都附有代码示例和用法提示。 这本手册遵循二八定律&#xff1a;你花两成的时间学习一个主题&#xff0c;便可获得其中八成的知识。 我觉得这种方式能给你一个全面的概述。 这本手册并…

Linux新手入门教程

下面给你讲解新手第一次接触Linux操作系统 一、学习Linux&#xff1a;1、Linux系统、Linux命令、ssh、websever(apache)、MySQL、缓存、PHP、Python、java、必备服务 2、Linux能做什么&#xff1a;企业服务器、嵌入式开发 3、Linux的学习方法(强迫自己一个学习环境)&#xff…

linux怎样打开终端命令,Linux命令-初学者入门之打开终端

打开终端 在Ubuntu 18.04系统上,您可以通过单击屏幕左上方的“ 活动”项,然后键入“terminal”, “command”, “prompt” or “shell”的前几个字母来找到终端的启动器。是的,开发人员已经为启动器设置了所有最常见的同义词,因此您应该不会有任何问题。 其他版本的Linux或…

阿里云送你Hands-on Labs X linux联名T恤——阿里云高校计划《Linux命令入门》训练营

阿里云送你Hands-on Labs X linux联名T恤——阿里云高校计划《Linux命令入门》训练营 准备工作进行实验进入考试领取T恤附:考题附:T恤网图阿里云高校计划《Linux命令入门》训练营,学习Linux命令,搭建云上博客,学完领阿里云爆款T恤。每天零点发布T恤500件,6月20前有效。活…

linux常用命令大全,入门基础版

目录 一、常用的基本命令 1.目录管理 2.进程管理 3.修改文件属性 4.文件内容查看 5.安装软件 6.Vim编辑器 7.基本属性 8.账号管理 9.用户组管理 10.磁盘管理 二、Linux 目录结构 一、常用的基本命令 1.目录管理 ls: #列出目录-a: #参数: all ,查看全部的文件,包…

Linux基本命令

目录 1、Linux的目录结构 Linux路径的描述方式 2、Linux命令入门 Linux命令基础格式 ls命令 隐藏文件、文件夹&#xff1a; pwd命令 cd命令 HOME目录 相对路径、绝对路径 特殊路径符 mkdir命令&#xff08;常见文件&#xff09; touch命令&#xff08;创建文件夹&am…

常用的Linux命令(小白入门指南)

下面为大家整理一些常用的linux命令 文章目录 linux命令一.文件与目录操作命令1.clear(ctrll)2.ls(list)/tree3.cd(change directory)4.touch5.mkdir(make directory)6.cp(copy)7.mv(move)8.cat9.tar10.rm(remove)11.find12.Senior command(组合命令) 二.用户权限操作命令1.查看…

linux Shell入门

一、初始shell &#xff08;1&#xff09;什么是shell&#xff1f; &#xff08;2&#xff09;什么是变量&#xff1f; &#xff08;3&#xff09;程序和进程的区别&#xff1f; 二、语言 &#xff08;1&#xff09;计算能理解的语言是什么呢 &#xff1f; &#xff08;2…

linux常用vim命令大全,Linux基础入门 vim常用命令详解

介绍 vim是一个文本编辑程序 没有菜单,只有命令,且命令繁多 命令行模式下相关命令 1. 移动光标 h: ← 左移 ​ l: → 右移 ​ j: ↓ 下移 ​ k: ↑ 上移 ​ gg: 光标移动文件开头 ​ G: 光标移动到文件末尾 ​ 0: 光标移动到行首 ​ $: 光标移动到行尾 ​ 123G:跳转到第123行…

Linux常用命令

🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 ,专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于,Java基础教程系列,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、…

linux入门命令总结

1.登录&#xff1a; Login: root(管理员名) Password&#xff1a;linux的密码 2.关机、注销、重启&#xff08;关机&#xff1a;halt &#xff0c;shutdown, init 0,poweroff&#xff09;         &#xff08;重启&#xff1a;halt &#xff0c;shutdown, init 0,…

linux命令入门

这一系列的Linux入门都是本人在《鸟哥的Linux私房菜》的基础上总结的基本内容&#xff0c;主要是记录下自己的学习过程&#xff0c;也方便大家简要的了解 Linux Distribution是Ubuntu而不是书本上推荐的CentOS&#xff0c;建议装双系统&#xff0c;不要使用虚拟机。 代码在gi…

Linux 入门常见命令大全-初学者必看

本文是我在学习linux过程学习到的相关基本命令行。 1.目录相关 ls 查看文件列表 ls –a 查看所有文件其中包括隐藏文件 ls -l 查看本目录文件的信息 ls -lh 文件列表里面的以人以懂的方式呈现。 pwd 查看当前目录的路径 cd 更改路径可以分为两种 1.相对路径&#xff…

【linux操作系统】基础指令(入门必备)

目录 ls指令 &#x1f3a8;基本概念 &#x1f3af;实例分析 pwd指令 &#x1f3a8;基本概念 &#x1f3af;实例分析 cd指令 &#x1f3a8;基本概念 &#x1f3af;实例分析 touch指令 &#x1f3a8;基本概念 &#x1f3af;实例分析 mkdir指令(重要) &#x1f3a8…

linux常用命令(入门)

linux常用命令&#xff08;入门&#xff09; 一、命令行操作体验 在 linux 中&#xff0c;最最重要的就是命令&#xff0c;这就包含了 2 个过程&#xff0c;输入和输出 输入&#xff1a;输入当然就是打开终端&#xff0c;然后按键盘输入&#xff0c;然后按回车&#xff0c;输…