基于日志服务实现企业级统一日志归集

更新时间:

方案概述

随着企业信息化的发展,面向云的IT基础设施越来越普遍,如何在庞大的IT基础设施面前管理软件的日志,成为IT稳定性保障的关键环节。 本方案主要介绍如何使用SLS 对阿里云、专有IDC以及第三方云场景下,进行企业级的统一日志管理。

方案优势

集中日志记录

本方案提供了常见场景的日志统一投递,包括采集主机上的系统日志、跟应用程序集成采集程序业务日志、跟云产品集成采集云产品日志。通过统一日志投递,方便用户在一个可自定义、用户友好地产品控制面板做日志分析和可视化展示。

日志灵活查询可视化

支持查询SQL语法,支持用户定制的查询需求。另外SLS产品提供了丰富的报表制作能力,用户可以把查询结构按不同维度展示。

超出默认阿里云科技服务日志之外的日志记录功能

可以将您的日志记录功能扩展到默认的阿里云科技服务日志之外。非常灵活地支持了可以捕获客户在自建IDC环境上主机、网络设备日志。另外您如果有搭建一些开源软件(Logstash)也能够轻松对接。

客户场景

公有云业务日志收集分析

场景描述

业务全部跑在公有云上,需要将业务的日志统一在一个地方进行管理。

适用客户

  • 公有云客户

  • 每个账号下面的业务日志统一投递到一个日志账号

混合云统一日志

场景描述

混合云场景,客户需要将IDC内的日志与云上日志统一在一个地方进行管理。

适用客户

  • 混合云客户且有专线连通

  • 希望将IDC及云上的业务日志统一投递到一个日志账号

多云统一日志

场景描述

业务跑在多云环境,客户需要将不同云环境中的业务日志统一在一个地方进行管理。

适用客户

  • 多云客户

  • 希望将各朵云上的业务日志统一投递到一个日志账号,统一管理

方案架构

本方案主要介绍如何使用SLS 对阿里云、专有IDC以及第三方云场景下,进行企业级的日志管理。

产品费用及名词

产品费用

产品名称

产品说明

产品费用

日志服务

日志服务SLS是云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升您在研发、运维、运营、安全等场景的数字化能力。

收费,详情参见产品定价

名词解释

名称

说明

Logtail

Logtail是日志服务提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云厂商等服务器上的日志。

Logstash

Logstash是一个开源数据收集引擎,具有实时管道功能。

Flume

Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统

FluentD

fluentd是一个实时的数据收集系统,不仅可以收集日志,还可以收集定期执行的命令输出和HTTP请求内容。

安全性

服务器端加密

日志服务提供服务器端加密,并支持基于SSL/TLSHTTPS加密传输,有效防止数据在云端的潜在安全风险。

  • 服务器端加密。日志服务支持通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力。KMS是阿里云提供的一款安全、易用的管理类服务。您无需花费大量成本来保护密钥的保密性、完整性和可用性。借助密钥管理服务,您可以安全、便捷的使用密钥,专注于开发加解密功能场景。您可以通过KMS控制台查看和管理KMS密钥。更多信息,请参见密钥服务概述

  • 基于SSL/TLSHTTPS加密传输。日志服务支持通过HTTPHTTPS的方式访问。安全传输层协议。(SSL/TLS)用于在两个通信应用程序之间提供保密性和数据完整性。

身份访问控制

日志服务中的访问控制,在日志管理账号中推荐的角色有两类:

  • 日志管理角色。具备管理日志服务,包括创建,修改,删除Project。

    对应的RAM 角色配置:AliyunLogFullAccess。

  • 日志查看角色。如查询特定Project下面的日志信息,相应的Policy可以如下定义:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "log:ListConfig",
            "log:ListConsumerGroup",
            "log:ListDashboard",
            "log:ListDomains",
            "log:ListEtlJob",
            "log:ListEtlMetaName",
            "log:ListExternalStore",
            "log:ListJobs",
            "log:ListJobSchedules",
            "log:ListLogStores",
            "log:ListMachineGroup",
            "log:ListMachines",
            "log:ListProject",
            "log:ListReport",
            "log:ListSavedSearch",
            "log:ListShards",
            "log:ListShipper",
            "log:ConsumerGroupHeartBeat",
            "log:GetAppliedConfigs",
            "log:GetAppliedMachineGroups",
            "log:GetChart",
            "log:GetConfig",
            "log:GetConsumerGroupCheckPoint",
            "log:GetCursorOrData",
            "log:GetDashboard",
            "log:GetEtlJob",
            "log:GetEtlMeta",
            "log:GetExternalStore",
            "log:GetIndex",
            "log:GetJob",
            "log:GetJobSchedule",
            "log:GetLogging",
            "log:GetLogStore",
            "log:GetLogStoreContextLogs",
            "log:GetLogStoreHistogram",
            "log:GetLogStoreLogs",
            "log:GetMachineGroup",
            "log:GetProject",
            "log:GetSavedSearch",
            "log:GetShipperConfig",
            "log:GetShipperStatus",
            "log:GetShipperTasks"
          ],
          "Resource": "acs:log:*:XXXXXXXXX:project/xxx" // 特定的Project名称
        }
      ]
    }

