云服务器内容精选

  • 统一资源监控 CES 服务是面向租户资源的统一监控平台,采用Region级部署方式,对不同Region,不同账号的云资源进行监控及告警。每个账号下都有独立的监控大屏,告警通知、资源分组等功能。能够全方位、立体化的监控租户资源的使用情况,出现问题会触发告警,并通知租户。 站点监控用于模拟真实用户对远端服务器的访问,从而探测远端服务器的可用性、连通性等问题。提供简单的添加配置,不再浪费资源和精力配置复杂的开源产品。支持站点异常告警,不用担心网站出问题而无人知晓。 图1 统一资源监控 针对Landing Zone解决方案中需要在多个账号下对所有资源进行监控的诉求,可以通过CES的exporter及开放接口,将不同账号的监控数据和告警数据接入到第三方的平台进行展示。告警配置可以通过华为云提供的默认模板,根据客户自身需求进行修改,修改后的最终模板可以应用在不同账号下的资源;通过该功能可以简化客户告警配置的复杂度,提升告警配置效率。如下图所示: 图2 统一运维账号 账号A、账号B的监控数据通过CES提供的exporter能力在客户侧Prometheus进行任务配置,将数据接入。 客户的第三方监控平台提供一个定时任务(建议1分钟粒度),调用CES的告警历史接口,将告警写入数据库中。 通过配置客户侧Grafana的数据源(Prometheus,数据库),最终将监控及告警数据集中呈现。 exporter使用手册:https://github.com/huaweicloud/cloudeye-exporter 父主题: 运维监控
  • 资源运维过程有哪些常见报错? 通过 云堡垒机 登录资源,运维过程系统发出请求后,若遇到错误,会在响应中包含响应的错误码,以及描述错误信息。 CBH系统的常见错误码,以及错误排查方法,请参见表1。 表1 常见运维错误码 错误码 错误提示 排查方法 ERROR_CLIENT_514 Code:C_514 文件传输响应时间过长,请重试或联系系统管理员 检查CBH系统与FTP服务的网络,是否存在传输丢包现象; 本地登录FTP服务器,检查是否能正常上传文件; 检查本地网络,是否限制上传文件的大小; 请填写工单反馈问题现象,联系技术支持。 ERROR_CLIENT_515 Code:C_515 运维资源过程中遇到一个错误,请重试或联系系统管理员 尝试本地登录故障主机资源,或者登录同网段的其他资源进行测试; 检查主机/etc/hosts.deny文件配置,是否将CBH系统IP加入了黑名单,详细解决办法请参见Code:C_515错误; 检查CBH系统与故障主机的网络层,是否有服务协议拦截CBH系统IP; 请填写工单反馈问题现象,联系技术支持。 ERROR_CLIENT_519 Code:C_519 由于资源连接失败或不可达,当前无法访问。如果持续出现该问题,请通知系统管理员或检查系统日志 检查CBH系统与主机资源的网络是否互通; 本地登录主机资源,输入命令route -n,检查目标主机的路由表,是否存在丢失CBH路由现象; 请填写工单反馈问题现象,联系技术支持。 详细解决办法请参见Code:C_519错误。 ERROR_CLIENT_520 Code:C_520 由于RDP拒绝了此次连接或等待数据出错,资源无法访问。如果持续出现该问题,请通知系统管理员或检查系统日志 检查Windows主机资源的远程配置,是否开启远程桌面; 本地MSTSC方式登录主机资源,检查是否可以正常登录; 请填写工单反馈问题现象,联系技术支持。 ERROR_CLIENT_521 Code:C_521 由于其他用户登录导致连接发生冲突,请稍后重试 本地登录Windows主机资源,输入命令gpedit.msc,设置“限制链接的数量”,修改已启用的最大链接数;或关闭“限制每个用户只能进行一个会话”选项。 请填写工单反馈问题现象,联系技术支持。 ERROR_CLIENT_522 Code:C_522 于RDP闲置时间超时,连接已断开,如果不是本人意愿,请通知系统管理员或检查系统设置 本地登录Windows主机资源,输入命令gpedit.msc,修改“为断开的会话设置时间”选项; 本地MSTSC方式登录主机资源,检查是否出现RDP超时错误; 请填写工单反馈问题现象,联系技术支持。 ERROR_CLIENT_523 Code:C_523 由于连接被管理员断开、账户被注销或登录资源时长达到上限,连接已断开,如果不是本人意愿,请通知系统管理员或检查系统日志 检查RDP连接是否被管理员强制断开; 检查系统用户是否被服务器管理员注销; 检查系统用户登录时长是否超过限制。 ERROR_CLIENT_769 Code:C_769 登录失败,有可能是账户名、密码或密钥错误,请尝试重新连接 本地登录故障主机资源,检查资源账户和密码是否正确; 检查主机资源是否开启双因子认证; 检查主机资源是否拒绝root账户登录; 请填写工单反馈问题现象,联系技术支持。 详细解决办法请参见Code:C_769错误。 ERROR_CLIENT_771 Code:C_771 请联系管理员授予从账户访问权限,或检查您的系统设置 检查主机资源是否开启目标账户远程登录权限。 ERROR_CLIENT_776 Code:C_776 由于浏览器长时间无响应,连接已断开,请检查您的网络并重试 检查本地浏览器运行状态,推荐使用Chrome浏览器。 ERROR_CLIENT_797 Code:C_797 连接数超过使用限制,请关闭一个或多个连接后重试 本地登录Windows主机资源,输入命令gpedit.msc,设置“限制链接的数量”,修改已启用的最大链接数。 ERROR_TUNNEL_514 Code:T_514 由于服务器长时间无响应,连接已断开,请检查您的网络并重试 检查CBH系统与主机资源间网络是否稳定; 检查CBH系统与主机资源的网络是否互通; 请填写工单反馈问题现象,联系技术支持。 详细解决办法请参见Code:T_514错误。 ERROR_TUNNEL_520 Code:T_520 由于H5服务器H5代理服务器拒绝了此次连接,请检查您的网络并重试 检查主机资源IP地址或端口等配置是否正确; 检查主机资源是否开启guacd服务; 检查主机资源guacd服务是否接受CBH系统IP的连接; 请填写工单反馈问题现象,联系技术支持。 父主题: 运维故障
  • 操作(Action) 操作(Action)即为SCP中支持的操作项。 “访问级别”列描述如何对操作进行分类(list、read和write等)。此分类可帮助您了解在SCP中相应操作对应的访问级别。 “资源类型”列指每个操作是否支持资源级权限。 资源类型支持通配符号*表示所有。如果此列没有值(-),则必须在SCP语句的Resource元素中指定所有资源类型(“*”)。 如果该列包含资源类型,则必须在具有该操作的语句中指定该资源的URN。 资源类型列中必需资源在表中用星号(*)标识,表示使用此操作必须指定该资源类型。 关于CodeartsPipeline定义的资源类型的详细信息请参见资源类型(Resource)。 “条件键”列包括了可以在SCP语句的Condition元素中支持指定的键值。 如果该操作项资源类型列存在值,则表示条件键仅对列举的资源类型生效。 如果该操作项资源类型列没有值(-),则表示条件键对整个操作项生效。 如果此列没有值(-),表示此操作不支持指定条件键。 关于CodeartsPipeline定义的条件键的详细信息请参见条件(Condition)。 您可以在自定义SCP语句的Action元素中指定以下CodeartsPipeline的相关操作。 表1 CodeartsPipeline支持的操作项 操作项 描述 访问级别 资源类型(*为必须) 条件键 codeartspipeline:pipelinetemplate:create 授予权限以创建流水线模板。 write - - codeartspipeline:pipelinetemplate:update 授予权限以更新流水线模板。 write - - codeartspipeline:pipelinetemplate:delete 授予权限以删除流水线模板。 write - - codeartspipeline:pipelinetemplate:get 授予权限以查看流水线模板。 read - - codeartspipeline:pipelinetemplate:list 授予权限以查看流水线模板列表。 list - - codeartspipeline:rule:create 授予权限以创建规则。 write - - codeartspipeline:rule:update 授予权限以更新规则。 write - - codeartspipeline:rule:delete 授予权限以删除规则。 write - - codeartspipeline:rule:get 授予权限以查看规则。 read - - codeartspipeline:rule:list 授予权限以查看规则列表。 list - - codeartspipeline:strategy:create 授予权限以创建策略。 write - - codeartspipeline:strategy:update 授予权限以更新策略。 write - - codeartspipeline:strategy:delete 授予权限以删除策略。 write - - codeartspipeline:strategy:get 授予权限以查看策略。 read - - codeartspipeline:strategy:list 授予权限以查看策略列表。 list - - codeartspipeline:extension:create 授予权限以创建插件。 write - - codeartspipeline:extension:update 授予权限以更新插件。 write - - codeartspipeline:extension:delete 授予权限以删除插件。 write - - codeartspipeline:extension:get 授予权限以查看插件。 read - - codeartspipeline:extension:list 授予权限以查看插件列表。 list - - CodeartsPipeline的API通常对应着一个或多个操作项。表2展示了API与操作项的关系,以及该API需要依赖的操作项。 表2 API与操作项的关系 API 对应的操作项 依赖的操作项 POST /v5/{tenant_id}/api/pipeline-templates codeartspipeline:pipelinetemplate:create - PUT /v5/{tenant_id}/api/pipeline-templates/{template_id} codeartspipeline:pipelinetemplate:update - DELETE /v5/{tenant_id}/api/pipeline-templates/{template_id} codeartspipeline:pipelinetemplate:delete - GET /v5/{tenant_id}/api/pipeline-templates/{template_id} codeartspipeline:pipelinetemplate:get - POST /v5/{tenant_id}/api/pipeline-templates/list codeartspipeline:pipelinetemplate:list - POST /v2/{domain_id}/rules/create codeartspipeline:rule:create - PUT /v2/{domain_id}/rules/{rule_id}/update codeartspipeline:rule:update - DELETE /v2/{domain_id}/rules/{rule_id}/delete codeartspipeline:rule:delete - GET /v2/{domain_id}/rules/{rule_id}/detail codeartspipeline:rule:get - GET /v2/{domain_id}/rules/query codeartspipeline:rule:list - POST /v2/{domain_id}/tenant/rule-sets/create codeartspipeline:strategy:create - PUT /v2/{domain_id}/tenant/rule-sets/{rule_set_id}/update codeartspipeline:strategy:update - DELETE /v2/{domain_id}/tenant/rule-sets/{rule_set_id}/delete codeartspipeline:strategy:delete - GET /v2/{domain_id}/tenant/rule-sets/{rule_set_id}/detail codeartspipeline:strategy:get - GET /v2/{project_id}/rule-sets/{rule_set_id}/gray/detail codeartspipeline:strategy:get - GET /v2/{domain_id}/tenant/rule-sets/query codeartspipeline:strategy:list - GET /v2/{project_id}/rule-sets/query codeartspipeline:strategy:list - PUT /v2/{domain_id}/tenant/rule-sets/{rule_set_id}/switch codeartspipeline:strategy:update - POST /v1/{domain_id}/agent-plugin/create codeartspipeline:extension:create - POST /v1/{domain_id}/agent-plugin/create-draft codeartspipeline:extension:create - POST /v1/{domain_id}/publisher/create codeartspipeline:extension:create - POST /v1/{domain_id}/agent-plugin/edit-draft codeartspipeline:extension:update - POST /v1/{domain_id}/agent-plugin/publish-draft codeartspipeline:extension:update - POST /v1/{domain_id}/agent-plugin/update-info codeartspipeline:extension:update - POST /v1/{domain_id}/agent-plugin/publish-plugin-bind codeartspipeline:extension:update - POST /v1/{domain_id}/agent-plugin/publish-plugin codeartspipeline:extension:update - POST /v1/{domain_id}/common/upload-plugin-icon codeartspipeline:extension:update - POST /v1/{domain_id}/common/upload-publisher-icon codeartspipeline:extension:update - DELETE /v1/{domain_id}/agent-plugin/delete-draft codeartspipeline:extension:delete - GET /v1/{domain_id}/publisher/query-all codeartspipeline:extension:list - GET /v1/{domain_id}/publisher/optional-publisher codeartspipeline:extension:list - POST /v1/{domain_id}/relation/stage-plugins codeartspipeline:extension:list - GET /v1/{domain_id}/relation/plugin/single codeartspipeline:extension:list - POST /v1/{domain_id}/agent-plugin/query-all codeartspipeline:extension:list - POST /v1/{domain_id}/agent-plugin/plugin-metrics codeartspipeline:extension:get - POST /v1/{domain_id}/agent-plugin/plugin-input codeartspipeline:extension:get - POST /v1/{domain_id}/agent-plugin/plugin-output codeartspipeline:extension:get - GET /v1/{domain_id}/agent-plugin/query codeartspipeline:extension:list - GET /v1/{domain_id}/agent-plugin/detail codeartspipeline:extension:get - GET /v1/{domain_id}/agent-plugin/all-version codeartspipeline:extension:list - DELETE /v1/{domain_id}/publisher/delete codeartspipeline:extension:delete - POST /v1/{domain_id}/publisher/detail codeartspipeline:extension:get - POST /v3/{domain_id}/extension/info/add codeartspipeline:extension:create - POST /v3/{domain_id}/extension/info/update codeartspipeline:extension:update - DELETE /v3/{domain_id}/extension/info/delete codeartspipeline:extension:delete - POST /v3/{domain_id}/extension/upload codeartspipeline:extension:update - GET /v3/{domain_id}/extension/detail codeartspipeline:extension:get - POST /v1/{domain_id}/relation/plugins codeartspipeline:extension:list -
  • 采集CCE集群的业务数据 通过新增PodMonitor方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。 如下指标采集的周期是30秒,所以等待大概30秒后才能在 AOM 的界面上查看到上报的指标。 配置信息如下: apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: kafka-exporter namespace: default spec: namespaceSelector: matchNames: - default # exporter 所在的命名空间 podMetricsEndpoints: - interval: 30s path: /metrics port: metric-port selector: matchLabels: k8s-app: kafka-exporter
  • 步骤一:建设四层指标体系 接入业务层指标。 登录AOM 2.0控制台。 在左侧导航栏中选择“接入中心”。 在右侧“业务层”面板单击需要接入的指标卡片。 接入ELB 日志指标 系统可自动接入,无需用户手动操作。 在左侧导航栏,选择已创建的仪表盘,单击页面右上角的,输入对应SQL语句,即可在仪表盘中查看该日志指标。以查看流量指标为例,输入对应SQL语句,单击“查询”,如图2所示。 图2 查看流量指标 接入 APM 事务指标 为工作负载安装APM探针,具体操作请参见安装APM探针。 安装完成后,请登录安装探针的服务对应的控制台界面,执行操作触发APM事务指标的采集。以本实践场景中的商城服务为例,可以在商城操作界面将对应商品添加到购物车。 登录AOM 2.0控制台。 在左侧导航栏选择“指标浏览”。在右侧区域通过选择指标的方式查看接入的APM指标。 接入应用层指标。 为工作负载安装APM探针,具体操作如下: 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“工作负载 ”,选择需要上报到AOM的工作负载类型。 单击工作负载名称,选择“性能管理配置”,单击右下角“编辑”,修改“性能管理配置”相关信息。 选择“APM 2.0探针”,设置“探针版本”为“latest-x86”,“APM环境”为“phoenixenv1”,从“APM应用”的下拉列表中选择创建的“phoenixapp1”应用。 设置完成后,单击“保存”。 安装完成后,请登录安装探针的服务对应的控制台界面,执行操作触发应用层指标的采集。以本实践场景中的商城服务为例,可以在商城操作界面将对应商品添加到购物车。 登录AOM 2.0控制台。 在左侧导航栏选择“指标浏览”。在右侧区域通过选择指标的方式查看接入的应用层指标。 接入中间件指标。 将数据上传到E CS 服务器。 下载mysqld_exporter-0.14.0.linux-amd64.tar.gz软件包,下载地址:https://prometheus.io/download/。 以root用户登录ECS服务器,将下载的Exporter软件包上传到ECS服务器并解压。 登录RDS 控制台,在“实例管理”界面实例列表中单击一个RDS实例名。在“基本信息”界面查看RDS安全组。 图3 查看RDS安全组 检查RDS的安全组是否已开放3306端口。 图4 检查RDS端口是否开放 执行以下命令,进入解压文件夹,并在ECS服务器上配置mysql.cnf文件。 cd mysqld_exporter-0.14.0.linux-amd64 vi mysql.cnf 例如,在mysql.cnf文件中添加如下内容: [client] user=root(rds用户名) password=****(rds密码) host=192.168.0.198(rds公网IP) port=3306(端口) 执行以下命令,启动mysqld_exporter工具。 nohup ./mysqld_exporter --config.my-cnf="mysql.cnf" --collect.global_status --collect.global_variables & 执行以下命令,确认工具是否正常启动。 curl http://127.0.0.1:9104/metrics 如果回显信息如图5所示,能够查看到指标则说明工具启动正常。 图5 查看指标 通过虚机接入方式接入中间件指标。 登录AOM 2.0控制台。 在左侧导航栏中选择“接入中心”,在右侧“中间件”面板单击需要接入的指标卡片。 在“虚机接入”界面为ECS服务器安装UniAgent采集工具,具体操作请参见手动安装UniAgent。 为创建的“phoenixenv1”环境创建中间件采集任务。在左侧导航栏中,选择“采集任务”,单击“新增采集任务”。 图6 创建采集任务 在创建采集任务页面中,配置相关参数信息。 关键配置项说明如下: Exporter地址/REDIS_Exporter地址/MySQL_Exporter地址:安装Exporter/REDIS_Exporter/MySQL_Exporter的主机IP地址和端口号。格式为IP:Port,例如:127.0.0.1:9104。 中间件地址/REDIS 地址/MySQL 地址:Exporter/REDIS_Exporter/MySQL_Exporter启动实例监控的主机/REDIS/MySQL,通常填写主机/REDIS/MySQL的IP地址。 指标:待采集的指标。默认为:''(单引号)表示输出原本的所有指标。如果需对采集指标进行过滤,则按如下格式进行填写,例如:'metric1, metric2'。 指标维度:新增采集指标维度。单击,输入指标维度名和指标维度值,字符长度不超过20个字符。最多可添加10个标签。例如:指标维度名为label1,指标维度值为label2,则添加成功后为label1:"label2"。 图7 配置采集参数-1 图8 配置采集参数-2 完成后,单击“立即创建”。 接入完成后,在左侧导航栏,选择“指标浏览”。在右侧区域通过选择指标的方式查看接入的中间件指标。 接入基础设施层指标。 登录AOM 2.0控制台。 在左侧导航栏中选择“接入中心”。 在右侧“运行环境”与“云服务”面板单击需要接入的指标卡片。 选择容器指标卡片: 以选择“云容器引擎CCE”卡片为例,具体操作如下: 在“插件市场”界面搜索找到云原生监控插件,单击“安装”。 图9 查找云原生监控插件 设置集群名称、规格信息。 开启对接第三方开关,将普罗数据上报至AOM,填写上报AOM的地址及token,并跳过证书认证。 图10 设置对接第三方参数 参数说明如下: 数据上报地址 :https://aom-internal-access.{region_name}.myhuaweicloud.com:8443/v1/{project_id}/push,其中region_name为指定承载REST服务端点的服务器域名或IP,project_id 为项目的ID,您可以单击右上方的用户名称,在下拉列表中选择“我的凭证”。在“我的凭证”页面中选择“API凭证”页签。从右侧项目列表的“项目”和“项目ID”信息中获取。例如AOM服务在“华北-北京一”区域名称为“cn-north-1”。 Token:登录AOM 2.0控制台,在左侧导航栏选择“设置”,单击“认证管理”,从右侧AccessCode列表的“ID”信息中获取。 设置完成后,单击“安装”。安装完后单击插件查看安装状态,当状态都为“运行中”则表示插件安装成功。 图11 安装kube-prometheus-stack插件 选择云服务监控指标卡片: 在弹出的“云服务接入”对话框中选择需要监控的云服务。例如RDS或DCS服务。 单击“确定”完成接入。 接入完成后,系统自动跳转至“云服务监控”页面,即可查看已选择的云服务运行状态等信息。 接入完成后,在左侧导航栏选择“指标浏览”。在右侧区域通过选择指标的方式查看接入的基础设施层指标。
  • 解决方案 AOM能够实现云上应用的一站式立体化运维管理,在接入中心中可以接入需要监控的业务层、应用层、中间件层、基础设施层指标,在仪表盘中实现个性化监控,以及通过统一告警入口配置告警规则,实现业务的日常巡检,保障业务的正常运行。 AOM提供多场景、多层次、多维度指标数据的监控能力,建立了从基础设施层指标、中间件层指标、应用层指标到业务层指标的四层指标体系,将1000+种指标数据全方位呈现,数据丰富全面。 表1 AOM支持的四层指标体系 类型 来源 指标举例 如何接入 业务层指标 通常来源于端侧日志SDK、提取的ELB日志。 访问UV、访问PV、访问延时、访问失败率、访问流量情况等 接入业务层指标 通常来源于事务监控或上报的自定义指标。 URL的调用次数、URL的最大并发数、URL的最大响应时间等 应用层指标 通常来源于组件性能图表或接口性能数据。 接口调用次数、请求平均时延、错误调用次数、请求吞吐量等 接入应用层指标 中间件指标 通常来源于原生中间件或云中间件数据。 文件系统容量、文件系统使用率等 接入中间件指标 基础设施层指标 通常来源于容器或云服务相关数据,例如计算、存储、网络、数据库等。 CPU使用率、内存使用率、健康状态等 接入基础设施层指标 接入容器指标 接入云服务指标 图1 AOM四层指标体系
  • 操作场景 使用MongoDB过程中需要对MongoDB运行状态进行监控,以便了解MongoDB服务是否运行正常,排查MongoDB故障问题原因。Prometheus监控服务提供了CCE容器场景下基于Exporter的方式来监控MongoDB运行状态。本文介绍如何部署Exporter以及实现MongoDB Exporter告警接入等操作。 为了方便安装管理Exporter,推荐使用CCE进行统一管理。
  • 步骤二:开启AOM可信服务并设置委托管理员(若进行监控的账号为组织管理员,可跳过此步骤) 使用组织中的管理员账号登录组织Organizations控制台。 在左侧导航栏选择“可信服务”。 在可信服务列表中,单击“ 应用运维管理 服务(AOM)”操作列的“启用”,开启AOM可信服务。 单击“应用运维管理服务(AOM)”操作列的“设置委托管理员”,选择需要设置为委托管理员的账号,单击“确定”。如图5所示,将paas_aom设置为委托管理员。 图5 设置委托管理员
  • 前提条件 监控账号与被监控账号均已加入组织。监控账号需为组织管理员,非组织管理员的组织成员需进行步骤二,授权委托管理员身份。 被监控账号当前支持汇聚的包括“Prometheus for 云服务”可接入的18个云服务指标(FunctionGraph,EVS,CBR,OBS,VPC,ELB,DC,NAT,DMS,DCS,RDS,DDS,DRS,LakeFormation, MRS GaussDB DWS, CSS ,WAF)以及ICAgent采集的CCE和ECS指标。
  • 添加采集任务 通过新增PodMonitor方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。 如下指标采集的周期是30秒,所以等待大概30秒后才能在AOM的界面上查看到上报的指标。 apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: redis-exporter namespace: default spec: namespaceSelector: #选择要监控 Exporter Pod 所在的namespace matchNames: - default # exporter所在的命名空间 podMetricsEndpoints: - interval: 30s # 设置指标采集周期 path: /metrics # 填写 Prometheus Exporter 对应的 path 的值,默认/metrics port: metric-port# 填写 Prometheus Exporter 对应的 YAML 的 ports 的 name selector: # 填写要监控 Exporter Pod 的 Label 标签,以定位目标 Exporter matchLabels: k8s-app: redis-exporter
  • 添加采集任务 通过新增PodMonitor方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。 如下示例中指标采集的周期是30秒,所以等待大概30秒后才能在AOM的界面上查看到上报的指标。 apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: memcached-exporter namespace: default spec: namespaceSelector: matchNames: - default # exporter所在的命名空间 podMetricsEndpoints: - interval: 30s path: /metrics port: metric-port selector: matchLabels: k8s-app: memcached-exporter
  • 添加采集任务 通过新增PodMonitor方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。 如下指标采集的周期是30秒,所以等待大概30秒后才能在AOM的界面上查看到上报的指标。 apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: postgres-exporter namespace: default spec: namespaceSelector: matchNames: - default # exporter 所在的命名空间 podMetricsEndpoints: - interval: 30s path: /metrics port: http-metrics selector: matchLabels: app: postgres
  • PostgreSQL Exporter 部署 登录CCE控制台。 单击已接入的集群名称,进入该集群的管理页面。 执行以下操作完成Exporter部署。 使用Secret管理PostgreSQL密码。 在左侧导航栏中选择“工作负载”,在右上角单击“YAML创建”完成YAML配置。YAML配置说明:使用Kubernetes的Secret来管理密码并对密码进行加密处理,在启动PostgreSQL Exporter的时候直接使用Secret Key,需要调整对应的password。 YAML 配置示例如下: apiVersion: v1 kind: Secret metadata: name: postgres-test type: Opaque stringData: username: postgres password: you-guess #对应 PostgreSQL 密码 部署PostgreSQL Exporter。 在左侧导航栏中选择“工作负载”,在右上角单击“YAML创建”,以YAML的方式部署Exporter。 YAML配置示例如下(请直接复制下面的内容,根据实际业务调整相应的参数): apiVersion: apps/v1 kind: Deployment metadata: name: postgres-test # 根据业务需要调整成对应的名称,建议加上 PG 实例的信息 namespace: default #需要和 postgres 的 service 在同一命名空间 labels: app: postgres app.kubernetes.io/name: postgresql spec: replicas: 1 selector: matchLabels: app: postgres app.kubernetes.io/name: postgresql template: metadata: labels: app: postgres app.kubernetes.io/name: postgresql spec: containers: - name: postgres-exporter image: swr.cn-north-4.myhuaweicloud.com/aom-exporter/postgres-exporter:v0.8.0 # 上传至 SWR 的 postgres-exporter 镜像 args: - "--web.listen-address=:9187" # export 开启的端口 - "--log.level=debug" # 日志级别 env: - name: DATA_SOURCE_USER valueFrom: secretKeyRef: name: postgres-test # 对应上一步中的 Secret 的名称 key: username # 对应上一步中的 Secret Key - name: DATA_SOURCE_PASS valueFrom: secretKeyRef: name: postgres-test # 对应上一步中的 Secret 的名称 key: password # 对应上一步中的 Secret Key - name: DATA_SOURCE_URI value: "x.x.x.x:5432/postgres?sslmode=disable" # 对应的连接信息 ports: - name: http-metrics containerPort: 9187 获取指标。 通过“curl http://exporter:9187/metrics”无法获取Postgres实例运行时间,可以通过自定义一个queries.yaml来获取该指标。 创建一个包含queries.yaml的配置。 将配置作为Volume挂载到Exporter某个目录下。 通过extend.query-path来使用配置,将上述的Secret以及Deployment进行汇总,汇总后的YAML如下所示: # 以下 document 创建一个包含自定义指标的 queries.yaml --- apiVersion: v1 kind: ConfigMap metadata: name: postgres-test-configmap namespace: default data: queries.yaml: | pg_postmaster: query: "SELECT pg_postmaster_start_time as start_time_seconds from pg_postmaster_start_time()" master: true metrics: - start_time_seconds: usage: "GAUGE" description: "Time at which postmaster started" # 以下 document 挂载了 Secret 和 ConfigMap ,定义了部署 Exporter 相关的镜像等参数 --- apiVersion: apps/v1 kind: Deployment metadata: name: postgres-test namespace: default labels: app: postgres app.kubernetes.io/name: postgresql spec: replicas: 1 selector: matchLabels: app: postgres app.kubernetes.io/name: postgresql template: metadata: labels: app: postgres app.kubernetes.io/name: postgresql spec: containers: - name: postgres-exporter image: wrouesnel/postgres_exporter:latest args: - "--web.listen-address=:9187" - "--extend.query-path=/etc/config/queries.yaml" - "--log.level=debug" env: - name: DATA_SOURCE_USER valueFrom: secretKeyRef: name: postgres-test-secret key: username - name: DATA_SOURCE_PASS valueFrom: secretKeyRef: name: postgres-test-secret key: password - name: DATA_SOURCE_URI value: "x.x.x.x:5432/postgres?sslmode=disable" ports: - name: http-metrics containerPort: 9187 volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: postgres-test-configmap --- apiVersion: v1 kind: Service metadata: name: postgres spec: type: NodePort selector: app: postgres app.kubernetes.io/name: postgresql ports: - protocol: TCP nodePort: 30433 port: 9187 targetPort: 9187 访问地址: http://{集群任意节点的公网IP}:30433/metrics,即可通过自定义的queries.yaml查询到Postgres实例启动时间指标。 图1 访问地址
  • 采集CCE集群的业务数据 通过新增PodMonitor方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。 配置信息如下: apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: mysql-exporter namespace: default spec: namespaceSelector: matchNames: - default # exporter 所在的命名空间 podMetricsEndpoints: - interval: 30s path: /metrics port: metric-port selector: matchLabels: k8s-app: mysql-exporter
  • 数据库授权 登录集群执行以下命令: kubectl exec -it ${mysql_podname} bash mysql -u root -p 图1 执行命令 登录数据库,执行以下命令: CREATE USER 'exporter'@'x.x.x.x(hostip)' IDENTIFIED BY 'xxxx(password)' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'x.x.x.x(hostip)'; 验证授权是否成功。 输入以下命令查询sql,查看是否有exporter的数据,host为mysql所在节点的IP。 select user,host from mysql.user; 图2 查询sql