ELK之logstash单节点安装

2023-11-02

ELK之logstash单节点安装

最近在搞ELK,写个文章记录分享一下经验

去官网上下载对应版本的logstash安装包,将工具包上传至服务器。

1.解压工具包

命令:

tar -xzvf logstash.tar.gz

2.配置logstash的配置

话不多说,直接上配置文件

input {
	#从kafka获取数据,还支持从es、filebeat等获取数据
	kafka {
		codec => "json"
		group_id => "testtopic"
		#此处的topics_pattern => 应该是需要和filebeat中配置的topic一致。
		topics_pattern => "testtopic"
		#此处配置Kafka服务器集群地址
		bootstrap_servers => "localhost:9092"
		auto_offset_reset => "latest"
	}
}
filter {
	
	#匹配数据
	grok {
		match => { "message" => "(?m)(?<request_id>\[(.*)\] - )(?<test-data>\{\"(.*)\"\})" }
	}
	#日期格式化
	date {
        match => [ "date", "yyyy-MM-dd" ]
    }
	#将匹配的数据转成json
	json {
      source => "test-data"
    }
	mutate {
	  #丢弃的数据
      remove_field => [ "agent", "log", "@version", "host", "input", "ecs"]
	  #替换key,若是这个key在json中不存在,则添加一个,还有个update没有添加功能
	  replace => {"request.响应参数" => "1234567"}
	  #修改字段的key,[][]该种方式是修改对象中的字段
	  rename => ["request", "req_param"]
	  rename => ["[header][request_id]", "request_id"]
	  # 将request_id中的[字符换成空
	  gsub => [ 
	           "request_id", "\[", ""
			 ]
    }
	#从es中查询数据,在output时进行判断合并文档
	elasticsearch {
		hosts => ["localhost:9200"]
		index => "test-data-%{date}"
		#查询sql
		query => "request_id:%{request_id}"
		#需要从数据库中查询的字段(request_id),需要放的event中的命名为(db_request_id)
		fields => { "request_id" => "db_request_id"}
		#需要从数据库配置中查询的字段(_id),需要放的event中的命名为(document_id)
		docinfo_fields => {
            "_id" => "document_id"
            "_index" => "document_index"
        }
	}
}
output {
	#输出到es
	if [request_id] == [db_request_id]{
	    #更新操作
		elasticsearch {
			hosts => ["localhost:9200"]
			index => "%{document_index}"
			document_id => "%{document_id}"
			##es要执行的动作 index, delete, create, update
			action => "update"
			doc_as_upsert => true
		}
	} else {
		elasticsearch {
			hosts => ["localhost:9200"]
			index => "test-data-%{date}"
		}
	}
	
	#输出到kafka
	kafka {
        bootstrap_servers => "localhost:9092"
        topic_id => "testtopic_after"
        codec => plain {
			format => "%{message}"
		}
    }
	
	stdout { codec => "rubydebug" }
}

更新操作说明:

  • 必须指定document_id ,如果不指定,无法启动pipeline
  • 如果 document_id 在es中不存在,会创建一条新的文档,使用document_id 作为该文档的_id。
  • 如果 document_id 在es中存在,直接更新该文档。
  • 有document_id 的情况下:

doc_as_upsert为true,使用event的值做为文档的值,相同的key会被覆盖,已经存在的key不会丢失
scripted_upsert为true,使用script作为文档的值
其余情况,使用upsert作为文档的值

3.启动logstash

nohup bin/logstash -f logstash.conf &

配置信息参考网址:
语法配置
grok测试网址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK之logstash单节点安装 的相关文章

