东莞网站建设开发怎么在电脑上用手机app软件

news/2025/9/23 2:56:28/文章来源:
东莞网站建设开发,怎么在电脑上用手机app软件,西安 餐饮 网站建设,炫酷的个人网站Istio可观测性 image-20231129072302901 前言 Istio 为网格内所有的服务通信生成详细的遥测数据。这种遥测技术提供了服务行为的可观测性#xff0c;使运维人员能够排查故障、维护和优化应用程序#xff0c;而不会给开发人员带来其他额外的负担。通过 Istio#xff0c;运维…Istio可观测性 image-20231129072302901 前言 Istio 为网格内所有的服务通信生成详细的遥测数据。这种遥测技术提供了服务行为的可观测性使运维人员能够排查故障、维护和优化应用程序而不会给开发人员带来其他额外的负担。通过 Istio运维人员可以全面了解到受监控的服务如何与其他服务以及 Istio 组件进行交互。 Istio 生成以下类型的遥测数据以提供对整个服务网格的可观测性 Metrics指标Istio 基于 4 个监控的黄金标识延迟、流量、错误、饱和生成了一系列服务指标Istio 还为网格控制平面提供了更详细的指标。除此以外还提供了一组默认的基于这些指标的网格监控仪表板。 Tracing分布式追踪Istio 为每个服务生成分布式追踪 span运维人员可以理解网格内服务的依赖和调用流程。 Log访问日志当流量流入网格中的服务时Istio 可以生成每个请求的完整记录包括源和目标的元数据该信息使运维人员能够将服务行为的审查控制到单个工作负载实例的级别。 接下来我们将分别来学习 Istio 的指标、分布式追踪和访问日志是如何工作的。 指标 指标提供了一种以聚合的方式监控和理解行为的方法。为了监控服务行为Istio 为服务网格中所有出入网格以及网格内部的服务流量都生成了指标这些指标提供了关于行为的信息例如总流量、错误率和请求响应时间。除了监控网格中服务的行为外监控网格本身的行为也很重要。Istio 组件还可以导出自身内部行为的指标以提供对网格控制平面的功能和健康情况的洞察能力。 指标类别 整体上 Istio 的指标可以分成 3 个级别代理级别、服务级别、控制平面级别。 1、代理级别指标 Istio 指标收集从 Envoy Sidecar 代理开始每个代理为通过它的所有流量入站和出站生成一组丰富的指标。代理还提供关于它本身管理功能的详细统计信息包括配置信息和健康信息。 Envoy 生成的指标提供了资源例如监听器和集群粒度上的网格监控。因此为了监控 Envoy 指标需要了解网格服务和 Envoy 资源之间的连接。 Istio 允许运维人员在每个工作负载实例上选择生成和收集哪些 Envoy 指标。默认情况下Istio 只支持 Envoy 生成的统计数据的一小部分以避免依赖过多的后端服务还可以减少与指标收集相关的 CPU 开销。但是运维人员可以在需要时轻松地扩展收集到的代理指标数据。这样我们可以有针对性地调试网络行为同时降低了跨网格监控的总体成本。 2、服务级别指标 除了代理级别指标之外Istio 还提供了一组用于监控服务通信的面向服务的指标。这些指标涵盖了四个基本的服务监控需求延迟、流量、错误和饱和情况。而且 Istio 还自带了一组默认的仪表板用于监控基于这些指标的服务行为。默认情况下标准 Istio 指标会导出到 Prometheus。而且服务级别指标的使用完全是可选的运维人员可以根据自身的需求来选择关闭指标的生成和收集。 3、控制平面指标 另外 Istio 控制平面还提供了一组自我监控指标。这些指标允许监控 Istio 自己的行为。 通过 Prometheus 查询指标 Istio 默认使用 Prometheus 来收集和存储指标。Prometheus 是一个开源的系统监控和警报工具包它可以从多个源收集指标并允许运维人员通过 PromQL 查询语言来查询收集到的指标。 首先要确保 Istio 的 prometheus 组件已经启用如果没有启用可以通过以下命令启用 [rootmaster1 ~]#cd istio-1.19.3/ [rootmaster1 istio-1.19.3]#ls samples/addons/ extras  grafana.yaml  jaeger.yaml  kiali.yaml  loki.yaml  prometheus.yaml  README.md#部署 kubectl apply -f samples/addons上面的命令会安装 Kiali包括 Prometheus、Grafana 以及 jaeger。当然这仅仅只能用于测试环境在生产环境可以单独安装 Prometheus 进行有针对性的配置优化。 安装后可以通过以下命令查看 Prometheus 服务状态 $ kubectl get svc prometheus -n istio-system NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE prometheus   ClusterIP   10.106.228.196   none        9090/TCP   25d $ kubectl get pods -n istio-system -l appprometheus NAME                         READY   STATUS    RESTARTS       AGE prometheus-5d5d6d6fc-2gtxm   2/2     Running   0              25d首先在浏览器中访问 http://$GATEWAY_URL/productpage 应用然后我们就可以打开 Prometheus UI 来查看指标了。在 Kubernetes 环境中执行如下命令就可以打开 Prometheus UI istioctl dashboard prometheus # 也可以创建 Ingress 或者 Gateway 来访问 Prometheus UI[rootmaster1 istio-1.19.3]#istioctl dashboard prometheus http://localhost:9090 Failed to open browser; open http://localhost:9090 in your browser.C[rootmaster1 istio-1.19.3]#istioctl dashboard prometheus --address 0.0.0.0 http://0.0.0.0:9090 Failed to open browser; open http://0.0.0.0:9090 in your browser.image-20231129065931011 打开后我们可以在页面中随便查询一个指标比如我们查询 istio_requests_total 指标如下所示 img istio_requests_total 这是一个 COUNTER 类型的指标用于记录 Istio 代理处理的总请求数。 当然然后可以根据自己需求来编写 promql 语句进行查询比如查询 productpage 服务的总次数可以用下面的语句 istio_requests_total{destination_serviceproductpage.default.svc.cluster.local}查询 reviews 服务 v3 版本的总次数 istio_requests_total{destination_servicereviews.default.svc.cluster.local, destination_versionv3}该查询返回所有请求 reviews 服务 v3 版本的当前总次数。 过去 5 分钟 productpage 服务所有实例的请求频次 rate(istio_requests_total{destination_service~productpage.*, response_code200}[5m])在 Graph 选项卡中可以看到查询结果的图形化表示。 img 对于 PromQL 语句的使用可以参考官方文档 Prometheus Querying Basics或者我们的 《Prometheus 入门到实战》课程这并不是我们这里的重点所以就不再详细介绍了。 虽然我们这里并没有做任何的配置但是 Istio 默认已经为我们收集了一些指标所以我们可以直接查询到这些指标了。 使用 Grafana 可视化指标 Prometheus 提供了一个基本的 UI 来查询指标但是它并不是一个完整的监控系统更多的时候我们可以使用 Grafana 来可视化指标。 首先同样要保证 Istio 的 grafana 组件已经启用如果没有启用可以通过以下命令启用 kubectl apply -f samples/addons并且要保证 Prometheus 服务正在运行服务安装后可以通过下面的命令来查看状态 $ kubectl -n istio-system get svc grafana NAME      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE grafana   ClusterIP   10.96.197.74   none        3000/TCP   25d $ kubectl -n istio-system get pods -l appgrafana NAME                       READY   STATUS    RESTARTS       AGE grafana-5f9b8c6c5d-jv65v   1/1     Running   0              25d然后我们可以通过以下命令来打开 Grafana UI istioctl dashboard grafana # 也可以创建 Ingress 或者 Gateway 来访问 Grafanaistioctl dashboard grafana --address 0.0.0.0然后我们就可以在浏览器中打开 Grafana UI 了默认情况下 Grafana 已经配置了 Prometheus 数据源所以我们可以直接使用 Prometheus 数据源来查询指标。 img 此外 Grafana 也已经内置了 Istio 的一些仪表盘我们可以直接使用这些仪表盘来查看指标比如我们可以打开 Istio Mesh Dashboard 仪表盘来查看网格的指标 img 从图中可以看出现在有一些数据但是并不是很多这是因为我们现在还没产生一些流量请求。 下面我们可以用下面的命令向 productpage 服务发送 100 个请求 for i in $(seq 1 100); do curl -s -o /dev/null http://$GATEWAY_URL/productpage; done然后我们再次查看 Istio Mesh Dashboard它应该反映所产生的流量如下所示 img 当然除此之外我们也可以查看到 Service 或者 Workload 的指标比如我们可以查看 productpage 工作负载的指标 img 这里给出了每一个工作负载以及该工作负载的入站工作负载将请求发送到该工作负载的工作负载和出站服务此工作负载向其发送请求的服务的详细指标。 Istio Dashboard 主要包括三个主要部分 网格摘要视图这部分提供网格的全局摘要视图并显示网格中HTTP/gRPC 和 TCP的工作负载。 单独的服务视图这部分提供关于网格中每个单独的HTTP/gRPC 和 TCP服务的请求和响应指标。这部分也提供关于该服务的客户端和服务工作负载的指标。 单独的工作负载视图这部分提供关于网格中每个单独的HTTP/gRPC 和 TCP工作负载的请求和响应指标。这部分也提供关于该工作负载的入站工作负载和出站服务的指标。 指标采集原理 从上面的例子我们可以看出当我们安装了 Istio 的 Prometheus 插件后Istio 就会自动收集一些指标但是我们并没有做任何的配置那么 Istio 是如何收集指标的呢如果我们想使用我们自己的 Prometheus 来收集指标那么我们应该如何配置呢 首先我们需要去查看下 Istio 的 Prometheus 插件的配置通过 cat samples/addons/prometheus.yaml 命令查看配置文件如下所示 # Source: prometheus/templates/service.yaml apiVersion: v1 kind: Service metadata:labels:component: serverapp: prometheusrelease: prometheuschart: prometheus-19.6.1heritage: Helmname: prometheusnamespace: istio-system spec:ports:- name: httpport: 9090protocol: TCPtargetPort: 9090selector:component: serverapp: prometheusrelease: prometheussessionAffinity: Nonetype: ClusterIP --- # Source: prometheus/templates/deploy.yaml apiVersion: apps/v1 kind: Deployment metadata:labels:component: serverapp: prometheusrelease: prometheuschart: prometheus-19.6.1heritage: Helmname: prometheusnamespace: istio-system spec:selector:matchLabels:component: serverapp: prometheusrelease: prometheusreplicas: 1strategy:type: RecreaterollingUpdate: nulltemplate:metadata:labels:component: serverapp: prometheusrelease: prometheuschart: prometheus-19.6.1heritage: Helmsidecar.istio.io/inject: falsespec:enableServiceLinks: trueserviceAccountName: prometheuscontainers:- name: prometheus-server-configmap-reloadimage: jimmidyson/configmap-reload:v0.8.0imagePullPolicy: IfNotPresentargs:- --volume-dir/etc/config- --webhook-urlhttp://127.0.0.1:9090/-/reloadresources: {}volumeMounts:- name: config-volumemountPath: /etc/configreadOnly: true- name: prometheus-serverimage: prom/prometheus:v2.41.0imagePullPolicy: IfNotPresentargs:- --storage.tsdb.retention.time15d- --config.file/etc/config/prometheus.yml ##配置文件- --storage.tsdb.path/data- --web.console.libraries/etc/prometheus/console_libraries- --web.console.templates/etc/prometheus/consoles- --web.enable-lifecycleports:- containerPort: 9090readinessProbe:httpGet:path: /-/readyport: 9090scheme: HTTPinitialDelaySeconds: 0periodSeconds: 5timeoutSeconds: 4failureThreshold: 3successThreshold: 1livenessProbe:httpGet:path: /-/healthyport: 9090scheme: HTTPinitialDelaySeconds: 30periodSeconds: 15timeoutSeconds: 10failureThreshold: 3successThreshold: 1resources: {}volumeMounts:- name: config-volumemountPath: /etc/config- name: storage-volumemountPath: /datasubPath: dnsPolicy: ClusterFirstsecurityContext:fsGroup: 65534runAsGroup: 65534runAsNonRoot: truerunAsUser: 65534terminationGracePeriodSeconds: 300volumes:- name: config-volumeconfigMap:name: prometheus- name: storage-volumeemptyDir: {} ##临时的 # 省略了部分配置从上面的资源清单中可以看出 Prometheus 服务的核心配置文件为 --config.file/etc/config/prometheus.yml而该配置文件是通过上面的 prometheus 这个 ConfigMap 以 volume 形式挂载到容器中的。 所以我们重点是查看这个 ConfigMap 的配置如下所示 # Source: prometheus/templates/cm.yaml apiVersion: v1 kind: ConfigMap metadata:labels:component: serverapp: prometheusrelease: prometheuschart: prometheus-19.6.1heritage: Helmname: prometheusnamespace: istio-system data:allow-snippet-annotations: falsealerting_rules.yml: |{}alerts: |{}prometheus.yml: |global:evaluation_interval: 1mscrape_interval: 15sscrape_timeout: 10srule_files:- /etc/config/recording_rules.yml- /etc/config/alerting_rules.yml- /etc/config/rules- /etc/config/alertsscrape_configs:- job_name: prometheusstatic_configs:- targets:- localhost:9090- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenjob_name: kubernetes-apiserverskubernetes_sd_configs:- role: endpointsrelabel_configs:- action: keepregex: default;kubernetes;httpssource_labels:- __meta_kubernetes_namespace- __meta_kubernetes_service_name- __meta_kubernetes_endpoint_port_namescheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtinsecure_skip_verify: true- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenjob_name: kubernetes-nodeskubernetes_sd_configs:- role: noderelabel_configs:- action: labelmapregex: __meta_kubernetes_node_label_(.)- replacement: kubernetes.default.svc:443target_label: __address__- regex: (.)replacement: /api/v1/nodes/$1/proxy/metricssource_labels:- __meta_kubernetes_node_nametarget_label: __metrics_path__scheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtinsecure_skip_verify: true- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenjob_name: kubernetes-nodes-cadvisorkubernetes_sd_configs:- role: noderelabel_configs:- action: labelmapregex: __meta_kubernetes_node_label_(.)- replacement: kubernetes.default.svc:443target_label: __address__- regex: (.)replacement: /api/v1/nodes/$1/proxy/metrics/cadvisorsource_labels:- __meta_kubernetes_node_nametarget_label: __metrics_path__scheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtinsecure_skip_verify: true- honor_labels: truejob_name: kubernetes-service-endpointskubernetes_sd_configs:- role: endpointsrelabel_configs:- action: keepregex: truesource_labels:- __meta_kubernetes_service_annotation_prometheus_io_scrape- action: dropregex: truesource_labels:- __meta_kubernetes_service_annotation_prometheus_io_scrape_slow- action: replaceregex: (https?)source_labels:- __meta_kubernetes_service_annotation_prometheus_io_schemetarget_label: __scheme__- action: replaceregex: (.)source_labels:- __meta_kubernetes_service_annotation_prometheus_io_pathtarget_label: __metrics_path__- action: replaceregex: (.?)(?::\d)?;(\d)replacement: $1:$2source_labels:- __address__- __meta_kubernetes_service_annotation_prometheus_io_porttarget_label: __address__- action: labelmapregex: __meta_kubernetes_service_annotation_prometheus_io_param_(.)replacement: __param_$1- action: labelmapregex: __meta_kubernetes_service_label_(.)- action: replacesource_labels:- __meta_kubernetes_namespacetarget_label: namespace- action: replacesource_labels:- __meta_kubernetes_service_nametarget_label: service- action: replacesource_labels:- __meta_kubernetes_pod_node_nametarget_label: node- honor_labels: truejob_name: kubernetes-service-endpoints-slowkubernetes_sd_configs:- role: endpointsrelabel_configs:- action: keepregex: truesource_labels:- __meta_kubernetes_service_annotation_prometheus_io_scrape_slow- action: replaceregex: (https?)source_labels:- __meta_kubernetes_service_annotation_prometheus_io_schemetarget_label: __scheme__- action: replaceregex: (.)source_labels:- __meta_kubernetes_service_annotation_prometheus_io_pathtarget_label: __metrics_path__- action: replaceregex: (.?)(?::\d)?;(\d)replacement: $1:$2source_labels:- __address__- __meta_kubernetes_service_annotation_prometheus_io_porttarget_label: __address__- action: labelmapregex: __meta_kubernetes_service_annotation_prometheus_io_param_(.)replacement: __param_$1- action: labelmapregex: __meta_kubernetes_service_label_(.)- action: replacesource_labels:- __meta_kubernetes_namespacetarget_label: namespace- action: replacesource_labels:- __meta_kubernetes_service_nametarget_label: service- action: replacesource_labels:- __meta_kubernetes_pod_node_nametarget_label: nodescrape_interval: 5mscrape_timeout: 30s- honor_labels: truejob_name: prometheus-pushgatewaykubernetes_sd_configs:- role: servicerelabel_configs:- action: keepregex: pushgatewaysource_labels:- __meta_kubernetes_service_annotation_prometheus_io_probe- honor_labels: truejob_name: kubernetes-serviceskubernetes_sd_configs:- role: servicemetrics_path: /probeparams:module:- http_2xxrelabel_configs:- action: keepregex: truesource_labels:- __meta_kubernetes_service_annotation_prometheus_io_probe- source_labels:- __address__target_label: __param_target- replacement: blackboxtarget_label: __address__- source_labels:- __param_targettarget_label: instance- action: labelmapregex: __meta_kubernetes_service_label_(.)- source_labels:- __meta_kubernetes_namespacetarget_label: namespace- source_labels:- __meta_kubernetes_service_nametarget_label: service- honor_labels: truejob_name: kubernetes-podskubernetes_sd_configs:- role: podrelabel_configs:- action: keepregex: truesource_labels:- __meta_kubernetes_pod_annotation_prometheus_io_scrape- action: dropregex: truesource_labels:- __meta_kubernetes_pod_annotation_prometheus_io_scrape_slow- action: replaceregex: (https?)source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_schemetarget_label: __scheme__- action: replaceregex: (.)source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_pathtarget_label: __metrics_path__- action: replaceregex: (\d);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})replacement: [$2]:$1source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_port- __meta_kubernetes_pod_iptarget_label: __address__- action: replaceregex: (\d);((([0-9]?)(\.|$)){4})replacement: $2:$1source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_port- __meta_kubernetes_pod_iptarget_label: __address__- action: labelmapregex: __meta_kubernetes_pod_annotation_prometheus_io_param_(.)replacement: __param_$1- action: labelmapregex: __meta_kubernetes_pod_label_(.)- action: replacesource_labels:- __meta_kubernetes_namespacetarget_label: namespace- action: replacesource_labels:- __meta_kubernetes_pod_nametarget_label: pod- action: dropregex: Pending|Succeeded|Failed|Completedsource_labels:- __meta_kubernetes_pod_phase- honor_labels: truejob_name: kubernetes-pods-slowkubernetes_sd_configs:- role: podrelabel_configs:- action: keepregex: truesource_labels:- __meta_kubernetes_pod_annotation_prometheus_io_scrape_slow- action: replaceregex: (https?)source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_schemetarget_label: __scheme__- action: replaceregex: (.)source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_pathtarget_label: __metrics_path__- action: replaceregex: (\d);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})replacement: [$2]:$1source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_port- __meta_kubernetes_pod_iptarget_label: __address__- action: replaceregex: (\d);((([0-9]?)(\.|$)){4})replacement: $2:$1source_labels:- __meta_kubernetes_pod_annotation_prometheus_io_port- __meta_kubernetes_pod_iptarget_label: __address__- action: labelmapregex: __meta_kubernetes_pod_annotation_prometheus_io_param_(.)replacement: __param_$1- action: labelmapregex: __meta_kubernetes_pod_label_(.)- action: replacesource_labels:- __meta_kubernetes_namespacetarget_label: namespace- action: replacesource_labels:- __meta_kubernetes_pod_nametarget_label: pod- action: dropregex: Pending|Succeeded|Failed|Completedsource_labels:- __meta_kubernetes_pod_phasescrape_interval: 5mscrape_timeout: 30srecording_rules.yml: |{}rules: |{} ---这个配置文件中描述了 6 个指标抓取任务的配置 prometheus抓取 Prometheus 服务自身的指标。 kubernetes-apiservers抓取 Kubernetes API 服务器的指标。 kubernetes-nodes抓取 Kubernetes 节点的指标。 kubernetes-nodes-cadvisor抓取 Kubernetes 节点的 cadvisor 指标主要包括容器的 CPU、内存、网络、磁盘等指标。 kubernetes-service-endpoints抓取 Kubernetes 服务端点的指标。 kubernetes-pods抓取 Kubernetes Pod 的指标。 img 这里我们可以重点关注下 kubernetes-pods 这个指标抓取任务的配置因为我们大部分的指标数据都是通过 Pod 的 Envoy Sidecar 来提供的。 从配置上可以看到这是基于 pod 的服务发现方式 首先只会保留 __meta_kubernetes_pod_annotation_prometheus_io_scrape 这个源标签为 true 的指标数据这个源标签表示的是如果 Pod 的 annotation 注解中有 prometheus.io/scrape 标签且值为 true则会保留该指标数据否则会丢弃该指标数据 然后根据 prometheus.io/scheme 注解来配置协议为 http 或者 https 根据 prometheus.io/path 注解来配置抓取路径 根据 prometheus.io/port 注解来配置抓取端口 将 prometheus.io/param 注解的值映射为 Prometheus 的标签 然后还会将 pod 的标签通过 labelmap 映射为 Prometheus 的标签最后还会将 pod 的 namespace 和 pod 的名称映射为 Prometheus 的标签。 最后需要判断 Pod 的 phase 状态只有当 Pod 的 phase 状态为 Running 时才会保留该指标数据否则会丢弃该指标数据。 比如我们查询 istio_requests_total{appproductpage, destination_appdetails} 这个指标如下所示 img 该查询语句的查询结果为 istio_requests_total{appdetails,connection_security_policymutual_tls,destination_appdetails,destination_canonical_revisionv1,destination_canonical_servicedetails,destination_clusterKubernetes,destination_principalspiffe://cluster.local/ns/default/sa/bookinfo-details,destination_servicedetails.default.svc.cluster.local,destination_service_namedetails,destination_service_namespacedefault,destination_versionv1,destination_workloaddetails-v1,destination_workload_namespacedefault,instance10.244.2.74:15020,jobkubernetes-pods,namespacedefault,poddetails-v1-5f4d584748-9fflw,pod_template_hash5f4d584748,reporterdestination,request_protocolhttp,response_code200,response_flags-,security_istio_io_tlsModeistio,service_istio_io_canonical_namedetails,service_istio_io_canonical_revisionv1,source_appproductpage,source_canonical_revisionv1,source_canonical_serviceproductpage,source_clusterKubernetes,source_principalspiffe://cluster.local/ns/default/sa/bookinfo-productpage,source_versionv1,source_workloadproductpage-v1,source_workload_namespacedefault,versionv1 }  362该查询表示的是从 productpage 服务到 details 服务的请求总次数从查询结果可以看出该指标就是来源于 jobkubernetes-pods 这个指标抓取任务那说明这个指标数据是通过服务发现方式从 Pod 中抓取的。 我们可以查看下 productpage Pod 的信息如下所示 $ kubectl get pods productpage-v1-564d4686f-l8kxr -oyaml apiVersion: v1 kind: Pod metadata:annotations:istio.io/rev: defaultkubectl.kubernetes.io/default-container: productpagekubectl.kubernetes.io/default-logs-container: productpageprometheus.io/path: /stats/prometheusprometheus.io/port: 15020prometheus.io/scrape: truesidecar.istio.io/status: {initContainers:[istio-init],containers:[istio-proxy],volumes:[workload-socket,credential-socket,workload-certs,istio-envoy,istio-data,istio-podinfo,istio-token,istiod-ca-cert],imagePullSecrets:null,revision:default}labels:app: productpagepod-template-hash: 564d4686fsecurity.istio.io/tlsMode: istioservice.istio.io/canonical-name: productpageservice.istio.io/canonical-revision: v1version: v1name: productpage-v1-564d4686f-l8kxrnamespace: default spec:containers:- image: docker.io/istio/examples-bookinfo-productpage-v1:1.18.0imagePullPolicy: IfNotPresent # ......我们从上面的资源清单中可以看到该 Pod 包含如下几个注解 prometheus.io/path: /stats/prometheus prometheus.io/port: 15020 prometheus.io/scrape: true 这些注解就是用来配置 Prometheus 服务发现的其中 prometheus.io/scrape: true 表示该 Pod 的指标数据是需要被抓取的而 prometheus.io/path: /stats/prometheus 和 prometheus.io/port: 15020 则是用来配置抓取路径和抓取端口的当 Prometheus 发现这个 Pod 后根据配置就可以通过 pod ip:15020/stats/prometheus 这个路径来抓取该 Pod 的指标数据了这个路径就是 Envoy Sidecar 提供的 /stats/prometheus 路径而 15020 则是 Envoy Sidecar 的端口这个端口是通过 istio-proxy 这个容器配置的静态监听器暴露出来的。 当然定义的标签也被映射为 Prometheus 的标签了从结果来看除了 Pod 的这些标签之外Envoy Sidecar 也会自己添加很多相关标签主要是标明 destination 和 source 的信息有了这些标签我们就可以很方便的对指标进行查询了。Envoy Sidecar 自行添加的一些主要标签如下所示 reporter标识请求指标的上报端如果指标由服务端 Istio 代理上报则设置为 destination如果指标由客户端 Istio 代理或网关上报则设置为 source。 source_workload标识源工作负载的名称如果缺少源信息则标识为 unknown。 source_workload_namespace标识源工作负载的命名空间如果缺少源信息则标识为 unknown。 source_principal标识流量源的对等主体当使用对等身份验证时设置。 source_app根据源工作负载的 app 标签标识源应用程序如果源信息丢失则标识为 unknown。 source_version标识源工作负载的版本如果源信息丢失则标识为 unknown。 destination_workload标识目标工作负载的名称如果目标信息丢失则标识为 unknown。 destination_workload_namespace标识目标工作负载的命名空间如果目标信息丢失则标识为 unknown。 destination_principal标识流量目标的对等主体使用对等身份验证时设置。 destination_app它根据目标工作负载的 app 标签标识目标应用程序如果目标信息丢失则标识为 unknown。 destination_version标识目标工作负载的版本如果目标信息丢失则标识为 unknown。 destination_service标识负责传入请求的目标服务主机例如details.default.svc.cluster.local。 destination_service_name标识目标服务名称例如 details。 destination_service_namespace标识目标服务的命名空间。 request_protocol标识请求的协议设置为请求或连接协议。 response_code标识请求的响应代码此标签仅出现在 HTTP 指标上。 connection_security_policy标识请求的服务认证策略当 Istio 使用安全策略来保证通信安全时如果指标由服务端 Istio 代理上报则将其设置为 mutual_tls。如果指标由客户端 Istio 代理上报由于无法正确填充安全策略因此将其设置为 unknown。 response_flags有关来自代理的响应或连接的其他详细信息。 Canonical Service工作负载属于一个 Canonical 服务而 Canonical 服务却可以属于多个服务。Canonical 服务具有名称和修订版本因此会产生以下标签 source_canonical_service source_canonical_revision destination_canonical_service destination_canonical_revision destination_cluster目标工作负载的集群名称这是由集群安装时的 global.multiCluster.clusterName 设置的。 source_cluster源工作负载的集群名称这是由集群安装时的 global.multiCluster.clusterName 设置的。 grpc_response_status: 这标识了 gRPC 的响应状态这个标签仅出现在 gRPC 指标上。 对于 Istio 来说包括 COUNTER 和 DISTRIBUTION 两种指标类型这两种指标类型对应我们比较熟悉的计数器和直方图。 对于 HTTPHTTP/2 和 GRPC 通信Istio 生成以下指标 请求数 (istio_requests_total) 这都是一个 COUNTER 类型的指标用于记录 Istio 代理处理的总请求数。 请求时长 (istio_request_duration_milliseconds) 这是一个 DISTRIBUTION 类型的指标用于测量请求的持续时间。 请求体大小 (istio_request_bytes) 这是一个 DISTRIBUTION 类型的指标用来测量 HTTP 请求主体大小。 响应体大小 (istio_response_bytes) 这是一个 DISTRIBUTION 类型的指标用来测量 HTTP 响应主体大小。 gRPC 请求消息数 (istio_request_messages_total) 这是一个 COUNTER 类型的指标用于记录从客户端发送的 gRPC 消息总数。 gRPC 响应消息数 (istio_response_messages_total) 这是一个 COUNTER 类型的指标用于记录从服务端发送的 gRPC 消息总数。 对于 TCP 流量Istio 生成以下指标 TCP 发送字节大小 (istio_tcp_sent_bytes_total) 这是一个 COUNTER 类型的指标用于测量在 TCP 连接情况下响应期间发送的总字节数。 TCP 接收字节大小 (istio_tcp_received_bytes_total) 这是一个 COUNTER 类型的指标用于测量在 TCP 连接情况下请求期间接收到的总字节数。 TCP 已打开连接数 (istio_tcp_connections_opened_total) 这是一个 COUNTER 类型的指标用于记录 TCP 已打开的连接总数。 TCP 已关闭连接数 (istio_tcp_connections_closed_total) 这是一个 COUNTER 类型的指标用于记录 TCP 已关闭的连接总数。 当我们了解了 Istio 指标数据采集的原理后我们就可以根据自身的需求来定制了比如在我们的监控系统采样的是 Prometheus Operator 方式那么也应该知道该如何来配置采集这些指标数据了。 自定义指标 除了 Istio 自带的指标外我们还可以自定义指标要自定指标需要用到 Istio 提供的 Telemetry API该 API 能够灵活地配置指标、访问日志和追踪数据。 关于我 我的博客主旨 排版美观语言精炼 文档即手册步骤明细拒绝埋坑提供源码 本人实战文档都是亲测成功的各位小伙伴在实际操作过程中如有什么疑问可随时联系本人帮您解决问题让我们一起进步 微信二维码 x2675263825 舍得 qq2675263825。 image-20230107215114763 微信公众号 《云原生架构师实战》 image-20230107215126971 个人博客站点 http://onedayxyy.cn/ image-20231113073017981 image-20231113073039083 语雀 https://www.yuque.com/xyy-onlyone image-20231113073101271 csdn 一念一生one_k8s,Linux,git-CSDN博客 image-20230107215149885 知乎 一个人 - 知乎 image-20230107215203185 最后 好了关于本次就到这里了感谢大家阅读最后祝大家生活快乐每天都过的有意义哦我们下期见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

