云服务器内容精选
-
监控NGINX Ingress控制器指标 访问Prometheus,在“Graph”页面中,查看NGINX Ingress控制器指标。 图3 查看NGINX Ingress控制器监控指标 表1 NGINX Ingress控制器监控指标 指标 指标类型 说明 nginx_ingress_controller_bytes_sent 基础指标 发送到客户端的字节数 nginx_ingress_controller_connect_duration_seconds 基础指标 与上游服务器建立连接花费的时间 nginx_ingress_controller_header_duration_seconds 基础指标 从上游服务器接收第一个报头所花费的时间 nginx_ingress_controller_ingress_upstream_latency_seconds 基础指标 上游服务时延 nginx_ingress_controller_request_duration_seconds 基础指标 请求处理时间(以毫秒为单位) nginx_ingress_controller_request_size 基础指标 请求长度(包括请求行、请求头和请求体) nginx_ingress_controller_requests 基础指标 客户端请求的总数 nginx_ingress_controller_response_duration_seconds 基础指标 从上游服务器接收响应所花费的时间 nginx_ingress_controller_response_size 基础指标 响应长度(包括请求行、报头和请求体) nginx_ingress_controller_nginx_process_connections 基础指标 当前状态为{活动,读取,写入,等待}的客户端连接数 nginx_ingress_controller_nginx_process_connections_total 基础指标 状态为{已接受,已处理}的连接总数 nginx_ingress_controller_nginx_process_cpu_seconds_total 基础指标 CPU使用率(秒) nginx_ingress_controller_nginx_process_num_procs 基础指标 进程数 nginx_ingress_controller_nginx_process_oldest_start_time_seconds 基础指标 从1970年1月1日开始以秒为单位的开始时间 nginx_ingress_controller_nginx_process_read_bytes_total 基础指标 读取的字节数 nginx_ingress_controller_nginx_process_requests_total 基础指标 客户端请求总数 nginx_ingress_controller_nginx_process_resident_memory_bytes 基础指标 正在使用的内存字节数 nginx_ingress_controller_nginx_process_virtual_memory_bytes 基础指标 正在使用的内存字节数 nginx_ingress_controller_nginx_process_write_bytes_total 基础指标 写入字节数 nginx_ingress_controller_build_info 基础指标 一个带有常量“1”的度量,标记有关于构建的信息。 nginx_ingress_controller_check_success 基础指标 Ingress controller语法检查累计次数 nginx_ingress_controller_config_hash 基础指标 正在运行的Nginx配置hash值 nginx_ingress_controller_config_last_reload_successful 基础指标 最后一次尝试重新加载配置是否成功 nginx_ingress_controller_config_last_reload_successful_timestamp_seconds 基础指标 最后一次成功重新加载配置的时间戳 nginx_ingress_controller_ssl_certificate_info 基础指标 保留与证书相关的所有标签 nginx_ingress_controller_success 基础指标 Ingress controller重新加载操作的累计次数 nginx_ingress_controller_orphan_ingress 基础指标 孤立ingress的状态,1表示孤立ingress。 namespace:是用于标识ingress名称空间的字符串。 ingress:表示ingress名称。 type:表示孤立ingress的状态,取值为no-service或no-endpoint。 nginx_ingress_controller_admission_config_size 基础指标 被测试配置的大小 nginx_ingress_controller_admission_render_duration 基础指标 允许ingress渲染入口的处理持续时间(浮点秒) nginx_ingress_controller_admission_render_ingresses 基础指标 由admission controller渲染的ingress长度 nginx_ingress_controller_admission_roundtrip_duration 基础指标 admission controller在处理新事件时的完整持续时间(浮点秒) nginx_ingress_controller_admission_tested_duration 基础指标 admission controller测试的处理持续时间(浮点秒) nginx_ingress_controller_admission_tested_ingresses 基础指标 admission controller处理的ingress长度 Nginx Ingress在高负载请求下,开启全量指标采集存在内存泄露的问题(详情请参见社区issue)。经过验证,屏蔽以下指标后,能够有效抑制内存增长。为避免内存泄露导致业务受损,Nginx Ingress插件默认屏蔽以下指标。我们将持续关注社区最新动态,及时同步修复该问题。 nginx_ingress_controller_success nginx_ingress_controller_header_duration_seconds nginx_ingress_controller_ingress_upstream_latency_seconds
-
监控容器网络扩展指标 编辑容器网络扩展指标插件的DaemonSet配置,添加Ports信息。 1.3.10以下版本的容器网络扩展指标插件需手动操作,1.3.10及以上版本自动添加该配置,可跳过此步骤。 kubectl edit ds -nkube-system dolphin 添加如下配置: ... spec: containers: - name: dolphin ports: - containerPort: 10001 name: dolphin protocol: TCP ... 配置PodMonitor后,Prometheus就会自动采集CCE容器网络扩展指标。 pod-monitor.yaml文件配置参考如下: apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: dolphin namespace: monitoring spec: namespaceSelector: matchNames: - kube-system jobLabel: podmonitor-dolphin podMetricsEndpoints: - interval: 15s path: /metrics port: dolphin tlsConfig: insecureSkipVerify: true selector: matchLabels: app: dolphin 创建PodMonitor资源: kubectl apply -f pod-monitor.yaml
-
通过Prometheus查看指标 创建一个示例监控任务,详情请参见下发监控任务。 apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task #监控任务名 namespace: kube-system #必填,namespace必须为kube-system spec: selector: #选填,配置dolphin插件监控的后端,形如labelSelector格式,默认将监控本节点所有容器 matchLabels: app: nginx matchExpressions: - key: app operator: In values: - nginx podLabel: [] #选填,用户标签 ip4Tx: #选填,ipv4发送报文数和发送字节数这两个指标的开关,默认不开 enable: true ip4Rx: #选填,ipv4接收报文数和接收字节数这两个指标的开关,默认不开 enable: true ip4TxInternet: #选填,ipv4发送公网报文数和发送公网字节数这两个指标的开关,默认不开 enable: true healthCheck: #选填,本地节点 Pod 健康检查任务中最近一次健康检查是否健康、健康检查总健康&不健康次数这三个指标开关,默认不开 enable: true # true false failureThreshold: 3 #选填,健康检查不健康判定失败次数,默认1次健康检查失败即判定不健康 periodSeconds: 5 #选填,健康检查任务检查间隔时间,单位秒,默认60 command: "" #选填,健康检查任务检查命令,支持:ping、arping、curl,默认 ping ipFamilies: [""] #选填,健康检查IP地址族,支持:ipv4,默认ipv4 port: 80 #选填,使用curl时必选,端口号 path: "" #选填,使用curl时必选,http api 路径 monitor: ip: ipReceive: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 ipSend: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcp: tcpReceive: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpSend: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpRetrans: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpRtt: aggregateType: flow #选填,支持填写"flow",表示流粒度监控,单位:微秒 tcpNewConnection: aggregateType: pod #选填,支持填写"pod",表示pod粒度监控 为Prometheus创建一个公网LoadBalancer类型的Service,提供公网访问。 apiVersion: v1 kind: Service metadata: name: prom-lb #服务名称,可自定义 namespace: monitoring labels: app: prometheus component: server annotations: kubernetes.io/elb.id: 038ff*** #请替换为集群所在VPC下的ELB实例ID,且ELB实例为公网访问类型 spec: ports: - name: cce-service-0 protocol: TCP port: 88 #服务端口号,可自定义 targetPort: 9090 #Prometheus的默认端口号,无需更改 selector: #标签选择器可根据Prometheus Server实例的标签进行调整 app.kubernetes.io/name: prometheus prometheus: server type: LoadBalancer 创建完成后在浏览器访问“负载均衡公网IP地址:服务端口”,访问Prometheus。您可以在Prometheus页面中搜索支持的监控项,验证指标是否采集成功。 图1 访问Prometheus
-
(可选)通过Grafana查看图表 在集群中安装Grafana后,在“插件中心”页面右侧找到Grafana插件,单击“访问”。 输入您的Grafana登录账号及密码。 单击Grafana页面左侧导航栏中的“Explore”,然后在页面上方选择“Prometheus”,输入PromQL查询指令,例如“rate(dolphin_ip4_send_pkt_internet[5m])”,然后单击右上角“Run query”即可获取指标图表。 图2 Grafana图表 您也可以将常用图表固定为Grafana Dashboard,详情请参见Create a dashboard。
-
安装插件 登录CCE控制台,单击CCE Turbo集群名称进入集群,单击左侧导航栏的“插件中心”。 在“插件中心”页面右侧找到云原生监控插件,单击“安装”。 在监控CCE Turbo集群容器网络扩展指标的场景下,建议您关注以下配置。该插件的其他配置可按需进行设置,详情请参见云原生监控插件。 部署模式:此处选择“Server模式”,使用本地存储监控数据,监控数据可选择是否对接AOM或三方监控平台。如果使用“Agent模式”,则指标必须对接AOM或第三方监控平台,您可根据需求进行选择。 自定义指标采集:该配置在本实践中必须选择开启,否则将无法采集容器网络扩展指标。 (可选)安装Grafana:选择安装Grafana后,可以使用图表查看指标。 该配置在3.9.0以下版本的插件中支持。对于3.9.0及以上版本的插件,如果存在使用Grafana的需求,请单独安装Grafana。 在“插件中心”页面右侧找到CCE容器网络扩展指标插件,单击“安装”。 当前该插件无可配置参数。 (可选)对于3.9.0及以上版本的云原生监控插件,不再默认提供Grafana组件。您可以在“插件中心”页面右侧找到独立的Grafana插件,单击“安装”。 选择“开启节点访问”,将会在monitoring命名空间创建一条名为grafana-oss的Nodeport类型的Service。在Node绑定EIP的情况下,可直接使用浏览器输入“eip:port”地址进行访问。 开启节点访问将会把开源Grafana服务暴露至公网访问,建议评估安全风险并做好访问策略的管控。
-
方法二:配置Service Annotations监控自定义指标 当Service的Annotations配置符合Prometheus采集规范的规则后,Prometheus会自动采集这些Service暴露的指标。 Service Annotations使用方法和Pod Annotations基本相同,主要是采集的指标的适用场景不同,Pod Annotations更关注Pod的资源使用情况,Service Annotations侧重于对该业务的请求等指标。 部署示例应用如下: kind: Deployment apiVersion: apps/v1 metadata: name: nginx-test namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-test template: metadata: labels: app: nginx-test spec: containers: - name: container-0 image: 'nginx:exporter' # 替换为您上传到SWR的镜像地址 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 部署示例Service如下: apiVersion: v1 kind: Service metadata: name: nginx-test labels: app: nginx-test namespace: default annotations: prometheus.io/scrape: "true" # 配置为 true 表示开启服务发现 prometheus.io/port: "9113" # 配置为采集指标暴露的端口号 prometheus.io/path: "/metrics" # 填写指标暴露的 URI 路径,一般是 /metrics spec: selector: app: nginx-test externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 nodePort: 0 port: 8080 protocol: TCP - name: cce-service-1 protocol: TCP port: 9113 targetPort: 9113 type: NodePort 查看指标,通过service名称可以判断出该指标是根据Service配置上报的。 nginx_connections_accepted{app="nginx-test", cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", instance="10.0.0.38:9113", job="nginx-test", kubernetes_namespace="default", kubernetes_service="nginx-test", namespace="default", pod="nginx-test-78cfb65889-gtv7z", prometheus="monitoring/server", service="nginx-test"} 图3 查看监控指标
-
方法三:配置Pod Monitor监控自定义指标 云原生监控插件提供了基于PodMonitor与ServiceMonitor配置指标采集任务的能力。Prometheus Operator将watch的PodMonitor的变化,通过Prometheus的reload机制,将Prometheus的采集任务热更新至Prometheus的实例中。 Prometheus Operator定义的CRD资源github地址:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/charts/crds/crds。 部署示例应用如下: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-test2 namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-test2 template: metadata: labels: app: nginx-test2 spec: containers: - image: nginx:exporter # 替换为您上传到SWR的镜像地址 name: container-0 ports: - containerPort: 9113 # 指标暴露的端口号 name: nginx-test2 # 该名称是后续配置PodMonitor时相匹配的名称 protocol: TCP resources: limits: cpu: 250m memory: 300Mi requests: cpu: 100m memory: 100Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 配置Pod Monitor示例如下: apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: podmonitor-nginx # PodMonitor的名称 namespace: monitoring # 所属命名空间,建议使用monitoring spec: namespaceSelector: # 匹配工作负载所在的命名空间 matchNames: - default # 工作负载所属的命名空间 jobLabel: podmonitor-nginx podMetricsEndpoints: - interval: 15s path: /metrics # 工作负载暴露指标的路径 port: nginx-test2 # 工作负载暴露指标的port名称 tlsConfig: insecureSkipVerify: true selector: matchLabels: app: nginx-test2 # Pod携带的标签,能被选择器选中 查看指标,通过job名称可以判断出该指标是根据PodMonitor配置上报的。 nginx_connections_accepted{cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", container="container-0", endpoint="nginx-test2", instance="10.0.0.44:9113", job="monitoring/podmonitor-nginx", namespace="default", pod="nginx-test2-746b7f8fdd-krzfp", prometheus="monitoring/server"} 图4 查看监控指标
-
方法四:配置Service Monitor监控自定义指标 云原生监控插件提供了基于PodMonitor与ServiceMonitor配置指标采集任务的能力。Prometheus Operator将watch的PodMonitor的变化,通过Prometheus的reload机制,将Prometheus的采集任务热更新至Prometheus的实例中。 Prometheus Operator定义的CRD资源github地址:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/charts/crds/crds。 部署示例应用如下: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-test3 namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-test3 template: metadata: labels: app: nginx-test3 spec: containers: - image: nginx:exporter # 替换为您上传到SWR的镜像地址 name: container-0 resources: limits: cpu: 250m memory: 300Mi requests: cpu: 100m memory: 100Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 部署示例Service如下: apiVersion: v1 kind: Service metadata: name: nginx-test3 labels: app: nginx-test3 namespace: default spec: selector: app: nginx-test3 externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 nodePort: 0 port: 8080 protocol: TCP - name: servicemonitor-ports protocol: TCP port: 9113 targetPort: 9113 type: NodePort 配置Service Monitor示例如下: apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: servicemonitor-nginx namespace: monitoring spec: # 配置service中的暴露指标的port的名称 endpoints: - path: /metrics port: servicemonitor-ports jobLabel: servicemonitor-nginx # 采集任务的作用范围,如果不配置,默认为default namespaceSelector: matchNames: - default selector: matchLabels: app: nginx-test3 查看指标,通过endpoint名称可以判断出该指标是根据PodMonitor配置上报的。 nginx_connections_accepted{cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", endpoint="servicemonitor-ports", instance="10.0.0.47:9113", job="nginx-test3", namespace="default", pod="nginx-test3-6f8bccd9-f27hv", prometheus="monitoring/server", service="nginx-test3"}
-
方法一:配置Pod Annotations监控自定义指标 当Pod的Annotations配置符合Prometheus采集规范的规则后,Prometheus会自动采集这些Pod暴露的指标。 如上所述的nginx:exporter提供的监控数据,其数据格式并不满足Prometheus的要求,需要将其转换成Prometheus需要的格式,可以使用nginx-prometheus-exporter来转换Nginx的指标,将nginx:exporter和nginx-prometheus-exporter部署到同一个Pod,并在部署时添加如下Annotations就可以自动被Prometheus采集监控指标。 kind: Deployment apiVersion: apps/v1 metadata: name: nginx-exporter namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-exporter template: metadata: labels: app: nginx-exporter annotations: prometheus.io/scrape: "true" prometheus.io/port: "9113" prometheus.io/path: "/metrics" prometheus.io/scheme: "http" spec: containers: - name: container-0 image: 'nginx:exporter' # 替换为您上传到SWR的镜像地址 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 其中 prometheus.io/scrape:表示是否需要prometheus采集Pod的监控数据,取值为true。 prometheus.io/port:表示采集监控数据接口的端口,由需要采集的应用决定。本示例中采集端口为9113。 prometheus.io/path:表示采集监控数据接口的URL,如不配置则默认为“/metrics”。 prometheus.io/scheme:表示采集的协议,值可以填写http或https。 应用部署成功后,访问云原生监控插件,查询自定义监控指标。 图1 访问云原生监控插件 可以查询到nginx相关的自定义监控指标,通过job名称可以判断出是根据Pod配置上报的。 nginx_connections_accepted{cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", container="container-0", instance="10.0.0.46:9113", job="monitoring/kubernetes-pods", kubernetes_namespace="default", kubernetes_pod="nginx-exporter-77bf4d4948-zsb59", namespace="default", pod="nginx-exporter-77bf4d4948-zsb59", prometheus="monitoring/server"} 图2 查看监控指标
-
Prometheus监控数据采集说明 Prometheus通过周期性的调用应用程序的监控指标接口(默认为“/metrics”)获取监控数据,应用程序需要提供监控指标接口供Prometheus调用,且监控数据需要满足Prometheus的规范,如下所示。 # TYPE nginx_connections_active gauge nginx_connections_active 2 # TYPE nginx_connections_reading gauge nginx_connections_reading 0 Prometheus提供了各种语言的客户端,客户端具体请参见Prometheus CLIENT LIBRARIES,开发Exporter具体方法请参见WRITING EXPORTERS。Prometheus社区提供丰富的第三方exporter可以直接使用,具体请参见EXPORTERS AND INTEGRATIONS。
-
如何配置PrometheusRules Prometheus提供了PrometheusRules的用于创建用户自己的record来查询指标。 apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: demo namespace: monitoring labels: role: operator-prometheus # 保持一致,必须配置,prometheus配置了该ruleSelector spec: groups: - name: demo interval: 15s rules: - record: cpu_request expr: kube_pod_container_resource_requests{resource="cpu",unit="core"} - record: cpu_limit expr: kube_pod_container_resource_limits{resource="cpu",unit="core"} - record: memory_request expr: kube_pod_container_resource_requests{resource="memory",unit="byte"} - record: memory_limit expr: kube_pod_container_resource_limits{resource="memory",unit="byte"} 创建成功后,Prometheus的Web页面中,Status-Rules中可以看到配置的PrometheusRules。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格