一、集中式日志

日志可分为系统日志、应用日志以及业务日志,系统日志给运维人员使用,应用日志给研发人员使用,业务日志给业务操作人员使用。我们这里主要讲解应用日志,通过应用日志来了解应用的信息和状态,以及分析应用错误发生的原因等。

随着系统的日益复杂,大数据时代的来临,需要几十甚至上百台的服务器是常有的事,因此迫切需要有一套针对日志、且能够集中式管理的产品。ELK 就实现了集中式日志管理平台,该平台统一涵盖了分布式日志收集、检索、统计、分析以及对日志信息的 Web 管理等集中化管控。

1.1、ELK 简介

ELK 是 Elasticsearch、Logstash、Kibana 的简称,这三套开源工具组合起来能搭建一套强大的集中式日志管理平台。

Elasticsearch 是个开源的分布式搜索引擎,提供搜索、分析、存储数据三大功能。它的特点有:分布式、自动发现、索引自动分片、索引副本机制、RESTful 风格接口、多数据源以及自动搜索负载等。

Logstash 是一个开源的用来收集、解析、过滤日志的工具。支持几乎任何类型的日志,包括系统日志、业务日志和安全日志。它可以从许多来源接收日志,这些来源主要包括 Syslog、消息传递(例如 RabbitMQ)和 Filebeat;能够以多种方式输出数据,这些方式主要包括电子邮件、WebSockets 和 Elasticsearch。

Kibana 是一个基于 Web 的友好图形界面,用于搜索、分析和可视化存储在 Elasticsearch 中的数据。它利用 Elasticsearch 的 RESTful 接口来检索数据,不仅允许用户定制仪表板视图,还允许他们以特殊的方式查询、汇总和过滤数据。

1.2、ELK 的架构

下图是集中式日志管理 ELK 的架构图。出于性能的考虑,选择采用了 Beats+EK 的形式来组合搭建集中式日志管理系统。


ELK 架构

二、配置方法

2.1、Elasticsearch

Elasticsearch 部署完成后,需要更改 elasticsearch.yml 配置文件中的主要属性:cluster.name、node.name、network.host、discovery.zen.ping.unicast.hosts。其中,当部署 Elasticsearch 时是以集群模式部署的,那么 discovery.zen.ping.unicast.hosts 这个属性才会需要被配置。

2.2、Logstash

通过配置 filebeat-pipeline.conf 文件中的 Input、Filter(可选)和 Output 来完成对数据的采集、过滤和输出,如下图所示:


Logstash 配置

然后以 filebeat-pipline.conf 文件启用 Logstash 服务,如下图所示:


启用 Logstash 服务

备注:由于采用的是 Beats+EK 这个方案来实现集中式日志管理,所以不需要配 Logstash。

2.3、Kibana

