前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生监控通过blackbox_exporter监控网站

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

原创
作者头像
聂伟星
修改2021-08-20 15:26:34
3.8K0
修改2021-08-20 15:26:34
举报

有时候我们需要对主机存活,端口存活及网站状态进行检测下,看下我们的网站访问耗时是不是很长,你的监控系统是用的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的启动配置

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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,也可以按照官方推荐配置

代码语言:javascript
复制
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
代码语言:javascript
复制
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,上面有更多实例和源码介绍

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. tke集群部署blackbox_exporter
  • 2. 云原生监控配置RawJobs采集数据
  • 3. grafana导入blackbox_exporter模板
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com