K8S结合Prometheus构建监控系统

一、Prometheus简介

Prometheus 是一个开源的系统监控和警报工具,用于收集、存储和查询时间序列数据。它专注于监控应用程序和基础设施的性能和状态,并提供丰富的查询语言和灵活的告警机制

1、Prometheus基本介绍

  1. 数据模型:Prometheus 使用时间序列数据模型来存储监控数据。时间序列由一个唯一的指标名称和一组键值对标签组成,代表了某个指标在特定时间点的数值。这种数据模型非常适合度量指标的变化和趋势。
  2. 数据采集:Prometheus 支持多种数据采集方式。它可以直接采集应用程序的指标数据,也可以通过各种监控插件和集成来获取系统和网络层面的指标数据。采集的数据通过 HTTP 或其他协议发送给 Prometheus 服务器进行存储和处理。
  3. 存储和查询:Prometheus 使用本地存储方式,将采集的时间序列数据保存在本地磁盘上。它提供了灵活而高效的查询语言(PromQL),可以对存储的数据进行实时查询和聚合操作,以便生成有关监控指标的图表、报表和警报。
  4. 告警和警报规则:Prometheus 具有强大的告警功能,可以根据指标的阈值、表达式和持续时间等条件设置警报规则。当条件满足时,它可以触发警报并发送通知,如发送电子邮件、短信或通过集成的通知服务进行报警。
  5. 可视化和集成:虽然 Prometheus 本身提供了基本的查询和图表功能,但它也可以与其他工具和服务集成,如 Grafana,用于更丰富的数据可视化和仪表板展示。

2.Prometheus特点

  1. 多维度数据模型:Prometheus 采用了多维度的时间序列数据模型,每个时间序列都由指标名称和一组标签键值对组成。这种数据模型使得用户可以灵活地对监控数据进行多维度的查询和聚合,以获取更准确和细粒度的监控指标。
  2. 高效的数据采集:Prometheus 支持多种灵活的数据采集方式。它可以通过客户端库(例如Prometheus 客户端库)直接采集应用程序的指标数据,也可以通过各种监控插件和集成方式获取系统、网络和第三方服务的指标数据。数据采集的过程高效而可靠,可以适应各种规模和复杂度的监控场景。
  3. 强大的查询语言:Prometheus 提供了强大而灵活的查询语言(PromQL),用于对存储的监控数据进行实时查询和聚合操作。PromQL 支持范围查询、聚合函数、算术运算和向量操作等,使得用户能够方便地分析和提取所需的监控指标。
  4. 动态监控和自动发现:Prometheus 支持动态监控和自动发现机制。它可以自动探测和监控新加入集群的目标,例如新部署的应用实例或新增的节点。通过定义合适的自动发现规则,Prometheus 能够及时识别和监控新的目标,实现动态的监控配置和管理。
  5. 灵活的告警机制:Prometheus 具备强大的告警功能,用户可以定义灵活的警报规则,并根据阈值、表达式和持续时间等条件触发警报。它能够及时发送通知,如电子邮件、短信或调用API,以便运维人员能够快速响应和解决潜在的问题。
  6. 生态系统和集成:Prometheus 拥有丰富的生态系统和广泛的集成能力。它可以与其他工具和服务集成,如 Grafana 用于可视化、Alertmanager 用于告警通知、Exporter 用于采集非Prometheus 格式的指标数据等。这种集成能力使得用户能够构建全面和强大的监控解决方案。

