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

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

例如,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的例子。
docker-logs-and-metrics.png

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。
原文标题:视角 | 多容器环境下的日志管理难?有人做起了这个生意
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
4月前
|
Kubernetes 供应链 安全
云原生环境下的容器安全与最佳实践
云原生时代,容器与 Kubernetes 成为企业应用核心基础设施,但安全挑战日益突出。本文探讨容器安全现状与对策,涵盖镜像安全、运行时防护、编排系统风险及供应链安全,提出最小权限、漏洞扫描、网络控制等最佳实践,并结合阿里云 ACK、ACR 等服务提供全链路解决方案,展望零信任、AI 安全与 DevSecOps 融合趋势。
199 4
|
5月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
391 16
|
10月前
|
前端开发 API 开发者
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
907 75
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
|
6月前
|
存储 缓存 Serverless
【Azure Container App】如何在Consumption类型的容器应用环境中缓存Docker镜像
在 Azure 容器应用的 Consumption 模式下,容器每次启动均需重新拉取镜像,导致冷启动延迟。本文分析该机制,并提出优化方案:使用 ACR 区域复制加速镜像拉取、优化镜像体积、设置最小副本数减少冷启动频率,或切换至 Dedicated 模式实现镜像缓存,以提升容器启动效率和应用响应速度。
165 0
|
8月前
|
Kubernetes Cloud Native 区块链
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
260 0
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
日志审计的必要性在于其能够帮助企业和组织落实法律要求,打破信息孤岛和应对安全威胁。选择 SLS 下日志审计应用,一方面是选择国家网络安全专用认证的日志分析产品,另一方面可以快速帮助大型公司统一管理多组地域、多个账号的日志数据。除了在日志服务中存储、查看和分析日志外,还可通过报表分析和告警配置,主动发现潜在的安全威胁,增强云上资产安全。
903 43
|
Docker 容器
容器的日志
【10月更文挑战第31天】
698 68
|
10月前
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
网络安全视角:从地域到账号的阿里云日志审计实践
248 0