注意事项

区域(Region)限制

本方案要求现有的需要采集指标或日志的设备能够连通阿里云的网络环境,目前SLS支持的Region 参考 链接

对于IDC或者其他云厂商的场景,如果是进行POC的话可以优先使用SLS的公网地址进行日志收集;如果是生产使用建议搭建相应的专线接入阿里云网络,以保障数据传输的可靠性。

产品功能限制

SLS在产品使用上面有些限制,具体可以查看产品限制

实施步骤

实施准备

  1. 日志账号确保在阿里云官网已经开通 SLS服务。

  2. 确保现有的网络环境,可以连通到阿里云网络。

实施时长

在实施准备工作完成的情况下,本方案实施预计时长:4小时。

说明:根据实施选项不同预计时长可能存在差异。

操作步骤

使用Logtail采集日志

安装Logtail

1、阿里云ECS

如果是阿里云的ECS服务器,默认已经安装iLogtail了,可以直接使用。如果发现没有安装可以参考 链接

2、阿里云ACK

阿里云ACK默认带有Logtail采集插件,如果发现没有安装, 可以通过下面步骤安装

  1. 打开 https://cs.console.aliyun.com/#/k8s/cluster/list

  2. 选中相应的集群进入

  3. 左侧,选择应用->Helm,点击右“边“应用目录”

  4. 在出现的页面里,选择”运维/可观测性“

    选择 ack-sls-logtail进行安装

    • 阿里云ACK 独享模式 参考 链接

    • 阿里云ACK Servless模式 SideCar方式 参考 链接

自建k8s或其他云厂商的k8s
  • 参考自建k8s采集方案 链接

其他云厂商主机
  • Linux主机安装Logtail指导 链接

  • WIndows主机安装Logtail指导 链接

配置跨账号采集

这个步骤对于需要跨账号采集阿里云上ECS或者K8S日志的情况下,需要这样操作通过设置iLogtail的用户标识识,来实现跨账号采集。

机器组配置

1、非k8s的场景

  • 基于ip地址创建机器组,操作步骤参考链接

  • 基于自定义标识创建机器组, 操作步骤参考 链接

如果机器经常进行扩容缩容,推荐基于自定义标识创建机器组

2、k8s场景

无需配置机器组,机器组在k8s安装完logtail组件后,自动在k8s对应的project生成。

采集配置

极简模式采集

适合支持单行和多行日志(比如带Java堆栈),适合任意格式 ,如果日志比较杂乱,推荐这个模式,采集到的日志将放到一个名叫content的字段里。操作步骤参考:链接

正则匹配模式采集

适合日志格式比较固定的场景,配置好相应的正则即可。操作步骤参考:链接

Json模式采集

适合单行日志满足Json格式的日志场景。操作步骤参考:链接

IIS日志采集

适合IIS服务器打印的日志。操作步骤参考:链接

Apache日志采集

适合Apache服务打印的日志。操作步骤参考: 链接

Nginx日志采集

适合Nginx服务日志。操作步骤参考:链接

K8S 标准输出采集

适合采集Pod打印到stdoutstderr的日志, 操作步骤参考:链接

K8S 日志文件采集

适合采集Pod内打印的日志文件,操作步骤参考:链接

使用阿里云SLS SDk写入日志数据

主流语言SDK

SLS支持主流语言的SDK,使用SDK可以很方便地往SLS写入数据。

Java SDK

Python SDK

.NET SDK

.NET Core SDK

Node.js SDK

PHP SDK

Go SDK

C SDK

移动端埋点SDK
  • 移动端:可以使用移动端 SDK IOS, Android 接入。

  • ARM 设备:ARM 平台可以使用 Native C 交叉编译。

  • H5网页端,直接使用Webtracking API 方式写入日志服务 参考链接

日志查询分析

SLS除了提供日志采集和存储外,还提供强大的日志查询能力。包括关键词和SQL查询。

使用关键词或SQL查询日志

1、配置索引

配置字段索引或全文索引,操作步骤参考 链接

2、使用关键词查询

支持使用 and、or、not、比较等方式进行关键词搜索查询,具体参考 链接

示例

3、使用SQL查询

SLSSQL支持SQL 92标准语法,并且支持MySQL外表(可以将LogstoreMySQLjoin),使用SQL查询的前提是对Logstore配置了字段索引。

SLS SQL查询编写方法如下。在控制台查询SQL的时候,必须先进行关键词查询,然后通过管道符号 | ,后面跟SQL查询。 关键词查询,可以在SQL运行前提前过滤日志,帮助提升SQL执行速度。

关键词查询 | SQL语句

如果不想进行关键词查询就跑SQL,可以用*作为关键词查询,表示不做过滤。

