windows环境下ELK平台搭建

背景

  • 日志系统主要包括系统日志,应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器的软件,硬件信息,检查配置过程中的错误以及错误发生的原因。通常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

  • 难点一:通常日志被分散在不同设备上,如果你管理数十台上百台服务器,你开在使用一次登录每一台机器的传统方法查询日志,效率明显低下。我们应该使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。

  • 难点二:集中化管理后,日志系统的统计检索又成为一件比较麻烦的事情,一般我们使用grep, awk, wc等linux命令能实现检索和统计,但是对于要求更高的查询,排序和统计等要求和庞大的机器数量依然使用这样的方法难免会有点力不从心。

  • 解决方法:开源实时的日志分析ELK平台能够王梅的解决我们上述的问题,ELK由ElasticSearch,Logstash和Kibana三个开源工具组成,官网:https://www.elastic.co/cn/products/

    • Elasticsearch是一个开源分布式搜索引擎,他的特点是:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格的接口,多数据源,自动搜索负载等。
    • Logstash是一个完全开源的工具,他可以对你的日志进行收集,过滤,并将其存储以后使用(比如,搜索)
    • Kibana也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供日志分析友好的Web界面,可以帮助汇总,分析,和搜索重要数据日志。
  • 以下ELK工作原理图:
    在这里插入图片描述

安装环境

  • Windows10
  • ElasticSearch:7.3.2
  • Logstash:7.3.2
  • Kibana:7.3.2
  • JDK:1.8
  • NSSM:2.24
安装配置Java环境
  • 在Oracle官网获取最新版本的JAVA版本,运行按提示下一步就可以完成,安装后配置环境变量如图:
    在这里插入图片描述
  • CMD窗口下运行java -version命令,如果如下结果表示安装成功:
$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
安装ELK
  • 由于Logstash服务依赖ES服务,Kibana服务依赖LogStash和ES,所以ELK服务启动顺序为:ES—LogStash—Kibana,为了配合服务启动顺序,我们安装顺序也按启动顺序,首先准备所需要软件,如下地址:
    • elasticsearch国内镜像
    • kibana国内镜像
    • logstash国内镜像
    • NSSM下载地址
  • 三个软件尽量用同一个版本的,否则可能出现不兼容的情况
Elasticsearch安装
  • 下载解压,进入bin目录下,直接双击执行elasticsearch.bat,可以看到如下
    在这里插入图片描述
  • 我们测试一下是否启动成功:
    在这里插入图片描述
  • 安装ElasticSearch-head插件,此处直接在Chrom浏览器中搜索ElasticSearch-head插件安装即可。
  • 如下效果,输入localhost:9200,点击链接,就可以通过插件浏览es中现有的数据,并且支持查询操作:
    在这里插入图片描述
  • 以上启动方式是直接通过bat脚本,我们现在利用nssm软件对ES进行管理,将ES添加到系统进程中进行启动更加方便,如下流程:
  • 下载nssm,加压缩得到如下:
    在这里插入图片描述
  • 找到自己系统对应的win32,或者win64系统,将里面nssm.ext复制到ElasticSearch的bin目录中
  • CMD到es的bin目录下,执行nssm install elasticsearch,回车后会弹出一个安装设置界面:
    在这里插入图片描述
  • 如上图所示,填好对应的目录地址,applicationPath:选es的bin目录下 elasticsearch.bat文件,startup directory会自动填充,点击install service提示安装成功
  • 在CMD中输入services.msc打开windows服务管理界面找到elasticsearch,右键启动,按上步骤测试即可。
    在这里插入图片描述
Logstash安装
  • 先来一个常规非nssm方式的安装,下载解压,进入到logstash,将config目录下logstash-sample.conf 文件负责到bin目录,并且修改如下,重命名logstash.conf 首先来一个最简单配置:
input {stdin{ }
}
output {elasticsearch {hosts => ["http://localhost:9200"]}
}
  • 配置如上input指定日志来源是为空设置,表示日志来自控制台,output配置日志输出位置,指定位es地址,允许多个
  • CMD到logstash的bin目录下执行启动命令:logstash -f stdin.conf
    在这里插入图片描述
  • 当看到如上日志,表示已经成功启动并且连接到es,我们在控制台上输入任意字符,多试几次,日志推送到es中有一定延迟,接着到es-head中查看
  • 在elasticsearch中会自动创建一个内容分配,用来存储logstash推送过来的信息,如下图所示:
    在这里插入图片描述
  • 我们可以通过基本查询来查询到我们刚才在控制台输入的信息。
  • 接着我们来指定文件的形式来指定输入参数,毕竟我们实际运行的时候一定是读取日志文件中的内容,我们修改刚才复制到bin目录中的logstash.config文件如下:
