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

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.dtcms.com/a/252066.html

相关文章:

  • VSCODE + EIDE 下 STM32 编程使用部分外设无法通过编译:undefined reference to ‘xxx‘
  • 基于 Transformer RoBERTa的情感分类任务实践总结之五——剪枝
  • 山东大学项目实训-创新实训-法律文书专家系统-项目报告(八)
  • vue中的h渲染函数
  • AI医生24小时在线:你的健康新‘算法监护人
  • 《江西南昌棒垒球》一级运动员 vs 二级运动员·棒球1号位
  • 【C/C++】内核开发之进程调度大纲
  • 2.4k star 开源项目,Wingman AI + 知识图谱,如何帮你搭建‘私人大脑’?学术/项目必备,让笔记真正活起来!
  • Softhub软件下载站实战开发(三):平台管理模块实战
  • 二.TvSettings从Android.bp解析成build.gradle
  • 【Bug】--docker的wsl版本问题
  • Java项目中使用到的技术——《异步调用》
  • K8s集群平台
  • 快手可灵 Q1 营收1.5亿,AI商业化分析:C端订阅+B端API双轮驱动​
  • Appium + .NET 测试全流程
  • 1.MySQL三层结构
  • 深度学习打卡1
  • DependencyMatcher + ML Reranking 策略设计实践
  • 软件工程瀑布模型学习指南
  • Lean 定理证明器工具链管理器 elan工作原理介绍
  • Python训练营---DAY54
  • 综述|探究深度学习在园艺研究中的应用
  • 【CUDA GPU 支持安装全攻略】PyTorch 深度学习开发者指南
  • 3_STM32开发板使用(STM32F103ZET6)
  • Python OpenCV 4.10 库详解
  • SQL 增删改查 —— 笔记篇
  • Day.32
  • langchain从入门到精通(九)——ChatGPT/Playground手动模拟记忆功能
  • AI 神经网略小白学习笔记(一) -- 环境搭建
  • Ubuntu24.04一键安装ROS2