一、安装CRD模块

修改crd prometheuses,建议按照官网文档,追加在serviceMonitorSelector下面。
在 Kubernetes 中一切都可视为资源,Kubernetes 1.7 之后增加了对 CRD 自定义资源二次开发能力来扩展 Kubernetes API,通过 CRD 我们可以向 Kubernetes API 中增加新资源类型,而不需要修改 Kubernetes 源码来创建自定义的 API server,该功能大大提高了 Kubernetes 的扩展能力。
当你创建一个新的CustomResourceDefinition (CRD)时,Kubernetes API服务器将为你指定的每个版本创建一个新的RESTful资源路径,我们可以根据该api路径来创建一些我们自己定义的类型资源。CRD可以是命名空间的,也可以是集群范围的,由CRD的作用域(scpoe)字段中所指定的,与现有的内置对象一样,删除名称空间将删除该名称空间中的所有自定义对象。customresourcedefinition本身没有名称空间,所有名称空间都可以使用。
按照官方的方法修改crd https://github.com/coreos/prometheus-operator/blob/1b016520b9f1899f0973c7c0beb5acaaef2a415a/Documentation/additional-scrape-config.md
# kubectl -n monitor edit prometheuses -oyaml

  1. additionalScrapeConfigs:
  2. name: additional-scrape-configs
  3. key: prometheus-additional.yaml

二、自定义HTTP探针及请求

HTTP探针是进行黑盒监控时最常用的探针之一,通过HTTP探针能够网站或者HTTP服务建立有效的监控,包括其本身的可用性,以及用户体验相关的如响应时间等等。
00_blackbox/blackbox-exporter-configmap.yaml

  1. apiVersion: v1
  2. data:
  3. blackbox_exporter.yaml:
  4. modules:
  5. http_2xx:
  6. prober: http
  7. timeout: 5s
  8. http:
  9. http_post_2xx:
  10. prober: http
  11. timeout: 5s
  12. http:
  13. method: POST
  14. basic_auth:
  15. username: "username"
  16. password: "mysecret"
  17. # 和python中写SDK类似,记住这个名字一会需要调用
  18. yitu_ct_http_2xx_post:
  19. prober: http
  20. timeout: 5s
  21. http:
  22. preferred_ip_protocol: "ip4"
  23. method: POST
  24. headers:
  25. Content-Type: application/json
  26. x-access-id: ABC
  27. x-signature: signature
  28. x-request-send-timestamp: 1575440902
  29. cache-control: no-cache
  30. body: '{"user_info":{"name":"郭文文","citizen_id":"23108419920818004X"}}'
  31. kind: ConfigMap
  32. metadata:
  33. name: blackbox-exporter
  34. namespace: monitor

三、将探针方法应用到监控机

additional-scrape-configs/prometheus-additional.yaml

  1. - job_name: yitu_ct_http_2xx_post
  2. honor_timestamps: true
  3. params:
  4. module:
  5. # 调用刚才定义的方法
  6. - yitu_ct_http_2xx_post
  7. # 采集间隔,以为使用第三方服务,调接口需要花钱,所以间隔设置了长一点
  8. scrape_interval: 120s
  9. # 采集超时时间
  10. scrape_timeout: 10s
  11. metrics_path: /probe
  12. scheme: http
  13. static_configs:
  14. - targets:
  15. # 被采集主机
  16. - http://192.168.1.16:9500/api/v1/conformity/two-information
  17. - http://192.168.1.17:9500/api/v1/conformity/two-information
  18. labels:
  19. # 打标签,prometheus里面会用到此变量
  20. group: yitu-ct
  21. relabel_configs:
  22. - source_labels: [__address__]
  23. separator: ;
  24. regex: (.*)
  25. target_label: __param_target
  26. replacement: $1
  27. action: replace
  28. - source_labels: [__param_target]
  29. separator: ;
  30. regex: (.*)
  31. target_label: instance
  32. replacement: $1
  33. action: replace
  34. - separator: ;
  35. regex: (.*)
  36. target_label: __address__
  37. replacement: blackbox-exporter:9115
  38. action: replace