ELFK日志采 - QuickStart

文章目录

    • 架构选型
      • ELK
      • EFLK
    • Elasticsearch
      • ES集群搭建
      • 常用命令
    • Filebeat
      • 功能介绍
      • 安装步骤
      • Filebeat配置详解
      • filebeat常用命令
    • Logstash
      • 功能介绍
      • 安装步骤
      • Input插件
      • Filter插件
        • Grok Filter 插件
        • Mutate Filter 插件
          • 常见的插件配置选项:
          • Mutate Filter配置案例:
      • Output插件
    • Kibana
      • 功能介绍
      • 安装步骤

架构选型

ELK

“ELK” 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。

  • Elasticsearch 是一个搜索和分析引擎。
  • Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到Elasticsearch、kafka等。
  • Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

一套日志采集系统需要具备以下5个功能:

  • 收集 :能够采集多个来源的日志数据。
  • 传输 :能够稳定的把日志数据传输到日志服务。
  • 存储 :能够存储海量的日志数据。
  • 查询 :能够灵活且高效的查询日志数据,并提供一定的分析能力。
  • 告警 :能够提供提供告警功能,通知开发和运维等等

Elastic官网:https://www.elastic.co/cn/what-is/elk-stack

EFLK

在采集日志数据时,我们需要在服务器上安装一个 Logstash。不过 Logstash 是基于 JVM 的重量级的采集器,对系统的 CPU、内存、IO 等等资源占用非常高,这样可能影响服务器上的其它服务的运行。所以,Elastic NV 推出 Beats ,基于 Go 的轻量级采集器,对系统的 CPU、内存、IO 等等资源的占用基本可以忽略不计。因此,本文的示例就变成了 ELFK 。其中,Beats 负责采集数据,并通过网路传输给 Logstash。即整体架构:

Beats 是一个全品类采集器的系列,包含多个:(使用 Filebeat,采集日志文件)

  • Filebeat :轻量型日志采集器。√
  • Metricbeat :轻量型指标采集器。
  • Packetbeat :轻量型网络数据采集器。
  • Winlogbeat :轻量型 Windows 事件日志采集器。
  • Auditbeat :轻量型审计日志采集器。
  • Heartbeat :面向运行状态监测的轻量型采集器。
  • Functionbeat :面向云端数据的无服务器采集器。

Elasticsearch

ES集群搭建

参考:Elasticsearch7.x - 集群部署 - lihewei - 博客园 (cnblogs.com)

常用命令

启动 Elasticsearch 服务

# 使用命令行启动 Elasticsearch 服务
elasticsearch# 或者使用 systemd(根据您的操作系统)
sudo systemctl start elasticsearch

停止 Elasticsearch 服务

# 使用命令行停止 Elasticsearch 服务
Ctrl+C# 或者使用 systemd(根据您的操作系统)
sudo systemctl stop elasticsearch

检查 Elasticsearch 集群健康状态

# 使用 curl 命令检查集群健康状态
curl -X GET "http://localhost:9200/_cat/health?v"

查看节点信息

shellCopy code
# 使用 curl 命令查看节点信息
curl -X GET "http://localhost:9200/_cat/nodes?v"

创建索引

# 使用 curl 命令创建一个名为 "my_index" 的索引
curl -X PUT "http://localhost:9200/my_index"

删除索引

# 使用 curl 命令删除名为 "my_index" 的索引
curl -X DELETE "http://localhost:9200/my_index"

索引文档

# 使用 curl 命令索引一篇文档到 "my_index" 索引中
curl -X POST "http://localhost:9200/my_index/_doc" -d '{"field1": "value1","field2": "value2"
}'

搜索文档

# 使用 curl 命令执行搜索查询
curl -X GET "http://localhost:9200/my_index/_search?q=field1:value1"

查看索引的映射(Mapping)

# 使用 curl 命令查看索引 "my_index" 的映射
curl -X GET "http://localhost:9200/my_index/_mapping"

查看索引的统计信息

# 使用 curl 命令查看索引 "my_index" 的统计信息
curl -X GET "http://localhost:9200/my_index/_stats"

