视角 | 多容器环境下的日志管理难?有人做起了这个生意

本文讲的是视角 | 多容器环境下的日志管理难?有人做起了这个生意,【编者的话】本文介绍了一个新的工具SPM,它用于解决在多容器环境下日志管理所遇到的问题,同时它整合了多种功能,避免了以往需要安装多种工具的麻烦,配合Kibana的展示功能,使得该工具还是值得一试的。

在微服务流行的今天,日志路由和解析的传统静态配置方法已经有点吃力;事实上,它还带来了额外的复杂度和资源消耗。相对的,这使得不能运行在单机上的微服务的数量降低了。

SPM for Docker整合的日志管理功能中,对微服务进行了支持,方式为降低安装复杂度、启动时间和最小化占用资源。SPM Agent for Docker汇集了标准、事件和日志,并且它运行在每一个Docker宿主机中的一个容器。除了标准的日志收集功能,我们最近还整合了自动日志格式探测功能和容器日志信息的值域抽取。这个过程被嵌入在Docker API数据流中,日志被收集起来送给统一日志索引工具:Logsene。这就意味着并没有为Docker日志驱动配置syslog,也没有路由到Logstash中去解析,并且也没有Elasticsearch来维持这些日志,甚至是连Kibana也不需要。SPM for Docker和Logsene将为你处理好这一切。

有很多方法从Docker中收集日志(你可以阅读我们的另一篇文章:Docker Logging Webinar);下面来介绍使用Logsene处理Docker日志的优点。

对于新手来说,我们从这几方面来了解日志管理功能:

  • 配置 - SPM for Docker中日志的配置
  • 自动格式探测和容器日志解析
  • 规则的相关性
  • 日志的报警检测和异常检测
  • Logsene和Kibana的可视化
  • 从UI中、命令行中搜索日志并用UNIX工具处理日志

1. 配置 - SPM for Docker中日志的配置

首先,我们使SPM for Docker获取Docker事件和Docker 标注的日志非常的渐变。在安装方面没什么好说的,只需要增加-e LOGSENE_TOKEN=your-logsene-token到SPM Docker Agent的Docker run的命令中,然后你就可以获取Docker容器的全部日志并放入Logsene。就这么简单!

并不是所有的日志都有对我们有用,这就是为什么我们提供了一个通过镜像名或者容器名的白名单或者黑名单来控制日志输出。相关的参数如下:

  • -e MATCH_BY_NAME – 容器名白名单的正则表达式
  • -e MATCH_BY_IMAGE - 镜像名白名单的正则表达式
  • -e SKIP_BY_NAME – 容器名黑名单的正则表达式
  • -e SKIP_BY_IMAGE - 镜像名黑名单的正则表达式
  • -v PATH_TO_YOUR_FILE:/etc/logagent/patterns.yml – 可选,自定义日志解析

一个筹集Metrics、Events和Logs的例子:

docker run --name spm-agent \
-e HOSTNAME=$HOSTNAME \
-e SPM_TOKEN=YOUR_SPM_TOKEN \
-e LOGSENE_TOKEN=YOUR_LOGSENE_TOKEN \
-e MATCH_BY_IMAGE=”nginx|mysql|mongodb|myapp” \
-v /var/run/docker.sock:/var/run/docker.sock \
sematext/spm-agent-docker

2. 容器日志自动解析

Docker日志是容器们的终端输出流。这些数据中混合着来自启动脚本的文本信息和来自应用的结构化日志。问题很明显,并不能直接对日志事件流进行直接处理。需要区分出哪些日志来自哪个容器、应用,并正确的解析。

SPM for Docker分析了行格式,并将其转换为JSON格式,使得所有的值域可见,并且从文本日志中抽取属性域。过去,通常需要使用日志处理工具,如Logstash、Fluentd或者rsyslog来处理日志信息,但是这些的配置是根据输入源来静态配置。这就不能够适应动态微服务的环境。有些人已经对syslog驱动、解析器配置、日志路由甚至其他部分做了更改。这就是为什么我们要整合自动格式检测到SPM中的原因,利用logagent-js来处理文本。这个整合的footprint很少,并不需要将日志导到外部服务,并且它为流行的应用进行日志格式探测,并生成JSON和以行为单位的日志输出。下图为由Docker Agent生成的Apache Access日志域值。

