Promethues operate blackbox(http/tcp/dns/icmp探测)

2023-10-17 23:59

本文主要是介绍Promethues operate blackbox(http/tcp/dns/icmp探测),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Promethues operate blackbox(http/tcp/dns/icmp探测)

由于grafana dashboard市场下载的blackbox不太好用,我做了简单修改,效果如下:

在这里插入图片描述

prometheus配置

由于prometheus operator采用servicemonitor或者probe方式来对blackbox进行数据采集的时候均存在一定的问题,所以对于这部分scrap配置,采用手动配置了

[root@k8s-master-1 prometheus-operator]# cat prometheus-server.yaml 
---
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:name: servernamespace: monitor
spec:image: prom/prometheus:v2.36.2nodeSelector: kubernetes.io/hostname: "k8s-master-1"serviceMonitorSelector:matchLabels:application: "prometheus"probeSelector:matchLabels:application: "prometheus"serviceAccountName: prometheus-serveradditionalScrapeConfigs:name: blackboxkey: blackbox-config.yamlstorage:volumeClaimTemplate: #如果配置了这个,prometheus-server的存储就会保存在这里spec:accessModes:- ReadWriteOnceresources:requests:storage: 10Gi
---
apiVersion: v1    
kind: Service    
metadata:    name: prometheus-server    namespace: monitor    labels:    application: "prometheus-server"    
spec:    selector:    prometheus: server    type: NodePort    ports:    - name: metrics    port: 9090    targetPort: 9090    protocol: TCP    nodePort: 39090   

blackbox配置