随机推荐

  • 公司前端开发架构改造

    要看更多的文章 欢迎访问我的个人博客 http oldli net 现在的前端早已不是几年前的前端 再也不是jQuery加一个插件就能解决问题的时代 最近对公司前端的开发进行了一系列的改造 初步达到了我想要的效果 但是未来还需要更多的改进
  • 【DOCKER】docker run的-d,-v等参数用处

    0 引用 ref1 docker ps的详解 表格和文本的记录版本 1 手册查询内容 root master cpu docker run help Usage docker run OPTIONS IMAGE COMMAND ARG Ru
  • linux脚本的注释符号是什么,linux的shell编程中的符号`是什么

    bin sh 是指此脚本使用 bin sh来解释执行 是特殊的表示符 其后面根的是此解释此脚本的shell的路径 bash 表示系统提示符 表示此用户为普通用户 超级用户的提示符是 bash是shell的一种 是linux下最常用的一种sh
  • ARM MMU 详解

    一 MMU 的产生 许多年以前 当人们还在使用DOS或是更古老的操作系统的时候 计算机的内存还非常小 一般都是以 K 为单位进行计算 相应的 当时的程序规模也不大 所以内存容量虽然小 但还是可以容纳当时的程序 但随着图形界面的兴起 还有用户
  • @Resource注解的使用

    1 在spring的配置文件中导入命名空间 xmlns context http www springframework org schema context http www springframework org schema cont
  • 推荐一个好组件Javascript文本比较工具

    您的项目上有没有遇到需要在前端显示并比较两个不同版本的文本文件 希望它像winmerge 或eclipse的svn比较工具那样标注不同的地方 我找到了 分享给大家吧 最近项目上需要一个类似cvs svn文本比较工具 把左右两个文本中不一样的
  • 在Eclipse添加Android兼容包( v4、v7 appcompat )

    昨天添加Android兼容包 碰到了很多问题 在这里记录一下 让后面的路好走 如何选择兼容包 请参考Android Support Library Features 二 一 下载Support Library 方法1 右击项目 选择Andr
  • Jenkins配置定时调度部署

    H 22 表示每天22点 自动构建
  • 怎么找CVPR/ICCV/ECCV文章

    原文链接 https www jianshu com p aed3dd8c81fa CVPR论文查找 每年一届 点击如下链接 输入相关关键字即可搜索 http openaccess thecvf com CVPR2013 search py
  • 冒泡排序原理详解及代码实现

    1 冒泡排序数组排序常用的一种方式 为什么要叫冒泡排序呢 这还要从它的原理说起 2 代码实现 低效版 3 原理详解 冒泡排序最基本的思想就是从左到右依次判断相邻的两个数的大小关系 如果前面的数大于后面的数 则两数互换位置 但是只是从左到右遍
  • C++11---智能指针

    智能指针 1 为什么引入智能指针 1 1 内存泄漏 2 智能指针的使用及原理 2 1 RAII 2 2 智能指针的原理 3 C 98 auto ptr 4 unique ptr 5 shared ptr 5 1 循环引用 6 weak pt
  • 在Anaconda下安装了TensorFlow库matplotlib库却调用不了了

    在Anaconda下安装了TensorFlow库 但是Anaconda中的matplotlib库却调用不了了 解决方法如下 1 打开Anaconda Prompt 2 输入activate tensorflow 3 输入conda inst
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题解析-A

    2022年全国职业院校技能大赛 中职组 网络安全竞赛试题 1 总分100分 需要环境可以私信博主 赛题说明 一 竞赛项目简介 网络安全 竞赛共分A 基础设施设置与安全加固 B 网络安全事件响应 数字取证调查和应用安全 C CTF夺旗 攻击
  • StackGAN笔记

    Stack可译做堆叠 就是在GAN上面再放上一个GAN 作者讲述的自己的解决思路 原来难以生成高分辨率的图像 他们分解了这个问题 把生成高分辨率图片这个任务分解成两个更为简单的任务 就是文中说的一个GAN生成大致的形状和颜色 第二个GAN生
  • 自主HttpServer实现(C++实战项目)

    文章目录 项目介绍 CGI技术 概念 原理 设计框架 日志文件 TCPServer 任务类 初始化与启动HttpServer HTTP请求结构 HTTP响应结构 线程回调 EndPoint类 EndPoint主体框架 读取HTTP请求 处理
  • tidymodels-workflow工作流

    在阅读这篇文章前 我强烈建议你先读一下tidymodels入门篇 tidymodels用于机器学习的细节 首先对tidymodels有一个整体的认知 今天主要介绍workflow的用法 workflow可以把你的数据预处理步骤和模型连接起来
  • 深聊性能测试,从入门到放弃之:性能测试基准与阶段

    如何做性能测试 1 引言 2 性能测试内容 2 1 基准测试 2 2 日常压力测试 2 3 峰值压力测试 2 4 容量测试 2 5 稳定性测试 3 性能测试阶段 3 1 测试确认 3 2 确定通过标准 3 3 测试设计 3 4 测试环境准备
  • 【问题解决】后端如何以文件流的形式返回本地资源给前端,提供下载服务

    后端以文件流的形式返回本地资源 文件地址 String path PDFpath File file new File PDFpath 读取生成的PDF文件 InputStream inputStream OutputStream outp
  • python中文主客观分类

    查了很久发现主客观分析的方法很多 但是数据集少的可怜 能直接使用的库更少 好不容易找到一个 收藏一下 Github 页面 https github com liuhuanyong ZhuguanDetection 下载与使用方法 git c
  • ELK之logstash单节点安装

    ELK之logstash单节点安装 最近在搞ELK 写个文章记录分享一下经验 去官网上下载对应版本的logstash安装包 将工具包上传至服务器 1 解压工具包 命令 tar xzvf logstash tar gz 2 配置logstas