全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
容器服务

集成日志服务

更新时间:2017-12-14 10:12:59

日志服务(Log Service,简称Log)是针对日志场景的平台化服务。无需开发就可以快速完成日志收集、分发、投递与查询, 适用于日志中转、监控、性能诊断、日志分析、审计等场景。容器服务提供了集成日志服务的能力,可以方便地将应用日志发送到日志服务里。

注意:在集群管理页,只要单击 开启日志服务 > 确定,日志服务成功开启之后,通过内置的 RAM 账户,会为每个自动创建的 Logstore 创建日志索引,由于阿里云日志服务已经开始收费,因此启用本功能之后,按照下面的方式进行配置,将会产生计费,收费标准参见 日志服务计费方式。请务必了解您的日志量,以免产生大量非预期的费用。

开启日志服务

  1. 登录 容器服务管理控制台

  2. 在 Swarm 菜单下,单击左侧导航栏中的 集群

  3. 选择目标集群并单击 管理

    集群

  4. 单击页面右上角的 开启日志服务

    开启

  5. 在弹出的确认对话框中,单击 确定

    开通容器服务的日志服务之前,您需要先开通阿里云访问控制(RAM)和阿里云日志服务。如果您还未开通,请单击 去开通 开通访问控制(RAM)和阿里云日志服务。

    确认

查看 acslogging 服务安装结果

第一次启用日志服务时,容器服务会在您的机器安装日志服务所需的 Agent。您可以在应用列表中找到该应用。安装成功后,您就可以使用日志服务了。

  1. 容器服务管理控制台,单击左侧导航栏中的 应用

  2. 选择目标集群并取消勾选 隐藏系统应用

    可以看到 acslogging 应用已安装成功。

    log

同时,系统会在阿里云日志服务上创建一个对应的 project,您可以在 日志服务管理控制台 上进行查看。project 的名字里包含了容器服务集群的 ID。

5

在编排文件里使用日志服务

大多数的 Docker 应用会直接将日志写到 Stdout,现在您依然可以这样做(对于日志写到文件的场景,可以参考下边的 使用文件日志)。在开通日志管理功能后,Stdout 的日志可以自动收集并且发送到阿里云日志服务。

下面的例子创建了一个 WordPress 应用。该应用包含 WordPress 和 MySQL 两个服务,日志会收集到阿里云日志服务。

MySQL:

  1. image: mysql
  2. ports:
  3. - 80
  4. labels:
  5. aliyun.scale: "1"
  6. environment:
  7. - MYSQL_ROOT_PASSWORD=password

WordPress:

  1. image: registry.aliyuncs.com/jiangjizhong/wordpress
  2. ports:
  3. - 80
  4. labels:
  5. aliyun.routing.port_80: wordpress-with-log
  6. aliyun.log_store_dbstdout: stdout #注意这里
  7. links:
  8. - mysql

在上边的编排文件中,标签 aliyun.log_store_dbstdout: stdout表示将容器的标准写入 logstore acslog-wordpress-dbstdout里。这个标签的格式为 aliyun.log_store_{name}: {logpath}。其中 name 为阿里云日志服务 logstore 的名字,实际创建的 logstore 的名字为acslog-${app}-${name}app 为应用名称;logpath为容器中日志的路径;stdout 是一个特殊的 logpath,表示标准输出。

用上面的编排文件,您可以在容器服务管理控制台上创建一个名为 wordpress 的应用。在应用启动完成后,可以在阿里云日志管理控制台上找到 logstore acslog-wordpress-dbstdout,其中存储了 wordpress 的日志。

在日志服务管理控制台上查看日志

使用上面的编排文件部署应用之后,您可以在阿里云日志服务控制台查看收集到的日志。登录 日志服务管理控制台,找到集群对应的日志服务 project,单击进入。您可以看到编排文件里使用的 logstore acs-wordpress-dbstdout

1

日志索引 列中单击 查询 查看日志。

2

使用文件日志

如果您不希望日志直接写到 stdout 中,而需要将日志直接写到文件中,比如/var/log/app.log,可以进行如下配置。

  1. aliyun.log_store_name: /var/log/app.log

其中name为 logstore 的名字,/var/log/app.log为容器内日志的路径。

如果您需要输出多个日志文件到日志服务,可以进行如下配置将文件放在多个目录下。

  1. aliyun.log_store_s1: /data/logs/access/access.log
  2. aliyun.log_store_s2: /data/logs/error/error.log
  3. aliyun.log_store_s3: /data/logs/exception/*.log #支持通配符

注意:暂不支持多个logstore对应同一个日志目录。上面的例子中有 3 个 logstore s1、s2 和 s3,对应的日志文件必须在 3 个目录下。

开启 timestamp

Docker 在收集日志的时候可以选择是否添加 timestamp。您可以在容器服务中通过aliyun.log.timestamp 标签进行配置。默认会添加 timestamp。

  • 添加 timestamp

    aliyun.log.timestamp: "true"

  • 去除 timestamp

    aliyun.log.timestamp: "false"

本文导读目录