查看索引中的文档数量

# 使用 curl 命令查看索引 "my_index" 中的文档数量
curl -X GET "http://localhost:9200/my_index/_count"

聚合数据

# 使用 curl 命令执行聚合操作
curl -X POST "http://localhost:9200/my_index/_search" -d '{"size": 0,"aggs": {"avg_field2": {"avg": {"field": "field2"}}}
}'

更新文档

# 使用 curl 命令更新文档
curl -X POST "http://localhost:9200/my_index/_update/1" -d '{"doc": {"field1": "new_value"}
}'

删除文档

# 使用 curl 命令删除文档
curl -X DELETE "http://localhost:9200/my_index/_doc/1"

Filebeat

功能介绍

Filebeat是一个轻量型日志采集器,负责采集数据,并通过网路传输给 Logstash。

安装步骤

1)官网下载:https://www.elastic.co/cn/downloads/beats/filebeat

2)解压:tar -zxvf filebeat-7.5.1-darwin-x86_64.tar.gz

3)修改配置:

filebeat.inputs:
- type: logenabled: truepaths:- /home/crbt/logs/crbtRingSync/wrapper.logfields:log_source: vrbt-rd1-hbbjlog_topic: crbt-web-logoutput.kafka:hosts: ["10.1.61.121:9092"]topic: '%{[fields.log_topic]}'

Filebeat配置详解

  • filebeat.inputs 配置项,设置 Filebeat 读取的日志来源。该配置项是数组类型,可以将 Nginx、MySQL、Spring Boot 每一类,作为数组中的一个元素。
  • output.elasticsearch 配置项,设置 Filebeat 直接写入数据到 Elasticsearch 中。虽然说 Filebeat 5.0 版本以来,也提供了 Filter 功能,但是相比 Logstash 提供的 Filter 会弱一些。所以在一般情况下,Filebeat 并不直接写入到 Elasticsearch 中
  • output.logstash 配置项,设置 Filebeat 写入数据到 Logstash 中
  • output.kafka配置项,设置Filebeat 写入数据到 kafka 中

filebeat常用命令

# 启动filebeat
nohup ./filebeat -e &# -e 参数表示以前台模式运行  -c 指定配置文件
./filebeat -e -c /home/crbt/lihewei/filebeat-7.5.1-linux-x86_64/filebeat.yml
./filebeat -e -c filebeat.yml# 查看filebeat是否正常启动
curl http://localhost:5066/
ps -ef | grep filebeat

Logstash

功能介绍

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到喜欢的“存储库”中。通过定义了一个 Logstash 管道(Logstash Pipeline),来读取、过滤、输出数据。一个 Logstash Pipeline 包含三部分:

  • 【必选】输入(Input): 数据(包含但不限于日志)往往都是以不同的形式、格式存储在不同的系统中,而 Logstash 支持从多种数据源中收集数据(File、Syslog、MySQL、消息中间件等等)
  • 【可选】过滤器(Filter) :实时解析和转换数据,识别已命名的字段以构建结构,并将它们转换成通用格式。
  • 【必选】输出(Output) :Elasticsearch 并非存储的唯一选择,Logstash 提供很多输出选择。

安装步骤

1)下载: https://www.elastic.co/cn/products/logstash

2)解压:unzip logstash-7.5.1.zip

3)修改配置文件

config 目录下,提供了 Logstash 的配置文件,其中,logstash-sample.conf 配置文件,是 Logstash 提供的 Pipeline 配置的示例

crbt@node2:/home/crbt/lihw/logstash-7.5.1/config>ll
total 40
-rw-r--r-- 1 crbt crbt 2019 Dec 17  2019 jvm.options
-rw-r--r-- 1 crbt crbt 7482 Dec 17  2019 log4j2.properties
-rw-rw-r-- 1 crbt crbt  843 Sep 15 19:07 logstash.conf
-rw-r--r-- 1 crbt crbt  342 Dec 17  2019 logstash-sample.conf
-rw-r--r-- 1 crbt crbt 8372 Sep 15 10:53 logstash.yml
-rw-r--r-- 1 crbt crbt 3146 Dec 17  2019 pipelines.yml
-rw-r--r-- 1 crbt crbt 1696 Dec 17  2019 startup.options
crbt@node2:/home/crbt/lihw/logstash-7.5.1/config>cat logstash-sample.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.#日志消息从哪里来(这里使用filebeat进行日志收集)
input {beats {port => 5044}
}#日志信息输出到哪里去(这里写入es数据库)
output {elasticsearch {hosts => ["http://10.1.61.121:9200"]index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"}
}

4)指定配置文件并启动logstash:W

