ELK入门(四)-logstash

Logstash

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的存储库中。

Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用 Grok 从非结构化数据中派生出结构,从 IP 地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。

数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件,能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

下载logstash镜像

查询镜像
[root@localhost elk]# docker search logstash
NAME                                                           DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
logstash                                                       Logstash is a tool for managing events and l…   2141      [OK]       
opensearchproject/logstash-oss-with-opensearch-output-plugin   The Official Docker Image of Logstash with O…   17                   
grafana/logstash-output-loki                                   Logstash plugin to send logs to Loki             3                    
拉取镜像
[root@localhost elk]# docker pull logstash:7.17.7
7.17.7: Pulling from library/logstash
fb0b3276a519: Already exists 
4a9a59914a22: Pull complete 
5b31ddf2ac4e: Pull complete 
162661d00d08: Pull complete 
706a1bf2d5e3: Pull complete 
741874f127b9: Pull complete 
d03492354dd2: Pull complete 
a5245bb90f80: Pull complete 
05103a3b7940: Pull complete 
815ba6161ff7: Pull complete 
7777f80b5df4: Pull complete 
Digest: sha256:93030161613312c65d84fb2ace25654badbb935604a545df91d2e93e28511bca
Status: Downloaded newer image for logstash:7.17.7
docker.io/library/logstash:7.17.7
创建logstash容器

创建logstash容器,为拷贝配置文件。

docker run --name logstash -d logstash:7.17.7

CONTAINER ID   IMAGE                  COMMAND                   CREATED         STATUS         PORTS                                                                                                                                      NAMES
511e983027e7   logstash:7.17.7        "/usr/local/bin/dock…"   4 seconds ago   Up 4 seconds   5044/tcp, 9600/tcp                                                                                                                         logstash

配置文件

挂载文件夹

从容器中拷贝文件到/usr/local/software/elk/logstash下

[root@localhost logstash]# 
配置文件

从容器中拷贝文件到linux

[root@localhost logstash]# docker cp  logstash:/usr/share/logstash/config/ ./
                                               Successfully copied 11.8kB to /usr/local/software/elk/logstash/./
[root@localhost logstash]# docker cp  logstash:/usr/share/logstash/data/ ./
                                               Successfully copied 4.1kB to /usr/local/software/elk/logstash/./
[root@localhost logstash]# docker cp  logstash:/usr/share/logstash/pipeline/ ./
                                               Successfully copied 2.56kB to /usr/local/software/elk/logstash/./

创建一个日志文件夹

mkdir logs
logstash.yml
path.logs: /usr/share/logstash/logs
config.test_and_exit: false
config.reload.automatic: false
http.host: "0.0.0.0" 
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.198.128:9200" ]
pipelines.yml
# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

- pipeline.id: main
  path.config: "/usr/share/logstash/pipeline/logstash.conf"
logstash.conf
input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 5044
    codec => json_lines
  }
}
filter{
}
output {
    elasticsearch {
      hosts => ["192.168.198.128:9200"]       #elasticsearch的ip地址
      index => "elk"                          #索引名称
    }
    stdout { codec => rubydebug }
}

创建运行容器

docker run -it \
--name logstash \
--privileged=true \
-p 5044:5044 \
-p 9600:9600 \
--network wn_docker_net \
--ip 172.18.12.54 \
-v /etc/localtime:/etc/localtime \
-v /usr/local/software/elk/logstash/config:/usr/share/logstash/config \
-v /usr/local/software/elk/logstash/data:/usr/share/logstash/data \
-v /usr/local/software/elk/logstash/logs:/usr/share/logstash/logs \
-v /usr/local/software/elk/logstash/pipeline:/usr/share/logstash/pipeline \
-d logstash:7.17.7

由于挂载有时候不成功,可以先创建容器后把文件拷贝到config, pipeline中。

docker run -it \
--name logstash \
--privileged=true \
-p 5044:5044 \
-p 9600:9600 \
--network wn_docker_net \
--ip 172.18.12.54 \
-v /etc/localtime:/etc/localtime \
-d logstash:7.17.7

springboot整合logstash

kibana创建索引
创建索引对象

在kibana中创建索引,索引名称和logstash.conf中的index名称一致。

 #logstash.conf中配置的内容
 elasticsearch {
      hosts => ["192.168.198.128:9200"]       #elasticsearch的ip地址
      index => "elk"                          #索引名称
    }

image-20230730162558014·image-20230730162824149

创建索引模式

在菜单中选择Management —> StackManagement 点击 Add integrations

Kibana–>index Patterns

image-20230730161940092 image-20230730162026045

image-20230730162149828

image-20230730162946743

image-20230730163010384

