一、ELK简介

ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心组件。

Elasticsearch是数据存储、搜索、分析引擎,功能非常强大;Logstash是日志的收集、过滤工具;而Kibana是一个web图形展示引擎,可以展示采集到的数据。

本文旨在通过使用

二、Elasticsearch的配置

2.1 软件下载

我们可以到官方网站下载,我这里下载的是7.3.1的版本,分别是Elasticsearch、Logstash、Kibana、Filebeat等四个压缩包,如下图所示:

2.2 Elasticsearch的安装

把压缩包解压出来,然后修改config文件夹下的配置文件elasticsearch.yml

我这里只开启了允许跨域访问,大家还可以修改端口、ip、集群名称等:

http.cors.enabled: true
http.cors.allow-origin: "*"

然后进入通过cmd命令行进入到bin文件夹下,运行elasticsearch,如图:



运行成功后,访问默认的9200端口,访问成功,如图:



此时,我们的Elasticsearch已经配置完毕。如果需要做成服务的可以配合nssm,做成windows服务运行。

三、Logstash、Kibina的配置

3.1 配置logstash

解压文件,进入到bin目录下,新建一个配置文件logstash.conf,如下:

input {
stdin {
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
stdout {
codec => json_lines
}
}

这个文件input表示标准的输入,输出到elasticsearch 和命令行;

然后运行logstash -f logstash.conf,如下:

3.2 配置Kibina

Kibana的配置也很简单,只需要指定elasticsearch的运行端口就可以,修改config文件夹下的kibana.yml文件:

elasticsearch.hosts: ["http://localhost:9200"]

然后使用cmd命令进入到bin文件夹下,运行kibana.bat即可,我们可以看到服务成功启动,并运行在5601端口,打开验证:



3.3 生成日志,并在kibana里查看

在logstash的控制台里,模拟输入日志内容:

我们可以在命令行里进行输入,查看产生的日志:



到kibana验证我们刚输入的内容,是否被收集到,并存储在elasticsearch中,打开kibana,进入可以看到,已经成功收集:



至此,我们的核心ELK平台已经搭建完毕,并可以通过logstash产生日志,并查看。

四、通过Filebeat传数据到Logstash,并收集log4net日志

4.1 Filebeat介绍

Filebeat是本地文件的日志数据采集器。 安装在服务器上后,Filebeat监视日志目录或特定日志文件,tail file,并将它们转发给Elasticsearch或Logstash、kafka 等。

4.2 Filebeat 的配置

设置filebeat采集的来源

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations. - type: log # Change to true to enable this input configuration.
enabled: true # Paths that should be crawled and fetched. Glob based paths.
paths:
#- /var/log/*.log
#- c:\programdata\elasticsearch\logs\*
- D:\Work\log4net\WebApplication1\WebApplication1\Logs\*

设置filebeat的输出到logstash

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

4.3 配置log4net产生日志,并使用Filebeat采集传输

此步需要我们引用log4net组件产生本地日志,我的配置文件如下

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="rollingFile" />
<appender-ref ref="ErrorRollingFile" />
</root>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="WARN" />
</filter>
<!--日志的路径-->
<param name="File" type="" value="Logs\" />
<param name="Encoding" value="UTF-8"/>
<!--是否覆盖,默认是追加true-->
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<!--文件名称-->
<param name="DatePattern" value="yyyy-MM-dd'.Debug.log'" />
<!--设置无限备份=-1 ,最大备份数为1000-->
<param name="MaxSizeRollBackups" value="1000" />
<!--每个文件的大小-->
<param name="MaximumFileSize" value="102400KB" />
<!--名称是否可以更改为false为可以更改-->
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--输出格式-->
<param name="ConversionPattern" value="AppID | %F | %date | %-5level | | | %X{ip} | %X{UserIP} | %X{ServerIP} | %X{ServerPort} | %t | %thread | %l | [ %message%exception]%n" />
</layout>
</appender>
<appender name="ErrorRollingFile" type="log4net.Appender.RollingFileAppender,log4net">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
<!--日志的路径-->
<param name="File" type="" value="Logs\" />
<param name="Encoding" value="UTF-8"/>
<!--是否覆盖,默认是追加true-->
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<!--文件名称-->
<param name="DatePattern" value="yyyy-MM-dd'.Error.log'" />
<!--设置无限备份=-1 ,最大备份数为1000-->
<param name="MaxSizeRollBackups" value="1000" />
<!--每个文件的大小-->
<param name="MaximumFileSize" value="102400KB" />
<!--名称是否可以更改为false为可以更改-->
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--输出格式-->
<param name="ConversionPattern" value="AppID | %F | %date | %-5level | | | %X{ip} | %X{UserIP} | %X{ServerIP} | %X{ServerPort} | %t | %thread | %l | [ %message%exception]%n"/>
</layout>
</appender>
</log4net>

启用配置文件

log4net.Config.XmlConfigurator.Configure();

纪录日志

  log4net.ILog log = log4net.LogManager.GetLogger("rollingFile");//获取一个日志记录器
log4net.MDC.Set("ip", "192.168.0.1");
log.Info( "login success");//写入一条新log

查看产生的日志文件:

4.4 开启filebeat,验证本机产生的日志,收集到ELK平台展示

打开kibana可以看到,日志已经收集成功:



到此,我们的ELK平台已经搭建完毕。

五、小结

本文主要是通过filebeat收集程序产生的日志,然后通过logstash清洗,elasticsearch存储,最后通过kibana图形化的展示出来,流程图如下:



通过此文,我们在本机搭建起了一个单机版的日志采集、传输、存储、图形华展示的日志系统。

ELK日志分析系统的搭建的更多相关文章

  1. 十分钟搭建和使用ELK日志分析系统

    前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为“十分钟搭建和使用ELK日志分析系统”听 ...

  2. Docker笔记(十):使用Docker来搭建一套ELK日志分析系统

    一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储.索引日志, logstash —— 可用于日志传输.转换,kibana —— WebUI,将日志可视化),发现最新版已到7 ...

  3. Rsyslog+ELK日志分析系统

    转自:https://www.cnblogs.com/itworks/p/7272740.html Rsyslog+ELK日志分析系统搭建总结1.0(测试环境) 因为工作需求,最近在搭建日志分析系统, ...

  4. ELK日志分析系统简单部署

    1.传统日志分析系统: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安 ...

  5. ELK日志分析系统-Logstack

    ELK日志分析系统 作者:Danbo 2016-*-* 本文是学习笔记,参考ELK Stack中文指南,链接:https://www.gitbook.com/book/chenryn/kibana-g ...

  6. elk 日志分析系统Logstash+ElasticSearch+Kibana4

    elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示clie ...

  7. 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步

    第十章-实战:ELK日志分析系统 ElasticSearch.Logstash.Kibana简称ELK系统,主要用于日志的收集与分析. 一个完整的大型分布式系统,会有很多与业务不相关的系统,其中日志系 ...

  8. ELK 日志分析系统的部署

    一.ELK简介 ElasticSearch介绍Elasticsearch是一个基于Lucene的搜索服务器. 它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasti ...

  9. Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)

    因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见 ...