# 启动logstash服务(指定自定义的配置文件logstash.conf)
./logstash -f ../config/logstash.conf# 后台启动logstash服务🚩
nohup ./logstash -f ../config/logstash.conf &

Input插件

Logstash 的 input 插件用于从不同的数据源中接收数据,并将其发送到 Logstash 事件流中供进一步处理。每个 input 插件都有其特定的配置选项,以适应不同类型的数据源,修改自定义的配置文件即可生效(下面仅列举了几个常用输入方法)

  • File Input 插件:用于从本地文件读取数据。

    input {file {path => "/path/to/your/logfile.log"start_position => "beginning"sincedb_path => "/dev/null"}
    }
    
  • Beats Input 插件:用于接收来自 Elastic Beats 系列工具(如 Filebeat、Metricbeat)的数据。

    input {beats {port => 5044}
    }
    
  • Kafka Input 插件:用于从 Apache Kafka 主题中消费数据。

    input {kafka {bootstrap_servers => "kafka-server:9092"topics => ["your-topic"]}
    }
    

Filter插件

Logstash 的 filter 插件用于对接收的事件进行处理、转换和丰富,以便更好地进行索引和分析。每个 filter 插件都有其特定的配置选项,以适应不同的数据处理需求。以下是一些常见的 Logstash filter 插件及其配置示例:

Grok Filter 插件

Logstash 的 Grok Filter 插件用于从非结构化的文本数据中提取结构化的字段。

filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}
}
Mutate Filter 插件
常见的插件配置选项:
  • add_field:添加新字段到事件中,并指定字段的名称和值。

    rubyCopy code
    mutate {add_field => { "new_field" => "New Value" }
    }
    
  • remove_field:从事件中删除指定字段。

    rubyCopy code
    mutate {remove_field => [ "field1", "field2" ]
    }
    
  • rename:重命名事件中的字段,将字段从旧名称改为新名称。

    rubyCopy code
    mutate {rename => { "old_field" => "new_field" }
    }
    
  • copy:复制字段的值到新的字段中。

    rubyCopy code
    mutate {copy => { "source_field" => "destination_field" }
    }
    
  • replace:替换字段的值为新的值。

    rubyCopy code
    mutate {replace => { "field_to_replace" => "new_value" }
    }
    
  • update:更新字段的值为新的值,类似于替换操作。

    rubyCopy code
    mutate {update => { "field_to_update" => "new_value" }
    }
    
  • convert:将字段的数据类型转换为指定的类型。

    rubyCopy code
    mutate {convert => { "numeric_field" => "integer" }
    }
    
  • gsub:使用正则表达式替换字段中的文本。

    rubyCopy code
    mutate {gsub => [ "field_to_modify", "pattern_to_replace", "replacement_text" ]
    }
    
  • uppercase/lowercase:将字段值转换为大写或小写。

    rubyCopy code
    mutate {uppercase => [ "field_to_uppercase" ]lowercase => [ "field_to_lowercase" ]
    }
    
  • strip:删除字段值两端的空格。

    rubyCopy code
    mutate {strip => [ "field_to_strip" ]
    }
    
Mutate Filter配置案例:

用于对字段进行修改、重命名和删除。

filter {mutate {add_field => { "new_field" => "New Value" }rename => { "user" => "username" }remove_field => [ "message" ]}
}

在上面的配置中,我们使用 Mutate Filter 插件执行了以下操作:

  • add_field:我们添加了一个名为 “new_field” 的新字段,并将其值设置为 “New Value”。此时事件将变为:
  • rename:我们重命名了 “user” 字段为 “username”。此时事件将变为:
  • remove_field:我们删除了 “message” 字段。此时事件将不再包含 “message” 字段。