input {file {path => ["E:/myCode/springcloud-learn/microservice-simple-provider-user-trace-elk/build/build/microservice-provider-user.json"]}
}
output {elasticsearch {hosts => ["http://localhost:9200"]}
}
  • 如上图所示,file指定了是文件输入类型,path指定文件地址,是数组类型可以指定多个,此处我们用一个springboot项目的json日志格式来进行测试。
  • 再次启动,并启动springboot项目,多次请求,再次查询ES。
logstash 常用命令:
-f:指定logstash的配置文件
-e:格式是后面跟字符串,这个字符串就被当做是logstash的配置;如果"",那么默认使用stdin作为输出,stdout作为输出;
-t:测试配置文件是否正确
logstash -f stdin.conf -t
  • 以上是通过bat脚本直接运行,接着我们还是用nssm的方式来进行配置,还是和刚才一样的流程
  • 将nssm.exe文件拷贝到logstash的bin目录下,在bin目录下创建run.bat并且编辑填入如下信息:
logstash.bat agent -f logstash.conf
  • cmd到bin目录下,执行 nssm install logstash,选择刚才创建的run.bat,点击install service,提示安装成功。
    在这里插入图片描述
安装kibana服务
  • 下载解压,这次直接用nssm的方式
  • 还是将nssm目录下对应本系统的nssm.exe复制到kibana的bin目录下
  • cmd到kibana的bin目录下,执行nssm install kibana,选择bin目录下kibana.bat,点击install service 完成安装

启动项目

  • CMD找那个运行services.msc,打开windiws服务,依次启动如下服务:
  • Elasticsearch
  • Logstash
  • Kibana
  • 在浏览器中输入http://localhost:5601/,可以看到如下界面:
    在这里插入图片描述
  • 上截图界面来配置一个对应es中分配的查询,点击左侧的index patterns,选择es中的分片,我们可以得到如下查询界面:
    在这里插入图片描述
  • 如上图所示,我们将日志文件中的信息通过kibana来进行查询。
  • 至此,所有服务安装完成,平台搭建完成,本次只是一个单机,单节点的测试项目,后续的机去部署需要每个软件进行集群配置安装。

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

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

相关文章

EntityFramework Core 3.x上下文构造函数可以注入实例呢?

今天讨论的话题来自一位微信好友遇到问题后请求我的帮助,当然他的意图并不是本文标题,只是我将其根本原因进行了一个概括,接下来我们一起来探索标题的问号最终的答案是怎样的呢?老规矩,首先我们定义如下上下文public c…

SpringCloud常见问题总结(一)

Eureka常见问题 Eureka注册服务慢 默认情况,服务注册到Eureka Server 的过程比较慢。在开发或者测试时候,如果能够加速注册的过程,从而提升工作效率。Spring Cloud官方文档详细描述了该问题的原因并提供了解决方案: //原文 Why…

[剑指offer]面试题21:包含min函数的栈

面试题21:包含min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。 栈内压入3、4、2、1之后接连两次弹出栈顶数字…

IO 模型知多少

1. 引言同步异步I/O,阻塞非阻塞I/O是程序员老生常谈的话题了,也是自己一直以来懵懵懂懂的一个话题。比如:何为同步异步?何为阻塞与非阻塞?二者的区别在哪里?阻塞在何处?为什么会有多种IO模型&am…

[剑指offer]面试题22:栈的压入、弹出序列

面试题22:栈的压入、弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5 是某栈的压栈序列,序列4、5、3、2、1…

Ubuntu上安装使用Docker

Docker简介 Docker是一个开源的容器引擎,他有助于更快的交付应用。Docker可以将应用程序和基础设施层做隔离,并且能将基础设施当做程序一样进行管理。使用Docker,可以更快的打包,测试以及部署应用程序,并且可以缩短从…

让 .NET 轻松构建中间件模式代码

