-
GS_WLM_REBUILD_USER_RESOURCE_POOL 该视图用于在当前连接节点上重建内存中用户的资源池信息,无输出。只在资源池信息缺失或错乱时用作补救措施。查询该视图需要sysadmin权限。内核多租模式下禁用。 表1 GS_WLM_REBUILD_USER_RESOURCE_POOL字段 名称 类型 描述 gs_wlm_rebuild_user_resource_pool boolean 重建内存中用户资源池信息结果。t为成功,f为失败。 父主题: 负载管理
-
GS_WLM_USER_INFO 用户统计信息视图。 当查询视图无数据显示时,请联系华为技术工程师提供技术支持。 表1 GS_WLM_USER_INFO字段 名称 类型 描述 userid oid 用户OID。 username name 用户名。 sysadmin boolean 是否是管理员用户。 rpoid oid 关联的资源池的OID。 respool name 关联的资源池的名称。 parentid oid 用户组的OID。 totalspace bigint 用户可用的空间上限。 spacelimit bigint 用户的表空间限制。 childcount integer 子用户的个数。 childlist text 子用户列表。 父主题: 负载管理
-
GS_WLM_PLAN_OPERATOR_HISTORY GS_WLM_PLAN_OPERATOR_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的执行计划算子级的相关记录。 当查询视图无数据显示时,请联系华为技术工程师提供技术支持。 表1 GS_WLM_PLAN_OPERATOR_HISTORY字段 名称 类型 描述 datname name 收集计划信息所在的数据库名称。 queryid bigint 语句执行使用的内部query_id。 plan_node_id integer 查询对应的执行计划的plan node id。 startup_time bigint 该算子处理第一条数据的开始时间。 total_time bigint 该算子到结束时候总的执行时间(ms)。 actual_rows bigint 实际执行的行数信息。 max_peak_memory integer 当前算子在数据库节点上的最大内存峰值(MB)。 query_dop integer 当前算子执行时的并行度。 parent_node_id integer 当前算子的父节点node id。 left_child_id integer 当前算子的左孩子节点node id。 right_child_id integer 当前算子的右孩子节点node id。 operation text 当前算子进行的操作名称。 orientation text 当前算子的对齐方式。 strategy text 当前算子操作的实现方法。 options text 当前算子操作的选择方式。 condition text 当前算子操作的过滤条件。 projection text 当前算子的映射关系。 父主题: 负载管理
-
PG_APP_WORKLOADGROUP_MAPPING PG_APP_WORKLOADGROUP_MAPPING系统表提供了数据库负载映射组的信息。 表1 PG_APP_WORKLOADGROUP_MAPPING字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 appname name 应用名称。 workload_gpname name 映射到的负载组名称。 父主题: 负载管理
-
GLOBAL_WLM_RESPOOL_MEMORY_INFO 该视图用于查看分布式下所有节点实时的资源池内存使用情况。查询该视图需要sysadmin权限或者monadmin权限。 该视图只能查询主DN节点上的数据,备节点需要登录到备节点上后使用系统函数gs_wlm_respool_memory_info()查询内存使用情况。 表1 GLOBAL_WLM_RESPOOL_MEMORY_INFO字段 名称 类型 描述 node_name name 节点名称。 respool_name name 资源池名称。 max_dynamic_memory integer 最大可使用的动态内存。 current_dynamic_memory integer 当前已经使用的动态内存。 max_shared_memory integer 最大可使用的共享内存。 current_shared_memory integer 当前已经使用的共享内存。 shared_memory_hits_percent integer 该功能不可用,留待后续演进。字段保留,恒为0。 示例: 1
2
3
4
5
6
7
8 gaussdb=# SELECT * FROM GLOBAL_WLM_RESPOOL_CONCURRENCY_INFO;
node_name | respool_name | max_dynamic_memory | current_dynamic_memory | max_shared_memory | current_shared_memory | shared_memory_hits_percent
--------------+--------------+--------------------+------------------------+-------------------+-----------------------+----------------------------
coordinator1 | default_pool | -1 | 9415kB | -1 | 3856kB | 0
datanode1 | default_pool | -1 | 10724kB | -1 | 2808kB | 0
datanode2 | default_pool | -1 | 10724kB | -1 | 2808kB | 0
datanode3 | default_pool | -1 | 10724kB | -1 | 560kB | 0
(4 rows)
父主题: 负载管理
-
GS_WLM_USER_INFO 用户统计信息视图。查询该视图需要sysadmin权限。 当查询视图无数据显示时,请联系华为工程师提供技术支撑。 表1 GS_WLM_USER_INFO字段 名称 类型 描述 userid oid 用户OID。 username name 用户名。 sysadmin boolean 是否是管理员用户。 t(true):是。 f(false):不是。 rpoid oid 关联的资源池的OID。 respool name 关联的资源池的名称。 parentid oid 用户组的OID。 totalspace bigint 用户的可用空间上限。 spacelimit bigint 用户表空间限制。 childcount integer 子用户的个数。 childlist text 子用户列表。 父主题: 负载管理
-
GLOBAL_WLM_RESPOOL_CONCURRENCY_INFO 该视图用于查看分布式下所有节点实时的资源池并发数使用情况。查询该视图需要sysadmin权限或者monadmin权限。 该视图只能查询主DN节点上的数据,备节点需要登录到备节点上后使用系统函数gs_wlm_respool_concurrency_info()查询并发数使用情况。 表1 GLOBAL_WLM_RESPOOL_CONCURRENCY_INFO字段 名称 类型 描述 node_name name 节点名称。 respool_name name 资源池名称。 max_concurrency integer 资源池支持的最大并发数。 running_conurrency integer 当前资源池正在执行的并发数。 waiting_concurrency integer 当前资源池正在等待的并发数。 示例: 1
2
3
4
5
6
7
8 gaussdb=# SELECT * FROM GLOBAL_WLM_RESPOOL_CONCURRENCY_INFO;
node_name | respool_name | max_concurrency | running_concurrency | waiting_concurrency
--------------+--------------+-----------------+---------------------+---------------------
coordinator1 | default_pool | -1 | 1 | 0
datanode3 | default_pool | -1 | 1 | 0
datanode1 | default_pool | -1 | 1 | 0
datanode2 | default_pool | -1 | 1 | 0
(4 rows)
父主题: 负载管理
-
GLOBAL_WLM_RESPOOL_CPU_INFO 该视图用于查看分布式下所有节点实时的资源池CPU使用情况。查询该视图需要sysadmin权限或者monadmin权限。 该视图只能查询主DN节点上的数据,备节点需要登录到备节点上后使用系统函数gs_wlm_respool_cpu_info()查询CPU使用情况。 表1 GLOBAL_WLM_RESPOOL_CPU_INFO字段 名称 类型 描述 node_name name 节点名称。 respool_name name 资源池名称。 control_group name cgroup名称。 cpu_affinity name CPU绑定core的数值。 cpu_usage integer 资源池的CPU使用率。 说明: 对于CN和DN混合部署的场景,CN和DN共享同一份CPU资源,因此CN和DN的cpu_usage显示相同,对于CN和DN独立部署场景,会独立显示。 示例: 1
2
3
4
5
6
7
8 gaussdb=# SELECT * FROM GLOBAL_WLM_RESPOOL_CONCURRENCY_INFO;
node_name | respool_name | control_group | cpu_affinity | cpu_usage
--------------+--------------+---------------------+--------------+-----------
coordinator1 | default_pool | DefaultClass:Medium | 0-71 | 0
datanode1 | default_pool | DefaultClass:Medium | 0-71 | 0
datanode2 | default_pool | DefaultClass:Medium | 0-71 | 0
datanode3 | default_pool | DefaultClass:Medium | 0-71 | 0
(4 rows)
父主题: 负载管理
-
GS_WLM_CGROUP_INFO GS_WLM_CGROUP_INFO视图显示当前执行作业的控制组的信息。 当查询视图无数据显示时,请联系华为工程师提供技术支撑。 表1 GS_WLM_CGROUP_INFO字段 名称 类型 描述 cgroup_name text 控制组的名称。 priority integer 作业的优先级。 usage_percent integer 控制组占用的百分比。 shares bigint 控制组分配的CPU资源配额。 cpuacct bigint CPU配额分配。 cpuset text CPU限额分配。 relpath text 控制组的相对路径。 valid text 该控制组是否有效。 node_group text 保留字段。 父主题: 负载管理
-
PG_APP_WORKLOADGROUP_MAPPING PG_APP_WORKLOADGROUP_MAPPING系统表提供了数据库负载映射组的信息。 表1 PG_APP_WORKLOADGROUP_MAPPING字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 appname name 应用名称。 workload_gpname name 映射到的负载组名称。 父主题: 负载管理
-
创建查询过滤器 登录
GaussDB (DWS)管理控制台。 在集群列表中单击指定集群名称,进入“集群详情”页面。 左导航栏单击“资源管理 ”,切换至“查询过滤器”页签。 单击“创建查询过滤器”按钮添加查询过滤器。 图2 添加查询过滤器 表1 查询过滤器字段说明 字段名 是否必填 说明 数据库名称 是 下拉框选择数据库。 规则名称 是 查询过滤器的名称,支持数字大小写字母_$,有唯一性判断,支持3-63位长度。 匹配SQL类型 是 可在SQL/SQL ID/QL Hash中选择: SQL:查询过滤规则匹配的SQL语句。 SQL ID:查询过滤规则匹配的unique_sql_id值。 SQL Hash:查询过滤规则匹配的sql_hash值。 语句类型 否 分别对应SELECT/UPDATE/INSERT/DELETE/MERGE,默认为全部。 绑定用户 否 可对指定用户生效。 客户端名称 否 用于标识连接到数据库的应用程序的名称,允许客户为每个连接指定一个自定义的应用程序名称,例如gsql。 客户端IP地址 否 可对指定IP生效。 最大分区数 否 计划预估扫描节点的最大分区数。 最大表数 否 计划预估扫描的最大表数。 最大行数 否 计划预估扫描节点的最大行数。 作业类型 否 主动标识的作业类型。 资源池名称 否 过滤规则匹配的资源池名称。 最大并发数 否 过滤规则对应语句最大并发数。 告警行为 否 过滤规则告警行为。 确认无误后,单击“确定”。
-
功能介绍 在使用GaussDB(DWS)过程中经常会遇到因慢SQL导致整个集群系统性能变差甚至不可用等痛点问题,对此GaussDB(DWS)提供了查询过滤器功能,支持通过建立过滤规则提前进行语句拦截。查询过滤器可以通过SQL ID对慢SQL语句进行拦截,同时结合异常规则功能在触发异常规则次数达到设定的临界值时,自动将触发异常规则的SQL语句ID添加到查询过滤器的黑名单中进行拦截。同时提供更丰富的拦截规则,例如SQL Hash和正则匹配;以及更灵活的拦截方式,例如可以将拦截规则绑定到某一用户或某一数据库等。 该功能仅9.1.0.200及以上集群版本支持。 图1 查询过滤器
-
使用ConfigMap配置Prometheus访问CCI 首先使用cci-iam-authenticator作为k8s client端的认证插件,通过用户名/密码的方式配置
IAM 认证信息。您可参照安装并设置kubectl进行配置。配置完成后,执行“kubectl config view”命令,获取$HOME/.kube/config路径下的kubeconfig文件。 图1 kubeconfig文件 以下示例是为Prometheus访问CCI所做的配置。使用此配置文件构造Prometheus连接API Server的信息。您只需将获取到的kubeconfig配置文件内容写入ConfigMap。 kind: ConfigMapapiVersion: v1 metadata: name: kubeconfig data: kubeconfig: |- apiVersion: v1 # cci-iam-authenticator生成的kubeconfig配置文件 ...
-
使用ConfigMap管理Prometheus配置 为了能够方便地管理配置文件,我们这里将 prometheus.yml 文件用 ConfigMap 的形式进行管理。通过ConfigMap可以方便地做到配置解耦,使得不同环境有不同的配置。相比环境变量,Pod中引用的ConfigMap可以做到实时更新,当您更新ConfigMap的数据后,Pod中引用的ConfigMap会同步刷新。 创建prometheus-config.yml文件,并写入以下内容: kind: ConfigMapapiVersion: v1metadata: name: prometheus-config labels: name: prometheus-configdata: prometheus.yml: |- global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: kuberenete-pods # 对pod中应用的监控,自定义监控 kubernetes_sd_configs: - role: pod kubeconfig_file: /etc/kube/kubeconfig # 指定deployment挂载kubeconfig的路径 namespaces: names: - test # 要监控的命名空间列表 relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] action: replace target_label: __metrics_path__ regex: (.+) - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 target_label: __address__ - action: labelmap regex: __meta_kubernetes_pod_label_(.+) - source_labels: [__meta_kubernetes_namespace] - action: replace target_label: kubernetes_namespace - source_labels: [__meta_kubernetes_pod_name] - action: replace target_label: kubernetes_pod_name - job_name: cci-monitor # 监控pod指标 kubernetes_sd_configs: - role: pod kubeconfig_file: /etc/kube/kubeconfig #指定deployment挂载kubeconfig的路径 namespaces: names: - test # 要监控的命名空间列表 relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_monitoring_cci_io_enable_pod_metrics] - action: drop regex: false - action: replace regex: ([^:]+)(?::\d+)? replacement: $1:19100 source_labels: [__meta_kubernetes_pod_ip] target_label: __address__ - action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 source_labels: [__meta_kubernetes_pod_ip, __meta_kubernetes_pod_annotation_monitoring_cci_io_metrics_port] target_label: __address__
-
使用Deployment部署Prometheus 创建prometheus的工作负载,将配置项挂载到工作负载中。使用Deployment部署Prometheus所用的镜像,相比于官方镜像额外打包了cci-iam-authenticator二进制。 示例中创建一个名为prometheus-config的Volume,Volume引用名为“prometheus-config”、“kubeconfig”、“prometheus-storage”的ConfigMap,再将Volume挂载到容器的“/tmp”路径下。 kind: DeploymentapiVersion: apps/v1 metadata: name: prometheus labels: app.kubernetes.io/component: prometheus app.kubernetes.io/instance: k8s app.kubernetes.io/name: prometheus app.kubernetes.io/part-of: kube-prometheus spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: prometheus # 架构中的组件 app.kubernetes.io/instance: k8s # 标识应用程序实例的唯一名称 app.kubernetes.io/name: prometheus # 应用程序的名称 app.kubernetes.io/part-of: kube-prometheus # 这是一个更高级别应用程序的名称 template: metadata: labels: app.kubernetes.io/component: prometheus app.kubernetes.io/instance: k8s app.kubernetes.io/name: prometheus app.kubernetes.io/part-of: kube-prometheus spec: volumes: # 在Volume中引用ConfigMap - name: prometheus-config configMap: name: prometheus-config defaultMode: 420 # ConfigMap卷中的所有文件默认设置为420 - name: kubeconfig configMap: name: kubeconfig defaultMode: 420 - name: prometheus-storage emptyDir: medium: LocalAuto sizeLimit: 10Gi containers: - name: prometheus image: 'swr.cn-north-7.myhuaweicloud.com/cci_k8s_gcr_io/...' args: # 传给可执行文件的参数(启动参数) - '--storage.tsdb.retention.time=12h' # 监控数据保留的时间 - '--config.file=/etc/prometheus/prometheus.yml' # 配置文件 - '--storage.tsdb.path=/prometheus/' # Prometheus写入数据库的地方 ports: - containerPort: 9090 protocol: TCP resources: limits: cpu: 500m memory: 1Gi requests: cpu: 500m memory: 1Gi volumeMounts: - name: prometheus-config mountPath: /etc/prometheus/ - name: kubeconfig mountPath: /etc/kube/ - name: prometheus-storage mountPath: /prometheus/ terminationMessagePath: /dev/termination-log # 表示容器的异常终止消息的路径 terminationMessagePolicy: File # 仅从终止消息文件中检索终止消息。 imagePullPolicy: Always restartPolicy: Always terminationGracePeriodSeconds: 30 # 优雅关闭的宽限期,即在收到停止请求后,有多少时间来进行资源释放或者做其它操作,如果到了最大时间还没有停止,会被强制结束。 dnsPolicy: ClusterFirst securityContext: {} schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% revisionHistoryLimit: 10 progressDeadlineSeconds: 600