开发者社区> 问答> 正文

Swarm 集群  日志管理  集成日志服务


日志服务(Log Service,简称Log)是针对日志场景的平台化服务。无需开发就可以快速完成日志收集、分发、投递与查询, 适用于日志中转、监控、性能诊断、日志分析、审计等场景。容器服务提供了集成日志服务的能力,可以方便地将应用日志发送到日志服务里。
    Note
在集群管理页,只要单击开启日志服务 > 确定,日志服务成功开启之后,通过内置的 RAM 账户,会为每个自动创建的 Logstore 创建日志索引,由于阿里云日志服务已经开始收费,因此启用本功能之后,按照下面的方式进行配置,将会产生计费,收费标准参见计费方式。请务必了解您的日志量,以免产生大量非预期的费用。




开启日志服务


  1. 登录 容器服务管理控制台
  2. 在 Swarm 菜单下,单击左侧导航栏中的集群。
  3. 选择目标集群并单击管理。
  4. 单击页面右上角的开启日志服务。
  5. 在弹出的确认对话框中,单击确定。
    开通容器服务的日志服务之前,您需要先开通阿里云访问控制(RAM)和阿里云日志服务。如果您还未开通,请单击 去开通开通访问控制(RAM)和阿里云日志服务。




查看 acslogging 服务安装结果


第一次启用日志服务时,容器服务会在您的机器安装日志服务所需的 Agent。您可以在应用列表中找到该应用。安装成功后,您就可以使用日志服务了。
  1. 登录 容器服务管理控制台
  2. 单击左侧导航栏中的应用。
  3. 选择目标集群并取消勾选隐藏系统应用。
    可以看到 acslogging 应用已安装成功。

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



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


大多数的 Docker 应用会直接将日志写到 Stdout,现在您依然可以这样做(对于日志写到文件的场景,可以参考下边的 使用文件日志)。在开通日志管理功能后,Stdout 的日志可以自动收集并且发送到阿里云日志服务。下面的例子创建了一个 WordPress 应用。该应用包含 WordPress 和 MySQL 两个服务,日志会收集到阿里云日志服务。
MySQL image: mysql
ports:
    - 80
labels:
    aliyun.scale: "1"
environment:
    - MYSQL_ROOT_PASSWORD=password

WordPress
image: registry.aliyuncs.com/jiangjizhong/wordpress
ports:
   - 80
labels:
   aliyun.routing.port_80: wordpress-with-log
   aliyun.log_store_dbstdout: stdout  # 采集stdout日志到dbstdout日志库中
   aliyun.log_ttl_dbstdout: 30  # 设置dbstdout日志库日志数据保存30天
links:
    - 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,表示标准输出。
aliyun.log_ttl_<logstore_name> 标签用来设置日志库初始日志保存时间,单位为天,有效值为 1~365 天,不配置则默认初始化为 2 天。
  Note 这里设置的是初始配置值,如果后期您需要修改日志保存时间,需要到日志服务控制台进行设置。
用上面的编排文件,您可以在容器服务管理控制台上创建一个名为 wordpress 的应用。在应用启动完成后,可以在阿里云日志管理控制台上找到 logstore acslog-wordpress-dbstdout,其中存储了 wordpress 的日志。



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

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


使用文件日志

如果您不希望日志直接写到 stdout 中,而需要将日志直接写到文件中,比如 /var/log/app.log,可以进行如下配置。 aliyun.log_store_name: /var/log/app.log   其中name为 logstore 的名字,/var/log/app.log为容器内日志的路径。
如果您需要输出多个日志文件到日志服务,可以进行如下配置将文件放在多个目录下。 aliyun.log_store_s1: /data/logs/access/access.log
aliyun.log_store_s2: /data/logs/error/error.log
aliyun.log_store_s3: /data/logs/exception/*.log  #支持通配符
  
Note 暂不支持多个logstore对应同一个日志目录。上面的例子中有 3 个 logstore s1、s2 和 s3,对应的日志文件必须在 3 个目录下。


开启 timestamp

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

展开
收起
青蛙跳 2018-08-27 20:36:18 2215 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
阿里邮箱—安全高效集成 立即下载
集成智能接入网关APP:优化企业级移动办公网络 立即下载
云效助力企业集成安全到DevOps中 立即下载