5

我对 Prometheus 很陌生,不确定如何通过身份验证 ping 端点。不确定我的问题是否可以通过内置的 prometheus 配置解决,让我描述一下我想要实现的流程:

(1) 发送带有 {username, password} 的 http POST 到 api 端点 company.com/auth

(2) 应该检索 Bearer 令牌类型的 {access_tokens, refresh_token...}

(3) 保存这个access_token 并指向其他页面。只有在 access_token 已经存在且正确的情况下,才应 ping 所有其他端点。

(4)认证后,它应该仍然以一定频率发送http请求并输出指标,就像blackbox-exporter一样。

基本上,我试图在 Postman 测试中模拟 API 调用序列的相同过程。我已经看到了 basic_auth 和 bearer_token 的 blackbox-exporter 的配置,但不确定如何实际设置参数以及如何重定向到其他页面。

在此处输入图像描述

(我应该按照(1)设置basic_auth用户名和密码吗?token在哪里返回?我应该将token替换为bearer_token吗?)

任何关于这方面的指导都会很棒!我对整个过程很陌生,如果问题太基本或模棱两可,我很抱歉。在此先感谢,非常感谢任何帮助!

4

2 回答 2

4

第 2/3 步需要运行 Javascript,而 Blackbox 导出器无法做到这一点。

Blackbox 导出器将自动跟踪重定向、使用 URL 参数并发送不记名令牌,但您需要提前知道要发送的内容。您可能对https://github.com/mattbostock/webdriver_exporter有一些运气,您可以编写自己的导出器,或者寻找黑盒导出器可以执行的更简单的黑盒测试。

于 2018-06-22T05:08:37.857 回答
0

不确定您是否还有同样的问题,但我尝试通过 blackbox 导出器设置 api 检查(api 是否工作正常),并在安装我在配置下使用的导出器时。

config:
  modules:
    http_2xx:
      prober: http
      timeout: 5s
      http:
        valid_http_versions: ["HTTP/1.1", "HTTP/2"]
        no_follow_redirects: false
        preferred_ip_protocol: "ip4"
    api_checks:
      prober: http
      timeout: 5s
      http:
        method: GET
        valid_http_versions: ["HTTP/1.1", "HTTP/2"]
        no_follow_redirects: false
        preferred_ip_protocol: "ip4"
        bearer_token_file: /var/secret.file

第一个模块用于检查正常端点是否可达。AND 第二个模块用于使用不记名令牌检查 api。我创建了一个秘密并将其作为卷安装到 /var/secret.file 的 pod 上

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: bearer-token
data:
  secret.file: |
    Z2hwX1lvbsyYXVKeTFndlQzRQo=

并将它们添加到部署文件中,如下所示。

spec:
  templates:
    metadata:
       labels:
         app: xxxx
    spec:
      containers:
      - name: XXXX
        image: "image-name" 
        volumeMounts:
          - name: bearer-token
            mountPath: /var/
      volumes:
      - name: bearer-token
        secret:
          secretName: bearer-token

之后,我们需要去 prometheus setup 并添加一个scrape config,如下所示

prometheus.yml:
    rule_files:
      - /etc/config/recording_rules.yml
      - /etc/config/alerting_rules.yml
    ## Below two files are DEPRECATED will be removed from this default values file
      - /etc/config/rules
      - /etc/config/alerts

    scrape_configs:
      - job_name: prometheus
        static_configs:
          - targets:
            - localhost:9090

      - job_name: Blackbox-check
        metrics_path: /probe
        static_configs:
          - targets:
            - www.google.com/
            - https://api.github.com/user/repos
        relabel_configs:
        - source_labels: [__address__]
          target_label: __param_target
        - source_labels: [__param_target]
          target_label: instance
        - target_label: __address__
          replacement: blackbox-prometheus-blackbox-exporter:9115

      - job_name: api_checks
        metrics_path: /probe
        params:
          module: [api_checks]
        static_configs:
          - targets:
            - https://api.github.com/user/repos
        relabel_configs:
        - source_labels: [__address__]
          target_label: __param_target
        - source_labels: [__param_target]
          target_label: instance
        - target_label: __address__
          replacement: blackbox-prometheus-blackbox-exporter:9115

它会为你工作。

于 2021-08-31T13:19:31.817 回答