云原生监控通过blackbox_exporter监控网站

有时候我们需要对主机存活,端口存活及网站状态进行检测下,看下我们的网站访问耗时是不是很长,你的监控系统是用的prometheus,那么我们可以部署blackbox_exporter来采集数据到prometheus,blackbox_exporter允许通过HTTP,HTTPS,DNS,TCP和ICMP对端点进行黑盒探测,由于我们的服务都是在腾讯云上,prometheus也是用的云上托管,叫做云原生监控,但是云原生监控并没有提供网站站点的监控,这里需要我们自己部署blackbox_exporter来进行采集。下面我们说说如何部署blackbox_exporter来监测我们的站点。

首先这里你要有云原生监控实例并且关联你的tke集群,这里就不细说云原生监控的创建和tke集群的部署使用了。我们直接说如何在tke部署blackbox_exporter,然后通过云原生监控来采集数据,最后在grafann里面通过dashboard来查看监控。

1. tke集群部署blackbox_exporter

首先我们配置下blackbox_exporter的启动配置

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app: blackbox-exporter
  name: blackbox-exporter
  namespace: monitor
data:
  blackbox.yml: |-
    modules:
      http_2xx:
        prober: http
        timeout: 2s
        http:
          valid_http_versions: ["HTTP/1.1", "HTTP/2"]
          valid_status_codes: [200,301,302]
          method: GET
          preferred_ip_protocol: "ip4"
      tcp_connect:
        prober: tcp
        timeout: 2s

然后部署下对应blackbox_exporter

kind: Deployment
apiVersion: apps/v1
metadata:
  name: blackbox-exporter
  namespace: monitor
  labels:
    app: blackbox-exporter
spec:
  replicas: 1
  selector:
    matchLabels:
      app: blackbox-exporter
  template:
    metadata:
      labels:
        app: blackbox-exporter
    spec:
      volumes:
      - name: config
        configMap:
          name: blackbox-exporter
          defaultMode: 420
      containers:
      - name: blackbox-exporter
        image: prom/blackbox-exporter:v0.16.0
        imagePullPolicy: IfNotPresent
        args:
        - --config.file=/etc/blackbox_exporter/blackbox.yml
        - --log.level=info
        - --web.listen-address=:9115
        ports:
        - name: blackbox-port
          containerPort: 9115
          protocol: TCP
        resources:
          limits:
            cpu: 200m
            memory: 256Mi
          requests:
            cpu: 100m
            memory: 50Mi
        volumeMounts:
        - name: config
          mountPath: /etc/blackbox_exporter
        readinessProbe:
          tcpSocket:
            port: 9115
          initialDelaySeconds: 5
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 3

然后我们部署一个service提供给prometheus采集数据,由于prometheus部署的集群和tke集群不是在一个集群,但是是在一个vpc下,所以这里blackbox_exporter通过内网的LoadBalancer来暴露服务,我这里的service对应的内网lb的ip是10.0.0.178

apiVersion: v1
kind: Service
metadata:
  name: blackbox-exporter
  namespace: monitor
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: blackbox-port
    nodePort: 31005
    port: 9115
    protocol: TCP
    targetPort: 9115
  selector:
    app: blackbox-exporter
  sessionAffinity: None
  type: LoadBalancer

到这里我们的blackbox_exporter就部署好了,下面我们来在prometheus里面配置下RawJobs采集blackbox_exporter的数据

2. 云原生监控配置RawJobs采集数据

进入云原生监控找到你关联集群,点击数据采集配置,然后再RawJobs里面新增一个jobs,job配置如下,如果需要监控多个站点可以配置多个job,也可以按照官方推荐配置

scrape_configs:
- job_name: blog-blackbox
  honor_timestamps: true
  params:
    module:
    - http_2xx
  metrics_path: /probe
  scheme: http
  static_configs:
  - targets:
    - https://www.niewx.cn/
    labels:
      domain: www.niewx.cn
      instance: https://www.niewx.cn/
      ip: githubpage
      port: "443"
      project: blog
      service: none
  - targets:
    - https://www.niewx.cn/mybook/
    labels:
      domain: www.niewx.cn
      instance: https://www.niewx.cn/mybook/
      ip: githubpage
      port: "443"
      project: mybook
      service: none
  relabel_configs:
  - source_labels: [__address__]
    separator: ;
    regex: (.*)
    target_label: __param_target
    replacement: $1
    action: replace
  - separator: ;
    regex: (.*)
    target_label: __address__
    replacement: blackbox-exporter.monitor.svc.cluster.local:9115
    action: replace
The blackbox exporter needs to be passed the target as a parameter, this can be done with relabelling.

Example config:

scrape_configs:
  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [http_2xx]  # Look for a HTTP 200 response.
    static_configs:
      - targets:
        - http://prometheus.io    # Target to probe with http.
        - https://prometheus.io   # Target to probe with https.
        - http://example.com:8080 # Target to probe with http on port 8080.
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115  # The blackbox exporter's real hostname:port.

点击配置完成后,在target里面显示up状态说明配置采集成功

3. grafana导入blackbox_exporter模板

我们登录云原生监控的grafana,然后在导入模板,这里模板为9965号

这里选择下我们配置的job

然后就可以查看我们的站点监控了

到这里我们用云原生监控开监控我们的站点就完成了,如果想了解更多Blackbox Exporter信息,可以参考github https://github.com/prometheus/blackbox_exporter,上面有更多实例和源码介绍

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
云原生监控通过blackbox_exporter监控网站
有时候我们需要对主机存活,端口存活及网站状态进行检测下,看下我们的网站访问耗时是不是很长,你的监控系统是用的prometheus,那么我们可以部署blackbo...
<<上一篇
下一篇>>