评价一个网站wordpress 主题没有样式表

1、这篇文章我们简要讨论一些Gin框架 主要是给大家一个基本概念 1、Gin主要是分为路由和中间件部分。 Gin底层使用的是net/http的逻辑,net/http主要是说,当来一个网络请求时,go func开启另一个协程去处理后续(类似epoll)。 然后主协程持续…

吴桥做网站价格自己开发一个app需要多少钱

写在开头 在当今信息爆炸的时代,海量的数据如同一座沉默的宝库,等待着我们挖掘和理解。然而,这些庞大的数据集本身可能令人望而生畏。在这个时候,数据可视化成为了解数据、发现模式和传达信息的强大工具。本篇博客将带领你探索数据可视化的奇妙世界,学习如何在python中使…

网站做301跳转的好处千牛网站上的店铺推广怎么做

1.不要听“亲朋好友”的话,他们只会让你成为“平凡人”。 2.不要只会“用功读书”,重要的是“要读对书”。  3.不要只是“努力工作”,重要的是“做对工作”。   4.不要指示结交“志趣相投”的朋友,否则你永远只看到…

公司管理系统网站徐州做网站最好的公司

(本帖在版工的旧 Blog 中,发表日期为 2007/04/06) (本帖有些 Hyperlink 是连到台湾的网站,若无法连结,麻烦请留言反应)从 ADO.NET 1.x 开始,DataReader 就可以在单一次的查询动作中,「批次 (batch)」读取 T-SQL 语句以…