让 .NET 轻松构建中间件模式代码Intro在 asp.net core 中中间件的设计令人叹为观止,如此高大上的设计何不集成到自己的代码里呢。于是就有了封装了一个简单通用的中间件模板的想法,以后有需要的时候就可以拿来即用。接口定义这里按执行的委托是同步还是异…

[剑指offer]面试题26:复杂链表的复制

面试题26:复杂链表的复制 题目:请实现函数ComplexListNodeClone(ComplexListNodepHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling 指…

SpringCloud + Docker

Dockerfile构建Docker 镜像 注意这里说的Dockerfile是指的一个文本文件,类似txt,只不过名字是Dockerfile,里面编辑Docker的一些指令,指令作用在于描述构建镜像的细节。如下一个简单的案例,用上一节中下载的nginx镜像来…

红帽借“订阅”模式成开源一哥,首创者升任总裁

4 月 6 日,红帽公司宣布,产品和技术总裁 Paul Cormier 即日起任红帽总裁,并兼任首席执行官。Paul Cormier 是开源商业化“订阅”模式的提出者,这一模式促使红帽达成连续超70个季度的盈利,身价升至340亿美金&#xff0c…

Docker中数据管理

Docker数据管理 生产环境中,对数据进行持久化,或者需要在多个容器直接进行数据共享,这必然涉及到容器的一些数据管理的操作。容器中数据管理主要有两种方式: 数据卷(Data Volumes):容器内数据直…

C#两大知名Redis客户端连接哨兵集群的姿势

前言前面《Docker-Compose搭建Redis高可用哨兵集群》,我的思路是将Redis、Sentinel、Redis Client App链接到同一个网桥网络,这个网桥内的Redis Client App就可以使用ContainerIP访问网桥内任意redis节点。同一网桥网络访问规避了Docker上发生的NAT&…

Docker之Dockerfile详解

使用Dockerfile创建镜像 Dockerfile是一个文本格式的配置文件,我们可以利用Dockerfile来快速的创建一个自定义的镜像。 基本结构 Dockerfile由一行命令语句组成,并且支持以#开头的注释一般包括四个部分:基础镜像信息,维护者信息…

创业的N种死法

点击蓝字关注,回复“职场进阶”获取职场进阶精品资料一份互联网的江湖一直流传着大佬们的创业传奇。马云上厕所几分钟敲定几千万美金融资。王石走投无路靠倒卖玉米赚到上百万从此逆袭。扎克伯格为了获得哈佛美女照片,开发一个小玩意从此改变了世界。传奇…

Docker容器实战思维

Docker成功的基础 Docker的实现用到的基础技术(cgroups, namespace,分层文件系统)在Docker之前已经存在很多年,并且 Linux Containers(LXC)也在很多企业的环境中得到了大量的应用实践,并得到明…

dotNET Core 3.X 请求处理管道和中间件的理解

理解 dotNET Core 中的管道模型,对我们学习 dotNET Core 有很大的好处,能让我们知其然,也知其所以然,这样在使用第三方组件或者自己写一些扩展时,可以避免入坑,或者说避免同样的问题多次入坑。本文分为以下…

了解.NET中的垃圾回收

原文来自互联网,由长沙DotNET技术社区编译。尽管这是一篇来自2009年的古老的文章,但或许能够对你理解GC产生一些作用。 了解.NET中的垃圾回收一旦了解了.NET的垃圾收集器是如何工作的,那么可能会触及.NET应用程序的一些更为神秘的问题时&…

数据结构与算法--数组:二维数组中查找

数组 数组最简单的是数据结构,占据一整块连续的内存并按照顺序存储数据,创建数组时候,我们需要首先指定数组的容量大小,然后根据大小分配内存。即使我们只在数组中存储一个元素,亚需要为所有数据预先分配内存&#xf…

数据结构与算法--字符串:字符串替换

数据结构与算法–字符串:字符串替换 字符串的优化 由于字符串在编程时候使用的评率非常高,为了优化,很多语言都对字符串做了特殊的规定。下面我们讨论java中字符串的特性java中的字符数组以’\0’ 结尾,我们可以利用这个特性来找…

数据结构与算法--经典10大排序算法(动图演示)【建议收藏】

十大经典排序算法总结(动图演示) 算法分类 十大常见排序算法可分为两大类: 比较排序算法:通过比较来决定元素的位置,由于时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序非比较类型排序&…