首页 > 其他分享 >阿里云日志系统介绍及应用

阿里云日志系统介绍及应用

时间:2023-12-08 15:31:30浏览次数:31  
标签:查询 运维 SLS 阿里 应用 日志 Logtail 告警

前言

传统IDC的建设,需要投入大量的人力、物力和财力,而公有云几乎拥有一站式的建设、部署方案和完整的云生态,并且可以根据业务随时随地的弹性扩展,特别是一些中小型的公司,越来越多的选择将业务落地到公有云。而对于所有公司、所有业务来讲,日志是一个无法绕开的话题,如何建设一个稳健和高效的日志系统,是所有公司架构、运维人员都需要思考的一个问题。本文我们将介绍阿里云日志系统(以下简称SLS)以及信也科技海外业务场景实践。

SLS是什么

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

功能概览

功能描述

数据采集

支持Log、Metric、Trace等数据类型,并支持50多种数据源,包括阿里云产品、服务器与应用、物联网设备、移动端、开源软件、标准协议等

日志存储

支持智能分层存储。数据分层存储时,可降低长周期存储的成本,同时保证日志的查询、分析、可视化、告警、投递和加工等能力不受影响

数据加工

提供200多个内置函数、400多个正则表达式、灵活的自定义函数,实现过滤、分裂、转换、富化、复制等效果,满足数据分派、规整、融合等场景

查询与分析

支持PB级数据实时查询与分析,提供10多种查询运算符、10多种机器学习函数、100多个SQL函数,并支持定时SQL和SQL独享版

可视化

支持查询与分析结果可视化,提供10多种统计图表,包括表格、线图、柱状图、地图等,并支持基于统计图表自定义仪表盘(支持外嵌与下钻分析)

告警

提供一站式告警功能,包括告警监控、告警管理、通知(行动)管理等,适用于开发运维、IT运维、智能运维、安全运维、商务运维等多个场景

消费与投递

支持数据实时消费,适用于Storm消费、Flume消费、Flink消费等场景;支持数据实时投递,适用于将数据投递至OSS、TSDB等云产品

日志审计

在继承现有日志服务所有功能基础上,还支持多账户下实时自动化、中心化采集云产品日志并进行审计,以及支持审计所需的存储、查询及信息汇总

SLS架构

阿里云日志系统介绍及应用_运维

SLS vs ELK

SLS

ELK

性能

查询分析性能是ELK的十倍

相同成本介质部署,SLS提供更低的延迟以及更稳定的查询分析性能,ELK超过10TB就会遇到性能瓶颈

成本

全托管、免运维,百TB规模下,SLS综合成本是ELK的44%

这里的成本不光是部署成本,还需要包括使用成本。要维护良好状态的ELK集群,需要从容量规划、稳定性保障、性能调优、数据高可用,数据如何在不同系统间关联等多个方面下功夫

易用性

一站式数据监控分析平台,开源协议及组件有更好的兼容性

利用ELK构建完整可观测分析平台需组合多款服务,这其中包括Logstash、 Kibana、Kafka、Flink、TSDB、Prometheus等

互联互通与二次开发

可观测数据统一存储平台、数据开放流通,API友好支持二次开发

在可观测场景中,ELK需要跨多个数据源进行关联分析,形成数据孤岛

告警能力

提供全面监控、智能降噪和多维分析的能力

仅支持同一结构多索引合并分析有限的告警能力

附加功能

针对数据分析场景支持30+聚合计算函数,丰富的机器学习函数以及多渠道数据源,是ELK提供操作符的5倍,充分发掘数据分析能力

仅支持指标分析聚合、分桶聚合、管道分析、矩阵分析有限的聚合算法

业务实践

海外业务SLS架构

阿里云日志系统介绍及应用_运维_02

应用日志

Kubernetes集群中以DaemonSet方式运行logtail-ds组件,应用只需要将Log输出模式调整为Console标准输出即可,logtail-ds组件自动采集数据并上报。

代码配置

log4j.rootLogger=INFO, console
... ...

实现原理

Logtail与Docker的Domain Socket进行通信,查询该Docker上运行的所有容器,并根据容器中的Label和环境变量定位需要被采集的容器。Logtail通过docker logs命令获取指定容器日志。Logtail在采集容器的标准输出时,会定期将采集的点位信息保存到checkpoint文件中。如果Logtail停止后再次启动,会从上一次保存的点位开始采集。