#过滤前
{"message": "Log entry","user": "john_doe","status": "success","response_time_ms": 45
}#过滤后
{"username": "john_doe","status": "success","response_time_ms": 45,"new_field": "New Value"
}

Output插件

Logstash 的 output 插件用于将处理过的事件发送到各种目标,如 Elasticsearch、文件、数据库等。每个 output 插件都有其特定的配置选项,以适应不同的目标和需求。以下是一些常见的 Logstash output 插件及其配置示例:

  • Elasticsearch Output 插件:用于将事件发送到 Elasticsearch 集群。

    output {elasticsearch {hosts => ["http://localhost:9200"]index => "my_index"}
    }
    
  • File Output 插件:用于将事件写入本地文件。

    output {file {path => "/path/to/output/file.txt"}
    }
    
  • Kafka Output 插件:用于将事件发送到 Apache Kafka 主题。

    rubyCopy code
    output {kafka {topic_id => "my_topic"bootstrap_servers => "kafka-server:9092"}
    }
    

Kibana

功能介绍

通过 Kibana,您可以对自己的 Elasticsearch 进行可视化,也可以通过插件的方式查看es

安装步骤

1)官网下载:https://www.elastic.co/cn/products/kibana

2)解压 tar -zxvf kibana-7.5.1-darwin-x86_64.tar.gz

3)修改配置,vi config/kibana.yml 命令,编辑 Kibana 配置文件

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"

4)启动Kibana:nohup bin/kibana & 命令,后台启动 Kibana 服务。

nohup bin/kibana &nohup ./kibana &ps aux | grep kibana

5)测试:访问 http://10.1.61.122:5601/ 地址,查看 Kibana 是否启动成功

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

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

相关文章

2024.1.27力扣每日一题——最大合金数

2024.1.27 题目来源我的题解方法一 二分查找 题目来源 力扣每日一题;题序:2861 我的题解 方法一 二分查找 使用二分查找,下界为0,上界因为预算和已有金属最大上限是 1 0 8 10^8 108,所以设置二分查找上界为2* 1 0 8…

Leetcode24:两两交换链表中的节点

一、题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例: 输入:head [1,2,3,4] 输出&#xff…

亲测解决vscode的debug用不了、点了没反应

