集群状态监控

路由:/managements/ColonyStatusMonitor

https://172.20.32.234:30206/dashboard/c/local/explorer/pod/microservices/osredm-dss-84fd4bdcfb-xqmwk#containers

admin/hnxjy123456789

Prometheus: http://172.20.32.234:32002/query

nacos:http://172.20.32.234:30002/nacos/#/configurationManagement?dataId=&group=&appName=&namespace=&pageSize=&pageNo= nacos/nacos

Skywalking:http://172.20.32.205:8080/General-Service/Services Portainer:http://172.20.32.205:9000/#!/home admin/123456789012 Nacos:http://172.20.32.234:30002/nacos/#/login nacos/nacos Sentinel: http://172.20.32.201:8858/#/dashboard/home sentinel/sentinel

集群状态

接口:/api/mon/dashboard/cluster/status

集群节点数量

可用数量: Prometheus上查询-sum(kube_node_info) 不可用数量: Prometheus上查询-sum(kube_node_spec_unschedulable)

服务器上查询节点:kubectl get nodes

目前234服务器上的节点是:osredm-master

CPU使用率

Prometheus上查询:(sum(kube_pod_container_resource_requests{resource="cpu"})/ sum(kube_node_status_allocatable{resource="cpu"}))*100

内存使用率

Prometheus上查询:(sum(kube_pod_container_resource_requests{resource="memory"}) / sum(kube_node_status_allocatable{resource="memory"}))*100

POD使用率

Prometheus上查询:(sum(kube_pod_info) / sum(kube_node_status_allocatable{resource="pods"}))*100

微服务Pod运行状态

接口:/api/mon/dashboard/cluster/status

一共有5种状态:

  • 等待中(Pending):Pod已被Kubernetes系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待Pod被调度的时间和通过网络下载镜像的时间。
  • 运行中(Running):Pod已经绑定到了某个节点,Pod下所有的容器都已被创建。至少有一个容器仍在运行,或者正处于启动或者重启阶段。
  • 运行已完成(Succeeded):Pod种所有容器都已成功结束,并且不会再重启。
  • 运行失败(Failed):Pod种的所有容器都已终止,并且至少有一个容器因为失败终止。也就是说,容器以非0状态退出或者被系统终止,且未被设置为自动重启。
  • 未知(Unknown):因为某些原因无法取得Pod状态,这种情况通常是因为与Pod所在主机通信失败。

Prometheus上查询:sum(kube_pod_status_phase{namespace=~"base-service|data|forgeplus|microservices|portal", phase="Running"}) by (phase)

目前我们用到的几个命名空间(namespace)如下:

  • portal: 入口层
  • base-service: 基础服务层
  • data: 数据层
  • forgeplus:应用层
  • microservices: 应用层

相关命令参考:

  • 获取命名空间列表:kubectl get ns kubectl get namespaces
  • 查看命名空间详情: kubectl describe ns {命名空间名称}
  • 查看命名空间下的pod列表:kubectl -n {命名空间名称} get pods
  • 查看pod的详细信息:kubectl describe pod {pod名称} -n {命名空间名称}
  • 查询某个命令空间下的pod数量:kubectl get pods -n {命名空间名称} --no-headers | wc -l
  • 查询某个命令空间下的指定状态的pod数量:kubectl get pods -n {命名空间名称} --field-selector=status.phase={运行状态:Pending/Running/Failed/Succeeded/Unknown} --no-headers | wc -l
  • 查询某个命令空间下的不包含指定状态的pod数量: kubectl get pods -n {命名空间名称} --field-selector=status.phase!={运行状态:Pending/Running/Failed/Succeeded/Unknown} --no-headers | wc -l
  • 查询多个命令空间下的pod数量: kubectl get pods -A --no-headers | grep -E '^(forgeplus|data|microservices|portal|base-service)' | wc -l
  • 查询多个命令空间下的指定状态的pod数量: kubectl get pods -A --no-headers | grep -E '^(forgeplus|data|microservices|portal|base-service)' | grep 'Running' | wc -l

集群请求流量

每秒请求率

接口:/api/mon/dashboard/cluster/qps Prometheus上查询: sum(rate(nginx_http_response_time_seconds_count[10m]))

应用服务请求数量

接口:/api/mon/dashboard/cluster/applicationRequestCount

数据统计

集群最近24小时请求总数

Prometheus上查询:sum(increase(nginx_http_response_count_total[1d]))

集群最近24小时平均处理时间

Prometheus上查询:sum(rate(nginx_http_response_time_seconds_sum[1d]))*1000

集群最近24小时请求成功率

Prometheus上查询:(sum(nginx_http_response_count_total{status=~"2.*|3.*"})/sum(nginx_http_response_count_total))*100

集群最近24小时微服务重启次数

Prometheus上查询:sum(increase(kube_pod_container_status_restarts_total{namespace=~"base-service|data|forgeplus|microservices|portal"}[1d]))

POD运行状态

Prometheus上查询:sum(kube_pod_status_phase{namespace=~"base-service|data|forgeplus|microservices|portal", phase!="Unknown"}) by (phase)

应用最近24小时请求数

Prometheus上查询:sort_desc(round(sum(increase(nginx_http_response_count_total[1d])) by (server_port)))