阿里云日志系统介绍及应用_nginx_03

通过SLS Logstore控制台查询分析

阿里云日志系统介绍及应用_nginx_04

系统组件日志

和应用日志一样,在集群中以DaemonSet方式运行logtail-ds组件,可通过CRD方式创建Logtail配置采集容器日志。目前使用这种方式的组件有Nginx-ingress和CoreDNS。

CRD配置(Nginx-ingress为例)

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  generation: 3
  name: k8s-nginx-ingress
  namespace: default
spec:
  extenions: ""
  lifeCycle: null
  logstore: nginx-ingress
  logtailConfig:
    configName: k8s-nginx-ingress
    inputDetail:
      plugin:
        inputs:
        - detail:
            IncludeLabel:
              io.kubernetes.container.name: nginx-ingress-controller
            Stderr: false
            Stdout: true
          type: service_docker_stdout
        processors:
        - detail:
            KeepSource: false
            Keys:
            - client_ip
            - x_forward_for
            - remote_user
            - time
            - method
            - url
            - version
            - status
            ... ...
            - request_length
            - request_time
            - proxy_upstream_name
            - upstream_addr
            - upstream_response_length
            - upstream_response_time
            - upstream_status
            - req_id
            - host
            NoKeyError: true
            NoMatchError: true
            Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s*(\S*).*
            SourceKey: content
          type: processor_regex
    inputType: plugin
  machineGroups: null
  productCode: k8s-nginx-ingress
  productLanguage: ""
  project: ""
  shardCount: null
status:
  status: OK
  statusCode: 200

实现原理

阿里云日志系统介绍及应用_数据_05

CRD的内部工作流程如下:

  1. 使用kubectl或其他工具应用AliyunLogConfig CRD。
  2. alibaba-log-controller监听到CRD配置更新。
  3. alibaba-log-controller根据CRD配置中的内容以及日志服务中Logtail配置的状态,自动向日志服务提交创建Logstore、创建Logtail配置以及应用机器组的请求。
  4. Logtail定期请求Logtail配置所在服务器,获取新的或已更新的Logtail配置并进行热加载。
  5. Logtail根据Logtail配置采集各个容器上的标准输出或文本日志。
  6. Logtail将采集到的容器日志发送给日志服务。

通过SLS Logstore控制台查询分析

阿里云日志系统介绍及应用_nginx_06

告警

告警系统整体架构

阿里云日志系统介绍及应用_运维_07

告警组

  1. 用户组;
  2. 值班组;
  3. 应急组。

关联表

在海外业务日志告警场景中,通过对接APPCenter、CAS、Kubernetes将站点和Owner等信息进行汇总并创建一个虚拟表最终上传至OSS,用户配置告警时增加固定关联SQL,将告警信息和人员关联并实现最终通知。

在查询SQL中进行关联

_namespace_:default and _container_name_: nginx-v1 |
select 
  endpoint,
  todayCnt,
  app_meta.dev_owner as dev_owner,
  app_meta.service_group as service_group,
  app_meta.service_group_name as service_group_name
from (
  select count(*) as todayCnt, _container_name_ as endpoint
  from log
  group by endpoint 
) a 
left join app_meta on a.endpoint = app_meta.service

阿里云日志系统介绍及应用_nginx_08

 通知管理

通知(行动)管理系统负责管理告警的通知渠道和对象,由行动策略、内容模板、日历、用户、用户组、值班组和渠道额度等组成。通知(行动)管理系统通过行动策略将告警动态分派给特定的通知渠道,再通知给目标用户、用户组或值班组。

根据日历设置值班人员

阿里云日志系统介绍及应用_数据_09

告警示例

阿里云日志系统介绍及应用_数据_10

告警事务处理

企微告警内容中提供免登录处理方式,也可以通过控制台手动确认。

阿里云日志系统介绍及应用_运维_11

总结

SLS能有效降低运维维护和管理成本,运维人员无需额外关心日志系统的性能指标。Kubernetes Event持久化、RDS慢日志、阿里云成本分析等也都集成至SLS,对云产品也是一键式接入,极大的提高了运维工作效率。费用方面,SLS推出全新计费模式“按写入数据量计费”,目前海外业务SLS正在转换中,按照预估推测,转换后的SLS成本将降低30%左右。

作者介绍

