windows下部署安装 ELK,nginx,tomcat日志分析

1.安装包

如上就是elk- windows下部署需要用到的安装包 (ps:注意版本需要对应,另外es7版本对应是 jdk8,若更高版本 请自行查询版本对应号)。

下载地址:

Past Releases of Elastic Stack Software | Elastic

此地址可下载elk的全部安装包(不包含分词器),请按照对应系统选择对应版本。

2.安装es

ES 在windows下,压缩包直接解压,进入bin目录启动 elasticsearch.bat 即可。

关于分词器的添加,解压分词器,重命名为 ik,将 这个ik文件夹 放入 elasticsearch-7.9.3\plugins 目录下即可

如上,显示分词器添加成功

启动成功后,访问:

推荐一个es链接工具 es-client (开源,免费,好用)

地址:es-client: ES查询客户端,elasticsearch可视化工具

3.安装filebeat - 读取日志

压缩包解压即可,修改 filebeat.yml 文件,具体修改如下(如下只是作为测试,此配置为主要配置的参数,并非全部,请勿全部复制,具体根据自己的需求 自行配置)

============================== Filebeat inputs ===============================
# 单个日志配置 采集nginx
# filebeat.inputs:
# - type: log
#   enabled: true
#   paths:
#     # - /var/log/*.log
#     # - c:\programdata\elasticsearch\logs\*
#     - D:\tools\jiankong_tools\jiankong-nginx-1.26.2\logs\access.log

# 示例
# - type: log
#   enabled: true
#   paths:
#     - C:\path\to\tomcat\logs\*.log  # 替换为实际的Tomcat日志路径
#   fields:
#     type: tomcat
#     service: tomcat

# 定义全局字段,所有输入都将包含这些字段
fields:
  environment: "production" # 如果适用,定义环境(如生产、测试)

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - D:/nginx-1.26.2/logs/access.log*
    - D:/nginx-1.26.2/logs/error.log*
  tags: ["nginx"] # 标签,用于Logstash中的条件判断
  fields:
    service: nginx # 指定服务名,用于后续过滤

# 如果你选择在Filebeat中解析,可以添加如下processors
  processors:
    - dissect:
        # tokenizer: '%{ip} - %{user} [%{timestamp}] "%{method} %{uri} HTTP/%{http_version}" %{status} %{size} "%{referrer}" "%{user_agent}" rt=%{response_time}'
        tokenizer: 'rt=%{response_time}'
        field: 'message'
        target_prefix: 'nginx' 
  # multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' # 匹配日期格式的行作为新消息的开始
  # multiline.negate: true # 反转模式匹配,即非日期开头的行被视为同一事件的一部分
  # multiline.match: after # 在找到匹配行后,将随后的行附加到该事件中

