使用easeprobe进行SLA探测

服务探活在现实场景中应用广泛,比如:服务发现、服务负载均衡、服务调度、服务状态监控等。然而,“探活”往往是作为一个功能模块或者组件集成在各个平台系统中。今天介绍的这款服务探活工具,可以独立运行,利用easeprobe,无需其他系统支持,就可以对多种类型的服务/中间件等探活,非常轻量。使用起来非常便捷。最近用来给api接口、ssl证书、web 200,dns,openvpn服务器等探活,非常好用。

EaseProbe简介

EaseProbe是一款开源的探活工具,由左耳朵耗子为主要开发。EaseProbe是一个简单、独立、轻量级的工具,可以进行健康/状态检查,是用Go开发的一款工具。
EaseProbe 主要完成3个目标工具: 探测、通知、报告。

探测

EaseProbe 支持多种方法来执行其探测,例如:

* HTTP。检查HTTP状态码,支持mTLS,HTTP Basic Auth,可以设置Request Header/Body。(HTTP 探针配置)
*  TCP。检查是否可以建立 TCP 连接。(TCP 探针配置)
*  shell。运行 Shell 命令并检查结果。(Shell 命令探针配置)
*  SSH。通过 SSH 运行远程命令并检查结果。支持堡垒/跳转服务器(SSH 命令探针配置)
*  TLS。使用 TLS 连接到给定端口并(可选)验证已撤销或过期的证书(TLS 探针配置)
*  Host。在远程主机上运行 SSH 命令并检查 CPU、内存和磁盘使用情况。(主机负载探针)
*  client。支持以下本机客户端。它们都支持 mTLS 和数据检查,请参阅Native Client Probe 配置
*  MySQL。连接到 MySQL 服务器并运行SHOW STATUSSQL。
*  Redis。连接到 Redis 服务器并运行PING命令。
*  Memcache。连接到 Memcache 服务器并运行version命令或验证给定的键/值对。
*  MongoDB。连接到 MongoDB 服务器并执行 ping。
*  Kafka。连接到 Kafka 服务器并执行所有主题的列表。
*  PostgreSQL。连接到 PostgreSQL 服务器并运行SELECT 1SQL。
*  Zookeeper。连接到 Zookeeper 服务器并运行get /命令。

通知

EaseProbe 支持多种通知方式向你发送通知,下面这些是目前EaseProbe支持的所有通知工具,是从EaseProbe官网文档复制过来的。

Slack. Using Slack Webhook for notification delivery
Discord. Using Discord Webhook for notification delivery
Telegram. Using Telegram Bot for notification delivery
Teams. Support the Microsoft Teams notification delivery
Email. Support email notification delivery to one or more email addresses
AWS SNS. Support the AWS Simple Notification Service
WeChat Work. Support Enterprise WeChat Work notification delivery
DingTalk. Support the DingTalk notification delivery
Lark. Support the Lark(Feishu) notification delivery
SMS. SMS notification delivery with support for multiple SMS service providers
Twilio
Vonage(Nexmo)
YunPain
Log. Write the notification into a log file or Syslog.
Shell. Run a shell command to deliver the notification (see example)
RingCentral. Using RingCentral Webhook for notification delivery

报告和指标

EaseProbe 支持以下报告和指标:

SLA 报告通知。EaseProbe将使用定义的notify:方法发送每日、每周或每月SLA报告。
SLA 实时报告。EaseProbe的默认监听端口为0.0.0.0:8181。通过访问该服务,你将得到实时的SLA报告,可以是HTML格式(http://localhost:8181/), 也可以是 JSON格式(http://localhost:8181/api/v1/sla)。
SLA 数据持久性。默认情况下,SLA 将数据保存在 $CWD/data/data.yaml 。您可以通过编辑配置文件来配置此路径。 更多信息,请查看全局设置配置
Prometheus Metrics。默认情况下,EaseProbe 将侦听8181端口。通过访问此服务,您将获得一些预定义的 Prometheus 指标,地址是http://easeprobe:8181/metrics.

安装

大家可以选择适合自己的安装方式,我这边选择使用k8s方式来安装的,相关的yaml文件如何所示:

easeprobe-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: easeprobe
  namespace: devops
spec:
  replicas: 1
  selector:
    matchLabels:
      app: easeprobe
  template:
    metadata:
      labels:
        app: easeprobe
    spec:
      containers:
      - name: easeprobe
        image: megaease/easeprobe:latest
        ports:
        - containerPort: 8181
        volumeMounts:
          - mountPath: /opt/config.yaml
            name: configmap-volume-0
            subPath: config.yaml
          - mountPath: /opt/data
            name: pvc-volume-easeprobe-pvc
      volumes:
        - name: configmap-volume-0
          configMap:
            name: easeprobe-conf
            items:
              - key: config.yaml
                path: config.yaml
        - name: pvc-volume-easeprobe-pvc
          persistentVolumeClaim:
            claimName: easeprobe-pvc
easeprobe-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: easeprobe
  namespace: devops
spec:
  ports:
  - name: httpport
    port: 38181
    protocol: TCP
    targetPort: 8181
  type: ClusterIP

easeprobe-configmap.yaml

我这个configmap是复制的官网的例子,大家可以参考官方文档,根据自己的需求对configmap进行自定义配置。可以添加自己需要探活的服务。我使用的通知工具是钉钉。

apiVersion: v1
kind: ConfigMap
metadata:
  name: easeprobe-conf
data:
  config.yaml: |
    http:
      - name: Google
        url: https://www.google.com
        failure: 2

      - name: Prometheus (in K8s)
        url: http://prometheus:9090/graph

      - name: ElasticSearch-01 (outside K8s)
        url: http://172.20.2.201:9200
        headers:
          Authorization: "Basic ABCDEFG1234asdf=="
    host:
      servers:
        - name: server1
          host: ubuntu@172.20.1.116
          key: /opt/login.pem

        - name: server2
          host: ubuntu@172.20.2.117
          key: /opt/login.pem
    notify:
      slack:
        - name: "MegaEase Slack#alert"
          webhook: "https://hooks.slack.com/services/ASDFA/BBBASD/....."
      discord:
        - name: "MegaEase Discord#alert"
          webhook: "https://discord.com/api/webhooks/212121212/....."
    settings:
      probe:
        interval: 1m
      log:
        level: "info"

easeprobe-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: easeprobe-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 20Gi
  storageClassName: easeprobe-storage
status:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 20Gi

easeprobe-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: easeprobe-storage-nfs
spec:
  capacity:
    storage: 20Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: easeprobe-storage
  nfs:
    path: /data1/storage/easeprobe-data
    server: 10.10.2.24

将EaseProbe采集到的指标展示到grafana

1.首先将EaseProbe服务配置到prometheus的配置文件中。将以下信息配置到prometheus的scrape_configs下。

 # easeprobe
      - job_name: easeprobe
        honor_timestamps: true
        static_configs:
        - targets:
          - 10.10.0.1:8181

2.在grafana中将prometheus添加到数据源中,配置不同的SLA规则,就可以将EaseProbe采集到的数据展示到grafana上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值