将Blackbox Exporter的指标直接发送到Wavefront,而无需通过Prometheus中转
太长不看
无论是Blackbox导出程序,还是能够输出Prometheus指标的端点,都可以直接发送到Wavefront而无需通过Prometheus进行中转。
首先
Wavefront(正式名称Tanzu Observability)是一种基于SaaS的监控平台,安装在Kubernetes等环境中,可用于收集指标以实现监控功能。
如果想要使用现有资源并继续使用Prometheus的用户则需要解决将其整合的问题。
在这种情况下,有两种协作方法。一种是将Prometheus作为Relay使用,像这篇文章中介绍的那样发送指标的方法,另一种是通过Wavefront Collector来抓取和传输每个端点的方法。
在这个例子中,我们将介绍如何在环境中添加用于URL监视的Blackbox Exporter,并将Prometheus直接转发到Wavefront而不需要中间步骤。
预先准备
请准备以下材料。
-
- WavefrontのアカウントとAPIキー
-
- Kubernetes環境
- Helm(v3) cliのインストール
安装Blackbox Exporter
首先安装URL监控组件的Blackbox Exporter。
kubectl create ns blackbox
helm install prom-black stable/prometheus-blackbox-exporter --namespace blackbox
我将确认是否正在运行。这次我将在相同的命名空间中启动一个alpine pod,并从那里执行curl操作。
kubectl run -i --tty --image=alpine alpine -n blackbox -- sh
当提示符启动后,使用以下命令执行curl操作。
apk add curl
curl 'prom-black-prometheus-blackbox-exporter:9115/probe?target=http://google.com&module=http_2xx'
只要您购买以下输出即可满足要求。
# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 0.004944754
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.099084546
# HELP probe_failed_due_to_regex Indicates if probe failed due to regex
# TYPE probe_failed_due_to_regex gauge
probe_failed_due_to_regex 0
# HELP probe_http_content_length Length of http content response
# TYPE probe_http_content_length gauge
probe_http_content_length -1
# HELP probe_http_duration_seconds Duration of http request by phase, summed over all redirects
# TYPE probe_http_duration_seconds gauge
probe_http_duration_seconds{phase="connect"} 0.0049864620000000005
probe_http_duration_seconds{phase="processing"} 0.083818997
probe_http_duration_seconds{phase="resolve"} 0.009260726
probe_http_duration_seconds{phase="tls"} 0
probe_http_duration_seconds{phase="transfer"} 0.000294504
# HELP probe_http_redirects The number of redirects
# TYPE probe_http_redirects gauge
probe_http_redirects 1
# HELP probe_http_ssl Indicates if SSL was used for the final redirect
# TYPE probe_http_ssl gauge
probe_http_ssl 0
# HELP probe_http_status_code Response HTTP status code
# TYPE probe_http_status_code gauge
probe_http_status_code 200
# HELP probe_http_uncompressed_body_length Length of uncompressed response body
# TYPE probe_http_uncompressed_body_length gauge
probe_http_uncompressed_body_length 13392
# HELP probe_http_version Returns the version of HTTP of the probe response
# TYPE probe_http_version gauge
probe_http_version 1.1
# HELP probe_ip_protocol Specifies whether probe ip protocol is IP4 or IP6
# TYPE probe_ip_protocol gauge
probe_ip_protocol 4
# HELP probe_success Displays whether or not the probe was a success
# TYPE probe_success gauge
probe_success 1
顺便提一下,关于上述指令,这是一个用于输出在向http://google.com发送请求时的度量指标的指令。通常情况下,您需要指定要监视的应用程序的URL等信息,但由于这次是测试,我们使用google。
安装Wavefront。
首先,添加Wavefront的helm图表仓库。
helm repo add wavefront https://wavefronthq.github.io/helm/
helm repo update
接下来,请将以下文件保存为myvalues.yml。
请注意,将XXXX替换为与Wavefront帐户相对应的值。
clusterName: mhoshi-test
wavefront:
url: https://XXXX.wavefront.com
token: XXXXXXXXXX
collector:
discovery:
enabled: true
config:
- name: blackbox-exporter-google
type: prometheus
port: 9115
path: '/probe?target=http://google.com&module=http_2xx'
selectors:
labels:
app.kubernetes.io/instance:
- prom-black
prefix: blackbox.google.
我要安装Wavefront。
kubectrl create ns wavefront
helm install -f myvalues.yml wavefront wavefront/wavefront --namespace wavefront
我会检查并确认POD是否已经启动。
mhoshino@mhoshino ~ % kubectl get po -n wavefront
NAME READY STATUS RESTARTS AGE
wavefront-collector-49rrh 1/1 Running 0 52s
wavefront-collector-8h86x 1/1 Running 0 52s
wavefront-collector-j5qhx 1/1 Running 0 52s
wavefront-collector-rwxd7 1/1 Running 0 52s
wavefront-proxy-5db9d8c45-46n7f 1/1 Running 0 52s
到这里为止,启动已完成。
如果在后续步骤中出现问题,请确认是否输出了以下日志,其中列出了已发现的端点到任一wavefront-collector-*。
time="2020-08-05T06:12:49Z" level=info msg="Adding provider" collection_interval=0s name="prometheus_metrics_provider: blackbox-pod-prom-black-prometheus-blackbox-exporter-7dbf585f57-624m4:9115" timeout=30s
time="2020-08-05T06:12:49Z" level=info msg="Using default collection interval" collection_interval=1m0s provider="prometheus_metrics_provider: blackbox-pod-prom-black-prometheus-blackbox-exporter-7dbf585f57-624m4:9115"
确认Wavefront侧
应该会在Wavefront中显示以myvalues.yml内的前缀开头的度量。
在浏览 > 度量 中搜索 blackbox.google.内容。
然后您会发现度量已收集好。
此外,还可以查看 blackbox.google.probe.duration.seconds.gauge 等指标,以了解收集到的度量指标的详细信息。
总结
本次介绍了使用Blackbox Exporter的示例,但从技术上讲,应该可以连接任何端点。
我认为Prometheus可以用于迁移到Wavefront的功能。