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

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.xdnf.cn/news/14454.html

相关文章:

  • NGINX Plus 管理与上报模块`ngx_mgmt_module`
  • 25年泰康保险养老社招入职统一测评(心理、认知、潜质)北森真题题库、高分攻略
  • leetcode0187. 重复的DNA序列-medium
  • 用Jmeter进行接口测试
  • sql解析,日期 trunc sysdate
  • LangChain智能体之initialize_agent开发实战深度解析
  • 【完整教程】WSL发行版迁移到D盘
  • 【Block总结】NeLU(负斜率线性单元)函数|最新激活函数|独家复现|即插即用
  • 【AI论文】Saffron-1:LLM安全保证的推理缩放范例
  • Redis 6.2.6 安装教程 - 从源码编译到配置启动(Linux环境)
  • 本地访问远程vps中的sqlite数据库中的内容之(二)使用Python和web访问远程sqlite
  • 构建esp-IDF出现的(Git仓库所有权检测)问题
  • linux thermal framework(4)_thermal governor
  • 安卓9.0系统修改定制化____安卓9.0系统精简 了解系统app组件构成 系统app释义 常识篇 一
  • Leetcode 刷题记录 13 —— 图论
  • Qdrant向量数据库的增删改查
  • Java + Spring Boot 后端防抖实现方案
  • nrf52811墨水屏edp_service.c文件学习
  • YOLO优化之双池化下采样融合块、注意力引导逆残差块
  • 【学习笔记】深入理解Java虚拟机学习笔记——第6章 类文件结构
  • CppCon 2016 学习: std::accumulate EXPLORING AN ALGORITHMIC EMPIRE
  • ubuntu 22.04 安装部署elasticsearch 7.10.0详细教程
  • Linux服务器入门教程
  • React forwardRef 与 useImperativeHandle 深度解析
  • LangGraph 深度应用指南:构建下一代Agent系统
  • 使用VSCode开发MCU,FreeRTOS进Hard_Fault调试
  • JVM——JVM中的扩展之道
  • 基于二进制XOR运算的机器人运动轨迹与对称图像自动生成算法
  • 基于深度学习的智能交通流量预测系统:技术与实践
  • 批量下载图片小工具