* | SQL语句

每个字段就是SQL可以查询的列。SLS SQL当前支持的函数类型如下。

通用聚合函数

安全检测函数

Map映射函数

估算函数

数学统计函数

数学计算函数

字符串函数

日期和时间函数

URL函数

正则式函数

JSON函数

类型转换函数

IP地理函数

GROUP BY语法

窗口函数

HAVING语法

ORDER BY语法

LIMIT语法

CASE WHENIF

嵌套子查询

数组

二进制函数

位运算

同比和环比函数

比较运算符

Lambda函数

逻辑函数

列的别名

MySQL外表关联

空间几何函数

地理函数

Join语法

unnest语法

insert语法

电话号码函数

使用SQL查询示例:

可视化报表

SLS提供了报表可视化能力。结合SQL查询的结果可以很方便得将结果保存在Dashboard。

目前支持的可视化组件如下:

表格

线图

柱状图

条形图

饼图

变更图

气泡图

时间轴

地图

流图

桑基图

词云

中国行政区地图

示例:

在查询结果的下方,可以选择对应的可视化。

日志消费和投递

SLS提供了日志实时消费和投递到其他系统的功能。

使用Spark、Flink、Storm进行日志流式消费
将日志投递到OSS、MaxCompute
  • 投递到MaxCompute数据仓库 参考 链接

  • 投递到AnalyticDB 参考 链接

  • 投递到OSS数据湖

使用数据加工处理日志

SLS数据加工提供了对日志进行实时行处理的能力,可以很方便地处理日志这种非结构化的场景

复制Logstore数据

通过数据加工,支持同地域、同账号、跨地域、跨账号下的logstore数据复制。

  • 同地域Logstore复制 参考 链接

  • 跨地域Logstore复制 参考 链接

Logstore数据分发

通过数据加工,可以将Logstore中的日志根据条件分发给不同的Logstore。适合收集日志的时候,收集了多种日志到一个Logstore的场景。 参考 链接

故障排除

Logtail支持哪些平台?

Linux支持如下版本的Linux x86-64(64位)服务器

  • Alibaba Cloud Linux 2.1903

  • RedHat Enterprise 6、7、8

  • CentOS Linux 6、7、8

  • Debian GNU/Linux 8、9、10

  • Ubuntu 14.04、16.04、18.04、20.04

  • SUSE Linux Enterprise Server 11、12、15

  • OpenSUSE 15.1、15.2、42.3

  • 其他基于glibc 2.5及以上版本的Linux操作系统

WindowsMicrosoft Windows Server 2008Microsoft Windows 7支持X86X86_64,其他版本仅支持X86_64。

  • Microsoft Windows Server 2008

  • Microsoft Windows Server 2012

  • Microsoft Windows Server 2016

  • Microsoft Windows Server 2019

  • Microsoft Windows 7

  • Microsoft Windows 10

  • Microsoft Windows Server Version 1909

  • Microsoft Windows Server Version 2004

如何排查Logtail采集日志问题?

Logtail采集问题排查思路如下所示。更多信息,请参见Logtail排查简介

  1. 确认Logtail心跳状态为OK。

  2. 确认日志文件中的日志在实时生成。

  3. 确认Logtail配置中的正则表达式与日志内容相匹配。

方案卸载

卸载Logtail

  • Linux系统

    执行以下命令卸载Logtail。

    wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/logtail.sh -O logtail.sh;chmod 755 logtail.sh;./logtail.sh uninstall
  • Windows系统

    以管理员身份运行Windows Powershellcmd进入logtail_installer目录(安装包的解压目录),执行如下命令。

    .\logtail_installer.exe uninstall

卸载成功后,您的Logtail的安装目录会被删除,但仍有部分配置被保留在C:\LogtailData目录中,您可以根据实际情况进行手动删除。遗留信息包括:

  • checkpoint:存放所有Logtail插件的Checkpoint信息。只有您使用了Logtail插件后,才会出现此文件。

  • user_config.d:存放本地采集配置的目录。其中以.json结尾的文件会被视为采集配置,格式类似于/usr/local/ilogtail/user_log_config.json。

  • logtail_check_point:存放Logtail主体部分的Checkpoint信息。

  • users:存放您所配置的用户标识文件。

删除机器组

  1. 在机器组列表中,单击目标机器组后面的图标,选择删除

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

删除Logstore

  1. 日志存储 > 日志库页签中,选择目标Logstore右侧的 > 删除

    1. 警告 Logstore一旦删除,其存储的日志数据将会被永久删除,不可恢复,请谨慎操作。

  2. 删除对话框中,单击确认

删除Project

  1. Project列表中,单击目标Project对应的删除

  2. 删除Project面板中,选择删除原因,然后单击确定

警告 删除Project后,其管理的所有日志数据及配置信息都会被永久释放,不可恢复。在删除Project前请慎重确认,避免数据丢失。

相关内容