自助建站系统是怎么实现深圳勘察设计协会

内容 JDK7时间相关类JDK8时间相关类 第一章 Date类 1.1 Date概述 java.util.Date类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,我们重点看以下两个构造函数 public Dat…

网站中文域名好吗wordpress添加模版

随着新能源汽车的普及,充电桩作为新能源汽车的基础设施,其安全性和可靠性越来越受到人们的关注。为了更好地保障充电桩的安全运行与站场管理,TSINGSEE青犀&触角云推出了一套新能源汽车充电桩视频汇聚管理与视频监控方案。 方案采用高清摄…

为什么都用dw做网站wordpress邮箱插件漏洞

最近又有网友遇到在windows2008服务器上安装ORACLE软件时到2%就卡住不动的问题,下面是该网友的描述:oralce 11g r2 windows server 2008 R2安装到最后一步复制数据文件时卡到2% 不走了内存一直飙升求解决这个问题前段时间也有人遇到过,但是他…

山东专业网站解决方案制作诸城人才网招聘网

文章目录 操作流程:前置:Docker和K8S安装版本匹配查看0.1:安装指定docker版本 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一:主节点操作 查看主机域名->编辑域名->域名配置二:安装自动填充,虚拟…

淘宝实时优惠券网站怎么做的网站怎样做

