首页 > 系统相关 >基于 Windows10 搭建 ELK (Elasticsearch 8 + Kibana + Logstash)

基于 Windows10 搭建 ELK (Elasticsearch 8 + Kibana + Logstash)

时间:2023-12-29 11:34:34浏览次数:56  
标签:ELK name level Windows10 Kibana Logstash https 8.11 logstash

参考

注意

  1. mvn 依赖 logstash-logback-encoder 7.4 版本测试出错,7.3 可以。。
  2. 所有服务启动后,Logstash 命令行无输出 json 应该是 Spring Boot 项目没有正确发送日志,试试清理 Spring Boot 项目的依赖,重新启动项目;或重启电脑。
  3. 比较新的架构是 ELKB。
  4. Elasticsearch 的安全开关默认打开,请求协议为 https,访问:https://127.0.0.1:9200 需要输入账号密码。

环境

环境 版本 说明
windows 10
vs code 1.85.1
Spring Boot Extension Pack v0.2.1 vscode插件
Extension Pack for Java v0.25.15 vscode插件
JDK 11
Springboot 2.3.12.RELEASE
Apache Maven 3.8.6
logstash-logback-encoder 7.3 mvn驱动,测试7.4版本可能存在问题,导致无法发送日志给logstash
Elasticsearch 8.11.3 下载
kibana 8.11.3 需要与ES一致 下载
Logstash 8.11.3 需要与ES一致,另外cn语言网站没有exe安装包,需要去fr语言网站下载 下载

正文

准备

  1. 下载 Elasticsearch 、Kibana 、 Logstash。

  2. Elasticsearch elasticsearch-8.11.3\config\elasticsearch.yml 部分配置调整:

    # Enable security features 
    # 6.8 和 7.1 后默认开启安全,强制ssl与账号密码
    # 默认true
    xpack.security.enabled: false
    # 追加到文件尾部,设置插件访问es配置。 
    http.cors.enabled: true 
    http.cors.allow-origin: "*"
    
  3. Kibana kibana-8.11.3\config\kibana.yml 配置追加:

    # 提供服务的IP
    server.host: "localhost"
    # 提供服务的端口,也就是 Kibana 网页面板访问的端口号。
    server.port: 5601
    # es服务的地址
    elasticsearch.hosts: ["http://localhost:9200"]
    # 本地化
    i18n.locale: "zh-CN"
    
  4. Logstash logstash-8.11.3\config\logstash.conf 新增配置文件:

    # 启动命令 ./bin/logstash.bat -f ./config/logstash.conf
    input{
    	tcp {
    		mode => "server"
    		host => "0.0.0.0" #我这里是本地
    		port => 4567 #开放这个端口进行采集
    		codec => json_lines # 编解码器
    	}
    }
    
    output{
    	elasticsearch { 
    		#es地址
    		hosts=>"127.0.0.1:9200"
    		# 在es里产生的index的名称
    		index => "springboot-%{+YYYY.MM.dd}"
    	}
    	stdout{
    		codec => rubydebug
    	}
    }
    
  5. Spring Boot 项目配置

    1. pom.xml 追加依赖
      	<!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->
      	<dependency>
      		<groupId>net.logstash.logback</groupId>
      		<artifactId>logstash-logback-encoder</artifactId>
      		<version>7.3</version>
      	</dependency>
      
    2. src\main\resources\application.properties 追加配置
      	# 引入 logstash 配置
      	logging.config=classpath:logstash-spring.xml
      	logging.level.root=INFO
      
    3. 创建 src\main\resources\logstash-spring.xml 并写入:
      <?xml version="1.0" encoding="UTF-8"?>
      	<configuration>
      		<include resource="org/springframework/boot/logging/logback/base.xml" />
      		<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
      			<!-- 
      				Logstash 配置中开放的端口 
      					input{
      						tcp {
      							mode => "server"
      							host => "0.0.0.0" #我这里是本地
      							port => 4567 #开放这个端口进行采集
      							codec => json_lines # 编解码器 有的版本需要独自安装
      						}
      					}    
      			-->
      			<destination>localhost:4567</destination>
      			<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
      		</appender>
      
      		<!-- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
      
      			<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
      				<jsonGeneratorDecorator
      						class="net.logstash.logback.decorate.FeatureJsonGeneratorDecorator"/>
      				<providers>
      					<pattern>
      						<pattern>
      							{
      							"date": "%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ}",
      							"level": "%level",
      							"msg": "%msg"
      							}
      						</pattern>
      					</pattern>
      				</providers>
      			</encoder>
      		</appender> -->
      
      		<root level="INFO">
      			<appender-ref ref="LOGSTASH" />
      			<!-- <appender-ref ref="STDOUT" /> -->
      		</root>
      	</configuration>
      

