NATS 6: 使用 Prometheus 和 Grafana 监测 NATS 服务器

NATS 6: 使用 Prometheus 和 Grafana 监测 NATS 服务器

  • 效果展示
  • 部署结构
  • 启动项目
  • 配置Grafana
  • 备注

  • 参考
    1. A Walkthough of Monitoring NATS with Prometheus and Grafana
    2. prometheus-nats-exporter
    3. Prometheus
    4. What is Prometheus
    5. Grafana
    6. 本tutorial中的文件
    7. A YouTube Video: Monitoring NATS using the Prometheus exporter and Grafana
  • Settings
    1. 本地ip: 10.80.28.53,将下面和文件中出现的这个ip换成你自己的。

效果展示

  • 先吸引一下眼球,这个界面可以用户自定义,这篇tutorial中也会给出配置的json文件。
  • 这里所有软件都使用Docker部署。NATS 6: 使用 Prometheus 和 Grafana 监测 NATS 服务器_第1张图片

部署结构

  • Docker compose 文件 docker-compose-monitoring.yml 如下。这里将所有容器的端口暴露在本地,个人觉得这样方便理解,实际部署可以考虑这些容器应加入同一个 docker network,下面具体说明每个容器。
    Doversion: "3"
    services:
      nats:
        image: nats:latest
        hostname: nats
        command: "-m 8222"
        ports:
          - "4222:4222"
          - "8222:8222"
      prometheus-nats-exporter:
        image: appcelerator/prometheus-nats-exporter
        hostname: prometheus-nats-exporter
        command: "-varz http://10.80.28.53:8222"
        ports:
          - "7777:7777"
      prometheus:
        image: prom/prometheus:latest
        hostname: prometheus
        volumes:
          - "./prometheus.yml:/etc/prometheus/prometheus.yml"
        ports:
          - "9090:9090"
      grafana:
        image: grafana/grafana
        hostname: grafana
        ports:
          - "3000:3000"
    
  • nats
    1. nats 暴露两个端口,4222是供客户端连接的,
    2. 8222是nats的状态监测端口,通过这个端口可以获得nats的实时情况,但是没有历史记录和查询历史功能或图像展示功能。
  • prometheus-nats-exporter
    1. 这个service的功能就是将nats在8222端口暴露的服务器实时信息,转化成 Prometheus 能识别的格式,
    2. 然后将转化的实时数据暴露在7777这个端口。
    3. 需要修改yml文件中的ip地址为你自己的地址。
  • Prometheus
    1. 只简述这里用到的功能,Prometheus 在7777这个端口上监听实时数据,并以固定频率将数据保存在本地,并提供 PromQL 来查询历史数据,
    2. 同时 Prometheus 提供使用 PromQL 查询的 API,这个端口就是暴露出来的9090。
    3. 容器的特性参考Dockerfile,根据Dockerfile发现 Prometheus 容器的配置文件位置是 /etc/prometheus/prometheus.yml
    4. 数据本地存储的位置是 /prometheus
    5. 同时将配置文件 prometheus.yml 中的ip换成你自己的。
  • Grafana
    1. 暴露3000端口供浏览器登录,
    2. 在登录后设置数据源为Prometheus,即Prometheus暴露的9090端口,
    3. 并通过载入界面配置文件 grafana-nats-dash.json 展示最开看到的监测界面。
  • 整个结构如下图所示
4222
8222
7777
9090
3000
Client
nats
prometheus-nats-exporter
prometheus
grafana
browser
DB

启动项目

  • 将所需文件 docker-compose-monitoring.yml prometheus.yml 考到当前目录下,然后运行:
$ ls
docker-compose-monitoring.yml  grafana-nats-dash.json  prometheus.yml
$ sudo docker-compose -f docker-compose-monitoring.yml up

配置Grafana

  • 浏览器登录 http://localhost:3000/login 默认用户名密码 admin/admin。点击skip跳过设置新密码进入home dashboard,点击add data source,在图标中选择 Prometheus,按照下图设置数据源,将ip换成你自己的,这里用localhost应该不行,因为网站是运行在容器中的。点击save & test。
    NATS 6: 使用 Prometheus 和 Grafana 监测 NATS 服务器_第2张图片
  • 点击上图中左侧红圈内图标,返回 home dashboard ,点击 New dashboard,再点击左上角 New dashboard右边的小倒三角,在新界面右侧的选项中选择Import dashboard。如果提示未保存警告,选择丢弃。然后将 grafana-nats-dash.json 文件中的内容全部复制到 paste JSON 输入框中,点击 Load。然后再最下面的选项框(Select a Prometheus data source)中选择刚刚设置的数据源NATS-Prometheus。点击Import,然后就大功告成了,你将看到最开始显示的展示界面。

备注

  • 同时检测多个NATS服务器,参考:Monitoring NATS using the Prometheus exporter and Grafana

你可能感兴趣的:(docker,nats,prometheus,grafana)