文章目录 1 基本原理2 最优划分属性选择2.1 信息增益选择最优属性方法2.2 信息增益率选择最优属性方法——C4.5决策树2.3 基尼指数选择最优属性——CART决策树 3 剪枝处理3.1 预剪枝3.2 后剪枝 决策树是一种常用的机器学习算法,它模拟了人类决策过程中的思考方式。想…

网站源码交易网网站设计培训课程

文章目录 1028. 从先序遍历还原二叉树(三种方法:栈递归集合)一、栈 while迭代1.思路2.代码 二、递归法1.思路2.代码 三、集合存储1.思路2.代码 1028. 从先序遍历还原二叉树(三种方法:栈递归集合) 一、栈 wh…

旅游企业网站建设工作的通知贵州省兴义市建设局网站首页

MAC MINI 2012安装Montery折腾笔记(作为电视盒子/远程开发机) 起因: 手头有个mac mini,2018年买的2手。一直都是10.12系统,处理python和苹果开发都受制于旧系统,很多软件也装不上,于是有了升级…

网站建设 自查表申报网站

技术栈 我们将使用Node.js和Express.js作为我们的后端框架,以及Node.js的文件系统(fs)模块来操作文件和文件夹。此外,我们将使用Node.js的require和delete require.cache来加载和更新模拟数据。 项目结构 首先,让我们定义一个简单的项目结…