[root@k8s-master-1 blackbox]# cat blackbox.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: blackbox-confignamespace: monitor
data:blackbox.yml: |-modules:http_2xx:                          # http 检测模块  Blockbox-Exporter 中所有的探针均是以 Module 的信息进行配置prober: httptimeout: 15shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]   valid_status_codes: [200,301,302]method: GETpreferred_ip_protocol: "ip4"   # 选用IPV4follow_redirects: true         # 跟进重定向tcp_connect:                       # TCP模块prober: tcptimeout: 15sdns_tcp:                           # tcp探测DNSprober: dnsdns:transport_protocol: "tcp"      # 默认是 udppreferred_ip_protocol: "ip4"   # 默认是 ip6query_name: "kubernetes.default.svc.cluster.local" # 利用这个域名来检查 dns 服务器query_type: "A"                                    # 如果是 kube-dns ,一定要加入这个,因为不支持Ipv6icmp:prober: icmpicmp:preferred_ip_protocol: "ip4"
---
apiVersion: apps/v1
kind: Deployment
metadata:name: blackboxnamespace: monitor
spec:replicas: 1selector:matchLabels:app: blackboxtemplate:metadata:labels:app: blackboxspec:nodeName: k8s-master-1containers:- image: prom/blackbox-exporter:v0.21.1name: blackboxargs:- --config.file=/etc/blackbox_exporter/blackbox.yml- --log.level=info - --web.listen-address=:9115ports:- name: httpcontainerPort: 9115volumeMounts:- name: configmountPath: /etc/blackbox_exporterdnsPolicy: ClusterFirstvolumes:- name: configconfigMap:name: blackbox-config
---
apiVersion: v1
kind: Service
metadata:name: blackboxnamespace: monitorlabels:app: blackbox
spec:selector:app: blackboxtype: NodePortports:- name: httpport: 9115targetPort: 9115nodePort: 39115
---
#apiVersion: v1
#kind: Secret
#metadata:
#  name: blackbox
#  namespace: monitor
#stringData: 
#  blackbox.yaml: | 
#  - job_name: "icmp-check"  # 这样写会出问题
#    metrics_path: /probe
#    params:
#      module: icmp
#    static_configs:
#    - targets:
#      - 192.168.0.10
#      - 192.168.0.11
---
# 使用这种方式进行黑盒监控时多个target只抓取了第一个target,原因暂时未找到,生成的scrp_url=10.70.0.128:9115/probe?module=tcp_connect&target=192.168.0.10:22&target=192.168.0.11:22""
# issues https://github.com/prometheus-operator/prometheus-operator/issues/2821#apiVersion: monitoring.coreos.com/v1   
#kind: ServiceMonitor
#metadata:
#  name: blackbox
#  namespace: monitor
#  labels:
#    application: "prometheus"
#spec:
#  namespaceSelector:
#    matchNames: ["monitor"]
#  selector:
#    matchLabels:
#      app: blackbox
#  endpoints:
#  - interval: "15s"
#    path: /probe
#    port: http
#    scheme: HTTP
#    params:
#      module:
#      - tcp_connect
#      target:
#      - 192.168.0.10:22
#      - 192.168.0.11:22
#    relabelings: 
#    - sourceLabels: [__address__]
#      targetLabel: __param_target
#    - sourceLabels: [__param_target]
#      targetLabel: instance
#    - targetLabel: __address__
#      replacement: blackbox.monitor.svc.cluster.local:9115
---
# 这种太重复了,会导致生成很多instance,需要对标签进行处理,后续二个job 需进行标签聚合,太麻烦了
#apiVersion: monitoring.coreos.com/v1
#kind: Probe
#metadata:
#  name: blackbox-tcp-check
#  namespace: monitor
#  labels:
#    application: "prometheus"
#spec:
#  jobName: tcp-check
#  module: tcp_connect
#  prober:
#    url: blackbox.monitor.svc.cluster.local:9115
#  targets:
#    staticConfig:
#      static:
#      - 192.168.0.10:22
#      - 192.168.0.11:22
#  metricRelabelings:
#  - sourceLabels: [__address__]
#    targetLabel: instance
---
#apiVersion: monitoring.coreos.com/v1
#kind: Probe
#metadata:
#  name: blackbox-icmp-check
#  namespace: monitor
#  labels:
#    application: "prometheus"
#spec:
#  jobName: icmp-check
#  module: icmp
#  prober:
#    url: blackbox.monitor.svc.cluster.local:9115
#  targets:
#    staticConfig:
#      static:
#      - 192.168.0.10
#      - 192.168.0.11
#  metricRelabelings:
#  - sourceLabels: [__address__]  # 基于IP保证后续instance一致
#    targetLabel: instanc
[root@k8s-master-1 blackbox]# cat blackbox-config.yaml 
- job_name: "ICMP-CHECK"    metrics_path: /probe params:    module: - icmp    static_configs:    - targets:    - 192.168.0.10    - 192.168.0.11labels:blackbox: icmprelabel_configs:- source_labels: [__address__]                         # 为params赋值target=[__address__],调整向blackbox请求的URL参数target_label: __param_target- target_label: __address__                            # 让prometheus去blackbox抓取信息replacement: blackbox.monitor.svc.cluster.local:9115- source_labels: [__param_target]                      # 將 instace 的值修改成 target 的值target_label: instance
- job_name: "TCP-CHECK"    metrics_path: /probe params:    module: - tcp_connect   static_configs:    - targets:    - 192.168.0.10:22    - 192.168.0.11:22- 192.168.0.10:3306- 192.168.0.10:6443- 192.168.0.10:1250- 192.168.0.10:2380- 192.168.0.11:2380- 192.168.0.10:2049- 192.168.0.10:111labels:blackbox: tcprelabel_configs:- source_labels: [__address__]   target_label: __param_target- target_label: __address__     replacement: blackbox.monitor.svc.cluster.local:9115- source_labels: [__param_target] 
#    regex: "(.*):(.*)"                                   # 聚合instance,将其与第一个job为一类,丢弃端口,grafana不做聚合,放弃这种方式
#    replacement: $1target_label: instance
- job_name: "HTTP-CHECK"    metrics_path: /probe params:    module: - http_2xx    static_configs:    - targets:    - http://www.baidu.com- http://www.huya.com- http://www.douyu.com- http://www.bilibili.comlabels:blackbox: http_2xxrelabel_configs:- source_labels: [__address__]     target_label: __param_target- target_label: __address__         replacement: blackbox.monitor.svc.cluster.local:9115- source_labels: [__param_target]    target_label: instance
- job_name: "DNS-CHECK"    metrics_path: /probe params:    module: - dns_tcpstatic_configs:    - targets:    - 10.0.0.10                                           # K8S集群内DNS服务器labels:blackbox: dnsrelabel_configs:- source_labels: [__address__]     target_label: __param_target- target_label: __address__         replacement: blackbox.monitor.svc.cluster.local:9115- source_labels: [__param_target]    target_label: instance