随机推荐

  1. Flex 布局的最简单表单

    http://www.ruanyifeng.com/blog/2018/10/flexbox-form.html https://www.cnblogs.com/grt322/p/8531882.ht ...

  2. Eclipse中修改某个java项目的jdk版本【我】

    Eclipse中修改某个项目的jdk版本,主要有下面4个地方 右键项目名,有如下3个地方 另外如果要在Tomcat中运行,还可能需要设置运行这个项目的Tomcat的容器的 jdk 版本,设置方式:

  3. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_13-课程预览功能开发-CMS页面预览接口测试

    5.2 CMS页面预览测试 CMS已经提供了页面预览功能,课程预览功能要使用CMS页面预览接口实现,下边通过cms页面预览接口测试课 程预览的效果. 1.向cms_page表插入一条页面记录或者从cm ...

  4. 【转】Selenium-xpath详解

    1.XPATH是什么 XPATH是一门在XML文档中查找信息的语言,XPATH可用来在XML文档中对元素和属性进行遍历,主流的浏览器都支持XPATH,因为HTML页面在DOM中表示为XHTML文档.X ...

  5. ClientDataSet中修改,删除,添加数据和Delta属性

    ClientDataSet中使用Post提交变更的数据时,实际上并没有更新到后端数据库中,而是提交到了由DataSnap管理的数据缓冲区中.当使用了ClientDataSet.ApplyUpDates ...

  6. Select 优化

    https://yq.aliyun.com/articles/704238?spm=a2c4e.11155472.0.0.66be4efeaUB5bk

  7. Core Data 多表关联

    1.概念简介 coreData中存在复杂的数据关系时,一张表难以满足需求,此时就需要了解使用coreData多表的关联使用. 如 课程表 和 章节表 的关系:一个课程跟章节的对应关系是 一对多,单一个 ...

  8. Spring Boot学习笔记——Spring Boot与ActiveMQ的集成

    Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ.Artemis等.这里以ActiveMQ为 ...

  9. 【Leetcode_easy】606. Construct String from Binary Tree

    problem 606. Construct String from Binary Tree 参考 1. Leetcode_easy_606. Construct String from Binary ...

  10. vue-slicksort拖拽组件

    vue-slicksort拖拽组件 安装 通过npm安装 $ npm install vue-slicksort --save 通过yarn安装 $ yarn add vue-slicksort 插件 ...