Docker容器日志收集

日志是 IT 系统的重要组成部分,记录了系统在什么时候发生了什么事情。我们可以根据日志排查系统故障,也可以做统计分析.
通常日志存放在本机的日志文件里,需要查看日志的时候,登录到机器上,用 grep 等工具过滤关键字。但是当应用要部署在多台机器上的时候,这种方式查看日志就很不方便了,为了找到一个特定的错误对应的日志,不得不登录到所有的机器上,逐个过滤文件。于是出现了集中式的日志存储方式:所有日志收集到日志服务里,在日志服务里可以查看和搜索日志

在 Docker 环境里,集中式日志存储更加重要。相比传统的运维模式,Docker 通常使用编排系统管理容器,容器和宿主机之间的映射并不固定,容器也可能不断的在宿主机之间迁移,登录到机器上查看日志的方式完全没法用了,集中式日志成了唯一的选择。

1.使用阿里云的日志服务

日志服务(Log Service,简称LOG/原SLS)是针对实时数据一站式服务,在阿里集团经历大量大数据场景锤炼而成。提供日志类数据采集、消费、投递及查询分析功能,全面提升海量日志处理/分析能力。

阿里日志服务

2.容器服务中使用 ELK

Elasticsearch+Logstash+Kibana

  • 阿里文档部署ELK链接
  • 容器内日志收集方案示例

3.容器服务中使用log-pilot+Elasticsearch+Kibana

本文重点介绍这套方案:
Docker 日志收集新方案:log-pilot

  1. Compose文件如下:
version: '2'
services:
  elasticsearch:
    image: elasticsearch
    ports:
    - '9200:9200'
  kibana:
    image: kibana
    environment:
      ELASTICSEARCH_URL: http://elasticsearch:9200/
    ports:
    - '5601:5601'  
    labels:
      aliyun.routing.port_5601: kibana
    links:
      - elasticsearch
      
  pilot:
     image: registry.cn-hangzhou.aliyuncs.com/acs-sample/log-pilot:0.1
     volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /:/host
     privileged: true
     environment:
       FLUENTD_OUTPUT: elasticsearch #按照您的需要替换 
       ELASTICSEARCH_HOST: ${elasticsearch} #按照您的需要替换
       ELASTICSEARCH_PORT: 9200
     labels:
         aliyun.global: true

ps: version是compose的版本、

  1. 其他容器启动配置labels
    其中labels是index
labels:
    aliyun.logs.access:/opt/openfire/logs/*.log
  1. ELASTICSEARCH_HOST 是elasticsearch所运行容器的节点
  2. 在ECS的安全组中开放5601端口
  3. 访问http://47.96.183.216:5601
    其中47.96.183.216是kibana容器所运行的节点ip
  4. 输入第二步指定的access 标签

你可能感兴趣的:(Docker容器日志收集)