当前位置: 首页 > news >正文

【ELK日志收集系统】

目录

一、概述

1.作用

2.为什么使用?

二、组件

1.elasticsearch

1.1 作用

1.2 特点

2.logstash

2.1 作用

2.2 工作过程

2.3 INPUT

2.4 FILETER

2.5 OUTPUTS

3.kibana

三、架构类型

1.ELK

2.ELKK

3.ELFK

4.ELFKK

四、案例 - 构建ELK集群

1.环境配置

2.安装node1与node2节点的elasticsearch

2.1 安装

2.2 配置

2.3 启动elasticsearch服务

2.4 查看节点信息

3.在node1安装elasticsearch-head插件

3.1 安装node

3.2 拷贝命令

3.3 安装elasticsearch-head

3.4 修改elasticsearch配置文件

3.5 启动elasticsearch-head

3.6 访问

3.7 在node1的终端中输入:

4.node1服务器安装logstash

5.ogstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

​编辑

6.node1节点安装kibana

7.企业案例


一、概述

ELK由三个组件构成

1.作用

  • 日志收集
  • 日志分析
  • 日志可视化

2.为什么使用?

  • 日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。
  • 如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。

二、组件

1.elasticsearch

1.1 作用

  • 日志分析
  • 开源的日志收集、分析、存储程序

1.2 特点

  • 分布式
  • 零配置
  • 自动发现
  • 索引自动分片
  • 索引副本机制
  • Restful风格接口
  • 多数据源
  • 自动搜索负载

2.logstash

2.1 作用

  • 日志收集
  • 搜集、分析、过滤日志的工具

2.2 工作过程

  • 一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去
  • Inputs → Filters → Outputs
  • 输入-->过滤-->输出

2.3 INPUT

  • File:从文件系统的文件中读取,类似于tail -f命令
  • Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
  • Redis:从redis service中读取
  • Beats:从filebeat中读取

2.4 FILETER

  • Grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。
  • 官方提供的grok表达式:logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub
  • Grok在线调试:Grok Debugger
  • Mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。
  • Drop:丢弃一部分Events不进行处理。
  • Clone:拷贝Event,这个过程中也可以添加或移除字段。
  • Geoip:添加地理信息(为前台kibana图形化展示使用)

2.5 OUTPUTS

  • Elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。
  • File:将Event数据保存到文件中。
  • Graphite:将Event数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。

3.kibana

  • 日志可视化
  • 为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。

三、架构类型

1.ELK

es
logstash
kibana

2.ELKK

es
logstash
kafka
kibana

3.ELFK

es
logstash        重量级、占用系统资源较多
filebeat          轻量级、占用系统资源较少
kibana

4.ELFKK

es
logstash
filebeat
kafka
kibana

四、案例 - 构建ELK集群

1.环境配置

设置各个主机的IP地址为拓扑中的静态IP,在两个节点中修改主机名为node1和node2并设置hosts文件

node1:

hostnamectl set-hostname node1

bash

vim /etc/hosts

192.168.42.3  node1

192.168.42.4  node2

node2:

hostnamectl set-hostname node2

bash

vim /etc/hosts

192.168.42.3  node1

192.168.42.4  node2

        

2.安装node1与node2节点的elasticsearch

2.1 安装

  mv elk-apppack elk

  cd elk

rpm -ivh elasticsearch-5.5.0.rpm

2.2 配置

node1:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster  //集群名称   

node.name:node1 //节点名字

path.data:/var/lib/elasticsearch  //数据存放路径

path.logs: /var/log/elasticsearch/  //日志存放路径

bootstrap.memory_lock:false //在启动的时候不锁定内存

network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

node2:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster  //集群名称   

node.name:node2 //节点名字

path.data:/var/lib/elasticsearch  //数据存放路径

path.logs: /var/log/elasticsearch/  //日志存放路径

bootstrap.memory_lock:false //在启动的时候不锁定内存

network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

2.3 启动elasticsearch服务

node1和node2

systemctl start elasticsearch

2.4 查看节点信息

  http://192.168.42.3:9200

http://192.168.42.4:9200

3.在node1安装elasticsearch-head插件

3.1 安装node

cd elk

ls

tar xf node-v8.2.1.tar.gz

cd node-v8.2.1

./configure && make && make install

3.2 拷贝命令

tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2

cd phantomjs-2.1.1-linux-x86_64/bin

cp phantomjs  /usr/local/bin

3.3 安装elasticsearch-head

cd elk

tar xf elasticsearch-head.tar.gz

cd elasticsearch-head

npm install

3.4 修改elasticsearch配置文件

vim /etc/elasticsearch/elasticsearch.yml

 # Require explicit names when deleting indices:

#

#action.destructive_requires_name:true

http.cors.enabled: true  //开启跨域访问支持,默认为false

http.cors.allow-origin:"*"  //跨域访问允许的域名地址

重启服务: systemctl restart elasticsearch

3.5 启动elasticsearch-head

cd /root/elk/elasticsearch-head

npm run start &

