ELK介绍

news2024/11/26 19:22:06

一、前言

前面的章节我们介绍通过ES Client将数据同步到ElasticSearch中,但是像日志这种数据没有必要自己写代码同步到ES那样会折腾死,直接采用ELK方案就好,ELK是Elasticsearch、Logstash、Kibana三款开源软件的缩写,ELK主要用于收集多台服务器日志统一整合后提供给用户。E和K前面都有介绍,L即Logstash它可以从各种数据源收集数据,并对数据进行过滤、分析和统一格式并将输出结果存储到指定位置。

二、Logstash工作原理介绍

图片来源于网络。

Logstash事件处理分为三个阶段

1、输入
使用输入将数据导入logstash,常见的输入file、syslog、redis、beats。

2、过滤器
过滤器是logstash管道的中间处理设备,一些常见有用过滤器:
grok:解析和构造任意文本。Grok是非结构化日志解析为结构化日志最佳方式。
mutate:对字段进行一般转换,可以重命令、删除、替换和修改事件中字段。

3、输出
一个事件可以有多个输出,一些常见的输出:elasticsearch、file、graphite。

四、ELK几种架构

1、各节点部署Logstash

Logstash部署于各节点,收集日志、数据、经过分析过滤后发送给远端ES.

优点是架构简单,缺点是Logstash比较占资源,并且当Logstash故障时数据会丢失,这种加构用来收集系统日志没什么问题,但用于同步业务数据肯定是不行的。

2、增加消息队列

在各节点部署Logstash Agent将日志数据收集然后发送给Kafka,Kafka再将数据传给Logstash进行过滤后发送给ES。引入消息队列,即使Logstash故障,数据也不会丢失。

3、Beats

收集端由logstash换成更轻量级的Beats,Beats有各种收集器,比如FileBeats(日志文件收集)、PacketBeats(网络数据包收集)等。

三、一个简单的ELK搭建例子

1、ES安装配置

下载地址:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.2-linux-x86_64.tar.gz
解压后修改elasticsearch.yml,将xpack这些都设置为false,不然可能会报错。然后
./elasticsearch -d启动即可。
jvm.options 调整参数设置,不然机器搞崩掉了 -Xms512m -Xmx512m。

访问http://121.36.200.208:9200/有返回JSON,即说明安装正常。

2、Logstash安装配置

下载地址:

https://artifacts.elastic.co/downloads/logstash/logstash-8.5.2-linux-x86_64.tar.gz
解压后,执行./logstash -e 'input { stdin { } } output { stdout {} }', 在控制台输入字符,如果输出JSON表示安装成功。
config/jvm.options   JVM参数调整一下 -Xms512m  -Xmx512m
编写logstash配置文件 logstash-test.conf,配置从4560端口接收数据,然后输出到ES。

启动 ./bin/logstash -f ./config/logstash-test.conf

3、Kibana安装配置

下载地址 
https://artifacts.elastic.co/downloads/kibana/kibana-8.5.2-linux-x86_64.tar.gz
解压安装,kibana.yml  修改 server.host: "0.0.0.0" 允许远程访问。
./kibana启动
http://121.36.200.208:5601/  即可以打开kibana控制台

4、SpringBoot项目

快速搭建一个SpringBoot项目,logback-spring.xml配置如下

配置一个LogstashTcpSocketAppender,指定输出目标为4560端口。

代码中增加以slf4j日志输出

5、查看效果

请求 http://121.36.200.208:8080/testLogstash?billsCode=1

然后在Kibana上索引就可以查看到索引文件如下。

Kibana配置Data View

最后进入Discover,可以快速根据关键词搜索日志内容了。

最后我们再也不用到每台服务器上用grep命令去查日志了,用了ELK确实方便了很多。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教学类-39】A4红纸-国旗灯笼(庆祝中华人民共和国成立74周年)