- type: log
  enabled: true
  paths:
    - D:/apache-tomcat-9.0.83/xoalogs/*.log # Tomcat自定义日志路径
    - D:/apache-tomcat-9.0.83/logs/*.log # Tomcat标准日志路径
  tags: ["tomcat"] # 标签,用于Logstash中的条件判断
  fields:
    service: tomcat # 指定服务名,用于后续过滤
  multiline.pattern: '^\s*(\d{4}|\d{2})-(\d{2}|[a-zA-Z]{3})-(\d{2}|\d{4})' # 匹配日期格式的行作为新消息的开始
  multiline.negate: true # 反转模式匹配,即非日期开头的行被视为同一事件的一部分
  multiline.match: after # 在找到匹配行后,将随后的行附加到该事件中
  
  
  # ---------------------------- Elasticsearch Output ----------------------------
# 此为默认配置,注释此配置 ,添加下面的 写入logstash 端口为5044
# output.elasticsearch:
#   # Array of hosts to connect to.
#   hosts: ["localhost:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  #username: "elastic"
  #password: "changeme"

# ------------------------------ Logstash Output -------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

启动filebeat:

进入解压的目录 执行 注意配置指向路径改为自己的:

.\filebeat.exe -e -c D:\xxx\filebeat-7.9.3-windows-x86_64\filebeat.yml

4.安装logstash - 接收来自filebeat的日志

logstash-7.9.3\config 目录下已经有一个 logstash-sample.conf 示例了,也可自行添加一个 conf文件,我添加了一个 log.conf文件 配置如下:

input {
  beats {
    port => 5044
  }
}

# 单独写入一个 es的索引
# output {
#   elasticsearch {
#     hosts => ["http://localhost:9200"]
#     index => "test123"
#     #user => "elastic"
#     #password => "changeme"
#   }
# }

filter {
  if "nginx" in [tags] {
      grok {
        match => { "message" => '%{IPORHOST:clientip} - %{DATA:user} $%{HTTPDATE:timestamp}$ "%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} %{NUMBER:bytes:int} "%{DATA:referrer}" "%{DATA:agent}" rt=%{NUMBER:response_time:float}' }
      }
      date {
        match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
        target => "@timestamp"
      }
    }

  if "tomcat" in [tags] {
    grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} $%{DATA:thread}$ %{LOGLEVEL:level} %{JAVACLASS:class} - %{GREEDYDATA:message}" } # 解析Tomcat日志,包括线程、日志级别、类名和消息
    }
    date {
      match => [ "log_timestamp", "yyyy-MM-dd HH:mm:ss,SSS", "yyyy-MM-dd HH:mm:ss" ] # 支持两种时间格式:带或不带毫秒
      target => "@timestamp"
    }
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"] # Elasticsearch主机地址
    index => "%{[fields][service]}" # 索引命名模式
  }
  stdout { codec => rubydebug } # 输出到控制台,仅用于调试目的,上线前应移除
}

启动logstash:

进入 logstash-7.9.3\bin 目录下,执行如下命令 (注意路径和配置文件 指向你自定义名称的配置文件)

.\logstash.bat -f D:\ELK\logstash-7.9.3\config\log.conf

5.安装kibana

解压即可,进入kibana-7.9.3-windows-x86_64\bin 目录执行:

kibana.bat 即可启动,之后访问 http://localhost:5601/

( config/ kibana.yml ,修改 i18n.locale: "zh-CN" ,中文模式)

6.kibana监控日志配置

前面5步,全部安装配置完毕,启动成功后,根据下图指示,创建对应的 索引,下一步 配置索引设置,选择 时间格式,即可创建对应的索引,

索引创建成功后,即可看到对应的日志存储在 es中的字段信息,右上角可刷新或者删除,logstash会解析日志,若日志格式变更,或者增加了显示字段,这里也会相应的增加对应字段。

最后点击 Discover 即可 选择你创建的索引来查看实时日志信息了

可根据分钟显示,字段搜索等,其他的可自行去摸索了

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

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

相关文章

Controller 层优化四步曲

Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …

CVE-2025-0411 7-zip 漏洞复现

文章目录 免责申明漏洞描述影响版本漏洞poc漏洞复现修复建议 免责申明 本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任 漏洞描述 此漏洞 (CVSS SCORE 7.0) 允许远程攻击者绕…

洛谷P1030 [NOIP2001 普及组] 求先序排列(c++)详解

题目链接:P1030 [NOIP2001 普及组] 求先序排列 - 洛谷 | 计算机科学教育新生态 思路: 1.先确定跟节点 2.根据根节点,划分出左右子树 中:BADC 后:BDCA 分析: 根据后序遍历&#xff0…

基于 PyTorch 的深度学习模型开发实战

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 深度学习已广泛应用于图像识别、自然语言处理、自动驾驶等领域,凭借其强大的特征学习能力,成为人工…

VScode+ESP-IDF搭建ESP32开发环境

VScodeESP-IDF搭建ESP32开发环境 ESP-IDF安装方式: 离线安装 ESP-IDF下载;VSCode插件安装ESP-IDF; 这里选择VSCode 环境 ESP-IDF 插件方式安装, VSCode 插件市场中搜索并安装 ESP-IDF 插件: 安装完成后侧边栏会多出一个 ESP-IDF 标志&…

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…

(1)SpringBoot入门+彩蛋

SpringBoot 官网(中文):Spring Boot 中文文档 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能…

PydanticAI应用实战

PydanticAI 是一个 Python Agent 框架,旨在简化使用生成式 AI 构建生产级应用程序的过程。 它由 Pydantic 团队构建,该团队也开发了 Pydantic —— 一个在许多 Python LLM 生态系统中广泛使用的验证库。PydanticAI 的目标是为生成式 AI 应用开发带来类似 FastAPI 的体验,它基…

面向对象编程简史

注:本文为 “面向对象编程简史” 相关文章合辑。 英文引文,机翻未校。 Brief history of Object-Oriented Programming 面向对象编程简史 Tue, May 14, 2024 Throughout its history, object-oriented programming (OOP) has undergone significant …

四层网络模型

互联网由终端主机、链路和路由器组成,数据通过逐跳的方式,依次经过每条链路进行传输。 网络层的工作是将数据包从源端到目的端,跨越整个互联网。 网络层的数据包称为数据报。网络将数据报交给链路层,指示它通过第一条链路发送数据…

Linux探秘坊-------4.进度条小程序

1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后&#xff0c;会 先停顿两秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;为什么会后打印呢&#xff1f; 因为&#xff…

当AI学会“顿悟”:DeepSeek-R1如何用强化学习突破推理边界?

开篇&#xff1a;一场AI的“青春期叛逆” 你有没有想过&#xff0c;AI模型在学会“推理”之前&#xff0c;可能也经历过一段“中二时期”&#xff1f;比如&#xff0c;解题时乱写一通、语言混搭、答案藏在火星文里……最近&#xff0c;一支名为DeepSeek-AI的团队&#xff0c;就…

学习数据结构(1)时间复杂度

1.数据结构和算法 &#xff08;1&#xff09;数据结构是计算机存储、组织数据的方式&#xff0c;指相互之间存在⼀种或多种特定关系的数据元素的集合 &#xff08;2&#xff09;算法就是定义良好的计算过程&#xff0c;取一个或一组的值为输入&#xff0c;并产生出一个或一组…

mock可视化生成前端代码

介绍&#xff1a;mock是我们前后端分离的必要一环、ts、axios编写起来也很麻烦。我们就可以使用以下插件&#xff0c;来解决我们的问题。目前支持vite和webpack。&#xff08;配置超级简单&#xff01;&#xff09; 欢迎小伙伴们提issues、我们共建。提升我们的开发体验。 vi…

http的请求体各项解析

一、前言 做Java开发的人员都知道&#xff0c;其实我们很多时候不单单在写Java程序。做的各种各样的系统&#xff0c;不管是PC的 还是移动端的&#xff0c;还是为别的系统提供接口。其实都离不开http协议或者https 这些东西。Java作为编程语言&#xff0c;再做业务开发时&#…

基于微信小程序的移动学习平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Java集合学习:HashMap的原理

一、HashMap里的Hash是什么&#xff1f; 首先&#xff0c;我们先要搞清楚HashMap里的的Hash是啥意思。 当我们在编程过程中&#xff0c;往往需要对线性表进行查找操作。 在顺序表中查找时&#xff0c;需要从表头开始&#xff0c;依次遍历比较a[i]与key的值是否相等&#xff…

ReactNative react-devtools 夜神模拟器连调

目录 一、安装react-devtools 二、在package.json中配置启动项 三、联动 一、安装react-devtools yarn add react-devtools5.3.1 -D 这里选择5.3.1版本&#xff0c;因为高版本可能与夜神模拟器无法联动&#xff0c;导致部分功能无法正常使用。 二、在package.json中配置启…

【MySQL】 数据类型

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;【MySQL】 数据类型 发布时间&#xff1a;2025.1.27 隶属专栏&#xff1a;MySQL 目录 数据类型分类数值类型tinyint类型数值越界测试结果说明 bit类型基本语法使用注意事项 小数类型float语法使用注意事项 decimal语…

c++ 定点 new

&#xff08;1&#xff09; 代码距离&#xff1a; #include <new> // 需要包含这个头文件 #include <iostream>int main() {char buffer[sizeof(int)]; // 分配一个足够大的字符数组作为内存池int* p new(&buffer) int(42); // 使用 placement new…