[TOC]
一 现状与需求
现状与问题:
- 日志文件分散在各个应用服务器,开发人员必须远程登录才能查看日志,不利于服务器安全管控,加大生产服务器的风险;
- 服务器上各项目日志配置很随意,文件分布杂乱,没有统一的规范和管理;
- 日志文件占用服务器大量的硬盘空间,如不及时清理会发生硬盘占满,影响系统的正常运行;
- 对于超过百兆的日志文件根本没法打开和关键字搜索,不利于问题的快速定位和排查;
- 集群和分布式的系统需要查看多个服务器的日志;
- 日志保存的时间不统一,不能长时间保存日志.
需求说明与分析
- 不需要开发人员登录生产服务器就能查看日志;
- 统一规范日志的配置和输出格式;
- 实时的将日志文件从服务器中迁出;
- 提供日志的检索和统计分析的平台;
二 建设目标
搭建支持高并发高可靠的日志分析平台,方便开发人员快速的检索日志,排查问题, 同时提供友好的分析和统计的界面。
三 系统设计
技术选型
- 阿里云 日志服务(Log Service,简称 SLS)是针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成。您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立DT 时代海量日志处理能力。
- 自建ELK日志收集系统
本次选型参考,考虑多方因素, 最终选择阿里云日志服务.
系统架构
日志服务的架构如下图所示。
Logtail
帮助您快速收集日志的Agent。其特点如下所示:
- 基于日志文件、无侵入式的收集日志
- 只读取文件。
- 日志文件无侵入。
- 安全、可靠
- 支持文件轮转不丢失数据。
- 支持本地缓存。
- 网络异常重试。
- 方便管理
- Web端操作。
- 可视化配置。
- 完善的自我保护
- 实时监控进程CPU、内存消耗。
- 限制使用上限。
前端服务器
采用LVS + Nginx构建的前端机器。其特点如下所示:
- HTTP、REST协议
- 水平扩展
- 流量上涨时可快速提高处理能力。
- 支持增加前端机。
- 高吞吐、低延时
- 纯异步处理,单个请求异常不会影响其他请求。
- 内部采用专门针对日志的Lz4压缩,提高单机处理能力,降低网络带宽。
后端服务器
后端是分布式的进程,部署在多个机器上,完成实时对Logstore数据的持久化、索引、查询以及投递至MaxCompute。整体后端服务的特点如下所示:
- 数据高安全性 :
- 您写入的每条日志,都会被保存3份。
- 任意磁盘损坏、机器宕机情况下,数据自动复制修复。
- 稳定服务:
- 进程崩溃和机器宕机时,Logstore会自动迁移。
- 自动负载均衡,确保无单机热点。
- 严格的Quota限制,防止单个用户行为异常对其他用户产生影响。
- 水平扩展:
- 以分区(Shard)为单位进行水平扩展。
- 用户可以按需动态增加分区来增加吞吐量。
阿里云成本优势
日志服务产品在日志处理的三种场景下具有以下成本优势:
- LogHub:
- 与购买云主机 + 云磁盘搭建 Kafka 相比,对于 98% 场景下用户价格有优势。对小型网站而言,成本为 kafka 的30% 以下。
- 提供 RESTful API,可以直接针对移动设备提供数据收集功能,节省了日志收集网关服务器的费用。
- 免运维,随时随地弹性扩容使用。
- LogShipper:
- 无需任何代码/机器资源,灵活配置与丰富监控数据。
- 规模线性扩展 (PB级/Day),功能当前免费。
- LogSearch/Analytics:
- 与购买云主机 + 自建 ELK 相比,成本为自建的 15% 以下,并且查询能力与数据规模有极大提升。与日志管理软件相比,能无缝支持各种流行流计算 + 离线计算框架,日志流动畅通无阻。
以下是在计费模型下,日志服务功能与自建方案的对比,仅供参考。
日志中枢(LogHub vs Kafka)
- | 关注点 | LogHub | 自建中间件(如Kafka) |
---|---|---|---|
使用 | 新增 | 无感知 | 需要运维动作 |
扩容 | 无感知 | 需要运维动作 | |
增加备份 | 无感知 | 需要运维动作 | |
多租户使用 | 隔离 | 可能会相互影响 | |
费用 | 公网采集(10GB/天) | 2 元/天 | 16.1 元/天 |
公网采集(1TB/天) | 162 元/天 | 800 元/天 | |
内网采集(数据量小) | - | - | |
内网采集(数据量中) | - | - | |
内网采集(数据量大) | - | - |
日志存储与查询引擎
关注点 | LogSearch | ES(Lucene Based) | NoSQL | Hive | |
---|---|---|---|---|---|
规模 | 规模 | PB | TB | PB | PB |
成本 | 存储(元/GB *天) | 0.0115 | 3.6 | 0.02 | 0.035 |
写入(元/GB) | 0.35 | 5 | 0.4 | 0 | |
查询(元/GB) | 0 | 0 | 0.2 | 0.3 | |
速度-查询 | 毫秒级-秒级 | 毫秒级-秒级 | 毫秒级 | 分钟级 | |
速度-统计 | 弱+ | 较强 | 弱 | 强 | |
延时 | 写入->可查询 | 实时 | 分钟级 | 实时 | 十分钟级 |
以上述测试数据为例,一天写入50GB数据(其中23GB 为实际的内容),保存90天,平均一个月的耗费。
日志服务(LogSearch/LogAnalytics)计费规则参见按量付费,包括读写流量、索引流量、存储空间等计费项,查询功能免费。
计费项目 | 值 | 单价 | 费用(元) |
---|---|---|---|
读写流量 | 23G * 30 | 0.2 元/GB | 138 |
存储空间(保存90天) | 50G * 90 | 0.3 元/GB*Month | 1350 |
索引流量 | 27G * 30 | 0.35 元/GB | 283 |
总计 | - | - | 1771 |
ES费用包括机器费用,及存储数据SSD云盘费用。
- 云盘一般可以提供高可靠性,因此我们这里不计费副本存储量。
- 存储盘一般需要预留15%剩余空间,防止空间写满,因此乘以一个1.15系数。
计费项目 | 值 | 单价 | 费用(元) |
---|---|---|---|
服务器 | 4台4核16G(三个月)(ecs.mn4.xlarge) | 包年包月费用:675 元/Month | 2021 |
存储 | 86 * 1.15 * 90 (这里只计算一个副本) | SSD:1 元/GB*M | 8901 |
- | SATA:0.35 元/GB*M | 3115 | |
总计 | 5135 (SATA)12943 (SSD) |
同样性能,使用LogSearch/Analytics与ELK(SSD)费用比为 13.6%。在测试过程中,我们也尝试把SSD换成SATA以节省费用(LogAnalytics与SATA版费用比为 34%),但测试发现延时会从40ms上升至150ms,在长时间读写下,查询和读写延时变得很高,无法正常工作了。
时间成本(Time to Value)
除硬件成本外,日志服务在新数据接入、搭建新业务、维护与资源扩容成本基本为0。
- 支持各种日志处理生态,可以和Spark、Hadoop、Flink、Grafana等系统无缝对接。
- 在全球化部署(有20+ Region),方便拓展全球化业务。
- 提供30+日志接入SDK,与阿里云产品无缝打通集成。
日志服务采集和可视化可以参见如下文章,非核心功能不展开做比较。
功能优势
全托管服务
- 应用性强,5分钟即可接入服务进行使用,Agent支持任意网络下数据采集。
- LogHub覆盖Kafka 100%功能,提供完整监控、报警等功能数据,并支持弹性伸缩(可支持PB/Day规模),使用成本为自建50%以下。
- LogSearch/Analytics 提供快速查询、仪表盘和报警功能,使用成本为自建 20%以下。
- 提供超过30种接入方式,与云产品 (OSS/E-MapReduce/MaxCompute/Table Store/MNS/CDN/ARMS等)、开源软件(Storm、Spark)无缝对接。
同样性能,使用LogSearch/Analytics与ELK(SSD)费用比为 13.6%。在测试过程中,我们也尝试把SSD换成SATA以节省费用(LogAnalytics与SATA版费用比为 34%),但测试发现延时会从40ms上升至150ms,在长时间读写下,查询和读写延时变得很高,无法正常工作了。
生态丰富
- LogHub 支持30多个采集端,包括Logstash、Fluent等,无论是嵌入式设备、网页、服务器、程序等都能轻松接入。在消费端,支持与Storm、Spark Streaming、云监控等对接。
- LogShipper 支持丰富数据格式(TextFile、SequenceFile、Parquet等),支持自定义Partition,数据可以直接被Presto、Hive、Spark、Hadoop、E-MapReduce、MaxCompute、HybridDB、DLA等处理。
- LogSearch/Analytics 查询分析语法完整、兼容SQL92、支持JDBC协议与Grafana对接。
实时性强
- LogHub:写入即可消费;Logtail(采集Agent)实时采集传输,1秒内到服务端(99.9%情况)。
- LogSearch/Analytics:写入即可查询分析,在多个查询条件下1秒可查询10亿级数据,多个聚合条件下1秒可分析1亿级数据。
完整API/SDK
- 轻松支持自定义管理及二次开发。
四 结论
建议采用现有的阿里云日志服务. 省时且费用比自建低.