通过更改 kibana.yml 配置文件内容,用来连接正确的 Elasticsearch 服务地址,通常只需要配置 elasticsearch.url 属性即可,请见下图的第一个图。配置完成后,执行【bin/kibana &】命令启用 Kibana 服务,请见下图的第二个图。最后就可以在浏览器中打开 Kibana 管理页面(访问地址:http://139.198.13.12:4800/)来查看日志。


Kibana 的配置说明


启用 Kibana 服务

2.4、Filebeat

filebeat.yml 配置文件内容主要包含 Filebeat、Output、Shipper(可选)、Logging(可选)四大部分,其中 Filebeat 主要定义监控的日志文件信息,Output 主要配置日志数据的输出目标。

filebeat.yml 文件中,主要属性值的命名规范如下:

  1. fields.AppID 的命名规范是{AppID}。
  2. fields.AppName 的命名规范是{产品线英文名称}.{项目英文名称}(如果项目英文名称由 2 个或 2 个以上英文单词组成,则单词之间请用. 分隔)。
  3. 针对 index 属性需要注意的是:索引 (index) 所定义的值是{产品线英文名称},但英文字母必须全部小写,且不能以下划线开头,也不能包含逗号。

filebeat.yml 的配置示例如下图所示:


filebeat.yml 的配置示例

日志文件存放在哪台服务器中,filebeat 服务就部署在哪台服务器中。在 windows 操作系统上启用 filebeat 服务的步骤:

1、在 windows 下开启搜索,输入 powershell,打开 powershell 所在文件位置,右键 powershell.exe 以管理员身份运行,进入 PowerShell 窗口。

或者以管理员身份启动 cmd.exe,输入命令 powershell,进入 PowerShell 窗口 。

注意:

请务必确保以管理员身份打开 PowerShell 窗口,否则的话在以下第 2 步中运行.ps1 脚本时,就会报没有权限创建 filebeat 服务的错误:

2、导向到 filebeat 执行程序所在目录,例如:cd 'E:\ELK\filebeat-1.3.0-windows',然后执行命令:powershell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1。

3、之后可以在 PowerShell 窗口中通过以下几个命令来查看、启用以及停止 filebeat 服务:

  • 查看 filebeat 服务状态:Get-Service filebeat
  • 启动 filebeat 服务:Start-Service filebeat
  • 停止 filebeat 服务:Stop-Service filebeat

三、使用方法

3.1、Log4Net 本地日志

1、日志存放路径规范:{盘符}:\Log4Net{AppID}\,其中 AppID 即为我们所做项目的六位编码。例如:D:\Log4Net\110107\。

2、log4net.config 配置内容:

<?xml version="1.0" encoding="utf-8" ?>
<configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <appSettings> </appSettings> <log4net> <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> <!--AppID 150202,用于区分哪个应用的日志 --> <file value="D:\Log4Net\150202\" /> <rollingStyle value="Composite" /> <datePattern value="yyyy-MM-dd&quot;.log&quot;" /> <staticLogFileName value="false" /> <param name="Encoding" value="utf-8" /> <maximumFileSize value="100MB" /> <countDirection value="0" /> <maxSizeRollBackups value="100" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="记录时间:%date 线程:[%thread] 日志级别:%-5level 记录类:%logger 日志消息:%message%newline" /> </layout> </appender> <logger name="FileLogger" additivity="false"> <level value="DEBUG" /> <appender-ref ref="FileAppender" /> </logger> </log4net> </configuration>

注意了:

  • maximumFileSize 设置为 100MB;请给 countDirection 设置为大于 -1 的整数;maxSizeRollBackups 设置为 100。
  • 日志文件内容规范:日志文件中的每条日志内容要求是“记录时间 线程 日志级别 出错类 日志消息”。

3.2、日志查询

基于 Kibana 查询日志(访问地址:http://139.198.13.12:4800/),主要通过以下几个步骤实现:

  1. 选择业务索引库。
  2. 选择日期范围。
  3. 输入待查找的内容实现精确查询,也可以通过输入 * 实现模糊查询。
  4. 点击每条日志的展开图标,可以查看该条日志的详细信息。
  5. 在 Kibana 界面的左侧区域,自上而下依次是索引库选择框、选中字段集合列表(Selected Fields)、可用字段集合列表(Available Fields)。通过添加可用字段到选中字段集合列表中来改变 Kibana 右侧的日志表格呈现。

请参考如下图所示:


Kibana 查询日志界面

四、Demo 下载及更多资料

  • Log4NetDemo 下载地址:https://github.com/das2017/Log4NetDemo
  • ELK 官网:https://www.elastic.co/
  • 正则表达式配置说明:https://www.elastic.co/guide/en/beats/filebeat/current/regexp-support.html

转自http://www.infoq.com/cn/articles/architecture-practice-03-elk

转载于:https://www.cnblogs.com/zhaohainuo/p/8808643.html

中小型研发团队架构实践:集中式日志ELK相关推荐

  1. 中小型研发团队架构实践:高效率、低风险,一键发布并测试的持续集成工具Jenkins...

    一.Jenkins 简介 \\ 当每月发布次数变得越来越多时,如超过 200 次,发布工作人员的工作量会翻倍,此时由人工发布操作失误引起的风险会变得越来越大.为了提高项目的发布效率,也为了降低由人工操 ...

  2. 中小型研发团队架构实践:微服务架构

    http://www.infoq.com/cn/articles/architecture-practice-06-microservice-architect 一.MSA 简介 1.1.MSA 是什 ...

  3. 中小型研发团队架构实践:电商如何做企业总体架构?

    http://www.infoq.com/cn/articles/architecture-practice-09-enterprise-architecture?utm_source=infoq&a ...

  4. 中小型研发团队架构实践三要点--转

    来自微信公众号聊聊架构 作者|张辉清 编辑|雨多田光 如果你正好处在中小型研发团队-- 中小型研发团队很多,而社区在中小型研发团队架构实践方面的探讨却很少.中小型研发团队特别是 50 至 200 人的 ...

  5. 中小型研发团队架构实践三要点(转自原携程架构师张辉清)

    如果你正好处在中小型研发团队-- 中小型研发团队很多,而社区在中小型研发团队架构实践方面的探讨却很少.中小型研发团队特别是 50 至 200 人的研发团队,在早期的业务探索阶段,更多关注业务逻辑,快速 ...

  6. 中小型研发团队架构实践三要点

    如果你正好处在中小型研发团队-- 中小型研发团队很多,而社区在中小型研发团队架构实践方面的探讨却很少.中小型研发团队特别是 50 至 200 人的研发团队,在早期的业务探索阶段,更多关注业务逻辑,快速 ...

  7. .net 中小型研发团队架构实践三要点

    中小型研发团队很多,而社区在中小型研发团队架构实践方面的探讨却很少.中小型研发团队特别是 50 至 200 人的研发团队,在早期的业务探索阶段,更多关注业务逻辑,快速迭代以验证商业模式,很少去关注技术 ...

  8. 中小型研发团队架构实践:应用监控怎么做?

    一.Metrics 简介 应用监控系统 Metrics 由 Metrics.NET+InfluxDB+Grafana 组合而成,通过客户端 Metrics.NET 在业务代码中埋点,Metrics.N ...

  9. 中小型研发团队架构实践十:应用监控怎么做?

    一.Metrics 简介 应用监控系统 Metrics 由 Metrics.NET+InfluxDB+Grafana 组合而成,通过客户端 Metrics.NET 在业务代码中埋点,Metrics.N ...

最新文章

  1. 内存问题分析的利器——valgrind的memcheck
  2. TCP服务器和客户端的链接例子(侧重点在注意关闭套接子,减少套接子的描述子)
  3. 鲜为人知的软件项目管理原则(转)
  4. 面试过程中千万不要犯这 5 点低级错误
  5. Create an offline installation of Visual Studio 2017 RC
  6. 【路径规划】基于matlab动态多群粒子群算法局部搜索路径规划【含Matlab源码 448期】
  7. IP/TCP/UDP报文解析(1)IP报文
  8. 区块链专利申请全球过半 厉害了我的国
  9. 如何查询期刊论文影响力——JCR
  10. 超好用笔记软件Typora安装教程
  11. 揭秘短网址背后的灰色产业
  12. 计算机专业海报排版设计,我研究了2000张大神海报,终于总结出这个排版技巧...
  13. 如何修改python中字典的键和值
  14. 命令行运行matlab的方法
  15. 大数据存储技术方案介绍
  16. 基于深度学习的命名实体识别研究综述——论文研读
  17. WinDbg+WMware+Vista
  18. 【微电网优化】基于matlab粒子群优化算法的微电网调度(光伏、储能、电动车、电网交互)【含Matlab源码 2190期】
  19. html表格单行溢出省略号,单行、多行文本溢出显示省略号(css、js两种方法)
  20. python第8周 作业

热门文章

  1. 征战蓝桥 —— 2013年第四届 —— C/C++A组第10题——大臣的旅费
  2. 【MFC】根据菜单创建工具栏
  3. 【Linux】一步一步学Linux——dircolors命令(239)
  4. 【Tools】VMware虚拟机三种网络模式详解和操作
  5. 【Android平台】Alljoyn学习笔记一 Alljoyn简介
  6. 防止私自接交换机_防止私接家用路由器干扰DHCP功能,禁止用户手动设置IP地址-肖哥...
  7. python加法器_[python bottle] 网页加法器
  8. Python入门--数据类型
  9. 51nod 1268 和为K的组合 dfs
  10. menuetos oracle,使用DistroTest服务免费在线测试Linux和Unix操作系统