3.Prometheus生态包含组件

  1. Prometheus Server:Prometheus 服务器是核心组件,用于收集、存储和处理时间序列数据。它负责从各个目标主机上抓取监控指标数据,并将其存储在本地磁盘中供后续查询和分析使用。
  2. Exporters:Exporter 是用于从各种系统、服务和应用程序中抓取指标数据的组件。Prometheus 提供了一些官方的 Exporter,同时也支持社区开发的 Exporter。Exporter 将特定系统的指标数据暴露出来,使其可以被 Prometheus Server 收集。
  3. Alertmanager:Alertmanager 是负责处理和发送警报通知的组件。当 Prometheus Server检测到警报条件时,它将警报发送给 Alertmanager,然后 Alertmanager 负责对警报进行处理、去重、分组和路由,并将警报通知发送给配置的接收方(如电子邮件、Slack、PagerDuty等)。
  4. Grafana:Grafana 是一个流行的可视化仪表板工具,用于创建漂亮的监控仪表板。通过与Prometheus 集成,Grafana 可以从 Prometheus Server 中查询和展示监控指标数据,并以图表和图形的形式展示给用户。
  5. Pushgateway:Pushgateway 是一个中间组件,允许短期作业(如批处理任务)将其指标数据推送到 Prometheus Server。短期作业通常无法被长期监控,因此 Pushgateway 提供了一个临时存储的机制,以便 Prometheus Server 可以主动从 Pushgateway 拉取指标数据。

二、安装Prometheus
1.安装采集节点资源指标组件 node-exporter

apiVersion: apps/v1
kind: DaemonSet
metadata:name: node-exporternamespace: monitor-salabels:name: node-exporter
spec:selector:matchLabels:name: node-exportertemplate: metadata:labels:name: node-exporterspec:hostIPC: truehostNetwork: truehostPID: truecontainers:- name: node-exporterimage: docker.io/prom/node-exporter:v0.16.0imagePullPolicy: IfNotPresentports:- containerPort: 9100resources:requests:cpu: 0.15securityContext:privileged: trueargs:- --path.procfs- /host/proc  #指定 proc 文件系统的路径为/host/proc。Node Exporter 使用proc 文件系统来获取有关进程和系统信息的指标数据。- --path.sysfs- /host/sys    #指定 sys 文件系统的路径为/host/sys。Node Exporter 使用 sys 文件系统来获取有关系统硬件资源和内核信息的指标数据。- --collector.filesystem.ignored-mount-points- '"^/(sys|proc|dev|host|etc)($|/)"'  #配置要忽略的文件系统挂载点的正则表达式。这个正则表达式指定了一些常见的文件系统挂载点,如/sys、/proc、/dev、/host 和/etc。Node Exporter 将忽略这些挂载点上的文件系统,不采集与其相关的指标数据volumeMounts:- name: devmountPath: /host/dev- name: procmountPath: /host/proc- name: sysmountPath: /host/sys- name: rootfsmountPath: /rootfstolerations:- key: "node-role.kubernetes.io/control-plane"operator: "Exists"effect: "NoSchedule"volumes:- name: prochostPath:path: /proc- name: devhostPath:path: /dev- name: syshostPath:path: /sys- name: rootfshostPath:path: /

2.配置Prometheus server服务的configmap

#创建一个namespace
kubectl create ns monitor-sa
#创建一个sa账号
kubectl create serviceaccount monitor -n monitor-sa
#把sa账号monitor通过clusterrolebing绑定到clusterrole
kubectl create clusterrolebinding monitor-clusterrolebinding --clusterrole=cluster-admin --serviceaccount=monitor-sa:monitor
创建数据目录
mkdir /data
chmod 777 /data
#配置prometheus的configmap
参考地址:
github:https://github.com/prometheus/prometheus/blob/release-2.31/documentation/examples/prometheus-kubernetes.yml
官网:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config
vim prometheus-cfg.yaml
---
kind: ConfigMap
apiVersion: v1
metadata:labels:app: test-prometheusname: prometheus-confignamespace: monitor-sa
data:prometheus.yml: |global:scrape_interval: 15sscrape_timeout: 10sevaluation_interval: 1mscrape_configs:- job_name: 'kubernetes-node'kubernetes_sd_configs:- role: noderelabel_configs:- source_labels: [__address__]regex: '(.*):10250'replacement: '${1}:9100'target_label: __address__action: replace- action: labelmapregex: __meta_kubernetes_node_label_(.+)- job_name: 'kubernetes-node-cadvisor'kubernetes_sd_configs:- role:  nodescheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtbearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenrelabel_configs:- action: labelmapregex: __meta_kubernetes_node_label_(.+)- target_label: __address__replacement: kubernetes.default.svc:443- source_labels: [__meta_kubernetes_node_name]regex: (.+)target_label: __metrics_path__replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor- job_name: 'kubernetes-apiserver'kubernetes_sd_configs:- role: endpointsscheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtbearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenrelabel_configs:- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]action: keepregex: default;kubernetes;https- job_name: 'kubernetes-service-endpoints'kubernetes_sd_configs:- role: endpointsrelabel_configs:- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]action: keepregex: true- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]action: replacetarget_label: __scheme__regex: (https?)- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]action: replacetarget_label: __metrics_path__regex: (.+)- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]action: replacetarget_label: __address__regex: ([^:]+)(?::\d+)?;(\d+)replacement: $1:$2- action: labelmapregex: __meta_kubernetes_service_label_(.+)- source_labels: [__meta_kubernetes_namespace]action: replacetarget_label: kubernetes_namespace- source_labels: [__meta_kubernetes_service_name]action: replacetarget_label: kubernetes_name 

