观远数据运维指南(封面) 版本号:1.0 V1.0 1 V1.0 版权所有©杭州观远数据有限公司2021。保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明 和其他观远数据商标均为杭州观远数据有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意 您购买的产品、服务或特性等应受观远数据商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,观远数据对本文档内容不做任何明示或暗示的声明或保证。 由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。 目录 导言3 适用范围3 基础篇4 一、系统架构说明4 1.1数据分析系统4 1.2运维系统5 1.3Docker&Kubernetes5 二、运维操作常见指令介绍6 2.1KubectlGetNodes6 2.2KubectlGetSvc/KubectlGetService7 2.3KubectlGetPods7 问题排查篇9 一、常见系统问题说明9 1.1自助处理类问题9 1.2协同处理类问题12 二、常见系统问题恢复13 2.1服务重启13 2.2Docker重启13 三、系统关闭与重启13 3.1服务关闭13 3.2服务重启14 四、日志查看与导出14 日常维护篇16 一、Web运维监控系统说明16 1.1KubernetesResourcesUsageMonitoring17 1.2KubernetesClusterMonitoring17 1.3Guandata18 二、云巡检20 结语22 导言 观远数据为广大企业客户提供一站式智能分析平台。随着业务的开展,平台的数据量与用户量也不断增大,因此平台的日常维护与问题排查十分重要。本手册详细描述了运维操作、问题排查、日常维护等主要方法,指导运维工程师等人员对平台进行监控和维护,保障业务分析正常进行。 适用范围 使用观远数据一站式智能分析平台(私有化部署)的运维工程师等技术人员。 基础篇 一、系统架构说明 观远数据的运行系统分为数据分析系统和运维系统,两个系统中所有的运行组件都基于Docker搭建,并由Kubernetes管理。观远数据分析平台通用版技术架构如图所示: 下文将分别介绍系统中的各个模块功能: 1.1数据分析系统 Spark Spark是基于内存的分布式计算框架,与DeltaLake配合作为数据分析系统核心,处理针对DeltaLake日常的数据增、删、改、查操作。 Spark-Job-Engine Spark-Job-Engine是基于Spark的服务系统,提供了一个用于提交和管理SparkJob的RESTful接口。 DeltaLake DeltaLake是存储数据的主要组件,以分布式数据存储,支持列式存储与增量更新。 直连与实时数据引擎 直连与实时数据引擎是指通过直连数据库的方式,将数据查询计算逻辑下推至数据库中执行。其中实时数据引擎需额外部署ClickHouse组件。 GuandataBIServer GuandataBIServer是后台服务组件,将前端查询操作转化为SparkJob提交到Spark-Jobserver。 GuandataAdmin GuandataAdmin是管理控制台组件,可进入运维系统,创建域,进行Schema升级。 GuandataWeb/H5 GuandataWeb/H5是前端组件,与GuandataBIServer交互,并向用户展示界面。 1.2运维系统 OpenZipkin OpenZipkin是分布式跟踪系统,通过TraceID可以完整标记一次请求执行过程。 Prometheus&Grafana Prometheus是一套监控系统,集成监控、报警、时间序列数据库于一体,配合图表可视化系统Grafana,实时展示各个应用的请求数、请求响应时间、异常请求数量等系统状态以及资源利用情况。 OKLog OKLog是采集应用中产生的所有日志,运维人员可以在Guandata-Admin界面中的日志检索接口查看业务日志。 Spark-Job-engine管理 Guandata-Admin中的Spark-Job-Engine管理界面,可查看各个作业的执行情况。 Spark管理 Guandata-Admin中的Spark集群管理界面,可查看SparkMaster和Slave节点的运行状态。 1.3Docker&Kubernetes Docker是一个开源的应用容器引擎。以上数据分析系统、运维系统中的每个组件都可以打包其应用及依赖包到一个Docker容器中。 Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,主要功能如下: (1)使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。 (2)以集群的方式运行、管理跨机器的容器。 (3)解决Docker跨机器容器之间的通讯问题。 (4)Kubernetes的自我修复机制使容器集群稳定维持在用户期望的状态下运行。 二、运维操作常见指令介绍 Kubectl是一个用于操作Kubernetes集群的命令行接口。基础的Kubectl命令介绍如下表所示: 命令 说明 version 显示客户端和服务器侧版本信息 explain 显示资源文档信息 get 获取对象信息列表 describe 获取对象的详细信息 logs 取得pod中容器的log信息 exec 在容器中执行一条命令 cp 从容器拷出或者向容器中拷入文件 attach 连接到一个运行中的容器中 在实际运维场景中,KubectlGet*命令较为常用,其中三个常见命令介绍如下文所示。 2.1KubectlGetNodes 登录服务器,运行KubectlGetNodes命令后,可得如下所示的Nodes列表: 在Kubernetes集群架构中,Node是运行Pod的服务节点,用来承载被分配Pod的运行,也是Pod运行的宿主机。以上列表中的一项即对应集群中的一个节点。 2.2KubectlGetSvc/KubectlGetService 登录服务器,运行KubectlGetSvc/KubectlGetService命令之后,可得如下所示的Services列表: 2.3KubectlGetPods 登录服务器,运行KubectlGetPods命令之后,可得如下所示的Pods列表: 在Kubernetes中,Pod是基本操作单元,通常可以把单个或多个相关的容器组合成一个Pod,以上列表中的一项即对应一种应用。各个Pod的基本作用简介如下: Alertmanager系统的警报组件,一旦系统出现重启或者故障,会通过邮件方式通知相关运维人员。 Grafana系统的Web监控图表可视化组件,配合监控系统Prometheus,可以实时监控集群节点运行状况以及资源的使用情况。 Guandata-Admin系统的管理员组件,是日常系统运营维护的入口。集成了管理工具和系统排查工具如Grafana、OkLog,Zipkin等,可进行拥有管理员权限才能进行的操作,如创建Domain、升级Schema等。 Guandata-Server系统的后端服务器组件,是系统运行的核心,也是运维系统主要的监控对象。 Guandata-Web系统的前端Web组件,是前端服务的核心。 Oklog-Server系统的日志收集组件,通过各个节点上的Logsput采集运行日志。在Web运维监控系统的OkLog界面中可以查看采集到的日志。 Zipkin-Server系统的分布式跟踪组件,通过一个TraceId标记一次完整的服务请求调用,可以把各个应用的调用情况串联起来,通过TraceId可以在运维监控系统的Zipkin界面中查询完整的请求链。 LogspoutOklog的日志采集模块,分布在每个节点上,负责将本节点的日志发送到Oklog-Server上。 Monitor-Server系统监控系统Prometheus组件,通过各个节点的 Node-Exporter可以采集监控信息。配合Grafana组成Web运维监控系统。 Node-ExporterPrometheus的监控模块,分布在每个节点。 Spark-Job-EngineSpark集群管理模块,与Spark-Master交互,提交Job。 Spark-MasterSpark集群主节点。 Spark-WorkerSpark集群从节点。 问题排查篇 一、常见系统问题说明 为保障系统服务的可用性与稳定性,在内部运维过程中如遇到以下情况,自助处理类问题可通过以下操作进行自主维护;协同处理类问题,请提前联系观远数据相关工作人员协助处理。 1.1自助处理类问题 进入观远数据平台,点击平台界面右上角的九宫格,进入“管理员设置”。 (1)任务卡住 当有一些异常的任务执行,导致任务卡住致使其他任务无法执行时,可以通过运维管理界面的服务管理来重启通用计算引擎服务(请勿频繁重启此服务,如果重启后无效果,建议联系观远数据技术支持人员)。 (2)任务排队很多 当有很多任务排队,导致急需的任务无法执行时,可以点击“批量取消”按钮,从而批量取消不重要的任务。 (3)资源异常报警,任务失败预警 运维管理-信息通知界面允许开启失败任务报警,资源报警等功能。当任务异常,或者服务资源占用较高时,报警将会发送到收件人邮箱,让收件人及时发现问题。 (4)运维日志下载 观远数据的技术人员需要通过日志来判断企业的部分特殊问题。运维管理页面的运维日志允许下载指定时间段的日志,您可以发送给观远数据的技术人员帮助您进行分析。 1.2协同处理类问题 (1)更改服务器内网IP: BI服务之间的互相调用需要内网IP信息,更改后需重装集群并且修改配置才能继续正常使用BI服务。因此,如需更改,请务必提前至少一个工作日协调资源安排部署工作。 (2)可预知的停电、关机、服务器物理重启: 请提前告知观远数据对接工作人员关闭服务,以免非正常关机导致数据丢失或损坏。 (3)服务器配置升级及维护: 包括但不限于CPU、内存和磁盘扩容,物理服务器和云服务器的切换。原机器上扩容会涉及到修改服务的参数,若不修改会使扩容无效。非原机器上扩容可能涉及数据的备份及迁移,系统的重新部署,需要提前沟通具体方案。详情可联系观远数据对接工作人员。 (4)系统安装与升级: 对于私有化部署的企业客户,由观远数据提供系统安装、升级等服务,详情可联系观远数据对接工作人员。 kubectldeletepodguandata-server-pod-name sytemctlrestartdocker sudodockerstopguandata_db sudodockerstopcassandra 二、常见系统问题恢复 2.1服务重启 如果某个Pod的服务状态异常,例如Guandata-Server或Spark-Jobserver因内存异常而中止服务,可以简单地通过重启Pod来恢复。重启的方式为删除对应的Pod: Guandata-Server-Pod-Name是系统中Server服务对应的Pod名称,可以通过KubectlGetPod命令查看。 因为K8S服务有自恢复功能,当Pod被删除后,具有相同功能的一个新Pod会被启动。因此,删除即重启。 2.2Docker重启 当重启单个Pod依然不能恢复服务时,您可以尝试重启D