启动

启动顺序为 1. Elasticsearch、2. Kibana、Logstash、3. Spring Boot 项目。

  1. Elasticsearch 双击启动 elasticsearch-8.11.3\bin\elasticsearch.bat,访问 http://127.0.0.1:9200/ 显示如下内容为启动成功。

    {
      "name" : "DESKTOP-XXXXXXX",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "XXXXNTUgXXXJTTNwXXpXXw",
      "version" : {
    	"number" : "8.11.3",
    	"build_flavor" : "default",
    	"build_type" : "zip",
    	"build_hash" : "64cf0xxx3b56b1fd444xxx454cb88aca7e7xxx9a",
    	"build_date" : "2023-12-08T11:33:53.634979452Z",
    	"build_snapshot" : false,
    	"lucene_version" : "9.8.0",
    	"minimum_wire_compatibility_version" : "7.17.0",
    	"minimum_index_compatibility_version" : "7.0.0"
      },
      "tagline" : "You Know, for Search"
    }
    
  2. Kibana 双击启动 kibana-8.11.3\bin\kibana.bat,访问 http://127.0.0.1:5601 (图片:https://zhuanlan.zhihu.com/p/649902671)。

    首次启动提示 kibana no such index [.kibana],重启es和 kibana 试试。

    image

  3. Logstash 命令启动(指定配置文件):

    ./logstash-8.11.3/bin/logstash.bat -f ./logstash-8.11.3/config/logstash.conf
    

    出现如下类似的控制台输出为启动成功。

    [2023-12-29T10:40:56,656][INFO ][logstash.javapipeline    ][main] Pipeline Java execution initialization time {"seconds"=>0.85}
    [2023-12-29T10:40:56,802][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
    [2023-12-29T10:40:56,803][INFO ][logstash.inputs.tcp      ][main][66431899e5xxe6919xxaba30xx636afdf4xx4c6f458a9245473bd02c7c1650c6] Starting tcp input listener {:address=>"0.0.0.0:4567", :ssl_enabled=>false}
    [2023-12-29T10:40:56,815][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
    
  4. 启动 Spring Boot 项目。

校验

  1. 启动 Spring Boot 项目后,观察 Logstash 启动命令行,显示如下类似信息即表示接收到了数据。
...
{
       "@version" => "1",
    "level_value" => 20000,
    "logger_name" => "org.springframework.web.servlet.DispatcherServlet",
        "message" => "Initializing Servlet 'dispatcherServlet'",
    "thread_name" => "http-nio-8080-exec-3",
     "@timestamp" => 2023-12-29T02:54:04.553Z,
          "level" => "INFO"
}
{
       "@version" => "1",
    "level_value" => 30000,
    "logger_name" => "com.xiaqiuchu.elk.controller.IndexController",
        "message" => "warn log",
    "thread_name" => "http-nio-8080-exec-3",
     "@timestamp" => 2023-12-29T02:54:04.557Z,
          "level" => "WARN"
}
{
       "@version" => "1",
    "level_value" => 20000,
    "logger_name" => "org.springframework.web.servlet.DispatcherServlet",
        "message" => "Completed initialization in 1 ms",
    "thread_name" => "http-nio-8080-exec-3",
     "@timestamp" => 2023-12-29T02:54:04.554Z,
          "level" => "INFO"
}
{
       "@version" => "1",
    "level_value" => 20000,
    "logger_name" => "org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]",
        "message" => "Initializing Spring DispatcherServlet 'dispatcherServlet'",
    "thread_name" => "http-nio-8080-exec-3",
     "@timestamp" => 2023-12-29T02:54:04.549Z,
          "level" => "INFO"
}
...

数据可视化

  1. 访问 Kibana http://127.0.0.1:5601(ip与端口都在配置文件中配置的)。
  2. 选择 左侧菜单->Machine Learning
    image
  3. 选择 可视化来自视图的数据。
    image
  4. 选择 创建数据视图。
    image
  5. 设置名称与索引模式,然后选择 保存数据视图到 Kibana 。(名称任意设置,索引模式是指匹配数据流,在 Logstash 配置文件中可以设置这个索引。如果索引模式匹配不到你的数据流,那么需要确认下是否正确将日志发送到 Logstash 没有。)
    image
  6. 完毕(如果没数据请检查数据是否成功发送,另外可以调整数据统计时间区间)。
    image

仪表板(自定义的数据大屏)

image

标签:ELK,name,level,Windows10,Kibana,Logstash,https,8.11,logstash
From: https://www.cnblogs.com/xiaqiuchu/p/17934379.html

相关文章

  • archlinux virtualbox使用文件共享 主机arch,客机windows8.1 windows10
    参照https://www.cnblogs.com/cuitang/p/11263008.html1.安装virtualbox增强功能VBoxGuestAdditions.iso(1)从virtualbox官网下载VBoxGuestAdditions.iso(2)命令行下载sudopacman-Svirtualbox-guest-isovirtualbox-guest-iso"是VirtualBox中的一个ISO映像文件,包含了Virt......
  • PowerToys​ Windows10 蓝屏处理软件
    项目介绍PowerToys 的历史可以追溯到Windows95时期。最初,PowerToys是微软为Windows提供的一组附加工具,旨在向用户提供一些额外的实用功能。不过在中途的某些Windows版本上,微软并没有提供PowerToys的支持。直到 Windows10 发布之后,PowerToys得到了新的关注。在2019......
  • ELK自动清理索引
    由于ELK比较吃资源所以日志不能一直保留,必须有一个清理策略利用索引的生命周期来实现参考自:https://www.cnblogs.com/wei325/p/16101258.htmlhttps://www.5axxw.com/questions/content/g3xpeh 所有命令均在kibana的dev tools的console中执行第一步 添加生命周期策略(7d......
  • kibana中用到的类库
    { "name":"kibana", "description":"KibanaisabrowserbasedanalyticsandsearchdashboardforElasticsearch.Kibanaisasnaptosetupandstartusing.Kibanastrivestobeeasytogetstartedwith,whilealsobei......
  • virtualbox安装windows10出现OOBE,卡在OOBE。
    参照https://zhuanlan.zhihu.com/p/419237209https://www.0z.gs/win/781.html文档https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/boot-windows-to-audit-mode-or-oobe?view=windows-11OOBE也就是OutofBoxExperience开箱即用体验。卡在OOBE跳......
  • Vmware17虚拟机安装windows10系统
    不要去什么系统之家之类的下载镜像,会不好安装,镜像被魔改过了,适合真实物理机上的系统在PE里安装系统,建议下载原版系统ISO文件安装vmware17pro下载地址https://dwangshuo.jb51.net/202211/tools/VMwareplayer17_855676.rar解压后打开这个就可以了,改过的安装器,你懂的VMware-Worksta......
  • 基于Docker安装Elasticsearch + Kibana
    基于Docker安装Elasticsearch+Kibana前提是先安装好Docker的环境Docker创建网络Docker创建一个网络专门连接Elasticsearch和Kibanadockernetworkcreatees-netDocker安装Elasticsearch拉取镜像(这里以8.6.0版本为例)dockerpullelasticsearch:8.6.0创建es的挂......
  • 5个Windows10关闭自动更新的好方法!
    通常,用户会定期对电脑系统进行升级,以达到优化设备的目的。但近期似乎存在大量用户在Windows10更新后遭遇兼容性等各种问题。因此,关闭Windows10的自动更新功能显得尤为重要,所以本文将向你介绍5个Windows10关闭自动更新的方法。Windows10关闭自动更新的方法!接下来本文将向......
  • Windows10 卸载WSL Ubuntu (解决Docker Desktop 报错问题)
    首先在“程序”里面卸载“WindowsSubsystemforLinuxUpdate”然后使用命令行卸载已安装的子系统1、查看当前环境安装的wslwsl--list2、注销(卸载)当前安装的Linux的Windows子系统wsl--unregisterUbuntu3、卸载成功,查看当前安装的Linux的Windows子系统wsl--list4......
  • 教你windows10如何原生支持预览IPhone拍摄的HEIC格式照片
    HEIC是新出的一种图像格式,苹果的iOS11更新后,iPhone7及其后硬件,在拍摄照片时默认存储为HEIC格式。与JPG相比,它占用的空间更小,画质更加无损。HEIC格式照片支持iOS11及macOSHighSierra(10.13)及更新版本。但是此种格式是无法在Windows中直接使用自带的看图软件打开。(解决方案和扩......