springboot
引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wnhz.elk</groupId>
    <artifactId>springboot-elk</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.14</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>7.3</version>
        </dependency>

    </dependencies>

</project>
编辑logback-spring.xml文件

image-20230730164653863

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds">

    <!--1. 输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是为开发使用,只配置最低级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -%5level ---[%15.15thread] %-40.40logger{39} : %msg%n</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 2. 输出到文件  -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文档输出格式-->
        <append>true</append>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -%5level ---[%15.15thread] %-40.40logger{39} : %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>

    </appender>

    <!--LOGSTASH config -->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.198.128:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <!--自定义时间戳格式, 默认是yyyy-MM-dd'T'HH:mm:ss.SSS<-->
            <timestampPattern>yyyy-MM-dd HH:mm:ss</timestampPattern>
            <customFields>{"appname":"App"}</customFields>
        </encoder>
    </appender>


    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="LOGSTASH"/>
    </root>

</configuration>

代码测试
package com.wnhz.elk.controller;

import com.wnhz.elk.result.HttpResp;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

@Api(tags = "ELK测试模块")
@RestController
@RequestMapping("/api/elk")
@Slf4j
public class ElkController {

    @ApiOperation(value = "elkHello",notes = "测试ELK的结果")
    @GetMapping("/elkHello")
    public HttpResp<String> elkHello(HttpServletRequest request) {
        log.debug("测试日志,请求request:{},当前时间:{}", request, new Date());
        log.debug("测试日志,第{}行测试代码,当前时间:{}", 2, new Date());
        return HttpResp.success("ELK测试-hello");
    }
}

kibana中查看索引

image-20230730164823829

image-20231111212112966

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebService学习,wsdl文件详解

目录 第一章、起因1.1&#xff09;学习原因1.2&#xff09;提问的过程&#xff08;逐步提出问题&#xff09;1、&#xff1f;wsdl链接的含义&#xff0c;有什么作用&#xff1f;2、什么是wsdl文档&#xff1f;3、如何阅读wsdl文件&#xff1f;4、wsdl文件有什么作用&#xff1f…

Linux编译器---gcc/g++使用详解

目录 前言 gcc/g介绍 gcc/g的编译指令&#xff08;以gcc为例&#xff09; ​编辑 gcc选项 预处理(进行宏替换) 编译&#xff08;生成汇编&#xff09; 汇编&#xff08;生成机器可识别代码&#xff09; 链接&#xff08;生成可执行文件或库文件&#xff09; 函数库 概念 …

Vue单文件学习项目综合案例Demo,黑马vue教程

文章目录 前言一、小黑记事本二、购物车三、小黑记账清单 前言 bilibili视频地址 一、小黑记事本 效果图 主代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible&…

C# CAD2016 cass10宗地Xdata数据写入

一、 查看cass10写入信息 C# Cad2016二次开发获取XData信息&#xff08;二&#xff09; 一共有81条数据 XData value: QHDM XData value: 121321 XData value: SOUTH XData value: 300000 XData value: 141121JC10720 XData value: 权利人 XData value: 0702 XData value: YB…

卫星地面站监测系统仿真

当今世界&#xff0c;大国竞争日趋激烈&#xff0c;国际关系愈发紧张&#xff0c;信息与通信已经是当下高度信息化社会的“命脉”&#xff0c;信息只有经过有效且广泛地传播&#xff0c;才能成为一种有利用价值的资源&#xff0c;产生经济效益、推动社会发展。通信技术在发展的…

【必备清单】开学运动好物清单,迎接新学期,打造健康体魄!

随着新学期的开始&#xff0c;校园里的氛围渐渐热络起来。作为一名学生&#xff0c;除了学习之外&#xff0c;参与体育运动也是非常重要的。不仅可以锻炼身体&#xff0c;提高身体素质&#xff0c;还能增加社交机会&#xff0c;丰富学校生活。然而&#xff0c;想要成为一名校园…

software framwork

software framwork软件架构 软件架构&#xff0c;之前图没找到&#xff0c;随手画了一个啦&#xff0c;了解架构细分职能和工作任务&#xff1a; 下图&#xff0c;第一是客户端架构包项目&#xff0c;第二是服务端架构包项目 -----------------------------------------------…

数字化转型解锁企业高效协作与管理优化的新篇章!

一、客户介绍 某服饰股份有限公司是一家集服装设计、生产、销售及品牌建设于一体的企业。该公司的产品线涵盖男装、女装、童装等多个领域&#xff0c;设计风格时尚、简约、大方&#xff0c;深受消费者喜爱。公司注重产品研发&#xff0c;不断推陈出新&#xff0c;紧跟时尚潮流…

洗选中心智能化运维工是做什么的?智能化运维工程师是干什么的