创建prometheus资源需要的additionalScrapeConfigs:kubectl create secret generic blackbox --from-file=blackbox-config.yaml -n monitor

prometheus检查

在这里插入图片描述

导入grafana配置

{"annotations": {"list": [{"builtIn": 1,"datasource": {"type": "datasource","uid": "grafana"},"enable": true,"hide": true,"iconColor": "rgba(0, 211, 255, 1)","name": "Annotations & Alerts","target": {"limit": 100,"matchAny": false,"tags": [],"type": "dashboard"},"type": "dashboard"}]},"description": "Quick overview of values from blackbox exporters","editable": true,"fiscalYearStartMonth": 0,"gnetId": 11529,"graphTooltip": 0,"id": 3,"iteration": 1656837727417,"links": [],"liveNow": false,"panels": [{"columns": [],"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"fontSize": "100%","gridPos": {"h": 8,"w": 11,"x": 0,"y": 0},"id": 103,"links": [],"repeatDirection": "h","scroll": true,"showHeader": true,"sort": {"col": 4,"desc": false},"styles": [{"alias": "Time","align": "auto","dateFormat": "YYYY-MM-DD HH:mm:ss","pattern": "Time","type": "hidden"},{"alias": "1=UP, 0=DOWN","align": "auto","colorMode": "row","colors": ["rgba(245, 54, 54, 0.9)","rgba(245, 54, 54, 0.9)","rgba(50, 172, 45, 0.97)"],"dateFormat": "YYYY-MM-DD HH:mm:ss","decimals": 0,"pattern": "Value","thresholds": ["0","1"],"type": "number","unit": "short"},{"alias": "","align": "auto","colors": ["rgba(245, 54, 54, 0.9)","rgba(237, 129, 40, 0.89)","rgba(50, 172, 45, 0.97)"],"dateFormat": "YYYY-MM-DD HH:mm:ss","decimals": 2,"pattern": "__name__","thresholds": [],"type": "hidden","unit": "short"},{"alias": "","align": "auto","colors": ["rgba(245, 54, 54, 0.9)","rgba(237, 129, 40, 0.89)","rgba(50, 172, 45, 0.97)"],"decimals": 2,"pattern": "/.*/","thresholds": [],"type": "number","unit": "short"}],"targets": [{"expr": "probe_success","format": "table","instant": true,"intervalFactor": 1,"refId": "A"}],"title": "黑盒监控汇总数据","transform": "table","type": "table-old"},{"columns": [],"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"fontSize": "100%","gridPos": {"h": 8,"w": 13,"x": 11,"y": 0},"id": 109,"links": [],"scroll": true,"showHeader": true,"sort": {"col": 3,"desc": false},"styles": [{"alias": "Time","align": "auto","dateFormat": "YYYY-MM-DD HH:mm:ss","pattern": "Time","type": "hidden"},{"alias": "Time Left","align": "auto","colorMode": "row","colors": ["rgba(245, 54, 54, 0.9)","rgba(237, 129, 40, 0.89)","rgba(50, 172, 45, 0.97)"],"dateFormat": "YYYY-MM-DD HH:mm:ss","decimals": 0,"pattern": "Value","thresholds": ["0","2592000"],"type": "number","unit": "s"},{"alias": "","align": "auto","colors": ["rgba(245, 54, 54, 0.9)","rgba(237, 129, 40, 0.89)","rgba(50, 172, 45, 0.97)"],"decimals": 2,"pattern": "/.*/","thresholds": [],"type": "number","unit": "short"}],"targets": [{"expr": "probe_ssl_earliest_cert_expiry-time()","format": "table","instant": true,"intervalFactor": 1,"legendFormat": "{{instance}}","refId": "A"}],"title": "SSL证书过期情况","transform": "table","type": "table-old"},{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"},"custom": {"axisLabel": "","axisPlacement": "auto","barAlignment": 0,"drawStyle": "line","fillOpacity": 0,"gradientMode": "none","hideFrom": {"legend": false,"tooltip": false,"viz": false},"lineInterpolation": "smooth","lineWidth": 3,"pointSize": 5,"scaleDistribution": {"type": "linear"},"showPoints": "never","spanNulls": false,"stacking": {"group": "A","mode": "none"},"thresholdsStyle": {"mode": "off"}},"mappings": [],"thresholds": {"mode": "absolute","steps": [{"color": "green","value": null},{"color": "red","value": 80}]},"unit": "short"},"overrides": []},"gridPos": {"h": 8,"w": 24,"x": 0,"y": 8},"id": 107,"links": [],"options": {"legend": {"calcs": ["max","min"],"displayMode": "table","placement": "right"},"tooltip": {"mode": "multi","sort": "desc"}},"pluginVersion": "8.5.1","targets": [{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"expr": "probe_duration_seconds","format": "time_series","intervalFactor": 1,"legendFormat": "{{instance}}","refId": "A"}],"title": "探测耗时","type": "timeseries"},{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"},"custom": {"axisLabel": "","axisPlacement": "auto","barAlignment": 0,"drawStyle": "line","fillOpacity": 0,"gradientMode": "none","hideFrom": {"legend": false,"tooltip": false,"viz": false},"lineInterpolation": "smooth","lineStyle": {"fill": "solid"},"lineWidth": 3,"pointSize": 5,"scaleDistribution": {"type": "linear"},"showPoints": "never","spanNulls": true,"stacking": {"group": "A","mode": "none"},"thresholdsStyle": {"mode": "off"}},"mappings": [],"thresholds": {"mode": "absolute","steps": [{"color": "green","value": null},{"color": "red","value": 80}]},"unit": "short"},"overrides": []},"gridPos": {"h": 6,"w": 24,"x": 0,"y": 16},"id": 119,"links": [],"options": {"legend": {"calcs": ["min"],"displayMode": "list","placement": "bottom"},"tooltip": {"mode": "multi","sort": "none"}},"pluginVersion": "8.5.1","targets": [{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"expr": "probe_success{blackbox=\"dns\"}","format": "time_series","intervalFactor": 1,"legendFormat": "{{instance}}","refId": "A"}],"title": "DNS探测","type": "timeseries"},{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"},"custom": {"axisLabel": "","axisPlacement": "auto","barAlignment": 0,"drawStyle": "line","fillOpacity": 0,"gradientMode": "none","hideFrom": {"legend": false,"tooltip": false,"viz": false},"lineInterpolation": "smooth","lineWidth": 3,"pointSize": 5,"scaleDistribution": {"type": "linear"},"showPoints": "never","spanNulls": true,"stacking": {"group": "A","mode": "none"},"thresholdsStyle": {"mode": "off"}},"mappings": [],"thresholds": {"mode": "absolute","steps": [{"color": "green","value": null},{"color": "red","value": 80}]},"unit": "short"},"overrides": [{"__systemRef": "hideSeriesFrom","matcher": {"id": "byNames","options": {"mode": "exclude","names": ["192.168.0.11"],"prefix": "All except:","readOnly": true}},"properties": [{"id": "custom.hideFrom","value": {"legend": false,"tooltip": false,"viz": true}}]}]},"gridPos": {"h": 6,"w": 24,"x": 0,"y": 22},"id": 115,"links": [],"options": {"legend": {"calcs": ["min"],"displayMode": "list","placement": "bottom"},"tooltip": {"mode": "multi","sort": "none"}},"pluginVersion": "8.5.1","targets": [{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"editorMode": "code","exemplar": false,"expr": "probe_success{blackbox=\"icmp\"}","format": "time_series","instant": false,"intervalFactor": 1,"legendFormat": "{{instance}}","range": true,"refId": "A"}],"title": "网络探测","type": "timeseries"},{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"},"custom": {"axisLabel": "","axisPlacement": "auto","barAlignment": 0,"drawStyle": "line","fillOpacity": 0,"gradientMode": "none","hideFrom": {"legend": false,"tooltip": false,"viz": false},"lineInterpolation": "smooth","lineStyle": {"fill": "solid"},"lineWidth": 3,"pointSize": 5,"scaleDistribution": {"type": "linear"},"showPoints": "never","spanNulls": true,"stacking": {"group": "A","mode": "none"},"thresholdsStyle": {"mode": "off"}},"mappings": [],"thresholds": {"mode": "absolute","steps": [{"color": "green","value": null},{"color": "red","value": 80}]},"unit": "short"},"overrides": []},"gridPos": {"h": 6,"w": 24,"x": 0,"y": 28},"id": 113,"links": [],"options": {"legend": {"calcs": ["min"],"displayMode": "list","placement": "bottom"},"tooltip": {"mode": "multi","sort": "none"}},"pluginVersion": "8.5.1","targets": [{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"expr": "probe_success{blackbox=\"tcp\"}","format": "time_series","intervalFactor": 1,"legendFormat": "{{instance}}","refId": "A"}],"title": "端口探测","type": "timeseries"},{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"},"custom": {"axisLabel": "","axisPlacement": "auto","barAlignment": 0,"drawStyle": "line","fillOpacity": 0,"gradientMode": "none","hideFrom": {"legend": false,"tooltip": false,"viz": false},"lineInterpolation": "smooth","lineWidth": 3,"pointSize": 5,"scaleDistribution": {"type": "linear"},"showPoints": "auto","spanNulls": false,"stacking": {"group": "A","mode": "none"},"thresholdsStyle": {"mode": "off"}},"mappings": [],"thresholds": {"mode": "absolute","steps": [{"color": "green","value": null},{"color": "red","value": 80}]}},"overrides": []},"gridPos": {"h": 6,"w": 24,"x": 0,"y": 34},"id": 117,"links": [],"options": {"legend": {"calcs": ["min"],"displayMode": "list","placement": "bottom"},"tooltip": {"mode": "single","sort": "none"}},"pluginVersion": "8.5.1","targets": [{"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"expr": "probe_success{blackbox=\"http_2xx\"}","format": "time_series","intervalFactor": 1,"legendFormat": "{{instance}}","refId": "A"}],"title": "站点探测","type": "timeseries"}],"refresh": "30s","schemaVersion": 36,"style": "dark","tags": ["blackbox","prometheus"],"templating": {"list": [{"auto": true,"auto_count": 10,"auto_min": "10s","current": {"selected": false,"text": "auto","value": "$__auto_interval_interval"},"hide": 2,"label": "Interval","name": "interval","options": [{"selected": true,"text": "auto","value": "$__auto_interval_interval"},{"selected": false,"text": "5s","value": "5s"},{"selected": false,"text": "10s","value": "10s"},{"selected": false,"text": "30s","value": "30s"},{"selected": false,"text": "1m","value": "1m"},{"selected": false,"text": "10m","value": "10m"},{"selected": false,"text": "30m","value": "30m"},{"selected": false,"text": "1h","value": "1h"},{"selected": false,"text": "6h","value": "6h"},{"selected": false,"text": "12h","value": "12h"},{"selected": false,"text": "1d","value": "1d"},{"selected": false,"text": "7d","value": "7d"},{"selected": false,"text": "14d","value": "14d"},{"selected": false,"text": "30d","value": "30d"}],"query": "5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d","refresh": 2,"skipUrlSync": false,"type": "interval"},{"current": {"selected": false,"text": "All","value": "$__all"},"datasource": {"type": "prometheus","uid": "wt9lNze7z"},"definition": "","hide": 2,"includeAll": true,"multi": true,"name": "targets","options": [],"query": {"query": "label_values(probe_success, instance)","refId": "Prometheus-targets-Variable-Query"},"refresh": 1,"regex": "","skipUrlSync": false,"sort": 0,"tagValuesQuery": "","tagsQuery": "","type": "query","useTags": false}]},"time": {"from": "now-5m","to": "now"},"timepicker": {"refresh_intervals": ["5s","10s","30s","1m","5m","15m","30m","1h","2h","1d"],"time_options": ["5m","15m","1h","6h","12h","24h","2d","7d","30d"]},"timezone": "","title": "Blackbox Exporter Quick Overview-1","uid": "xtkCtBkiz2","version": 28,"weekStart": ""
}

这篇关于Promethues operate blackbox(http/tcp/dns/icmp探测)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/228821

相关文章

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-