查看监听: netstat -anput | grep :9100

3.6 访问

http://192.168.42.3:9100

3.7 在node1的终端中输入:

curl  -XPUT  'localhost:9200/index-demo/test/1?pretty&pretty' -H  'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

刷新浏览器可以看到对应信息即可

4.node1服务器安装logstash

cd elk

rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service

In -s /usr/share/logstash/bin/logstash  /usr/local/bin/

测试1: 标准输入与输出

logstash -e 'input{ stdin{} }output { stdout{} }'

测试2: 使用rubydebug解码

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'

测试3:输出到elasticsearch

logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.42.3:9200"]} }'

  查看结果:

http://192.168.42.3:9100

5.ogstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。标准的配置文件格式如下:

input (...)  输入

filter {...}   过滤

output {...}  输出

在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

input {

file{path =>"/var/log/messages" type =>"syslog"}

file { path =>"/var/log/apache/access.log"  type =>"apache"}

}

通过logstash收集系统信息日志

chmod o+r /var/log/messages

vim /etc/logstash/conf.d/system.conf

input {

file{

path =>"/var/log/messages"

type => "system"

start_position => "beginning"

}

}

output {

elasticsearch{

hosts =>["192.168.42.1:9200"]

index => "system-%{+YYYY.MM.dd}"

}

}

重启日志服务: systemctl restart logstash

查看日志: http://192.168.42.3:9100

6.node1节点安装kibana

cd elk

rpm -ivh kibana-5.5.1-x86_64.rpm

配置kibana

vim /etc/kibana/kibana.yml

server.port:5601  //Kibana打开的端口

server.host:"0.0.0.0" //Kibana侦听的地址

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

//和Elasticsearch 建立连接

kibana.index:".kibana"  //在Elasticsearch中添加.kibana索引

启动kibana

systemctl start kibana

访问kibana :

http://192.168.42.3:5601

首次访问需要添加索引,我们添加前面已经添加过的索引:system-*

7.企业案例

收集httpd访问日志信息

在httpd服务器上安装logstash,参数上述安装过程,可以不进行测试

logstash在httpd服务器上作为agent(代理),不需要启动

编写httpd日志收集配置文件

vim /etc/logstash/conf.d/httpd.conf

