本文介绍使用SLS对MSFE日志进行收集、监控和报警。

背景信息

MSFE是多活流量统一入口,采用多台ECS集群化部署,一台ECS部署一个Tengine进程。您可以使用日志服务(SLS),对每台ECS上的Tengine日志进行统一收集和存放,能够有效追踪因Tengine日志滚动覆盖导致的问题。同时便于对日志搜索查询,以及基于日志进行问题排查和数据分析。同时,您还可以通过SLS配置Error日志报警规则,以便在Tengine自身或后端服务器出现问题能够及时发现并处理,从而规避风险。

接入层日志

Tengine进程会打印tengine-access_log和tengine-error_log日志。日志采用滚动覆盖的方式,滚动覆盖保留的文件数为7,全部日志文件最大会占用21 G磁盘空间。

  • 日志路径:/home/admin/tengine/logs
  • 日志文件名:tengine-access_log和tengine-error_log
wert

步骤一:接入前准备

  1. 登录日志服务控制台
  2. 创建项目(Project)。
    1. 在Project列表区域,单击创建Project
    2. 创建Project面板中,按照如下说明配置参数,其他参数均可保持默认配置。
      参数描述
      Project名称Project的名称,全局唯一。创建Project成功后,无法更改其名称。
      所属地域Project的数据中心。建议选择与ECS相同的地域,即可使用阿里云内网采集日志,加快采集速度。

      创建Project后,无法修改其所属地域,且日志服务不支持跨地域迁移Project。

    3. 单击创建
  3. 创建日志库(Logstore)。
    创建Project完成后,系统会提示您创建一个Logstore。

    创建Logstore面板中,按照如下说明配置参数,其他参数均可保持默认配置。这里创建的Project名称为msha-hz-demo,创建的Logstore名称为access。

    qwert
    参数描述
    Logstore名称Logstore的名称,在其所属Project内必须唯一。创建Logstore成功后,无法更改其名称。
    Shard数目日志服务使用Shard读写数据。

    一个Shard提供的写入能力为5 MB/s、500次/s,读取能力为10 MB/s、100次/s。如果一个Shard就能满足您的业务需求,您可配置Shard数目1

    自动分裂Shard开启自动分裂功能后,如果您写入的数据量超过已有Shard服务能力,日志服务会自动根据数据量增加Shard数量。

    如果您确保配置的Shard数量已满足业务需求,可关闭自动分裂Shard开关。

步骤二:配置access_log日志收集

  1. 单击日志库access左侧的wr图标,展开该日志库。然后单击数据接入左侧的wr图标并展开。
  2. 将鼠标放置logtail配置区域,然后单击logtail配置右侧的wed图标,添加数据接入。
    说明 通过Logtail配置页面安装Logtail日志收集插件以及配置要收集的日志路径等,Logtail日志插件信息请参见Logtail日志插件数据采集
  3. 在弹出的快速数据接入面板,单击Nginx-文本日志
    wedg
  4. Nginx页面单击ECS机器页签,在实例选取方式区域选择手动选择实例或者指定实例资源组,然后选择需要进行日志收集的ECS实例,单击左下角的立即执行,然后单击右下角的确定安装完毕
    wqed
  5. 在第②步中输入机器组名称,然后单击下一步,进入第③步机器组配置页面,在我的机器组区域,选择源机器组,然后单击下一步
  6. 在第④步Logtail配置页签,设置相关参数,完成配置。
    werty

    配置日志access_log,其中日志格式配置如下:

    log_format proxyformat
     "$status|$upstream_status|$remote_addr|$upstream_addr|$request_time_usec|$upstream_response_time|$time_local|$request_method|$scheme://$log_host:$server_port$request_uri|$body_bytes_sent|$http_referer|$http_user_agent|$http_x_forwarded_for|$http_accept_language|$connection_requests|$eagleeye_traceid|$cell|$ups|$ufe_code|$local_cell|$cell_key|$cell_router_id|$router_rule|$local|$https_host_mode|$https_redirect_mode";

    日志样例为:

    200|200|127.0.xx.xx|115.29.xx.xx:80|16905|0.017|09/Jul/2021:19:49:29
    +0800|GET|http://47.99.xx.xx:80/get?code=200|32|-|curl/7.29.0|-|-
    |1|c0a80964162583136942xxxxxe6637|center|47_99_xx_xx@get_center_default|A1|1|||5bec72a6-8e0c-4ad1-9846-87xxxxxbd034_unitcell_type|default|0|0_http
  7. 返回日志库页面,单击wert图标,查看access_log日志数据。
    wer

    access_log日志数据详情,请参见查询和分析日志数据

步骤三:配置error_log日志收集

配置error_log日志收集的步骤与配置access_log日志收集的步骤类似,因此请参见步骤二:配置access_log日志收集完成error_log日志的配置与收集。配置error_log日志过程中需注意以下几点:

  • 建议选择与access_log日志不同的Logstore对error_log日志进行logtail配置,以便进行独立的error_log报警配置。
  • 由于error_log日志规则不是结构化的,因此在第④步Logtail配置页签设置相关参数时,其中模式参数选择极简模式即可,配置完成后,返回日志库页面,单击wert图标,查看error_log日志数据。error_log日志数据详情,请参见查询和分析日志数据wsxc

步骤四:配置error_log日志报警

若出现error_log日志,说明Tengine自身或后端服务器存在报错。建议您配置error_log报警规则,以便快速发现和处理报错问题。

  1. 日志库页面,单击werp图标,查看error_log日志的监控信息。
    wsxa
  2. 登录云监控控制台
  3. 在左侧导航栏单击云产品监控
  4. 在搜索框中输入日志服务,然后单击日志服务
  5. 单击目标Project名称右侧操作LogStore列表,然后单击对应LogStore操作列的监控图表
  6. 日志服务页面的总体QPS(个)区域右侧单击er图标。然后在弹出的创建报警规则页面,根据相关参数,完成报警配置。具体操作,请参见创建报警规则