cratedb 监控
cratedb监控
使用 Docker(和 JMX 监控)启动 Prometheus、Grafana 和 CrateDB
为了运行我们的工具,我们将使用 Docker。我们将使用docker-compose构建我们的容器,它非常方便地定义和运行多容器 Docker 应用程序。
Docker-compose 预装在您的 Docker 安装中。如果你没有安装 Docker,你可以在这里下载——只需按照弹出的说明进行操作即可。
Docker 安装完成后,创建一个工作目录并使用终端导航到那里。在那里,创建一个docker-compose.yml
包含以下内容的文件:
version: "2.3"
services:
cratedb:
image: "crate"
volumes:
- ./crate-jmx-exporter-1.0.0.jar:/jmxdir/crate-jmx-exporter-1.0.0.jar
ports:
- "4200:4200"
- "7071:7071"
environment:
CRATE_JAVA_OPTS: "-javaagent:/jmxdir/crate-jmx-exporter-1.0.0.jar=7071 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false"
prometheus:
image: "prom/prometheus"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: "grafana/grafana"
ports:
- "3000:3000"
(可以通过多种方式创建.yml文件。在macOS中,可以打开nano这样的终端文本编辑器,用.yml
扩展名保存文件。也可以使用文本编辑器。)
现在,让我们继续下一步。正如我们在介绍中简要提到的,为了抓取 CrateDB,我们使用了Java 管理扩展(JMX) 和 CrateDB JMX 监控功能。
要进行设置,请在.jar
此处下载最新的 JMX 监控。点击/1.0.0;在这篇博文中,我使用了名为crate-jmx-exporter-1.0.0.jar 的文件。然后,将 .jar 文件移动到您之前创建的工作目录中。
注意:让我们仔细看看这里发生了什么。借助我们之前定义的 .yml 文件,我们将同时启动三个容器(CrateDB、Prometheus 和 Grafana)并公开它们的相关端口。此外,我们通过使用volumes
指令将 JMXExporter .jar 包含到 Docker 容器中。然后,我们使用该-javaagent
指令启用 JMXExporter 并将其配置为使用端口 7071。您在文件中看到的其他参数是完全启用 JMX 监控所必需的。
最后一个配置项。在我们可以启动 Prometheus 之前,我们需要一个新的配置文件。为此,请创建一个新的 . 在您的工作文件夹中yml
命名的prometheus.yml
文件,并将以下内容粘贴到其中:
global:
scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
honor_timestamps: true
metrics_path: /metrics
scheme: http
static_configs:
- targets:
- cratedb:7071
现在,我们已准备好启动所有容器。使用终端导航到您的工作文件夹并运行以下命令:
docker-compose up
等待几秒钟让该过程结束。完成后,您可以访问 CrateDB、Prometheus 和 Grafana。
- 要连接到 CrateDB,请在浏览器中打开http://localhost:4200/
- 要连接到 Prometheus,请在浏览器中打开http://localhost:9090/
如果单击“Status -> Targets”,您将看到 CrateDB 已经设置为端点:
- 要连接到 Grafana,请在浏览器中打开http://localhost:3000/
注意:如果这是您第一次使用 Grafana,请先在用户名和密码字段中填写“admin”。您可以在下一个屏幕上定义您的凭据。
- 最后,如果您想查看公开的 JMX 指标,请访问http://localhost:7071/:
在 Grafana 中设置预构建的监控仪表板
现在我们已准备好所有工具,让我们设置一个仪表板来使用 Prometheus 作为数据源来监控 Grafana 中的集群。
在 Grafana 中,转到“配置 -> 数据源”:
现在,单击“添加数据源”:
然后选择“普罗米修斯”:
将出现一个配置页面。填写以下字段:
- 名称:普罗米修斯
- 主机网址:http://prometheus:9090/
您可以保留所有其他字段的默认配置。
完成后,滚动到页面末尾,然后单击“保存并测试”。如果一切顺利,您将看到一条消息,指出“数据源正在工作”。
现在,让我们设置仪表板。在左侧菜单中,单击“创建 -> 仪表板”:
您将看到如下所示的屏幕。单击“添加新面板”。(面板是 Grafana 仪表板的构建块)。
新面板的配置屏幕将打开。在这里,您可以定义面板的所有元素,例如其名称、查询、可视化类型等。
要了解 Grafana 提供的所有可能性,请查看他们的文档。
您可以通过构建自己的面板来进行实验。但是,如果您想加快流程,我将为您提供导入预先构建的监控仪表板的选项。
然后,在 Grafana 主页上,单击“创建 -> 导入”:
现在,按“上传 JSON 文件”,然后选择您刚刚下载的 JSON 文件。
完成后,单击“导入”。
瞧!您现在拥有一个完整的仪表板,可以实时监控 CrateDB。您的面板显示:
- 每秒查询数
- 最后一分钟的平均查询时长
- 查询错误率
- 垃圾回收率
- 分片数
- 正在使用的断路器内存
- CPU 使用率(秒)
- 正在使用的 JMV 内存
PS:这个仪表板类似于我们用于监控生产中真实集群的仪表板。这是我们的一位客户的样子:
摘:https://crate.io/a/monitoring-cratedb-with-prometheus-and-grafana/