云服务器内容精选

  • 功能说明 用户需要查看集群的监控指标信息时,可以通过 云监控 (Cloud Eye)确认集群各项指标情况。通过监控集群运行时的各项指标,用户可以识别出数据库集群状态异常的时间段,然后在数据库日志中,分析可能存在问题的活动,从而优化数据库性能。本章节定义了 数据仓库 服务上报 云监控服务 的监控指标的命名空间、监控指标列表和维度定义。用户可以通过云监控服务提供的管理控制台或API接口来检索数据仓库服务产生的监控指标和告警信息。
  • 概览 数据库智能运维(DMS)是一个为 GaussDB (DWS)数据库提供多维度监控服务的系统,为用户数据库的快速、稳定运行提供保驾护航的能力。该功能对业务数据库所使用磁盘、网络、OS指标数据,集群运行关键性能指标数据进行收集、监控、分析。通过综合收集到的多种类型指标,对数据库主机、实例及业务SQL进行诊断,及时暴露数据库中关键故障及性能问题,指导用户进行优化解决。 8.1.1.200及以上版本支持数据库监控功能。 实时数仓(单机部署)暂不支持DMS功能。 DMS与Cloud Eye监控的数据源不同,采集数据库的大小为该数据库使用的全部磁盘空间,会包含膨胀表的数据。
  • 实时会话 在“实时会话”这一栏您可以浏览到正在运行中的所有会话实时信息。 会话ID 用户名称 会话用时 应用名称 QueryBand 客户端IP 接入CN 会话状态 idle:后台正在等待新的客户端命令 active:后台正在执行查询 idle in transaction:后端在事务中,但事务中没有语句在执行 idle in transaction (aborted):后端在事务中,但事务中有语句执行失败 fastpath function call:后端正在执行一个fast-path函数 开始时间 锁模式 锁持有状态 锁定对象 查询SQL 锁等待 当前查询时长 当前查询开始时间 单击会话ID可以显示当前会话上的查询,详情参见历史查询监控详情。 用户若需要终止会话,单击“终止会话”按钮,确认是否终止会话。 用户若需要将会话状态为“idle”的空闲会话全部终止,单击“一键清理空闲会话”按钮,确认是否终止当前集群的全部空闲会话。 新增细粒度权限控制功能,只有配置了操作权限的用户才能使用终止会话按钮。只读权限用户登录后终止会话按钮为灰色。
  • 前提条件 查询监控中用户查看数据前需要设置相关GUC参数,若没有设置的情况下,可能会导致查询监控中的实时查询或历史查询不可用。但如果设置也可能会导致集群性能下降,所以用户需权衡相关参数配置。相关GUC参数推荐配置如下,修改参数操作请参见修改数据库参数,具体参数说明请参见相关GUC参数设置。 表1 GUC参数推荐配置 GUC参数 CN建议设置值 DN建议设置值 max_active_statements 10 10 enable_resource_track on on resource_track_level query query resource_track_cost 0 0 resource_track_duration 10 10 enable_resource_record on on session_statistics_memory 1000MB 1000MB
  • 实时查询 在“实时查询”这一栏您可以根据选择的指定时间段浏览集群中正在运行的所有查询信息。其中包括: 查询ID 用户名称 应用名称 数据库名称 资源池 提交时间 阻塞时间(ms) 执行时间(ms) 查询语句 接入CN 客户端IP 快慢车道 查询状态 idle:后台正在等待新的客户端命令 active:后台正在执行查询 idle in transaction:后端在事务中,但事务中没有语句在执行 idle in transaction (aborted):后端在事务中,但事务中有语句执行失败 fastpath function call:后端正在执行一个fast-path函数 会话ID 语句运行状态 单击查询ID可以显示查询监控详情。但当查询ID为0时,表示此查询出现异常,不支持单击显示详情与终止查询功能。 若用户需要终止查询,单击“终止查询”按钮,确认是否终止查询。 新增细粒度权限控制功能,只有配置了操作权限的用户才能使用终止查询按钮。只读权限用户登录后终止查询按钮为灰色。 快慢车道根据执行计划中cost进行计算,优化器估算内存大于32MB进入慢车道,反之为快车道。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 code String 响应码 start_time Long 开始时间的UTC的时间戳 end_time Long 截止时间的UTC的时间戳 list Array of StatisticsAPI objects 统计指标的数据结构结构体 表5 StatisticsAPI 参数 参数类型 描述 max_latency Integer 最大延时 avg_latency Float 平均延时 req_count Integer 请求总次数 req_count2xx Integer 2xx响应码总次数 req_count4xx Integer 4xx响应码总次数 req_count5xx Integer 5xx响应码总次数 req_count_error Integer 错误次数 max_inner_latency Integer 最大网关内部延时 avg_inner_latency Float 平均网关内部延时 max_backend_latency Integer 最大后端延时 avg_backend_latency Float 平均后端延时 output_throughput Long 下行吞吐量(byte) input_throughput Long 上行吞吐量(byte) current_minute Long API访问的UTC时间戳 cycle String 查询统计周期 api_id String API编号 group_id String API分组编号 provider String API拥有者 req_time String API请求时间 register_time String 记录时间 status Integer 状态值: 1:调度中,未上报 CES 2:已经成功上报CES 预留字段,暂不支持 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 响应示例 状态码: 200 OK { "code" : "APIG.0000", "start_time" : 1595573280, "end_time" : 1595576820, "list" : [ { "api_id" : "39bce6d25a3f470e8cf7b2c97174f7d9", "avg_backend_latency" : 2.71, "avg_inner_latency" : 1.57, "avg_latency" : 4.14, "current_minute" : 1595576640, "cycle" : "MINUTE", "group_id" : "d0fc4e40b7d1492cba802f667c7c7226", "input_throughput" : 1071, "max_backend_latency" : 6, "max_inner_latency" : 8, "max_latency" : 14, "output_throughput" : 3790, "provider" : "73d69ae0cfcf460190522d06b60f05ad", "register_time" : "2020-07-24 15:44:56", "req_count" : 7, "req_count2xx" : 0, "req_count4xx" : 6, "req_count5xx" : 1, "req_count_error" : 7, "req_time" : "2020-07-24 15:44:00", "status" : 1 } ] } 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:api_id. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3002", "error_msg" : "API 39bce6d25a3f470e8cf7b2c97174f7d9 does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total Integer 总数。 最小值:1 最大值:99999 size Integer 当前页监控信息数量。 最小值:1 最大值:99999 entities Array of TaskMonitorInfo objects 任务监控信息当前页元素。 数组长度:1 - 9999 表5 TaskMonitorInfo 参数 参数类型 描述 task_id String 任务ID。 最小长度:10 最大长度:40 task_name String 任务名称。 最小长度:3 最大长度:100 task_type String 任务类型: TIMING(定时任务) REALTIME(实时任务) 最小长度:3 最大长度:10 status Integer 任务状态: 0(停止) 1(运行中) 最小长度:3 最大长度:10 last_execute_time Integer 任务最近一次执行时间,格式timestamp(ms),使用UTC时区。 最小值:1 最大值:999999999999999999 use_quartz_cron Boolean 任务是否使用Quartz表达式,只有定时任务才有该属性。 cron String CRON表达式,只有定时任务且use_quartz_cron为true时才有该属性。 最小长度:3 最大长度:20 period String 调度周期的单位,如天,小时等,只有定时任务且use_quartz_cron为false时才有该属性: MIN(分钟) HOUR(小时) DAY(天) WEEK(周) MON(月) 最小长度:3 最大长度:5 dispatch_interval Integer 调度周期,和period字段一起可以确定每隔多长时间调度一次,只有定时任务且use_quartz_cron为false时才有该属性。 最小值:1 最大值:60 position String 标识最近一次任务执行到哪一个阶段: ADAPTER(任务处于初始化阶段) READER(任务正在执行Reader读操作) WRITER(任务正在执行Writer写操作) 最小长度:3 最大长度:10 execute_status String 任务最近一次执行状态: UNSTARTED(未启动) WAITING(等待调度中) RUNNING(执行中) SUCCESS(执行成功) CANCELLED(任务取消) ERROR(执行异常) 最小长度:3 最大长度:10 source_app_id String 任务源端数据源所属应用ID。 最小长度:1 最大长度:36 source_app_name String 任务源端数据源所属应用名称。 最小长度:1 最大长度:256 source_instance_id String 任务源端数据源所属实例ID。 最小长度:1 最大长度:60 target_app_id String 任务目标端数据源所属应用ID。 最小长度:1 最大长度:36 target_app_name String 任务目标端数据源所属应用名称。 最小长度:1 最大长度:256 target_instance_id String 任务目标端数据源所属实例ID。 最小长度:1 最大长度:60 ext_type String 任务扩展类型,当前如果是CDC组合任务,该字段为CDC,否则为null。 最小长度:1 最大长度:10 enterprise_project_id String 任务所属企业项目ID,默认为0。 最小长度:1 最大长度:60 task_tag String 任务标签。 最小长度:1 最大长度:256 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512
  • 响应示例 状态码: 200 OK { "total" : 99999, "size" : 99999, "entities" : [ { "task_id" : "id123456789", "task_name" : "fdi_task_name", "task_type" : "TIMING", "status" : 0, "last_execute_time" : 1603243428000, "use_quartz_cron" : false, "cron" : "0 */15 * * * ?", "period" : "DAY", "dispatch_interval" : 1, "position" : "READER", "execute_status" : "RUNNING", "source_app_id" : "28f61af50fc9452aa0ed5ea25c3cc3d3", "source_app_name" : "source-app", "source_instance_id" : "source-instance", "target_app_id" : "28f61af50fc9452aa0ed5ea25c3cc3d3", "target_app_name" : "target-app", "target_instance_id" : "target-instance", "ext_type" : "CDC", "enterprise_project_id" : "string", "task_tag" : "string" } ] }
  • CPU使用率高问题处理 对于导致CPU使用率高的具体进程,如果确认是异常进程,可以直接通过top命令终止进程。对于kswapd0进程导致的CPU使用率高的问题,则需要对应用程序进行优化,或者通过增加内存进行系统规格的升级。 kswapd0是系统的虚拟内存管理程序,如果物理内存不够用,系统就会唤醒kswapd0进程,由kswapd0分配磁盘交换空间用作缓存,因而占用大量的CPU资源。 使用top命令终止CPU占用率高的进程 您可以直接在top运行界面快速终止相应的异常进程。操作步骤如下: 在top命令运行的同时,按下小写的“k”键。 输入要终止进程的PID。 进程的PID为top命令回显的第一列数值。例如,要终止PID为52的进程,直接输入“52”后回车。 操作成功后,会出现如图2所示信息,按回车确认。 图2 操作成功示例 kswapd0进程占用导致CPU使用率高 可通过以下步骤排查进程的内存占用情况。 通过top命令查看kswapd0进程的资源使用。 如果kswapd0进程持续处于非睡眠状态,且运行时间较长,可以初步判定系统在持续的进行换页操作,可以将问题转向内存不足的原因来排查。 通过vmstat命令进一步查看系统虚拟内存的使用情况。 如果si和so的值也比较高,说明系统存在频繁的换页操作,系统物理内存不足。 si:每秒从交换区写到内存的大小,由磁盘调入内存。 so:每秒写入交换区的内存大小,由内存调入磁盘。 对于内存不足问题,可以通过free、ps等命令进一步查询系统及系统内进程的内存占用情况,做进一步排查分析。 临时可通过在业务空闲期重启应用或者系统释放内存。 如果要从根本上解决内存不足的问题,需要对服务器内存进行扩容,扩大内存空间。如果不具备扩容的条件,可通过优化应用程序,以及配置使用大页内存来进行缓解。
  • CPU占用率高问题定位 远程登录云服务器。 执行以下命令查看当前系统的运行状态。 top 系统回显样例如图1所示。 图1 回显信息 查看显示结果。 命令回显第一行:20:56:02 up 37 days,1 user, load average: 0.00, 0.01, 0.05的每个字段含义如下: 系统当前时间为20:56:02,该云服务器已运行37天,当前共有1个用户登录, 最近1分钟、最近5分钟和最近15分钟的CPU平均负载。 命令回显第三行:CPU资源总体使用情况。 命令回显第四行:内存资源总体使用情况。 回显最下方显示各进程的资源占用情况。 在top页面,可以直接输入小写“q”或者在键盘上按“Ctrl+C”退出。 除了直接输入命令,您还可以单击VNC登录页面屏幕右上角的“Input Command”,在弹出的对话框中粘贴或者输入相应命令,单击“Send”。 在top运行中常用的内容命令如下: s:改变画面更新频率。 l:关闭或开启第一部分第一行top信息的表示。 t:关闭或开启第一部分第二行Tasks和第三行Cpus信息的表示。 m:关闭或开启第一部分第四行Mem和 第五行Swap信息的表示。 N:以PID的大小的顺序排列进程列表。 P:以CPU占用率大小的顺序排列进程列表。 M:以内存占用率大小的顺序排列进程列表。 h:显示命令帮助。 n:设置在进程列表所显示进程的数量。 通过ll /proc/PID/exe命令可以查看每个进程ID对应的程序文件。
  • 带宽使用率高问题分析 如果是正常业务访问以及正常应用进程导致的带宽使用率高,需要升级服务器的带宽进行解决。如果是非正常访问,如某些特定IP的恶意访问,或者服务器遭受到了CC攻击。或者异常进程导致的带宽使用率高。可以通过流量监控工具nethogs来实时监测统计各进程的带宽使用情况,并进行问题进程的定位。 使用nethogs工具进行排查 执行以下命令,安装nethogs工具。 yum install nethogs -y 安装成功后可以通过netgos命令查看网络带宽的使用情况。 nethogs命令常用参数说明如下: -d:设置刷新的时间间隔,默认为1s。 -t:开启跟踪模式。 -c:设置更新次数。 device:设置要监测的网卡,默认是eth0。 运行时可以输入以下参数完成相应的操作: q:退出nethogs工具。 s:按发送流量大小的顺序排列进程列表。 r:按接收流量大小的顺序排列进程列表。 m:切换显示计量单位,切换顺序依次为KB/s、KB、B、MB。 执行以下命令,查看指定的网络端口每个进程的网络带宽使用情况。 nethogs eth1 回显参数说明如下: PID:进程ID。 USER:运行该进程的用户。 PROG RAM :进程或连接双方的IP地址和端口,前面是服务器的IP和端口,后面是客户端的IP和端口。 DEV:流量要去往的网络端口。 SENT:进程每秒发送的数据量。 RECEIVED:进程每秒接收的数据量。 终止恶意程序或者屏蔽恶意访问IP。 如果确认大量占用网络带宽的进程是恶意进程,可以使用kill PID命令终止恶意进程。 如果是某个IP恶意访问,可以使用iptables服务来对指定IP地址进行处理,如屏蔽IP地址或限速。 使用 Web应用防火墙 防御CC攻击 若服务遭受了CC攻击,请在Web应用防火墙控制台开启CC安全防护。Web应用防火墙的使用指导请参见配置CC防护策略。
  • 查看Redis实例实时并发连接数 当您需要查看D CS 实例收到的实时连接数时,在控制台缓存管理页面,单击需要查看的实例右侧的“查看监控”,进入云监控页面。 图1 查看监控 进入监控页面后,找到“活跃的客户端数量”监控项。您可以单击该监控项的右上角的查看按钮,使用大图模式查看。 在弹出的“活跃的客户端数量”页面,根据需要选择查看的时间段,例如,需要查看10分钟内的连接数,您可以将时间自定义为10分钟。由于监控数据采集的是周期内增加的连接数,您可以通过监控图表,查看这个时间段的连接数的走势,并统计10分钟内的连接总数。 监控指标“活跃的客户端数量”用于统计已连接的客户端数量,包括系统监控、配置同步和业务相关的连接数,不包括来自从节点的连接。 您还可以通过控制台会话管理,查看连接实例的客户端会话信息。
  • 响应示例 状态码: 200 Ok { "metrics" : [ { "metric" : { "namespace" : "abc", "metricName" : "def", "dimensions" : [ { "name" : "ghi", "value" : "lmn" } ] }, "dataPoints" : [ { "timestamp" : "1467892800000", "unit" : "Percent", "statistics" : [ { "statistic" : "maximum", "value" : "23" } ] } ] } ] } 状态码: 400 Bad Request { "error_code" : " BCS .4001108", "error_msg" : "metric names is wrong" } 状态码: 401 Unauthorized { "error_code" : "BCS.4010401", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "BCS.4030403", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "BCS.4040404", "error_msg" : "Not Found:the url is not found" } 状态码: 500 InternalServerError { "error_code" : "BCS.5000500", "error_msg" : "Internal Server Error" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取。 表3 请求Body参数 参数 是否必选 参数类型 描述 metric_names 否 Array of strings 指标列表 取值范围 cpuUsage:CPU使用率 diskUsedRate:磁盘使用率 memUsedRate:物理内存使用率 sendBytesRate:上行Bps recvBytesRate:下行Bps cpuCoreLimit:CPU内核总量 cpuCoreUsed:CPU内核占用 totalMem:物理内存总量 freeMem:可用物理内存 diskCapacity:磁盘空间容量 diskAvailableCapacity:可用磁盘空间 默认值:前5项