例如,SPM Docker Agent可以从下面这些官方镜像中解析日志:

  • MongoDB、MySQL、Redis
  • NGINX、Apache
  • Logstash或bunyan支持的任何JSON输出
  • 带或者不带时间戳的文本信息
  • 任何采用mount属性挂载的自定义模式,如“-v /mypatters/patterns.yml:/etc/logagent/patterns.yml”

探测和解析日志信息的logagent-js是一个开源的项目,欢迎贡献更多的日志格式解析。

3. 指标相关性

由于日志存储在Logsene中,它提供了分析相关性能的能力,如CPU使用率、内存使用率、网络以及硬盘I/O。你可以在SPM中很方便的查看与任何性能指标有关的日志信息。如果你在公司中负责解决性能问题或者其他相关问题,你就会明白它会节省你多少时间去获取度量指标、日志和事件。下图为Nginx的例子。

4. Docker日志上的报警

Logsene提供了定义报警的功能,同时还提供了日志的异常检测,例如错误信息、警告信息、安全漏洞等。

更多这方面的信息请查阅这个主题

5. 采用Kibana展示

我们对全部的Logsene应用提供了一键到Kibana功能。如果你的日志包含数值型数据,又或者你想生成日志频率、消息类型、高频错误的统计信息,在Logsene中可以很轻松的创建Kibana控制台。

6. 在命令行中搜索日志并处理并用UNIX工具处理

如果你活在终端的世界里并热爱命令行工具,可以使用Logsene命令行解释器。没有必要为了搜索而使用UI界面,也没有必要用JSON查询。使用Logsene+awk+grep+sort+uniq+...任何你需要的即可。

五分钟快速上手

恭喜!你已经掌握了很多信息。如果对刚刚阅读的内容有兴趣,可以注册账号,为Docker运行SPM并且亲自体验下那些吸引你的功能。初创企业、没有或者只有很少投资资金的创业公司、非营利性企业以及学术机构有优惠价格,快来联系我们吧。如果你可以帮助我们把SPM和Logsene做的更好,请加入我们吧!

原文链接:Innovative Docker Log Management (翻译:陈杰)

===============================================
译者介绍
陈杰,北京理工大学计算机学院在读博士,研究方向是自然语言处理在企业网络信誉评价方面的应用,平时也乐于去实现一些突发的想法。在疲于配置系统环境时发现了Docker,跟大家一起学习、使用和研究Docker。

原文发布时间为:2015-08-25

本文作者:Sonyfe25cp

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:视角 | 多容器环境下的日志管理难?有人做起了这个生意

时间: 2024-09-04 16:23:43

视角 | 多容器环境下的日志管理难?有人做起了这个生意的相关文章

详解Oracle RAC 环境下的连接管理

这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load Balancing.Connect Time Connection Failover 和 Runtime Connection Failover,以及里面所涉及到的 TAF.ONS.FCF.FAN.LBA 等诸多知识点.本文主要是针对 Oracle RAC 11gR2 环境下的连接管理,但同时也会对比说明一下 Oracl

云计算环境下煤矿应急管理关键技术研究

云计算环境下煤矿应急管理关键技术研究 西安科技大学  马莉 分析煤矿应急管理海量数据的来源及在传统模式下数据存储与处理的局限性,设计煤矿应急云平台中海量数据存储及分析的实现方法,重点阐述黄陵矿业集团下属煤矿生产作业环境参数异动模型及其在煤矿应急云平台中的实现方法,并对该矿某段周期内的瓦斯数据进行异动判定的分析,从而为管理人员的决策行为提供科学依据.最后通过对煤矿应急云平台数据处理性能的实验测试,验证了本文基于Hadoop开源分布式生态系统搭建的煤矿应急云平台相对于传统煤矿应急信息系统具有良好的数

