ubuntu 22.04 安装部署logstash 7.10.0详细教程

安装部署logstash 7.10.0详细教程

  • 一、下载并安装
  • 二、新建配置文件
  • 三、赋权文件权限
  • 四、检测文件grok语法是否异常
  • 五、启动服务
  • 六、安装启动常见问题

【背景】

  1. 整个elk安装是基于ubuntu 22.04和jdk 11环境。
  2. logstash采用 *.deb方式安装,需要服务器能联网。
  3. ubuntu 22.04 安装部署elk(elasticsearch/logstash/kibana) 7.10.0详细教程

一、下载并安装

# 下载安装包命令
sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-amd64.deb
sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-amd64.deb.sha512
# 开始安装
shasum -a 512 -c logstash-7.10.0-amd64.deb.sha512
# 校验成功出现 logstash-7.10.0-amd64.deb: OK
sudo dpkg -i logstash-7.10.0-amd64.deb

二、新建配置文件

命令:sudo vim /etc/logstash/conf.d/java_service_logs.conf

# java_service_logs.conf 内容详情如下
input {file {# 要监控的日志文件路径(支持通配符,匹配两个目录下的所有.log文件)path => ["/data/logs/java-admin/*.log","/data/logs/java-api/*.log"]# 日志读取起始位置:# - beginning:从文件开头开始读取(适合首次采集)# - end:从文件末尾开始读取(默认值,只采集新增内容)start_position => "beginning"# 自定义 sincedb 文件路径(记录文件读取进度,避免重复采集)# 默认路径在用户家目录,这里显式指定到 Logstash 数据目录sincedb_path => "/usr/share/logstash/data/java_service_logs_sincedb"# 忽略 15 天前修改的文件(自动清理旧日志文件)ignore_older => "15d"  # ===== 多行日志合并配置 =====codec => multiline {# 正则匹配行首的时间戳格式(示例:[2023-10-01T12:34:56,789])pattern => "^\[%{TIMESTAMP_ISO8601}\]"# 匹配逻辑取反:当行不匹配时间戳模式时触发合并negate => true# 合并方向:将不匹配的行合并到前一行(适合 Java 异常堆栈等场景)what => "previous"# 最大合并行数限制(防止单条日志过大)max_lines => 500     # 自动刷新间隔(秒):超过该时间未匹配到新行则强制提交当前合并结果auto_flush_interval => 3     }# ===== 以下为可选调试参数(当前被注释) =====# sincedb_path => "/dev/null"  # 测试时禁用 sincedb(每次重新读取全部内容)# ignore_older => 0            # 不忽略旧文件(需配合 start_position 使用)# stat_interval => 10          # 文件状态检查间隔(秒,默认1s)# discover_interval => 60      # 新文件发现间隔(秒,默认15s)}
}filter {# ===== 日志结构化解析 =====grok {match => {# 定义两种匹配模式(支持含/不含堆栈跟踪的日志)"message" => [# 模式1:包含堆栈跟踪的日志(如异常日志)"\[%{TIMESTAMP_ISO8601:log_timestamp}\]\s+\[%{DATA:log_thread}\]\s+\[%{LOGLEVEL:log_level}\]\s+%{DATA:log_class}\s+-\s+%{GREEDYDATA:log_message}\n%{GREEDYDATA:stack_trace}",# 模式2:普通日志(无堆栈跟踪)"\[%{TIMESTAMP_ISO8601:log_timestamp}\]\s+\[%{DATA:log_thread}\]\s+\[%{LOGLEVEL:log_level}\]\s+%{DATA:log_class}\s+-\s+%{GREEDYDATA:log_message}"]}# 用解析后的结构化字段覆盖原始 message 字段overwrite => ["message"]}# ===== 时间戳处理 =====date {# 将 log_timestamp 字段转换为 Logstash 时间戳(@timestamp)match => ["log_timestamp", "yyyy-MM-dd HH:mm:ss.SSS"]# 指定转换后的目标字段(默认会覆盖 @timestamp)target => "@timestamp"# 时区配置:将原始时间转换为印度时区(GMT+05:30)# 示例:原始时间 2025-06-01 18:30:00 → 转换后 @timestamp 为 2025-06-01 13:00:00(UTC时间)timezone => "Asia/Kolkata" }# ===== 堆栈跟踪处理 =====# 仅当存在 stack_trace 字段时执行if [stack_trace] {mutate {# 将堆栈跟踪中的换行符 \n 替换为转义字符 \\n# 避免 Elasticsearch 存储时丢失换行格式gsub => ["stack_trace", "\n", "\\n"]}}
}output {# ===== Elasticsearch 输出 =====elasticsearch {# ES 服务器地址(HTTP 协议)hosts => ["http://localhost:9200"]# 索引命名规则:按日期滚动(java_service_logs-2025.04.26)index => "java_service_logs-%{+YYYY.MM.dd}"# 认证信息(Basic Auth)user => "elastic"password => "密码"}# ===== 调试输出(注释状态)=====# stdout { codec => rubydebug }  # 以 Ruby 格式输出到控制台(开发调试用)
}

三、赋权文件权限

# 因新建文件权限可能是root账号的,所以需要授权
sudo chown -R logstash:logstash /etc/logstash/conf.d/*.conf

四、检测文件grok语法是否异常

# 启动前检查下文件中是否有语法错误,能更快排错
sudo /usr/share/logstash/bin/logstash -t -f /elc/logstash/conf.d/java_service_logs.conf

在这里插入图片描述

五、启动服务

sudo systemctl daemon-reload
sudo systemctl start logstash
sudo systemctl stop logstash
sudo systemctl restart logstash
sudo systemctl status logstash

在这里插入图片描述

六、安装启动常见问题

(1) 查看日志 sudo tail -100f /var/log/logstash/logstash-plain.log
(2) 对/etc/logstash/conf.d中文件没有授权,如上授权
sudo chown -R logstash:logstash /etc/logstash
(3) java_service_logs.conf的语法很容易错误,其次就是某些配置项与其版本不匹配,可以启动前测试下:
sudo /usr/share/logstash/bin/logstash -t -f java_service_logs.conf
(4) 对于logstash排错,可以先将logstash.yml 日志级别设置为 debug,便于排错
(5) 对于logstash不能收集日志到es,可以通过 stdout { codec => rubydebug } 将输出结果先打印出来,不要直接输入到es中。
还有对于input模块,ignore_older => 0 该参数慎用,可能读取不到。可以修改为 ignore_older => “15d”, 表示从当前15天到当前内容。
(6) 还可以利用打印到控制台去测试grok匹配的数据
sudo /usr/share/logstash/bin/logstash -e ‘input { stdin { } } filter { grok { match => { “message” => “[%{TIMESTAMP_ISO8601:log_timestamp}] [%{DATA:log_thread}] [%{LOGLEVEL:log_level}] %{DATA:log_class} - %{GREEDYDATA:log_message}” } } } output { stdout { codec => rubydebug } }’

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

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

相关文章

JVM对象创建与内存分配机制深度剖析

对象创建的主要流程 类加载检查 在创建对象之前,JVM 首先会检查该类是否已经加载、解析并初始化: 如果没有,则会通过类加载机制加载类元信息(Class Metadata)到方法区。 这个过程包括:加载(load…

Navicat 技术指引 | TiDB 的 AI 查询交互功能

目前,Navicat 两款工具支持对 TiDB 数据库的管理开发功能:一款是旗舰款 Navicat Premium,另一款是其轻量化功能的 Navicat Premium Lite(官方轻量级免费版)。Navicat 自版本 17.1 开始支持 TiDB 7。它支持的系统有 Win…

以list为输入条件,查询数据库表,java中的mapper层和mybatis层应该怎么写?

根据一个 List 中的两个字段 rangeCode 和 unitcd,查询数据库表 model_engineering_spatial_unit。这个需求在 Java MyBatis 项目中非常常见,下面我将为你详细写出 Mapper 接口(Java) 和 MyBatis XML 映射文件 的写法。 ✅ 前提…

pyspark 创建DataFrame

from pyspark.sql import SparkSession from pyspark.sql import StructType, StructField, IntegerType,StringType spark SparkSession.builder.appName(test).getOrCreate() 1、 从列表中创建DataFrame data [(1,"alice"),(2,Blob),(3,Charlie)] columns [&qu…

Vim:从入门到进阶的高效文本编辑器之旅

目录 一、Vim简介 二、Vim的基础操作 2.1 进入和退出Vim 2.2 Vim的三种模式 2.3 基础移动 三、Vim的高效编辑技巧 3.1 文本编辑 3.2 文本删除与修改 3.3 复制与粘贴 四、Vim的进阶使用 4.1 搜索与替换 4.2 寄存器与宏 4.3 插件与配置 五、结语 在编程界&#xff0…

Docker基础理论与阿里云Linux服务器安装指南

文章目录 一、Docker核心概念二、阿里云环境准备三、Docker安装与配置四、核心容器部署示例五、开发环境容器化六、运维管理技巧七、安全加固措施 一、Docker核心概念 容器化本质: 轻量级虚拟化技术,共享主机内核进程级隔离(cgroups/namespac…

c#使用笔记之try catch和throw

一、try catch 一种报错的捕捉机制,try块里运行的代码出现错误的时候就会去执行catch块所以一般catch块里都是把错误打印出来或者保存到log日志里; 1.1、具体使用 catch可以用()来选择捕捉什么类型的错误,一般用Exc…

(新手友好)MySQL学习笔记(9):索引(常见索引类型,查找结构的发展(二分查找法,二叉搜索树,平衡二叉树,B树,B+树))

目录 索引 常见索引类型 B树 二分查找法 二叉搜索树和平衡二叉树 B树和B树 索引 index,是存储引擎用于快速找到数据的一种数据结构。 MySQL默认使用InnoDB存储引擎,该存储引擎是最重要,使用最广泛的,除非有非常特别的原因需要使用…

进程间通信1(匿名管道)Linux

1 进程间通信的必要性 首先要明确进程间是相互独立的(独享一份虚拟地址空间,页表,资源),那怎么样才能使得两个进程间实现资源的发送?所以,两个进程一定需要看到同一份资源,并且⼀个…

CAN2.0、DoIP、CAN-FD汽车协议详解与应用

一、CAN2.0 协议详解与应用示例 1. 技术原理与特性 协议架构:基于 ISO 11898 标准,采用载波监听多路访问 / 冲突检测(CSMA/CD)机制,支持 11 位(CAN2.0A)或 29 位(CAN2.0B&#xff…

使用nvm管理npm和pnpm

1.使用nvm管理npm // 查看nvm版本 nvm -v // 查看可安装的 node 版本 nvm ls-remote // 安装指定 node 版本 nvm install 24.0.0 // 查看当前已安装的 node 版本及当前使用的版本 nvm list // 使用某个版本 node nvm use 24.0.0 // 卸载指定 node 版本 nvm uninstall 16.20.1…

YOLO11+QT6+Opencv+C++训练加载模型全过程讲解

实现效果: Yolov11环境搭建(搭建好的可以直接跳过) 最好使用Anconda进行包管理,安装可参考【文章】。下面简单过一下如何快速部署环境。如果搭建过或可以参考其他文章可以跳过Yolo11环境搭建这一章节。总体来说Yolov11环境搭建越…

Python 脚本,用于将 PDF 文件高质量地转换为 PNG 图像

import os import fitz # PyMuPDF from PIL import Image import argparse import logging from tqdm import tqdm# 配置日志 logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s) logger logging.getLogger(PDF2PNG)def convert_pdf_…

【CUDA GPU 支持安装全攻略】PyTorch 深度学习开发者指南

PyTorch 的 CUDA GPU 支持 安装五条铁律(最新版 2025 修订)(适用于所有用户)-CSDN博客 是否需要预先安装 CUDA Toolkit?——按使用场景分级推荐及进阶说明-CSDN博客 “100% 成功的 PyTorch CUDA GPU 支持” 安装攻略…

Cyberith 运动模拟器Virtualizer2:提升虚拟现实沉浸体验

奥地利Cyberith公司是一家专注于虚拟现实(VR)互动解决方案的创新型科技企业,以其研发的Virtualizer虚拟现实步态模拟设备而闻名。该公司的核心技术体现在其设计和制造的全方位跑步机式VR交互平台上,使得用户能够在虚拟环境中实现自…

常见的数据处理方法有哪些?ETL中的数据处理怎么完成

在数字化转型纵深推进的背景下,数据作为新型生产要素已成为驱动企业战略决策、科研创新及智能化运营的核心战略资产。数据治理价值链中的处理环节作为关键价值节点,其本质是通过系统化处理流程将原始观测数据转化为结构化知识产物,以支撑预测…

WHAT - 为甲方做一个官网(二)- 快速版

文章目录 一、明确需求优先级(快速决策)二、推荐零代码/低代码工具(附对比)方案1:低代码建站平台(适合无技术用户,拖拽式操作)方案2:CMS系统(适合内容更新频繁…

音视频之H.264视频编码传输及其在移动通信中的应用

系列文章: 1、音视频之视频压缩技术及数字视频综述 2、音视频之视频压缩编码的基本原理 3、音视频之H.264/AVC编码器原理 4、音视频之H.264的句法和语义 5、音视频之H.264/AVC解码器的原理和实现 6、音视频之H.264视频编码传输及其在移动通信中的应用 7、音视…

C#语言入门-task2 :C# 语言的基本语法结构

下面从四个方面对C#的基本语法进行简单介绍: 1. 数据类型 C#的类型可分为值类型和引用类型。值类型变量直接存储数据,引用类型变量则存储对象的引用。 值类型:涵盖整数类型(像int、long)、浮点类型(例如…

c#笔记之类的常量、字段和属性

学习内容: 一、字段 字段是为了对象或者类型存储数据的,可以表达一个对象或者类型的状态;也叫做成员变量;注意字段是在类里面声明的;在方法里声明的是局部变量; 1.1实例字段 用来表示每个实例的状态;比如一个students类;要了解一个学生一般看名字和成绩;所以名字和…