容器内日志收集方案示例

容器内日志收集方案示例

ELK(Elasticsearch+Logstash+Kibana)是流行的一体化日志方案,提供日志收集、处理、存储、搜索、展示等全方位功能。

基于docker部署ELK非常方便,有各种现成的image可用,比如http://elk-docker.readthedocs.org/

但因为容器的隔离性,收集容器内的日志很不方便。本文的方案可以让用户通过简单的配置实现这一功能。

原理

本方案借助docker的Volume功能。在host机器上开辟一个固定目录D;产生日志的容器将日志文件所在目录mount到D目录下的子目录中;收集日志的容器再把目录D mount到自己容器内。
这样日志收集容器就能访问到所有日志文件了。如下图所示:

另外,为了收集容器的stdout、stderr日志,还需要将host的/var/lib/docker/目录mount到日志收集容器中,可以收集到json日志。

部署方法

可以通过下面这个容器编排文件实现一键部署。

#elk包含了Elasticsearch+Logstash+Kibana三个应用
elk:
  image: registry.aliyuncs.com/testhub/elk:0.1
  ports:
    - '5601:5601'
    - '9200:9200'
    - '5000:5000'
  restart: always
  labels:
#aliyun.logs标示需要收集的目录,没有该标识的容器不会收集日志。多个目录之间用分号;分隔,目录与文件pattern之间用冒号:分隔,不带pattern则收集目录下所有文件。
#下面这行表示收集/var/log/elasticsearch目录下所有文件,/var/log/test/目录下所有.txt文件。
    aliyun.logs: /var/log/elasticsearch;/var/log/test/:*.txt
#aliyun.logs里出现的每一个目录,都要有相应的volume。
#host目录必须是/container_logs/开头。
  volumes:
    - /container_logs/elasticsearch/:/var/log/elasticsearch/
    - /container_logs/elktest/:/var/log/test/
logstash-forwarder:
  image: registry.aliyuncs.com/testhub/logstash-forwarder:0.2
  restart: always
  links:
    - elk:logstash
  labels:
#aliyun.global: true是阿里云扩展的功能,有该标识的容器每个host上有且仅有一个
    aliyun.global: 'true'
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - /container_logs/:/container_logs/
    - /var/lib/docker/:/var/lib/docker/

部署教程

在这之前,需要先创建一个集群。可以在容器服务控制台http://cs.console.aliyun.com/ 完成。
1. 创建编排文件



2. 用编排文件创建应用



3. 查看状态,找到elk服务的节点IP



4. 访问http://节点IP:5601/,开始搜索日志

时间: 2024-11-08 20:18:19

容器内日志收集方案示例的相关文章

DockOne微信分享( 一零二):基于容器的日志管理实践

本文讲的是DockOne微信分享( 一零二):基于容器的日志管理实践[编者的话]业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行大数据分析处理,Docker提供了日志驱动,然而并不能满足不同场景需求,本次将结合实例分享日志采集.存储以及告警等方面的实践经验. 2013年以来Docker迅速火了起来,它的理念带来了非常大的便利性,不过实际应用中会发现还有监控.日志.网络等问题尚待解决,本文会结合实例分享数人云做容器日志系统的经验. 基于ELK的日志管理系统架构

Docker日志收集最佳实践

云栖TechDay31期,阿里云容器服务技术专家戒空给大家带来Docker日志收集最佳实践的演讲.本文主要从传统日志处理开始谈起,接下来着重分析Docker日志处理,包括stdout和文件日志,其中还有fluentd-pilot,接着分享了日志存储方案Elasticsearch.graylog2和SLS,最后对正确写日志给出了建议.   以下是精彩内容整理: 传统日志处理 说到日志,我们以前处理日志的方式如下: 日志写到本机磁盘上 通常仅用于排查线上问题,很少用于数据分析 需要时登录到机器上,用

Docker日志收集新方案:fluentd-pilot