[20170309]dg环境下在线日志损坏13.txt

[20170309]dg环境下在线日志损坏13.txt http://blog.itpub.net/267265/viewspace-2134665/ http://blog.itpub.net/267265/viewspace-2134481/ --//按照如下链接,拷贝备用日志到主库,修改文件头偏移0x230 日志组号.以及hws,eot对应位置,欺骗oracle是正常的日志文件. http://blog.itpub.net/267265/viewspace-2134816/ --//看了一

[20170307]dg环境下在线日志损坏12.txt

[20170307]dg环境下在线日志损坏12.txt http://blog.itpub.net/267265/viewspace-2134665/ http://blog.itpub.net/267265/viewspace-2134481/ --//前面的链接我测试了如果日志实时传输与应用的情况下,主库的崩溃并且在线日志删除的情况下(包括主机的备用日志)情况下, --//利用备库接收日志来恢复主库的情况.做一点点总结: 1.将备用日志拷贝过来,必须执行如下命令,加入最后应用的scn号. r

[20170303]dg环境下在线日志损坏8.txt

[20170303]dg环境下在线日志损坏8.txt --前面的测试,链接http://blog.itpub.net/267265/viewspace-2134481/ --前面的测试必须使用recover database using backup controlfile until change 13276911099; 才能恢复到结尾. --但是由于主备库scn相差1,在open resetlog时备库的数据文件头scn号减1,采用应用日志. --前面学习了解文件头fuzzy特性以及具体位

负载平衡环境下的SESSION管理

session|session 创建交互式web 页面时最大的挑战之一是维持用户的状态,一个站点也许想记住你是谁.在n页之前你点击了什么.在这最后一次做了些什么.现在马上要向你显示什么.实现这些功能的途径有许多,如查询字符串.提交表单或cookies,最强大的一种是ASP的Session 对象.  原文出处:http://www.asptoday.com/articles/20000118.htm      当用户第一次到达某站点,他/她被给予一个HTTP cookie格式的SessionID

Oracle12.2 多租户环境下的授权管理

题记:在多租户环境中,权限可以全局授予整个CDB,一个应用容器数据库(application container),或者单个的PDB.在多租户环境下,往往牵一发而动全身,因此合理授权就显得格外重要.通过本文我们首先来认识多租户中的全局授权和本地授权. 概述在多租户环境下,common user和local user之间可以互相授权.他们本身的权限既不属于公共权限也不属于本地权限.那么他们的权限如何起作用,这取决于权限是被全局授予还是本地授予的. 关于公用用户common user和本地用户loc

云计算环境下数据中心管理运行探讨

编者按:管理是IT系统良性运行的重要保障,不同的IT设备都有自己的管理系统.特别是大规模数据中心,必须通过集中的管理系统来运行管理计算.存储.网络等设备,以能够快速响应和处理数据中心的业务变更.异常事件.持续优化.在<IP领航>往期的文章中曾多次聚焦"数据中心的管理",但大都侧重于"以网络为核心"的管理,本文将把视线放大到整个云计算环境下的数据中心,对三种运行管理模型逐一对比分析. 传统数据中心,基础架构层面设备之间通过标准化连接和协议互通,保证了计算.

vmi:scm环境下的库存管理方法

一.革新传统库存控制方法的必要性 近年来,供应链管理(Supply Chain Management.简称SCM)在国内外日益受到人们的关注和重视,许多物流企业也开始重视探讨这种新的管理理念在库存管理中的应用.所谓供应链管理是以各种技术尤其是信息技术为依托,在供应链各节点间建立一种战略伙伴关系,实现从原材料供应商.制造商.分销商.零售商直到最终用户的商流.物流.信息流.资金流在整个供应链上的畅通无阻的流动,最终达到双赢甚至是多赢目的的过程. 在供应链管理环境下,供应链各个环节的活动都应该是同步进