精华内容
下载资源
问答
  • 前言系统一大,就会拆分成多个独立的进程,比如web+wcf/web api等,也就成了分布式系统。...今天介绍一款全开源日志收集、展示系统 - logstash(基于java)+kibana(基于JRuby, logstash已自带)+ElasticSe...

    前言

    系统一大,就会拆分成多个独立的进程,比如web+wcf/web api等,也就成了分布式系统。

    要看一个请求怎么从头到尾走的,就有些困难了,要是进行DEBUG、跟踪,就更加麻烦了,困难程度要视进程多少而定,越多越复杂。

    分布式日志收集系统就登场了。

    今天介绍一款

    全开源日志收集、展示系统 - logstash(基于java)+kibana(基于JRuby, logstash已自带)+ElasticSearch+RabbitMQ

    架构图如下

    2d87ba48fab6a8b45345938f22f1fae0.png

    这张图是拷贝来的

    里面虽然是Redis,但是没关系,换成RabbitMQ照样行

    这个Broker Redis/RabbitMQ去掉实际上也行,只是去掉会会造成高峰时刻拖垮ElasticSearch,此处出现的目的是消峰

    Shipper Logstash图中有3个,意思是可以有多个,可以分布在不同Server上,无论是windows还是linux系统都可以

    看完上面三点,实际上已经对这个架构的扩展性很放心了,平心而论,确实很flex,具体可看http://logstash.net/docs/1.4.2/

    安装方法

    略,baidu一下一堆一堆的,注意的地方就一个:Kibana已经在logstash最新版中自带了,不用再去单独下载kibana代码,直接运行logstash web即可

    正文

    本文采用的logstash input类型为file的输入,既通过检测文本文件的方式进行日志采集(logstash支持很多input,文本文件只是其中一种,具体请看上面的文档url)

    我们假设目前日志文件log.txt中存在一行日志记录,比如:

    [192.168.1.1][2014-10-22 23:59:00][ERROR][Page1.Page_Load]Null Exception, bal...bal...

    此时logstash shipper会根据它的配置文件找到这个log.txt, 然后检测到有一个新行出现了,内容是上面这些,然后它会:

    正则匹配

    192.168.1.1==>ServerIP

    2014-10-22 23:59:00==>EventTime

    ERROR==>LogLevel

    Page1.Page_Load==>Method

    Null Exception, bal...bal...==>MessageBody

    哈哈,当然上述匹配法则是需要在配置文件中配置的

    发送到后续节点

    本篇中,是发送到RabbitMQ节点

    哈哈,当然也是需要配置文件中配置好的

    RabbitMQ实际上是起到了缓冲消峰的作用

    那么RabbitMQ的消息是要给到谁呢?它是logstash indexer,logstash indexer实际上很简单,只是接收MQ中的消息,然后发送到再后端的ES倒排序引擎

    然后就到了最后一个Kibana Web查询控制台,开发人员最终是通过这个Kibana查询界面来查询logstash收集来的日志的,下面来说说Kibana

    Kibana的数据来源:

    ElasticSearch:支持分布式扩展的倒排序搜索引擎,内核基于Lucene

    Kibana的查询界面自定义:

    可以灵活变换显示的列

    可以鼠标圈时间范围(根据时间段来查看日志列表)

    可以自动刷新日志列表

    可以自定义所监控日志的版本(如:生产系统、UAT系统、开发DEMO)

    可以查看某段时间段内某字段的饼图等统计图

    可以灵活排序

    可以定义列的显示前后位置

    可以定义列是否显示

    上一张图看看样子吧

    8417041fe56b6be1a08d4e3e1f1d08c8.png

    整个收集系统的搭建,除了logstash这一套组件的搭建外,还需要关注的地方是日志文件保存的格式,就是上面包含有中括号的那种一行一行的记录是以什么格式保存,因为这个格式会对应logstash参数的解析,而logstash参数的名称会映射到kibana的查询界面中。

    在程序这边,需要关注的是用统一的日志记录函数来记录,这样文本文件内容的格式就保证了,整个闭环就形成了。

    具体的配置方式,大家可以加入一些logstash的qq群,或者看本文开头提供的文档链接。

    DONE.

    展开全文
  • 一文快速读懂Java虚拟机的GC日志读懂Java虚拟机的GC日志是处理Java虚拟机内存问题的基本技能。...到目前为止,Java虚拟机已经实现了5类垃圾收集器分别为:Serial收集器,parnew收集器,parallel scavenge收集器,Se...

    1ecbb888892e09b4272a1a52e48f1d08.png一文快速读懂Java虚拟机的GC日志

    读懂Java虚拟机的GC日志是处理Java虚拟机内存问题的基本技能。GC日志只是一些人为设定的规则,没有什么技术含量。下面我们就来看看GC日志该怎么理解吧。

    首先,Java虚拟机的垃圾回收机制中有一个关键组件-垃圾回收器。到目前为止,Java虚拟机已经实现了5类垃圾收集器分别为:Serial收集器,parnew收集器,parallel scavenge收集器,Serial Old收集器,parallel old 收集器 ,cms收集器,g1收集器。

    GC日志就是以上各收集器运行的过程中内存变化的一些日志。而每一种收集器的日志都是由他们自身的实现来决定的,换言之,每种收集器的日志格式都可以不一样,但是虚拟机的设计者为了用户方便阅读,将各个收集器的日志保持一定的共性。

    我们来看下面的日志:

    0d73101af0a06f2634f6a536e6c5b3b9.png一文快速读懂Java虚拟机的GC日志

    GC日志开头的“[GC”或“[Full GC”表明这次垃圾收集的停顿类型,不是用来区分新生代GC还是老年代GC的。如果有Full ,说明这次GC发生了“Stop-The-World"

    接下来PSYoungGen 表示的是GC发生的区域,是新生代,这里显示的名称与使用的垃圾收集器是密切相关的。如果使用Parallel Scanvenge垃圾收集器,这里的名字就会显示为”PSYoungGen“。垃圾收集器为Parallel Scanvenge 是一款并行的垃圾收集器,特点为重视吞吐量,而不是gc停顿时间,可以设置自动调节新生代eden区的比率大小和晋升老年代的年龄等参数。

    老年代和永久代同理,名称也是由垃圾收集器决定的。

    除此之外,还有ParNew ,表明用的垃圾收集器是ParNew 一款并行垃圾收集器,defNew表明用的是默认的serial垃圾收集器,单线程的垃圾收集器。

    知道了是什么垃圾收集器,自然就知道他们是作用在那个代进行垃圾回收。

    后面方括号内的”6305K->776K(9216K)“意思是GC前该内存区域已使用容量->GC后该内存区域已使用容量(该内存区域总容量)”而在方括号之外的“6305K->4880K(19456K)”表示前Java堆已使用空间->GC后Java堆已使用空间(Java堆总容量)。

    再往后“0.0061795 secs”表示本次GC所占用的时间,单位是秒。再往后的“[Times: user=0.00 sys=0.00, real=0.01 secs]”是更为详细的数据。user表示用户态消耗的cpu时间;sys表示内核态消耗的cpu时间;real是操作从开始到结束所经过的时间。由于系统有可能并发/并行工作,所以会出现user+sys>real的情况。

    新生代日志信息

    f47d9ad843a0dba11d77fcabd4c39197.png一文快速读懂Java虚拟机的GC日志

    第一行 表明是新生代 Parallel Scanvenge 垃圾收集器

    总大小为9216k ,已使用7157k ,eden区空间为8192k, 已经被使用77%

    from survivor和to survivor区大小为1024k,其中from survivor已使用75%,tosurvivor未被使用

    老年代日志信息

    dbee9714046ea6fc95e330b53ff5a8f8.png一文快速读懂Java虚拟机的GC日志

    老年代用的是ParOldGen 表示是用的paraller old 收集器, 是parallel scavenge的老年代版本,使用多线程和 标记-整理 算法。 除了这个之外 还有serial old和cms收集器。

    总大小为10240k,已经使用4104k,对象空间已经被使用40%。

    好了,以上内容由十号笔记整理分享。希望可以帮助到有需要的同学,觉得有帮助的同学可以点赞收藏,也可以转发分享给我们身边的同学一起学习哦!喜欢十号笔记分享的朋友也可以关注一下,每天都会为大家送上不一样的后端技术知识,更多话题也可以在评论区中继续交流与吐槽哦!

    展开全文
  • 我想将日志Java应用程序发送到ElasticSearch,传统方法似乎是在运行应用程序的服务器上设置Logstash,并使用logstash解析日志文件(使用正则表达式…!)并将其加载到ElasticSearch中.是否有这样做的原因,而不是仅仅...

    我想将日志从Java应用程序发送到ElasticSearch,传统方法似乎是在运行应用程序的服务器上设置Logstash,并使用logstash解析日志文件(使用正则表达式…!)并将其加载到ElasticSearch中.

    是否有这样做的原因,而不是仅仅设置log4J(或logback)将所需格式的内容直接记录到日志收集器中,然后可以异步运送到ElasticSearch?当应用程序本身可以首先将其记录为所需的格式时,我必须摆弄grok过滤器以处理多行堆栈跟踪(并在日志解析时刻录CPU周期),这似乎很疯狂?

    在切向相关的注释中,对于在Docker容器中运行的应用程序,最佳做法是直接登录到ElasticSearch,因为只需要运行一个进程?

    解决方法:

    我认为从Log4j / Logback /无论是哪个appender直接登录到Elasticsearch通常都是不明智的,但我同意编写Logstash过滤器来解析“正常”的人类可读Java日志也是一个坏主意.我尽可能地使用https://github.com/logstash/log4j-jsonevent-layout让Log4j的常规文件追加器生成JSON日志,这些日志不需要Logstash进一步解析.

    标签:java,elasticsearch,logging,logstash,elastic-stack

    来源: https://codeday.me/bug/20191004/1852736.html

    展开全文
  • JAVA 关于日志

    2019-05-19 12:14:13
    收集了关于记录日志的几篇好文章: 一个著名的日志系统是怎么设计出来的? SLF4J和Logback和Log4j和Logging的区别与联系
    展开全文
  • Windows上一般的应用程序也可以通过日志系统打印...在真实开发自己的一个Java桌面应用的时候,这还是必须的,否则运行异常日志无法收集。System.out.println毕竟只能用于Hello World这种小的Demo程序,日志系统是...
  • Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注本文主要介绍常见的java垃圾收集器、如何阅读jvm日志和虚拟机中内存的分配策略。一、垃圾收集器垃圾收集器可以是看做内存回收的...
  • 一、说明互联网公司一般都会有专门的...日志埋点 就是通过程序打印 log 日志的方式进行业务/行为数据的记录二、总体架构通过 日志埋点 来实现业务监控和行为分析主要需要以下4个步骤数据生成(埋点)数据收集数据解...
  • 前言:本文收集整理了各大厂常见面试题N道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等...
  • [系统架构]分布式日志收集系统

    千次阅读 2014-11-04 10:25:06
    前言系统一大,就会拆分成多个独立的进程,比如web+wcf/web api等,也就成了分布式系统。...今天介绍一款全开源日志收集、展示系统 - logstash(基于java)+kibana(基于JRuby, logstash已自带)+Elastic
  • 前言 系统一大,就会拆分成多个独立的进程,比如web+wcf/web api等,也就成了分布式系统。 要看一个请求怎么从头到尾走的,...全开源日志收集、展示系统 - logstash(基于java)+kibana(基于JRuby, logstash已自带)...
  • 听到日志这个东西可能有的人莫名其妙,第一次接触就会觉得我们为什么要收集日志,即使要收集日志那么我们需要收集哪些日志,日志的作用是什么等等。 其实日志无论是在测试、开发中都非常重要,如果你在跑自动化时...
  • 在Android开发中,一个app在推广后。我们怎么才能知道这个app运行的...下面的这个就是介绍关于crash日志收集。这个就是核心代码: import java.io.File; import java.io.FileOutputStream; import java.io.Pr...
  • 怎么收集error级别的日志 收集用什么方式实现 针对收集到信息后怎么定位解决问题 怎么完美的解决? 用什么技术 系统介绍 系统架构图 技术介绍 javaagent javassist log日志的类字节转换: 端控制代码诊断部分...
  • 在《Spring Cloud使用Sleuth在应用中进行...这个时候就需要引入日志分析系统了,比如 ELK,可以将多台服务器上的日志信息统一收集起来,在出问题的时候我们可以轻松根据 traceId 来搜索出对应的请求链路信息。ELK ...
  • JVM是个运行服务端应用的好VM,但如果你只是想频繁地运行一段Java写的脚本,或者在跑一些辅助性的Java程序比如监控,比如日志收集,这时候的诉求就和平日里的应用不一样了:1.启动快速,动静小。2.低成本,节约CPU、...
  • Metrics是跟一位同事一起开发的开源组件,主要功能是通过比较轻量的方式与常用开源组件(jedis/mybatis/motan/dubbo/servlet)集成,收集并计算metrics,并支持输出到日志及转换成多种时序数据库兼容数据格式,配套的...
  • 本专栏的目的是收集全网最优秀的文章,供Java程序员成长,若有侵权,请联系我们删除。# 概述日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查...
  • 或者说收集器对于哪些对象提前进入老年代行为是怎么确定的呢? 大于eden/2的对象一定要 目前看起来是年龄比较大的进去了,可是最大的年龄也挺小啊~~ ps:为了避免其他因素,我把参数改为:-verbose:gc -XX:+...
  • Metrics是跟一位同事一起开发的开源组件,主要功能是通过比较轻量的方式与常用开源组件(jedis/mybatis/motan/dubbo/servlet)集成,收集并计算metrics,并支持输出到日志及转换成多种时序数据库兼容数据格式,配套...
  • 本专栏的目的是收集全网最优秀的文章,供Java程序员成长,若有侵权,请联系我们删除。# 概述日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查...
  • JVM 看懂GC日志

    2019-08-20 23:52:42
    每种收集器的日志形式都是由塔门自身的实现决定的,换言之,每种收集器的日志格式可能都不同,但虚拟机设计者为方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下经典GC日志怎么查看GC日志,在Idea的...
  • 在开发测试工具的应用后台,需要定时任务做日志处理,或者数据清理,包括做些复杂的业务计算逻辑,在选择定时任务的时候,怎么能够快速实现,并且选择一种更适合自己的方式呢?我这里把定时任务的实现收集整理了一些...
  • 下图是本篇的写作大纲,将从以下四个方面介绍怎么样处理 JVM 日志。 有准备才能不慌 想要分析日志,首先你得有日志呀,对不对。凡是未雨绸蒙总是没错的。所谓有日志的意思,你要把 JVM 参数配置好,日志...
  • 在开发测试工具的应用后台,经常听到同事说要做个定时任务把做日志处理,或者数据清理,包括做些复杂的业务计算逻辑,在选择定时任务的时候,怎么能够快速实现,并且选择一种更适合自己的方式呢? 我这里把定时任务...
  • G1垃圾收集

    2016-01-16 15:54:18
    文介绍如何使用G1,及在 Hotspot JVM 中怎么使用G1垃圾收集器。 您将了解 G1 收集器的内部原理, 切换为 G1 收集器的命令行参数, 以及让其记录GC日志的选项。 需要的时间 大约 1 个小时 简介 本文涵盖了...
  • 一次性精通JVM JAVA虚拟机

    千人学习 2019-12-13 20:27:37
    第8章 GC日志详解,各种垃圾回收器的日志都是不同的,怎么样读懂各种垃圾回收日志就是本章节的内容。 第9章 性能监控与故障排除,本章节实战学习jcmd、jmx、jconsul、jvisualvm、JMC、jps、jstatd、jmap、jstack、...

空空如也

空空如也

1 2 3 4
收藏数 76
精华内容 30
关键字:

java怎么收集日志

java 订阅