本文以ECS上的Nginx日志为例,介绍如何通过日志服务将日志数据写入AnalyticDB for MySQL。

背景信息

日志作为一种特殊的数据,对处理历史数据、诊断问题以及了解系统活动等有着非常重要的作用。对数据分析人员、开发人员或者运维人员而言,日志都是其工作过程中必不可缺的数据来源。

阿里云从用户角度出发,支持通过日志服务(Log Service,简称LOG/原SLS)将云服务器ECS(Elastic Compute Service)上的Nginx访问日志、Log4j日志、Apache日志以及结构化文本等文件实时同步至AnalyticDB for MySQL,从而使用AnalyticDB for MySQL进行实时日志分析。

前提条件

  • 在LOG中完成以下准备工作。
    1. 首次使用日志服务时,您需要使用阿里云账号登录日志服务 LOG产品详情页,单击立即购买,进入购买页面,然后单击立即开通即可成功购买日志服务,系统自动跳转到日志服务控制台
      说明 如果您之前已经开通过日志服务,请直接从创建Project开始。
    2. 参考LOG快速入门,创建Project、创建Logstore。

      本示例创建test-ecs-log Project和nginx-logstore Logstore。

  • 开启并获取当前阿里云账号的Access Key。
    1. 登录日志服务控制台,将鼠标放在右上方的用户名区域,在弹出的快捷菜单中选择AccessKey 管理
    2. 系统弹出安全提示对话框,单击继续使用AccessKey,单击查看Secret,页面显示AccessKeyIdAccessKeySecret
  • 参照分析型数据库MySQL版快速入门创建表组创建表,在AnalyticDB for MySQL中创建目标数据库、表组以及表。

实施步骤

步骤一:配置日志Logtail

Logtail接入服务是日志服务提供的日志采集Agent,通过日志服务控制台帮助您实时采集阿里云ECS、自建IDC或者其他云厂商等服务器上的日志。

在ECS服务器上安装Logtail客户端,然后添加Logtail采集配置,Logtail即可采集日志到日志服务。Logtail日志采集流程为:监听文件、读取文件、处理日志、过滤日志、聚合日志以及发送数据到日志服务。

  1. 在ECS中安装Logtail
  2. 登录日志服务控制台,单击Project名称。
  3. 概览页面,单击接入数据,选择Nginx-文本日志
  4. 选择日志空间步骤中,日志库Logstore设置为之前创建的nginx-logstore Logstore。

  5. 单击下一步,在创建机器组步骤中,选择ECS机器,系统自动拉取与日志服务地域相同的ECS实例,勾选您需要的ECS实例ID,单击立即执行,完成后单击确认安装完毕13179901
  6. 设置机器组名称和ECS服务器的IP地址,单击下一步

    说明 您可以将多台ECS服务器的IP地址添加到IP地址中。
  7. 我的机器组中选中源机器组,然后单击右移按钮将其移动到应用机器组中,单击下一步

  8. Logtail配置中,按照页面提示进行参数配置。

    参数含义请参见采集并分析Nginx访问日志

  9. 确认Nginx键名称

    日志服务自动提取Nginx日志中的键名,请确认是否正确。

    说明 Nginx日志格式中的$request会被提取为request_methodrequest_uri两个键。

  10. 确认是否丢弃解析失败日志,并单击下一步

    开启该功能后,解析失败的Nginx访问日志不会上传到日志服务;关闭该功能后,Nginx访问日志解析失败时将上传原始Nginx访问日志到日志服务。

    确保日志机器组心跳正常,即可预览采集上来的数据。

步骤二:将日志投递到AnalyticDB for MySQL

通过日志服务数据处理模块的导出功能,您可以将Logstore中采集到的日志投递到AnalyticDB for MySQL。

  1. 登录日志服务控制台,单击Project名称。
  2. 日志库列表中,单击目标Logstore名称前的> > 数据处理 > 导出 > AnalyticDB,选择需要的AnalyticDB for MySQL集群。

    您需要为日志服务授权,允许日志数据写入AnalyticDB for MySQL。

    1. 单击AnalyticDB后的+,系统自动提示您进行授权操作,单击权限
    2. 在云资源访问授权页面,单击同意授权,将角色AliyunAnalyticDBAccessingLogRole授予日志服务。

  3. 日志库列表中,单击目标Logstore名称前的> > 数据处理 > 导出 > AnalyticDB后的+,在数据投递参数配置页面进行参数配置。13179901

    参数 说明
    投递名称 为数据投递取一个名字,便于后续管理。
    投递描述 为数据投递添加一段描述。
    集群版本 选择2.0。
    数据库名称 目标AnalyticDB for MySQL数据库的名字。
    表组名 目标AnalyticDB for MySQL中的表组。
    表名 目标AnalyticDB for MySQL中的表名,投递过来的日志数据将存储在该表中。
    AccessKey ID 当前阿里云账号的AccessKey ID,请参见获取阿里云账号的AccessKey ID和AccessKey Secret获取AccessKey ID和AccessKey Secret。
    AccessKey Secret 当前阿里云账号的AccessKey Secret。
    字段映射 日志字段与AnalyticDB for MySQL表字段的映射。

    可以单击增加一条添加字段。

    投递开始时间 设置日志数据的投递时间。
    是否过滤脏数据 是否过滤那些不符合要求的数据。
  4. 完成上述参数配置后,单击确定,系统将在设定的投递时间点将日志数据实时投递到AnalyticDB for MySQL。