3.通过deployment部署Prometheus

---
apiVersion: apps/v1
kind: Deployment
metadata:name: test-prometheuslabels:app: test-prometheus
spec:replicas: 1selector:matchLabels:app: test-prometheustemplate:metadata:labels:app: test-prometheusannotations:prometheus.io/scrape: 'true'spec:securityContext:runAsUser: 0containers:- name: test-prometheusimage: docker.io/prom/prometheus:v2.33.5imagePullPolicy: Alwayscommand:- prometheus- --config.file=/etc/prometheus/prometheus.yml- --storage.tsdb.path=/prometheus        #数据存储目录- --storage.tsdb.retention=168h          #数据保存时长- --web.enable-lifecycle                 #开启热加载ports:- containerPort: 9090protocol: TCPvolumeMounts:- mountPath: /etc/prometheus/prometheus.ymlname: prometheus-configsubPath: prometheus.yml- mountPath: /prometheus/name: prometheus-storage-volumeresources:requests:memory: 1Gicpu: "1"limits:memory: 2Gicpu: "1"volumes:- name: prometheus-configconfigMap:name: prometheus-configitems:- key: prometheus.ymlpath: prometheus.ymlmode: 0644- name: prometheus-storage-volumehostPath:path: /var/lib/docker/data/{{ $.Chart.Name }}/datatype: DirectoryOrCreate

4.给Prometheus pod创建一个service

---
apiVersion: v1
kind: Service
metadata:name: prometheussvclabels:app: test-prometheusnamespace: monitor-sa
spec:type: NodePortports:- port: 9090targetPort: 9090protocol: TCPselector:app: test-prometheus#查看映射端口
[root@master1 prometheus]# kubectl describe svc test-prometheus -n monitor-sa
Name:                     test-prometheus
Namespace:                monitor-sa
Labels:                   app=test-prometheusapp.kubernetes.io/managed-by=Helm
Annotations:              meta.helm.sh/release-name: prometheusmeta.helm.sh/release-namespace: monitor-saname: test-prometheusprometheus.io/scrape: true
Selector:                 app=test-prometheus
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.96.128.98
IPs:                      10.96.128.98
Port:                     http  9090/TCP
TargetPort:               9090/TCP
NodePort:                 http  31439/TCP
Endpoints:                10.244.247.6:9090
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

#页面访问测试

http://192.168.100.17:31439/graph

5.安装配置可视化UI界面graphna

---
apiVersion: apps/v1
kind: Deployment
metadata:name: test-grafana
spec:replicas: 1selector:matchLabels:app: test-grafanatemplate:metadata:labels:app: test-grafanaspec:containers:- name: test-grafanaimage: docker.io/grafana/grafana:8.4.5imagePullPolicy: Alwaysports:- containerPort: 3000protocol: TCPvolumeMounts:- mountPath: /etc/ssl/certsname: ca-certificatesreadOnly: true- mountPath: /var/lib/grafananame: grafana-storageresources:requests:memory: 1Gicpu: "1"limits:memory: 1Gicpu: "1"env:- name: INFLUXDB_HOSTvalue: monitoring-influxdb- name: GF_SERVER_HTTP_PORTvalue: "3000"- name: GF_AUTH_BASIC_ENABLEDvalue: "false"- name: GF_AUTH_ANONYMOUS_ENABLEDvalue: "true"- name: GF_AUTH_ANONYMOUS_ORG_ROLEvalue: Admin- name: GF_SERVER_ROOT_URLvalue: /volumes:- name: ca-certificateshostPath:path: /etc/ssl/certs- name: grafana-storageemptyDir:medium: Memory
---
apiVersion: v1
kind: Service
metadata:labels:app: test-grafananame: test-grafana
spec:ports:- name: httpport: 3000targetPort: 3000protocol: TCPselector:app: test-grafanatype: NodePort
#查看转发端口kubectl get svc -n monitor-sa
NAME              TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
test-grafana      NodePort   10.100.121.25   <none>        3000:31562/TCP   4m4s