济南网络有限公司大冶seo网站优化排名推荐

[react] react中发起网络请求应该在哪个生命周期中进行?为什么? 异步情况可以在componentDidMount()函数中进行。 同步的情况可以在componentWillMount()中进行。 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易&#xff0…

山西网络建站代运营免费开发软件制作平台

文章目录 对比分析计算机网络,分布式系统,主机系统的差异?七层模型每一层的主要功能?简述PCM的理论基础,为什么PCM采样时间被设置为125us?同步通信和异步通信的差异。光纤作为传输介质,相比铜芯有什么优势…

网站哪家公司做得好网站免费网站免费片黄入口蜜桃观看射破屁屁

php文件锁怎么用PHP出现文件锁与mysql表锁有大概想的用法,就是同一时间只能让一个人操作,这样就避免了同时有多个人操作同一文件,这样导致数据丢失的情况了。以下是小编为大家搜索整理的PHP文件锁怎么用,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生…

昆明网站快照优化公司抖音网红代运营

#AI技术服务 #AI智能应用 #AI合同 #合同AI服务 斯坦福大学的AI指数报告指出:“中国人对AI的态度最为积极……” 这一观点应是基于一系列的观察和研究得出的结果。如果这一观点成立,那么它或许说明了以下几个层面的意义: 首先,政策支持与…

网站推广常用方法有哪些对网站开发实训的建议

题目描述 给出N个数,要求把其中重复的去掉,只保留第一次出现的数。 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4。 输入描述: 输入第一行为正整数T,表示…

公司网站公司哪家好贵州省城乡建设厅官网

const oldData yield select(({ baseDictionary }) > {return ([...customPageSetting.list,]) });

开网站购买的服务器放自己家还是放别人那里官方网站下载拼多多

学习作用域、变量提升、闭包等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法,降低代码的冗余度。 理解作用域对程序执行的影响 能够分析程序执行的作用域范围 理解闭包本质,利用闭包创建隔离作用域 了解…

门户类型的网站小小课堂seo自学网

2024年认证杯SPSSPRO杯数学建模 B题 神经外科手术的定位与导航 原题再现: 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要…