·   矿泉,系统运维资深专家

 

标签:查询,运维,SLS,阿里,应用,日志,Logtail,告警
From: https://blog.51cto.com/u_16156219/8738824

相关文章

  • 多开工具对应用程序性能的影响与优化
    多开工具对应用程序性能的影响与优化摘要:随着计算机技术的不断发展,多开工具逐渐成为一种常见的软件应用。然而,使用多开工具可能会对应用程序的性能产生一定的影响。本文将探讨多开工具对应用程序性能的影响,并提供一些优化方法,以改善应用程序在多开环境下的表现。引言:多开工具......
  • 阿里滴滴之后,腾讯视频也崩了!网友追问:下一个是谁?
    继滴滴“崩了”一夜后,刚过去不到一周时间,互联网“崩了”连续剧又迎来了续集。就在刚刚,也是晚间时分,网友曝出腾讯视频崩了,不能追剧了。接着,腾讯视频官方便现身回应,坐实了传闻。还是同样的味道:致歉,表态双连击,宣称正在加紧修复,各项功能都在逐渐恢复中,要用户耐心等待。稍微留心一点......
  • 振弦采集仪在岩土工程中的探索与应用
    振弦采集仪在岩土工程中的探索与应用振弦采集仪是一种常用的测量仪器,在岩土工程中具有重要的应用价值。它主要利用振弦原理,通过测量振动信号的特征参数来分析地下土体的力学特性以及工程中的变形情况。振弦采集仪早期主要用于建筑物、桥梁、堤坝等大型民用工程的震动检测中。随......
  • linux Docker容器日志查看与清理2
    问题:docker容器日志随着时间变得越来越大。本来分的200G磁盘空间迅速不太够用。 日志查找:docker安装目录一般在/var/lib/docker下:执行以下命令,可查看各文件夹空间占用情况:du-h-x--max-depth=1我们可以看到containers目录占用了181G的空间:进入到containers容器目录,......
  • 深入理解Dockerfile:构建容器化应用的基石
    Docker已经成为现代软件开发和部署的标配工具之一,它的轻量级容器技术使得应用可以在不同环境中快速部署和运行。Dockerfile是构建Docker镜像的蓝图,定义了从基础镜像到最终应用镜像的一系列步骤。本篇博文将深入解析Dockerfile中常见的指令,带你逐步了解如何构建高效、可维护的Docker......
  • 已解决:若依更换日志EasyExcel框架导出报错 java.lang.NoClassDefFoundError: org/apac
    先描述一下当时的场景回忆看到出错了,我就想可能是哪个路径写错了,或者导依赖名字写对,或者说是多了少了标点符号什么的。然而,还是想简单了,检查重启后发现问题并没有解决。于是就把所有我改过的地方检查了一遍,检查和这个依赖相关的代码。发现还是没啥关系后来去找百度、百度给的......
  • HarmonyOS应用开发者高级认证
    HarmonyOS应用开发者高级认证考试简介掌握鸿蒙的核心概念和端云一体化开发、数据、网络、媒体、并发、分布式、多设备协同等关键技术能力,具备独立设计和开发鸿蒙应用能力。及格分数:80+(满分100)次数限制:每月3次注意事项:禁止切屏博文说明:本博文的初衷是帮助大家查漏补缺,......
  • 鸿蒙原生应用开发——分布式数据对象
     01、什么是分布式数据对象在可信组网环境下,多个相互组网认证的设备将各自创建的对象加入同一个sessionId,使得加入的多个数据对象之间可以同步数据,也就是说,当某一数据对象属性发生变更时,其他数据对象会检测到这一变更,同时将自身属性更新。此时,该sessionId下的所有数据对象属......
  • Pipeline模式应用
    本文记录Pipeline设计模式在业务流程编排中的应用前言Pipeline模式意为管道模式,又称为流水线模式。旨在通过预先设定好的一系列阶段来处理输入的数据,每个阶段的输出即是下一阶段的输入。本案例通过定义PipelineProduct(管道产品),PipelineJob(管道任务),PipelineNode(管道节点),完成一整......
  • BFD技术与应用
    BFD双向转发检测   作用:检测网络故障,实现快速检测/收敛        提供了一个通用的、标准化的、介质无关和协议无关的快速故障检测机制    1.硬件检测,使用同一条链路相连的两个之间可以通过接口硬件检测功能检测故障        ......