三、页面展示

#访问:
http://192.168.100.16:31562/

在这里插入图片描述
6.配置grafana界面
选择 Add your first data source
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
附:面板导入下载:https://grafana.com/grafana/dashboards/

五、安装kube-state-metrics 组件

kube-state-metrics 是一个开源的 Kubernetes 监控工具,它通过将 Kubernetes 集群中的资源状态转换为可观察的指标(metrics),提供了对 Kubernetes 对象的详细监控和可视化。以下是 kube-state-metrics 的基本介绍:

  1. 功能:kube-state-metrics 从 Kubernetes API 服务器中获取资源对象的当前状态,并将其转换为 Prometheus 指标。它监视集群中的各种资源,包括节点、命名空间、部署、服务、副本集、状态集、持久卷等。通过 kube-state-metrics,您可以获取有关这些资源的重要指标,例如资源的数量、创建时间、标签、状态等。
  2. 架构:kube-state-metrics 作为一个独立的容器化应用程序运行在 Kubernetes 集群中,它定期轮询 Kubernetes API 服务器以获取资源对象的信息。然后,它将这些信息转换为可观察的指标,并将其公开为 Prometheus 兼容的 HTTP 端点。
  3. Prometheus 兼容性:kube-state-metrics 以 Prometheus 的数据模型为基础,生成符合Prometheus 指标格式的指标数据。这使得 Prometheus 能够通过 HTTP 抓取 kube-statemetrics 的指标数据,并将其用于监控和警报。
  4. 指标示例:kube-state-metrics 生成的指标包括对象的数量、重启次数、资源限制、标签信息、容器状态等。例如,您可以获取每个命名空间的 Pod 数量、每个节点的 CPU 和内存使用情况、每个服务的副本数量等信息。
  5. 可视化和监控:通过将 kube-state-metrics 与 Prometheus 和 Grafana 等工具结合使用,您可以创建仪表板和报警规则,对 Kubernetes 集群中的资源进行实时监控和可视化。这使您能够了解集群中资源的状态、趋势和性能,以便进行故障排查、容量规划和性能优化。

安装与配置kube-state-metrics
创建SA并对SA授权


