开发者社区> 问答> 正文

Swarm mode 集群怎么集成日志服务

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

[backcolor=transparent]注意:阿里云日志服务已经开始收费,按照下面的方式进行配置,将会产生费用,收费标准参见 日志服务计费规则。请务必了解您的日志量,以免产生大量非预期的费用。

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


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

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

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

大多数的 Docker 应用会直接将日志写到 Stdout,现在您依然可以这样做(对于日志写到文件的场景,可以参考下边的 [backcolor=transparent]使用日志文件)。在开通日志管理功能后,Stdout 的日志可以自动收集并且发送到阿里云日志服务。
下面以两种 compose 编排创建了一个 WordPress 应用。该应用包含 WordPress 和 MySQL 两个服务,日志会收集到阿里云日志服务。
[backcolor=transparent]compose V3 编排
  1. [backcolor=transparent]version[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'3'
  2. [backcolor=transparent]services[backcolor=transparent]:
  3. [backcolor=transparent]  web[backcolor=transparent]:
  4. [backcolor=transparent]    image[backcolor=transparent]:[backcolor=transparent] wordpress[backcolor=transparent]:[backcolor=transparent]4
  5. [backcolor=transparent]    ports[backcolor=transparent]:
  6. [backcolor=transparent]      [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80
  7. [backcolor=transparent]    depends_on[backcolor=transparent]:
  8. [backcolor=transparent]      [backcolor=transparent]-[backcolor=transparent] mysql
  9. [backcolor=transparent]    deploy[backcolor=transparent]:
  10. [backcolor=transparent]      replicas[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]2
  11. [backcolor=transparent]      restart_policy[backcolor=transparent]:
  12. [backcolor=transparent]        condition[backcolor=transparent]:[backcolor=transparent] on[backcolor=transparent]-[backcolor=transparent]failure
  13. [backcolor=transparent]    labels[backcolor=transparent]:
  14. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]routing[backcolor=transparent].[backcolor=transparent]port_80[backcolor=transparent]:[backcolor=transparent] wordpress[backcolor=transparent]-[backcolor=transparent]with[backcolor=transparent]-[backcolor=transparent]log
  15. [backcolor=transparent]      aliyun[backcolor=transparent].[backcolor=transparent]log_store_dbstdout[backcolor=transparent]:[backcolor=transparent] stdout   [backcolor=transparent]#注意这里
  16. [backcolor=transparent]  mysql[backcolor=transparent]:
  17. [backcolor=transparent]    image[backcolor=transparent]:[backcolor=transparent] mysql[backcolor=transparent]:[backcolor=transparent]5.7
  18. [backcolor=transparent]    environment[backcolor=transparent]:
  19. [backcolor=transparent]      [backcolor=transparent]-[backcolor=transparent] MYSQL_ROOT_PASSWORD[backcolor=transparent]=[backcolor=transparent]password
  20. [backcolor=transparent]    deploy[backcolor=transparent]:
  21. [backcolor=transparent]      restart_policy[backcolor=transparent]:
  22. [backcolor=transparent]        condition[backcolor=transparent]:[backcolor=transparent] on[backcolor=transparent]-[backcolor=transparent]failure

[backcolor=transparent]compose V1/V2 编排
  1. [backcolor=transparent]wordpress[backcolor=transparent]:
  2. [backcolor=transparent]    image[backcolor=transparent]:[backcolor=transparent] registry[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com[backcolor=transparent]/[backcolor=transparent]jiangjizhong[backcolor=transparent]/[backcolor=transparent]wordpress
  3. [backcolor=transparent]    ports[backcolor=transparent]:
  4. [backcolor=transparent]        [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80
  5. [backcolor=transparent]    labels[backcolor=transparent]:
  6. [backcolor=transparent]        aliyun[backcolor=transparent].[backcolor=transparent]routing[backcolor=transparent].[backcolor=transparent]port_80[backcolor=transparent]:[backcolor=transparent] wordpress[backcolor=transparent]-[backcolor=transparent]with[backcolor=transparent]-[backcolor=transparent]log
  7. [backcolor=transparent]        aliyun[backcolor=transparent].[backcolor=transparent]log_store_dbstdout[backcolor=transparent]:[backcolor=transparent] stdout   [backcolor=transparent]#注意这里
  8. [backcolor=transparent]    links[backcolor=transparent]:
  9. [backcolor=transparent]        [backcolor=transparent]-[backcolor=transparent] mysql
  10. [backcolor=transparent]mysql[backcolor=transparent]:
  11. [backcolor=transparent]    image[backcolor=transparent]:[backcolor=transparent] mysql
  12. [backcolor=transparent]    ports[backcolor=transparent]:
  13. [backcolor=transparent]        [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80
  14. [backcolor=transparent]    labels[backcolor=transparent]:
  15. [backcolor=transparent]        aliyun[backcolor=transparent].[backcolor=transparent]scale[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"1"
  16. [backcolor=transparent]    environment[backcolor=transparent]:
  17. [backcolor=transparent]        [backcolor=transparent]-[backcolor=transparent] MYSQL_ROOT_PASSWORD[backcolor=transparent]=[backcolor=transparent]password

在上边的编排文件中,标签 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。

在 [backcolor=transparent]日志索引 列中单击 [backcolor=transparent]查询 查看日志。

使用文件日志
如果您不希望日志直接写到 stdout 中,而需要将日志直接写到文件中,比如/var/log/app.log,可以进行如下配置。
  1. [backcolor=transparent]aliyun[backcolor=transparent].[backcolor=transparent]log_store_name[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]/var/[backcolor=transparent]log[backcolor=transparent]/[backcolor=transparent]app[backcolor=transparent].[backcolor=transparent]log

其中name为 logstore 的名字,/var/log/app.log为容器内日志的路径。
如果您需要输出多个日志文件到日志服务,可以进行如下配置将文件放在多个目录下。
  1. [backcolor=transparent]aliyun[backcolor=transparent].[backcolor=transparent]log_store_name[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]/data/[backcolor=transparent]logs[backcolor=transparent]/[backcolor=transparent]access[backcolor=transparent]/[backcolor=transparent]access[backcolor=transparent].[backcolor=transparent]log
  2. [backcolor=transparent]aliyun[backcolor=transparent].[backcolor=transparent]log_store_name[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]/data/[backcolor=transparent]logs[backcolor=transparent]/[backcolor=transparent]error[backcolor=transparent]/[backcolor=transparent]error[backcolor=transparent].[backcolor=transparent]log
  3. [backcolor=transparent]aliyun[backcolor=transparent].[backcolor=transparent]log_store_name[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]/data/[backcolor=transparent]logs[backcolor=transparent]/[backcolor=transparent]error[backcolor=transparent]/*.log  #支持通配符

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

展开
收起
反向一觉 2017-10-30 15:40:30 2567 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载