作品展示: 背景需求: 从教十余年,我在每年国庆都带领中大班孩子们制作与“国旗相关”国庆庆祝物品——国旗、礼盒 一、国旗(吸管、A4红纸、黄纸打印五角星) 二、铅画纸手提袋(8K铅画纸、A4红纸、黄色打印…

凉鞋的 Godot 笔记 102. 场景与节点的增删改查

在上一篇,我们完成了 Godot 引擎的 Hello World 输出,并且完成了第一个基本循环: 通过这次基本循环的完成,我们获得了一点点的 Godot 使用经验,这非常重要。 有实践经验后再去补充理论 和 先学习理论后去实践相比,前者…

GitHub上有助于开发微信小程序的仓库

2023年9月30日,周六晚上 最近帮同学在GitHub找了一些开发小程序会用到的东西 目录 UI库WePY框架基于WePY框架的Demo微信小程序开发资源汇总 UI库 GitHub - Tencent/weui-wxss: A UI library by WeChat official design team, includes the most useful widgets/m…

LOD1.3快速构建 | 多源数据自动化作业、图元和体块模型快速编辑、智能纹理贴图...

2023年,自然资源部先后发布了《实景三维中国建设总体实施方案(2023—2025年)》、《实景三维中国建设城市三维模型快速构建技术规定(征求意见稿)》等文件,明确提出,2024年底完成城市三维模型&…

httpserver 下载服务器demo

实现效果如下&#xff1a; 图片可以直接显示 cpp h 这些可以直接显示 其他的 则是提示是否要下载 单线程 还有bug 代码如下 先放上来 #include "httpserver.h" #include "stdio.h" #include <stdlib.h> #include <arpa/inet.h> #include…

哈希表hash_table

一个人为什么要努力&#xff1f; 我见过最好的答案就是&#xff1a;因为我喜欢的东西都很贵&#xff0c;我想去的地方都很远&#xff0c;我爱的人超完美。文章目录 哈希表的引出unordered系列的关联式容器 底层结构哈希的概念 开放寻址法拉链法&#xff08;哈希桶&#xff09;拉…

【C++进阶】:C++11

C11 一.统一列表的初始化1.{}初始化2.initializer_list 二.声明1.decltype2.nullptr 三.右值引用和移动语义1.左值和右值1.转义语句2.完美转发 四.可变参数模板1.基本概念2.STL里emplace类接口 五.lambda表达式六.新的类功能 一.统一列表的初始化 1.{}初始化 在C98中&#xf…

CSS文本属性和Emmet语法

CSS文本属性 有预定的颜色值 red,green,blue 十六进制 #ff00000,#FF5500 ,#29D794 RGB代码 rgb(255,0,0)或rgb(100%,0%,0%) <head> <style>p {text-align: right;//让字体向右移动text-decoration: normal;}a {text-decoration: none;//去掉连接的下划线color: …

beego---ORM相关操作

Beego框架是go语言开发的web框架。 **那什么是框架呢&#xff1f;**就是别人写好的代码&#xff0c;我们可以直接使用&#xff01;这个代码是专门针对某一个开发方向定制的&#xff0c;例如&#xff1a;我们要做一个网站&#xff0c;利用 beego 框架就能非常快的完成网站的开发…

【随笔记】C++ condition_variable 陷阱

问题说明 通过 std::condition_variable 来实现超时等待&#xff0c;会受到系统时间变化的影响&#xff0c;系统时间倒退修改就会导致延后唤醒&#xff0c;系统时间提前将会导致提前被唤醒&#xff0c;返回结果仍为超时。 这种问题只有在系统时间发生变化的时候才会出现&…

MyBatisPlus(七)等值查询

等值查询 条件查询&#xff1a;使用 Wrapper 对象&#xff0c;传递查询条件。 QueryWrapper&#xff08;不要使用&#xff09; 代码 Testvoid eq() {QueryWrapper<User> wrapper new QueryWrapper<>();wrapper.eq("name", "张三");List<…

装饰器模式详解和实现(设计模式 二)

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你动态地将对象添加到现有对象中&#xff0c;以提供额外的功能&#xff0c;同时又不影响其他对象。 实现示例 1.定义一个接口或抽象类&#xff0c;表示被装饰对象的公共接口 //抽…

CSS 滚动驱动动画 view-timeline-inset

view-timeline-inset 语法例子&#x1f330; 正 scroll-padding 为正正的 length正的 percentage 负 scroll-padding 为负负的 length负的 percentage 兼容性 view-timeline-inset 在使用 view() 时说过, 元素在滚动容器的可见性推动了 view progress timeline 的进展. 默认…

数据结构—快速排序(续)

引言&#xff1a;在上一篇中我们详细介绍了快速排序和改进&#xff0c;并给出了其中的一种实现方式-挖坑法 但其实快速排序有多种实现方式&#xff0c;这篇文章再来介绍其中的另外两种-左右指针法和前后指针法。有了上一篇挖坑法的启示&#xff0c;下面的两种实现会容易许多。 …

面试记录_

1&#xff1a;面试杉岩数据&#xff08;python开发&#xff09; 1.1.1 选择题 for(int i0;i<n;i){for(int j0;j<n;jji) } }O(n) * (O(0) O(n/1) O(n/2) O(n/3) ... O(n/n)) 在最坏情况下&#xff0c;内部循环的迭代次数为 n/1 n/2 n/3 ... n/n&#xff0c;这是…

电脑找不到vcruntime140_1.dll丢失的解决方法-一键修复教程

vcruntime140_1.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C Redistributable的一部分。这个库文件包含了一些运行时函数&#xff0c;用于支持各种软件程序的正常运行。当一个程序需要调用这些函数时&#xff0c;它会通过加载vcruntime140_1.dll文件来实现。因…

MySQL基础进阶

文章目录 MySQL基础进阶 约束 \color{red}{约束} 约束约束的概念和分类约束的概念约束的分类 非空约束概念语法 唯一约束概念语法 主键约束概念语法 数据库设计 \color{red}{数据库设计} 数据库设计软件的研发步骤数据库设计概念数据库设计的步骤表关系一对一一对多&#xff08…

Vue3父子组件数据传递

getCurrentInstance方法 Vue2中&#xff0c;可以通过this来获取当前组件实例&#xff1b; Vue3中&#xff0c;在setup中无法通过this获取组件实例&#xff0c;console.log(this)打印出来的值是undefined。 在Vue3中&#xff0c;getCurrentInstance()可以用来获取当前组件实例…

el-menu 导航栏学习(1)

最简单的导航栏学习跳转实例效果&#xff1a; &#xff08;1&#xff09;index.js路由配置&#xff1a; import Vue from vue import Router from vue-router import NavMenuDemo from /components/NavMenuDemo import test1 from /components/test1 import test2 from /c…

1200*B. Sorted Adjacent Differences(构造)

Problem - 1339B - Codeforces 解析&#xff1a; 题目要求每相邻两个值差的绝对值相等或递增。 先排序&#xff0c;可以想到我们先取两侧的数肯定相距最远&#xff0c;然后靠中心每次取两个数&#xff0c;这样符合题目要求。 直接遍历&#xff0c;先取的是答案靠后的数据&…