洗选中心智能化运维工程师的职责和工作内容&#xff1f;同时&#xff0c;描述智能化运维工程师在信息技术行业中的具体角色和他们的主要任务。  洗选中心智能运维工程师的职责和工作内容主要包括&#xff1a;  设备监控管理&#xff1a;重点对洗涤中心机器进行实时监控管理…

C#与VisionPro联合开发——INI存储和CSV存储

1、INI存储 INI 文件是一种简单的文本文件格式&#xff0c;通常用于在 Windows 环境中存储配置数据。INI 文件格式由一系列节&#xff08;section&#xff09;和键值对&#xff08;key-value pairs&#xff09;组成&#xff0c;用于表示应用程序的配置信息。一个典型的 INI 文…

面试官:你知道Comparable 和 Comparator 的区别吗?我:巴拉巴拉

写在开头 面试官&#xff1a;“我们在Java的集合和数据结构中都离不开比较器&#xff0c;请你聊一聊Comparable 和 Comparator 这两种的区别吧” 内心活动&#xff1a;“上来就这么直接吗&#xff0c;那些ArrayList&#xff0c;HashMap都不问呀&#xff0c;好&#xff0c;既然…

船舶制造5G智能工厂数字孪生可视化平台,推进船舶行业数字化转型

船舶制造5G智能工厂数字孪生可视化平台&#xff0c;推进船舶行业数字化转型。随着数字化时代的到来&#xff0c;船舶行业正面临着前所未有的机遇与挑战。为了适应这一变革&#xff0c;船舶制造企业需要加快数字化转型的步伐&#xff0c;提高生产效率、降低成本并增强市场竞争力…

“职”想有你!庭田科技2024招聘开始啦!

关于|庭田科技 庭田科技有限公司&#xff08;简称&#xff1a;庭田科技&#xff09;是一家专注于计算机辅助工程(CAE)软件和高科技仪器设备的系统集成商和方案咨询服务供应商&#xff08;下设“上海庭田信息科技有限公司”与“西安庭田信息科技有限公司”&#xff09;。致力于…

Linux调试器——gdb的基础使用

目录 1.背景 2.指令的使用 2.1gdb的使用和退出 2.2显示源代码 2.3运行程序 2.4调试 1.打断点 2.查断点 3.去断点 4.运行 5.关闭断点 6.启用断点 7.逐过程 8.进入函数 9.显示变量的值 1.背景 众所周知&#xff0c;我们的程序发布有两种&#xff0c;分别是debug模式和release模式…

cocos creator3.x项目打包成aar 加入到已有的Android工程

Cocos crearor版本&#xff1a; 3.4.2 Android Studio Flamingo | 2022.2.1 Patch 2 1、配置构建安卓项目 2、 运行编译无报错 出现问题可尝试修改Gradle版本 修改jdk版本 3、对libservice打包成aar 打包完后 再build/outputs找到aar 如果看不到Tasks模块&#xff0c;在Fil…

uniapp_微信小程序自定义顶部导航栏和右侧胶囊对齐(不对齐来打我)

一、想要的效果 思路首先开启自定义导航栏&#xff0c;取消自带的导航栏&#xff0c;然后计算胶囊的高度和标题对齐 二、成品代码 1、首先再你需要居中的代码添加以下style <view class"header":style"{paddingTop:navBarTop px,height:navBarHeight px,…

Node.js安装及环境配置

1. 前言 Node.js简介 Node.js 是一个开源的、跨平台的 JavaScript 运行环境&#xff0c;它允许开发者使用 JavaScript 编写服务器端代码。Node.js 基于 Google 的 V8 JavaScript 引擎构建&#xff0c;该引擎是 Chrome 浏览器中用于解析和执行 JavaScript 的核心组件。因此&am…

Ubuntu20.04 查看系统版本号

目录 uname -auname -vlsb_release -acat /etc/issuecat /proc/version uname -a 查看系统发行版本号和操作系统版本 uname -v 查看版本号 lsb_release -a 查看发行版本信息 cat /etc/issue 查看系统版本 cat /proc/version 查看内核的版本号

Graphpad Prism10.2.0(329) 安装教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件&#xff0c;它可以将科学图形、综合曲线拟合&#xff08;非线性回归&#xff09;、可理解的统计数据、数据组织结合在一起&#xff0c;除了最基本的数据统计分析外&#xff0c;还能自动生成统…

来分析两道小题

一、源码 二、分析 首先它会接两个参数一个是id一个是ps&#xff0c;传递的话会包含一个flag.php&#xff0c;然后数据库连接&#xff0c;之后传递过滤&#xff0c;然后查询&#xff0c;如果查到了就会取id&#xff0c;取出来看是不是跟adog一样&#xff0c;如果是它告诉你账号…