分布式系统日志上下文查询功能

日志查看方式

随着技术的发展,越来越多的系统从单机转向到分布式,同时对应的日志查看方式除了直接查看文件外,也发展出了各种集中日志管理方式。其中常见日志查看方式如下:

单线程程序

开发单机程序时诊断非常简单:设置断点,检查断点上下变量状态即可。
当程序部署线上后,可以把断点中内容以日志方式记录下来。出现错误后,还原日志上下文(Context)不难,只要把日志文件中前后N行拿到后都能容易找到问题

多线程程序

当多线程出现后,还原上下文变得复杂一些,因为不同线程打日志顺序会造成一定干扰。我们可以在日志中记录、筛选线程(ThreadID)来排除其他线程干扰,拿到上下文

分布式系统

在分布式场景下(比如Docker、LXC、多服务器等),进程会同时跑在不同服务器上,一般通过集中式日志管理(例如Splunk、ELK、日志服务)等查找定位日志。



这种场景下查找日志非常方便(例如通过"Level:Error","Latency>100000 & Method:HandleRequest"等能对上亿日志进行快速查找),但定位到关键日志后还原上下文却变得很难。因为日志采集、索引都是无序的,为了还原上下文,必须通过时间、机器、线程号来筛选和查找(这种方法一般不够精确),业界并没有好的方法。

日志上下文查看

今天日志服务(原SLS)LogSearch在查询分析基础上,提供了查看上下文的按钮,既可以在控制台上 完全精确 还原任意日志上下文(上下N条日志),并支持对指定内容(比如ThreadId)进行筛选,帮助你快速定位问题。整个过程如图所示:

使用依赖

  • 只支持使用Logtail客户端收集的日志
  • 指定日志库(Logstore)必须开启索引功能

实际场景

  • Dev在线上通过关键词查询,定位到一个异常日志

  • 点击上下文查询后,既跳转到前后N条上下文显示框

    • 可以通过“更早”、“更新”等按钮加载更多上下文,也可以点击“返回普通搜索模式”进一步排查
    • 通过筛选框筛选ThreadID,进行精准上下文的过滤

时间: 2024-08-18 23:26:57

分布式系统日志上下文查询功能的相关文章

MongoDB 2.6.2 发布,大大改进查询功能

http://www.aliyun.com/zixun/aggregation/13461.html">MongoDB 2.6.2发布,新版本大大改进了查询功能.MongoDB是一个由C++++语言编写的基于分布式文件存储的数据库,旨在为Web应用提供可扩展的高性能数据存储解决方案.它的特点是高性能.易部署.易使用,存储数据非常方便. 主要特性有: 面向集合存储,易存储对象类型的数据. 模式自由. 支持动态查询. 支持完全索引,包含内部对象. 支持查询. 支持复制和故障恢复. 使用高效的二

大哥 能不能指导我一下如何做一个identify 查询功能啊

问题描述 大哥 能不能指导我一下如何做一个identify 查询功能啊 5C 像arcgis里面的identify那样,求指点 谢谢啦..... 解决方案

一分钟了解阿里云产品:开放搜索的模糊查询功能

开放搜索的模糊查询功能都有哪些,又分别用在什么场景呢?   开放搜索的模糊查询有以下3个功能,用户可以根据实际情况选择最合适的一种:   1 在控制台高级配置->查询分析功能     词权重并不是一个标准的模糊查询,以截图里的例子,会先搜索query="开放"+"搜索"+"好"+"不好",如果这样没办法召回文档的话,会改写query,变成 "开放"+"搜索" RANK "

asp查询xml的代码,实现了无刷新、模糊查询功能

xml|刷新|无刷新 asp查询xml的代码,实现了无刷新.模糊查询功能 <html><head><title>不刷新页面查询的方法</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><script language="javascript"><

使用xmlhttp为网站增加域名查询功能

xml 当我们准备建立一个Web站点时,就必须向域名登记机构申请一个Internet域名,因此,我们通常希望了解自己准备使用的域名是否已经被注册,这时,可以访问NIC站点http://www.nic.net,点击"whois"链接后输入需查询的域名,就可以得到我们需要的结果. WHOIS服务器为 .com..net 和 .org 的国际顶级域名的查询返回全部的 whois 数据,包括网站域名注册人.管理合约.联系方式(电话.电子邮件.地址).帐单联络.技术支持和域名服务器信息,对于用户

ASP进阶教程:留言查询功能(一)

教程   当有一天,你的心情突然变得很坏,但是巧合的是,在你的留言簿中你的网友留了一句很让你振奋的话,于是你很快就重拾了快乐的心情.但是在不久后你又一次心情变坏,但是这次却没有上次那么幸运,因为没有人给予你鼓励,于是你自然就想再看一看上次那句令你很受振奋的话.这时你就会想:假如我的留言簿有留言查询功能就好了!          为了能达成你的心愿,于是我决定在本章教程为你解说具有留言查询功能的留言簿程序.在讲解之前,让我们还是先来学习将在源程序中用到的COMMAND对象.          首先

ASP进阶教程Ⅸ:留言查询功能(一)

 当有一天,你的心情突然变得很坏,但是巧合的是,在你的留言簿中你的网友留了一句很让你振奋的话,于是你很快就重拾了快乐的心情.但是在不久后你又一次心情变坏,但是这次却没有上次那么幸运,因为没有人给予你鼓励,于是你自然就想再看一看上次那句令你很受振奋的话.这时你就会想:假如我的留言簿有留言查询功能就好了! 为了能达成你的心愿,于是我决定在本章教程为你解说具有留言查询功能的留言簿程序.在讲解之前,让我们还是先来学习将在源程序中用到的COMMAND对象. 首先让我们先来了解一下Command对象所提供的

php结合ACCESS的跨库查询功能

 问题说明: 有时需要在两个或三个数据库的表中,通过相关关键字,查询获取所需记录集,用一般的SQL查询语句是实现不了的,可通过ACCESS的跨库查询功能实现. 解决方法: 例如"装材类型"和"装材"两张表是在不同的数据库中的,具体查询方法,如下:   代码如下: @"Select * from 装材类型 as a INNER JOIN [;database=" AppDomain.CurrentDomain.BaseDirectory "

android-想实现Android的火车票查询功能,请问火车票数据从哪里获取?

问题描述 想实现Android的火车票查询功能,请问火车票数据从哪里获取? 想用Android开发火车票的查询功能,包括到达每站的时刻,所用时间,火车票价,经过的站点! 请问有现成的火车票数据?一般情况下,这些火车票数据都是从哪里获取到的? 解决方案 1.聚合网,要申请APPKEY,网址:http://www.juhe.cn/docs/api/id/22 2.webservice的,http://webservice.webxml.com.cn//WebServices/TrainTimeWeb