今天,我们将隆重介绍一款新的docker日志收集工具:fluentd-pilot Github项目地址:https://github.com/AliyunContainerService/fluentd-pilot 你可以在每台机器上部署一个fluentd-pilot实例,就可以收集机器上所有Docker应用日志.fluentd-pilot具有如下特性 一个单独fluentd进程,收集机器上所有容器的日志.不需要为每个容器启动一个fluentd进程 支持文件日志和stdout.docker lo

基于Flume的美团日志收集系统

基于Flume的美团日志收集系统(一)架构和设计 问题导读: 1. Flume-NG与Scribe对比,Flume-NG的优势在什么地方? 2.架构设计考虑需要考虑什么问题? 3.Agent死机该如何解决? 4.Collector死机是否会有影响? 5.Flume-NG可靠性(reliability)方面做了哪些措施? 美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流.美团的日志收集系统基于Flume设计和搭建而成. <基于Flu

安全日志收集与分析——抢先体验阿里云 ElasticSearch

10月13日,云栖大会上阿里云与Elastic公司联合发布阿里云Elasticsearch产品.根据官方介绍,阿里云提供基于开源Elasticsearch及商业版X-Pack插件,致力于数据分析.数据搜索等场景服务.在开源Elasticsearch基础上提供企业级权限管控.安全监控告警.自动报表生成等功能. Elasticsearch(ES)是中小企业安全日志分析的必备工具.团队在获得试用资格后,随即开展了产品试用工作,抢先体验这款"新产品". 申请开通服务 访问网址:https://

日志系统之Flume日志收集

最近接手维护一个日志系统,它用于对应用服务器上的日志进行收集然后提供实时分析.处理并最后将日志存储到目标存储引擎.针对这三个环节,业界已经有一套组件来应对各自的需求需求,它们是flume+kafka+hdfs/hbase.我们在实时分析.存储这两个环节,选择跟业界的实践相同,但agent是团队自己写的,出于对多种数据源的扩展需求以及原来收集日志的方式存在的一些不足,于是调研了一下flume的agent.结果是flume非常契合我们的实际需求,并且拥有良好的扩展性与稳定性.于是打算采用flume的

Flume日志收集分层架构应用实践

Flume作为一个日志收集工具,非常轻量级,基于一个个Flume Agent,能够构建一个很复杂很强大的日志收集系统,它的灵活性和优势,主要体现在如下几点: 模块化设计:在其Flume Agent内部可以定义三种组件:Source.Channel.Sink 组合式设计:可以在Flume Agent中根据业务需要组合Source.Channel.Sink三种组件,构建相对复杂的日志流管道 插件式设计:可以通过配置文件来编排收集日志管道的流程,减少对Flume代码的侵入性 可扩展性:我们可以根据自己

前端代码异常日志收集与监控

在复杂的网络环境和浏览器环境下,自测.QA测试以及 Code Review 都是不够的,如果对页面稳定性和准确性要求较高,就必须有一套完善的代码异常监控体系,本文从前端代码异常监控的方法和问题着手,尽量全面地阐述错误日志 收集各个阶段中可能遇到的阻碍和处理方案. 收集日志的方法 平时收集日志的手段,可以归类为两个方面,一个是逻辑中的错误判断,为主动判断:一个是利用语言给我们提供的捷径,暴力式获取错误信息,如 try..catch 和 window.onerror. 1. 主动判断 我们在一些运算

日志收集之kafka篇

日志收集     日志收集包括服务器日志收集和埋码日志收集两种.     服务器日志主要是nginx.tomcat等产生的访问和业务日志.     埋码收集主要是某些服务器无法收集,需要在前端进行收集的数据. 收集流程     日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题. 日志采集客户端,负责日志数据采集,定时写受写入Kafka队列: Kafka消息队列,负责日志数据的接收,存储和转发: 日志处理应用:订阅并消费kafka队列中的日志数据:       下