汇总:百灵图片采集工具软件免责声明
优采云 发布时间: 2022-09-24 08:16汇总:百灵图片采集工具软件免责声明
基本介绍
百灵图片采集工具软件是一款免费的网络图片采集软件。该软件的功能大致包括采集、精确采集、图片管理和预览等。本软件仅供百度图片采集下载,后续会增加对其他图片网站的支持。本软件内置网页浏览器,提供手动采集和自动采集指定网页图片功能,一键下载查看。
秘密:kubernetes 清理日志命令_系列文章:Kubernetes日志采集最佳实
前言
上一期主要介绍了Kubernetes日志输出的一些注意事项。日志输出的最终目的是做统一的采集和分析。在 Kubernetes 中,记录采集的方式与普通虚拟机有很大不同,相对实现难度和部署成本也略高。但如果使用得当,可以实现比传统方式更高的自动化程度和更低的运维成本。
Kubernetes 日志采集难度
在 Kubernetes 中,日志记录采集 比传统的虚拟机和物理机要复杂得多。最根本的原因是Kubernetes屏蔽了底层异常,提供了更细粒度的资源调度,提供了稳定动态的向上。的环境。因此,日志采集面临着更丰富、更动态的环境,需要考虑的点也更多。
例子:
对于一个运行时间很短的Job应用,从启动到停止只需要几秒,如何保证日志的实时性采集能跟得上,数据不丢失? K8s 一般推荐使用大型节点。每个节点可以运行 10-100+ 个容器。如何以尽可能低的资源消耗采集100+ 个容器?在K8s中,应用以yaml的形式部署,日志采集主要是手动配置文件的形式。日志采集如何以K8s的方式部署?
采集模式:主动或被动
日志的采集方法分为被动采集和主动推送。在K8s中,被动采集一般分为Sidecar和DaemonSet两种方式。主动推送包括 DockerEngine 推送。和商业直接写作。
总结一下:DockerEngine直接写一般不推荐;日志量大的场景推荐业务直写; DaemonSet 一般用于中小型集群;建议在非常大的集群中使用 Sidecar。各种采集方法的详细对比如下:
日志输出:标准输出或文件
与虚拟机/物理机不同,K8s 容器提供标准输出和文件。在容器中,标准输出直接将日志输出到stdout或stderr,而DockerEngine接管stdout和stderr文件描述符,收到日志后根据DockerEngine配置的LogDriver规则进行处理;日志打印到文件的方式与虚拟机/物理机基本相似,只是日志可以使用不同的存储方式,比如默认存储、EmptyDir、HostVolume、NFS等。
虽然Docker官方推荐使用Stdout打印日志,但需要注意的是,这个推荐是基于容器仅作为简单应用使用的场景。在实际业务场景中,我们还是建议大家尽量使用文件方式。主要原因有以下几点:
Stdout性能问题,从应用输出stdout到服务器,会有几个过程(比如常用的JSON LogDriver):应用stdout -> DockerEngine -> LogDriver -> Serialize to JSON -> Save to file - > 代理采集文件 -> 解析 JSON -> 上传到服务器。整个过程需要比文件更多的开销。压力测试时,每秒输出 10 万行日志会占用 DockerEngine 的额外 CPU 内核。 stdout 不支持分类,即所有输出混合在一个流中,不能像文件一样分类输出。通常,一个应用程序包括AccessLog、ErrorLog、InterfaceLog(调用外部接口的日志)、TraceLog等。这些日志的格式和用途不,如果混合在同一个流中,将很难采集和分析。 stdout 只支持容器主程序的输出。如果是 daemon/fork 模式下运行的程序,则无法使用 stdout。文件转储方式支持同步/异步写入、缓存大小、文件轮换策略、压缩策略、清除策略等多种策略,相对灵活。
因此,我们建议在线应用使用文件输出日志,Stdout只用于功能单一的应用或部分K8s系统/运维组件。
CICD 集成:日志记录操作员
Kubernetes提供了标准化的业务部署方式,可以通过yaml(K8s API)声明路由规则、暴露服务、挂载存储、运行业务、定义伸缩规则等,因此Kubernetes很容易与CICD系统集成。日志采集也是运维监控过程的重要组成部分。业务上线后的所有日志必须实时采集。
原来的方法是在发布后手动部署日志的逻辑采集。这种方式需要人工干预,违背了CICD自动化的目的;为了实现自动化,有人开始使用基于日志的API采集 /SDK封装了一个自动部署的服务,发布后通过CICD的webhook触发调用,但是这种方式开发成本很高。
在 Kubernetes 中,集成日志最标准的方式是在 Kubernetes 系统中注册一个新的资源,并以 Operator(CRD)的形式对其进行管理和维护。这样CICD系统就不需要额外开发,部署到Kubernetes系统时只需要附加日志相关配置即可。
Kubernetes 日志采集方案
甚至在Kubernetes出现之前,我们就开始为容器环境开发日志采集解决方案。随着K8s的逐渐稳定,我们开始将很多业务迁移到K8s平台上,所以我们也在之前的基础上进行了开发。 K8s 上的一套 log采集 解决方案。主要功能有:
支持各种数据的实时采集,包括容器文件、容器Stdout、主机文件、Journal、Event等;支持多种采集部署方式,包括DaemonSet、Sidecar、DockerEngine LogDriver等;支持丰富日志数据,包括Namespace、Pod、Container、Image、Node等附加信息;稳定高可靠,基于阿里巴巴自研Logtail采集Agent实现,目前部署实例数百万;基于CRD扩展,日志采集规则可以以Kubernetes部署和发布的方式部署,与CICD完美集成。安装日志采集组件
目前这个采集 解决方案已经向公众开放。我们提供 Helm 安装包,收录 Logtail 的 DaemonSet、AliyunlogConfig 的 CRD 声明和 CRD Controller。安装后可以直接使用 DaemonS优采云 采集器 并配置 CRD。安装方法如下:
Alibaba Cloud Kubernetes集群在激活时就可以安装,这样在创建集群时会自动安装以上组件。如果激活的时候没有安装,可以手动安装。如果是自建Kubernetes,无论是自建在阿里云上还是在其他云上还是离线,都可以使用这个采集方案。具体安装方法请参考【自建Kubernetes安装】()。
以上组件安装完成后,Logtail和对应的Controller会在集群中运行,但是这些组件默认没有采集任何日志,需要配置日志采集规则为< @k11@ >指定Pod的各种日志。
采集规则配置:环境变量或CRD
除了在日志服务控制台手动配置外,Kubernetes 还支持另外两种配置方式:环境变量和 CRD。
环境变量是自swarm时代以来一直使用的配置方法。您只需在要采集的容器环境变量上声明需要采集的数据地址,Logtail会自动将这些数据采集转给服务器。该方法部署简单,学习成本低,易于使用;但是可以支持的配置规则很少,很多高级配置(如解析方式、过滤方式、黑白名单等)都不支持,而且这种声明方式也不支持修改/删除,每个修改实际上创建了一个新的 采集 配置。历史采集配置需要手动清理,否则会造成资源浪费。
CRD配置方式非常符合Kubernetes官方推荐的标准扩展方式,使得采集配置以K8s资源的方式进行管理,并将特殊的CRD资源AliyunLogConfig部署到Kubernetes来声明需要 采集 的数据。例如,下面的例子是部署一个容器的标准输出采集,其中定义需要Stdout和Stderr 采集,并排除环境变量收录COLLEXT_STDOUT_FLAG: false的容器。
基于CRD的配置方式以Kubernetes标准扩展资源的方式进行管理,支持配置完整语义的增删改查,支持各种高级配置。这是我们强烈推荐的配置方法采集。
采集推荐的规则配置方式
在实际应用场景中,一般使用DaemonSet或者DaemonSet和Sidecar的混合。 DaemonSet 的优点是资源利用率高。但是存在一个问题,DaemonSet的所有Logtail共享全局配置,而单个Logtail有配置支持,因此无法支持大量应用的集群。
以上是我们给出的推荐配置方式。核心思想是:
尽可能多的采集相似数据的配置减少了配置的数量,减轻了DaemonSet的压力;需要给核心应用采集足够的资源,可以使用Sidecar方式;配置方法尽量使用 CRD 方法; Sidecar 没有配置限制,因为每个 Logtail 都是独立配置的,比较适合非常大的集群。练习 1 - 中小型集群
绝大多数 Kubernetes 集群都是中小型的。中小企业没有明确的定义。一般应用数量小于500,节点规模小于1000。没有功能清晰的Kubernetes平台运维。这个场景的应用数量不是特别多,DaemonSet可以支持所有的采集配置:
大部分业务应用的数据使用DaemonS优采云采集器模式核心应用(对于采集可靠性要求比较高的,比如订单/交易系统)单独使用Sidecar模式采集练习2-Large Cluster
对于一些用作PAAS平台的大型/超大型集群,一般业务在1000以上,节点规模也在1000以上,并且有专门的Kubernetes平台运维人员。该场景对应用数量没有限制,DaemonSet无法支持,所以必须使用Sidecar方式。总体规划如下:
Kubernetes平台的系统组件日志和内核日志的类型是比较固定的。这部分日志使用了DaemonS优采云采集器,主要为平台的运维人员提供服务;各业务的日志采用Sidecar方式采集,各业务可以独立设置Sidecar的采集目的地址,为业务的DevOps人员提供了足够的灵活性。