这个问题在小虎登录vscode同步了设置后出现,原因是launch文件被修改或删除。解决方法是重新添加launch。 坏境配置 win11 + vscode 解决方法 Ctrl + shift + P,搜索debug添加配置: 选择python debugger。 结果生成了一个文件在当前路径: launch内容: {// Use Int…

centos安装inpanel

前置条件 安装python yum -y install python 安装 cd /usr/local git clone https://gitee.com/WangZhe168_admin/inpanel.git cd inpanel python install.py 安装过程需要设置账户 密码 端口号 我设置的是admin:admin 10050 使用 打开浏览器,输入 http://192.168.168.…

AI助力农作物自动采摘,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物,专家设计出来了很多用于采摘不同农作物的大型机械,看着非常震撼,但是我们国内农业的发展还是相对比较滞后的&#xff0…

YOLO-World——超级轻量级开放词汇目标检测方法

前言 目标检测一直是计算机视觉领域中不可忽视的基础挑战,对图像理解、机器人技术和自主驾驶等领域具有广泛应用。随着深度神经网络的发展,目标检测方面的研究取得了显著进展。尽管这些方法取得了成功,但它们存在一些限制,主要体…

如何让MySQL从部署到稳定运行?

如何让MySQL从部署到稳定运行? 1. 安装MySQL 8保姆级教程 2. 《从菜鸟到大师之路 MySQL 篇》 3. 关于MySQL的66个问题 4. MySQL 的学习资源史上最全 5. 掌握 SQL 这些核心知识点,出去吹牛逼再也不担心了

Spring Web Header 解析常见错误

在上一章,我们梳理了 URL 相关错误。实际上,对于一个 HTTP 请求而言,URL 固然重要,但是为了便于用户使用,URL 的长度有限,所能携带的信息也因此受到了制约。 如果想提供更多的信息,Header 往往…

Redis(三)(实战篇)

查漏补缺 1.spring 事务失效 有时候我们需要在某个 Service 类的某个方法中,调用另外一个事务方法,比如: Service public class UserService {Autowiredprivate UserMapper userMapper;public void add(UserModel userModel) {userMapper.…

@Valid常用的用法

一、通用用法 除了Null, NotNull, NotBlank,NotEmpty 这四个外,其他所有的注解,传 null 时都会被当作有效处理。 注解验证的数据类型备注Null任意类型参数值必须是 NullNotNull任意类型参数值必须不是 NullNotBlank只…

MySQL:关于存储过程

1、删除已存在存储过程 DROP PROCEDUCRE IF EXISTS P_NAME 2、创建存储过程 CREATE PROCEDUCRE P_NAME(NAME VARCHAR(36) ) 3、存储过程业务逻辑 BEGIN DECLARE NAME INT;BEGINEND; END 4、存储过程给变量赋值 SET 赋固定值, INTO配合查询语句赋值【多个值使用id,name i…

Antd+React+react-resizable实现表格拖拽功能

1、先看效果 2、环境准备 "dependencies": {"antd": "^5.4.0","react-resizable": "^3.0.4",},"devDependencies": {"types/react": "^18.0.33","types/react-resizable": "^…

Linux中有名管道和无名管道

无名管道基础 进程间通信介绍 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共享内存(mmap) 套接字(socket)过时的IPC通信方式 System V IPC 共享内存(sh…

数据结构——A/复杂度

A/基础铺垫 1. 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 2.什么是算法? 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输…

Windows下Node.js下载安装及环境变量配置教程

Windows下Node.js下载安装及环境变量配置教程 安装版本:node-v18.19.0-x64.msi 文章目录 Windows下Node.js下载安装及环境变量配置教程一、Node.js和NPM简介二、下载地址三、安装步骤四、环境配置五、安装淘宝镜像总结 一、Node.js和NPM简介 1、Node.js &#xf…

前端架构: 脚手架在前端研发流程中的意义

关于脚手架 脚手架 command-line interface基于文本界面,通过中断输入命令执行常见的脚手架:npm, webpack-cli, vue-cli拿 npm 这个脚手架来说 在终端当中输入 npm 命令, 系统就会通过文本方式返回 npm 的使用方法它这种通过命令行执行的操作方式效率很…

数据结构|对称矩阵压缩存储的下标公式推导|如何求对称矩阵压缩存储对应的一维数组下标

因为考试的时候可能会给很多情况的变式题,所以要会推导而不是背公式,情况变了,公式就不管用了。 行优先、只存储主对角线下三角区: 矩阵下标 ai,j(i>j)->一维数组下标 B[k] 按照行优先的原则,确定 ai,j 是一维数…

Unity3D实现项目限制功能(使用次数限制和时间限制)

系列文章目录 unity工具 文章目录 系列文章目录前言一、时间限制1-1、代码如下: 二、次数限制2-1、 在Unity项目中需要对注册表进行操作,还需要设置一下API兼容级别设置成 .NET Framework2-2、设置如下图 Player里面2-3、代码如下: 三、同时…

13. Threejs案例-绘制3D文字

13. Threejs案例-绘制3D文字 实现效果 知识点 FontLoader 一个用于加载 JSON 格式的字体的类。 返回 font,返回值是表示字体的 Shape 类型的数组。 其内部使用 FileLoader 来加载文件。 构造器 FontLoader( manager : LoadingManager ) 参数类型描述managerLo…

简单的TcpServer(英译中)

目录 一、TCP socket API 详解1.1 socket()1.2 bind()1.3 listen()1.4 accept()1.5 connect 二、TcpServer(英译中)2.1 TcpServer.hpp2.2 TcpClient.cc2.3 Task.hpp2.4 Thread.hpp2.5 ThreadPool.hpp2.6 makefile2.7 Main.cc2.8 log.hpp2.9 Init.hpp2.10…