input {

file{

path=>"/var/log/httpd/access_log" //收集Apache访问日志

type => "access" //类型指定为 access

start_position => "beginning" //从开始处收集

}

output{

elasticsearch {

hosts =>["192.168.42.3:9200"] // elasticsearch 监听地址及端口

index =>"httpd_access-%{+YYYY.MM.dd}" //指定索引格式

}

}

使用logstash命令导入配置:

logstash -f /etc/logstash/conf.d/httpd.conf

使用kibana查看即可! http://192.168.42.3:5601   查看时在mangement选项卡创建索引httpd_access-*  即可!

相关文章:

【ELK日志收集系统】

目录 一、概述 1.作用 2.为什么使用? 二、组件 1.elasticsearch 1.1 作用 1.2 特点 2.logstash 2.1 作用 2.2 工作过程 2.3 INPUT 2.4 FILETER 2.5 OUTPUTS 3.kibana 三、架构类型 1.ELK 2.ELKK 3.ELFK 4.ELFKK 四、案例 - 构建ELK集群 1.环境…...

Java项目中实现信号的连续接收

系列文章目录 文章目录 系列文章目录前言一、监听信号二、信号处理逻辑三、停止信号监听总结 前言 在Java项目中,信号的连续接收是一项重要的任务,特别是在处理异步事件或者需要对外部事件做出响应时。本篇博客将介绍如何在Java项目中实现信号的连续接收…...

vue权限管理——按钮控制

1.按钮根据后端返回数据决定展示与否 根据right中的数据对应增删改查按钮 const menuList [{id: 1, path:/uploadSpec,authName: "上传spec", icon: User, children:[], rights:[view,add,edit,delete]},{id: 2, path:/showSpec, authName: "Spec预览",…...

jvm的内存区域

JVM 内存分为线程私有区和线程共享区,其中方法区和堆是线程共享区,虚拟机栈、本地方法栈和程序计数器是线程隔离的数据区。 1)程序计数器 程序计数器(Program Counter Register)也被称为 PC 寄存器,是一块…...

即时通讯开发中的性能优化技巧

即时通讯开发在如今的数字化社会中扮演着重要角色,然而,随着用户对即时通讯应用的需求不断增长,开发者们面临着使其应用保持高性能和可靠性的挑战。本文将探讨即时通讯开发中关键的性能优化技巧,帮助开发者们提升应用的用户体验和…...

flinkcdc同步完全量数据就不同步增量数据了

flinkcdc同步完全量数据就不同步增量数据了 使用flinkcdc同步mysql数据,使用的是全量采集模型 startupOptions(StartupOptions.earliest()) 全量阶段同步完成之后,发现并不开始同步增量数据,原因有以下两个: 原因1: …...

VBA:Application.GetOpenFilename打开指定文件夹里的excel类型文件(xls、xlsx)

GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。 Application.GetOpenFilename(“文件类型筛选规则(就是说明)”,“优先显示第几个类型的文件”,“标题”,“是否允许选择多个文件名”) 打开类型…...

利用R作圆环条形图

从理念上看,本质就是增加了圆环弧度的条形图。如上图2。 需要以下步骤: 数据处理,将EXCEL中的数据做成3*N的表格导入系统,代码如下:library(tidyverse) library(stringr)library(ggplot2)library(viridis) stuper &…...

JavaScript(笔记)

目录 Hello World JavaScript 的变量 JavaScript 动态类型 隐式类型转换 JavaScript 数组 JavaScript 函数 JavaScript 中变量的作用域 对象 DOM 选中页面元素 事件 获取 / 修改元素内容 获取 / 修改元素属性 获取 / 修改 表单元素属性 获取 / 修改样式属性 新…...

软件工程(九) UML顺序-活动-状态-通信图

顺序图和后面的一些图,要求没有用例图和类图那么高,但仍然是比较重要的,我们也需要按程度去了解。 1、顺序图 顺序图(sequence diagram, 顺序图),顺序图是一种交互图(interaction diagram),它强调的是对象之间消息发送的顺序,同时显示对象之间的交互。 下面以一个简…...

JVM 是怎么设计来保证new对象的线程安全

1、采用 CAS 分配重试的方式来保证更新操作的原子性 2、每个线程在 Java 堆中预先分配一小块内存,也就是本地线程分配缓冲(Thread Local AllocationBuffer,TLAB),要分配内存的线程,先在本地缓冲区中分配&a…...

【JavaEE基础学习打卡00】该专栏知识大纲在这里!

目录 前言一、为什么有该教程二、教程内容介绍1.JavaEE2.JDBC3.JSP编程4.JavaBean5.Servlet6.综合案例7.拦截器、过滤器 三、学习前置要求四、课程服务总结 前言 📜 本系列教程适用于 Java Web 初学者、爱好者,小白白。我们的天赋并不高,可贵…...

C# 跨线程访问窗体控件

在不加任何修饰的情况下,C# 默认不允许跨线程访问控件,实际在项目开发过程中,经常使用跨线程操作控件属性,需要设置相关属性才能正确使用,两种方法设置如下: 方法1:告诉编译器取消跨线程访问检…...

Ctenos7安装mysql-8.1.0/tomcat-9.0.80/LNMT部署

目录 一、实验拓扑 二、部署mysql 三、部署Tomcat 四、配置NGINX 五、 配置NGINX的双机热备提高可用性 一、实验拓扑 二、部署mysql 官网下载地址https://dev.mysql.com/downloads/mysql/ 1、移除mariadb,安装所需应用 mysql-8.1.0 社区版 安装说明官网下载地址…...

input时间表单默认样式修改(input[type=“date“])

一、时间选择的种类: HTML代码&#xff1a; <input type"date" value"2018-11-15" />选择日期&#xff1a; 选择时间&#xff1a; <input type"time" value"22:52" />在这里插入图片描述 选择星期&#xff1a; <…...

首页搜索框传递参数,并在搜索页面中的搜索框中进行显示,搜索框绑定回车键进行搜索

实现搜索条件和搜索内容固定&#xff0c;以及回车键搜索跳转 1.写出搜索条件和搜索框 <form class"parent"><select id"searchSelect" style"border: 1px solid #325da7;border-right: none;" value"resource"><opt…...

【Vue3+Ts】项目启动准备和配置项目代码规范和css样式的重置

项目启动准备 创建项目&#xff08; 使用Vite 构建工具创建项目模板&#xff09;目录介绍插件安装创建别名编译说明项目配置配置icon和标题配置项目别名配置ts.config.json检测vscode的插件是否配置 配置项目代码规范集成editorconfig配置prettier工具库ESLint检测配置 CSS样式…...

Java【手撕双指针】LeetCode 15. “三数之和“, 图文详解思路分析 + 代码

文章目录 前言一、三数之和1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表, 链表, 堆…...

Flutter:自定义组件的上下左右弹出层

背景 最近要使用Flutter实现一个下拉菜单&#xff0c;需求就是&#xff0c;在当前组件下点击&#xff0c;其下方弹出一个菜单选项&#xff0c;如下图所示&#xff1a; 实现起来&#xff0c;貌似没什么障碍&#xff0c;在Flutter中本身就提供了弹出层PopupMenuButton组件和show…...

C++处理终端程序中断或意外退出的情况

目录 背景和需求解决方法关于信号类型 背景和需求 Linux环境中&#xff0c;有一个可执行程序&#xff0c;假设该程序的运行生命周期需要调用下面四个函数&#xff1a; int connect(); int start();int end(); int disconnect();如果用户在程序运行期间&#xff0c;手动CTRLC或…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”

非常好&#xff0c;我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题&#xff0c;统一使用 二重复合函数&#xff1a; z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y))​ 来全面说明。我们会展示其全微分形式&#xff08;偏导…...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...