---
apiVersion: v1
kind: ServiceAccount
metadata:name: kube-state-metricsnamespace: monitor-sa
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: kube-state-metrics
rules:
- apiGroups: [""]resources: ["nodes", "pods", "services", "resourcequotas", "replicationcontrollers", "limitranges", "persistentvolumeclaims", "persistentvolumes", "namespaces", "endpoints"]verbs: ["list", "watch"]
- apiGroups: ["extensions"]resources: ["daemonsets", "deployments", "replicasets"]verbs: ["list", "watch"]
- apiGroups: ["apps"]resources: ["statefulsets"]verbs: ["list", "watch"]
- apiGroups: ["batch"]resources: ["cronjobs", "jobs"]verbs: ["list", "watch"]
- apiGroups: ["autoscaling"]resources: ["horizontalpodautoscalers"]verbs: ["list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kube-state-metrics
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: kube-state-metrics
subjects:
- kind: ServiceAccountname: kube-state-metricsnamespace: monitor-sa

创建deployment/service


apiVersion: apps/v1
kind: Deployment
metadata:name: kube-state-metricsnamespace: monitor-sa
spec:replicas: 1selector:matchLabels:app: kube-state-metricstemplate:metadata:labels:app: kube-state-metricsspec:serviceAccountName: kube-state-metricscontainers:- name: kube-state-metricsimage: quay.io/coreos/kube-state-metrics:v1.9.0imagePullPolicy: IfNotPresentports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:annotations:prometheus.io/scrape: 'true'name: kube-state-metricsnamespace: monitor-salabels:app: kube-state-metrics
spec:ports:- name: kube-state-metricsport: 8080protocol: TCPselector:app: kube-state-metrics

在granfana的web界面中导入Kubernetes cluster monitoring (via Prometheus) (k8s 1.16)-1577691996738.json即可

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

48道Linux面试题

本博客将汇总 Linux 面试中常见的题目&#xff0c;并提供详细的解答。 文章目录 1、绝对路径用什么[符号表](https://so.csdn.net/so/search?q符号表&spm1001.2101.3001.7020)示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命…

【MyBatis-Plus】进阶之乐观锁、悲观锁逻辑删除分页和查询构造器的使用

目录 一、乐观锁、悲观锁 1、什么是乐观锁和悲观锁 ①乐观锁&#xff08;Optimistic Locking&#xff09;: ②悲观锁&#xff08;Pessimistic Locking&#xff09;: ③实现方式 2、乐观锁和悲观锁的区别 ①乐观锁&#xff08;Optimistic Locking&#xff09; ②悲观锁&…

【JavaEE】多线程(6) -- 定时器的使用及实现

目录 定时器是什么 标准库中的定时器的使用 实现定时器 定时器是什么 Java中的定时器是一种机制&#xff0c;用于在预定时间执行某个任务。它允许开发人员在指定的时间间隔内重复执行任务&#xff0c;或在指定的延迟之后执行任务。定时器是Java提供的一种方便的工具&#xf…

图分割算法之贪心算法

1 贪心算法的思想 Linear Deterministic Greedy partitioning (LDG)考虑在分割的时候将邻居结点放置在一起&#xff0c;以减少切割边。它采用贪心算法将一个结点放置在包含其邻居最多的子图中&#xff0c;同时保证每个子图的结点负载均衡&#xff0c;整个算法流程图如下其中 C …

单文件超过4GB就无法拷贝到U盘?这个你一定要知道

前言 随着现在科技发展&#xff0c;小伙伴们所使用的数据也越变越大。还记得WindowsXP流行的时候&#xff0c;XP的镜像文件仅为几百MB大小。 但是现在随便一个系统就有可能超过4GB。 如果单个文件超过4GB就有可能没办法拷贝进U盘&#xff0c;在这里就需要给小伙伴们普及一下U…

用ChatGPT挑选钻石!著名珠宝商推出-珠宝GPT

根据Salesforce最新发布的第五版《互联网购物报告》显示&#xff0c;ChatGPT等生成式AI的出现、快速发展&#xff0c;对零售行业和购物者产生了较大影响。可有效简化业务流程实现降本增效&#xff0c;并改善购物体验。 著名珠宝商James Allen为了积极拥抱生成式AI全面提升销售…

vue2使用svg图片

1、安装依赖包&#xff1a; npm install svg-sprite-loader --save-dev 2、新建assets/icons/svg中放置svg图片和index.js文件 svgo.yml文件 index.js import Vue from vue import SvgIcon from /components/SvgIcon// svg component// register globally Vue.component(sv…

antd中DatePicker禁选范围如何设置

1、解决日期禁选问题 在官方api中也提到&#xff0c;可以设置disabledDate来实现日期的禁选 语法&#xff1a; js中定义disabledData函数 const disabledDate (current) > { 设置禁选范围 } 在DatePicker 标签中引入 同时我们要知道antd是默认使用moment.js来实现日期格式…

【ES】es介绍

倒排索引&#xff08;Inverted Index&#xff09;和正排索引&#xff08;Forward Index&#xff09; 正排索引是一种以文档为单位的索引结构&#xff0c;它将文档中的每个单词或词组与其所在的文档进行映射关系的建立。正排索引通常用于快速检索指定文档的内容&#xff0c;可以…

Python列表数据处理全攻略(三):常用内置方法轻松掌握

文章目录 引言Python列表常用内置方法count()功能介绍语法示例注意事项 index()功能介绍语法示例注意事项&#xff1a; insert()功能介绍语法示例注意事项总结 结束语 引言 亲爱的读者&#xff0c;你好&#xff01;Python的列表在数据结构中占据着核心地位&#xff0c;对于学习…

k8s-cni网络 10

Flannel vxlan模式跨主机通信原理 在同一个节点上的pod 流量通过cni网桥可以直接进行转发&#xff1b; 在需要跨主机访问时&#xff0c;数据包通过flannel(隧道) 知道另一边的mac地址&#xff0c;就可以拿到另一边的ip地址&#xff0c;然后构建常规的以太网数据包&#xff0c;…

github登录需要双因素认证(Two-factor authentication)

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 github登录需要双因素认证&#xff08;Two-factor authentication&#xff09; 今天登录github发现需要绑定双因素才能够登录 我们…

具有权威性的工信部证书怎么考

工信部证书的考试流程如下&#xff1a; 选择正规报考机构&#xff1a;选择一家权威的培训机构或考试中心&#xff0c;确保其具有相应的资质和经验。 提交个人报考资料&#xff1a;根据考试机构的要求&#xff0c;提交相关的个人报考资料&#xff0c;如身份证、学历证明、工作…

【单片机项目实战】温度控制系统

本项目的主要作用是实现温度调控&#xff0c;通过设定一个预定的温度值&#xff0c;实现实时检测外界温度&#xff0c;当外界温度小于预定值时&#xff0c;电机正转&#xff0c;实现降温效果&#xff1b;当外界温度大于预定值时&#xff0c;电机反转&#xff0c;实现升温效果&a…

SpringBoot多线程与任务调度总结

一、前言 多线程与任务调度是java开发中必须掌握的技能&#xff0c;在springBoot的开发中&#xff0c;多线程和任务调度变得越来越简单。实现方式可以通过实现ApplicationRunner接口&#xff0c;重新run的方法实现多线程。任务调度则可以使用Scheduled注解 二、使用示例 Slf…

TiDB SQL调优案例TiFlash

背景 早上收到某系统的告警tidb节点挂掉无法访问&#xff0c;情况十万火急。登录中控机查了一下display信息&#xff0c;4个TiDB、Prometheus、Grafana全挂了&#xff0c;某台机器hang死无法连接&#xff0c;经过快速重启后集群恢复&#xff0c;经排查后是昨天上线的某个SQL导…

2022年全球软件质量效能大会(QECon北京站2022)-核心PPT资料下载

一、峰会简介 当前&#xff0c;新一轮科技革命和产业变革正在重塑全球经济格局&#xff0c;以云计算为代表的新一代信息技术创新活跃&#xff0c;与实体经济深度融合&#xff0c;推动泛在连接、数据驱动、智能引领的数字经济新形式孕育而生。 新兴技术的出现给测试乃至整个软…

小米路由器2(R2D) 安装 MIXBOX

1. 先刷开发版 ROM http://www1.miwifi.com/miwifi_download.html 进入上述网页&#xff0c;找到 R2D 点击下载 开发版 ROM 教程 看 下载按钮上边的 “刷机教程” 刷机教程 2. 开启SSH工具 登录自己的小米账号后&#xff0c;里面会显示出 自己的 root密码&#xff1b; 默认…

记一次修复外网无法访问vmware里面的虚拟机的网络端口的问题

发现一个奇怪的网络问题&#xff0c;vmware里一个程序的端口通过vmnat穿透出来&#xff0c;然后这个端口就能够通过局域网被其他机器访问&#xff0c;但是另一个网段就没法访问这个端口。使用主机上的其他程序使用开启同样的端口&#xff0c;另一个网段的机器却可以访问。我想不…

Android Security PIN 相关代码

开发项目遇到一个问题&#xff0c;具体描述及复制步骤如下&#xff1a; 就是开启"Enhanced PIN privacy"(增强的PIN隐私)的时候输入秘密的时候还是会显示数字 如下图&#xff0c;应该是直接是“.” 不应该出现PIN 密码 想要的效果如下图&#xff1a; 设置的步骤如下图…