监控和报警
Dashboard 模板会不定期更新。更新模板的方式见最后一小节。
欢迎提供更优的 dashboard。
Doris 使用 和 Grafana 进项监控项的采集和展示。
Prometheus
Prometheus 是一款开源的系统监控和报警套件。它可以通过 Pull 或 Push 采集被监控系统的监控项,存入自身的时序数据库中。并且通过丰富的多维数据查询语言,满足用户的不同数据展示需求。
Grafana
Grafana 是一款开源的数据分析和展示平台。支持包括 Prometheus 在内的多个主流时序数据库源。通过对应的数据库查询语句,从数据源中获取展现数据。通过灵活可配置的 Dashboard,快速的将这些数据以图表的形式展示给用户。
注: 本文档仅提供一种使用 Prometheus 和 Grafana 进行 Doris 监控数据采集和展示的方式。原则上不开发、维护这些组件。更多关于这些组件的详细介绍,请移步对应官方文档进行查阅。
监控数据
Doris 的监控数据通过 Frontend 和 Backend 的 http 接口向外暴露。监控数据以 Key-Value 的文本形式对外展现。每个 Key 还可能有不同的 Label 加以区分。当用户搭建好 Doris 后,可以在浏览器,通过以下接口访问到节点的监控数据:
- Frontend:
- Backend:
be_host:be_web_server_port/metrics
- Broker: 暂不提供
用户将看到如下监控项结果(示例为 FE 部分监控项):
这是一个以 Promethus 格式 呈现的监控数据。我们以其中一个监控项为例进行说明:
- “#” 开头的行为注释行。其中 HELP 为该监控项的描述说明;TYPE 表示该监控项的数据类型,示例中为 Gauge,即标量数据。还有 Counter、Histogram 等数据类型。具体可见 。
jvm_heap_size_bytes
即监控项的名称(Key);type="max"
即为一个名为type
的 Label,值为max
。一个监控项可以有多个 Label。- 最后的数字,如
41661235200
,即为监控数值。
整个监控架构如下图所示:
- 黄色部分为 Prometheus 相关组件。Prometheus Server 为 Prometheus 的主进程,目前 Prometheus 通过 Pull 的方式访问 Doris 节点的监控接口,然后将时序数据存入时序数据库 TSDB 中(TSDB 包含在 Prometheus 进程中,无需单独部署)。Prometheus 也支持通过搭建 Push Gateway 的方式,允许被监控系统将监控数据通过 Push 的方式推到 Push Gateway, 再由 Prometheus Server 通过 Pull 的方式从 Push Gateway 中获取数据。
- 为 Prometheus 报警组件,需单独部署(暂不提供方案,可参照官方文档自行搭建)。通过 Alert Manager,用户可以配置报警策略,接收邮件、短信等报警。
- 绿色部分为 Grafana 相关组件。Grafana Server 为 Grafana 的主进程。启动后,用户可以通过 Web 页面对 Grafana 进行配置,包括数据源的设置、用户设置、Dashboard 绘制等。这里也是最终用户查看监控数据的地方。
开始搭建
请在完成 Doris 的部署后,开始搭建监控系统。
在准备运行监控服务的机器上,解压下载后的 tar 文件。
打开配置文件 promethues.yml。这里我们提供一个示例配置并加以说明(配置文件为 yml 格式,一定注意统一的缩进和空格):
这里我们使用最简单的静态文件的方式进行监控配置。Prometheus 支持多种 方式,可以动态的感知节点的加入和删除。
停止 Promethues
目前没有发现正式的进程停止方式,直接 kill -9 即可。当然也可以将 Prometheus 设为一种 service,以 service 的方式启停。
访问 Prometheus
Prometheus 可以通过 web 页面进行简单的访问。通过浏览器打开 8181 端口,即可访问 Prometheus 的页面。点击导航栏中,
Status
-> ,可以看到所有分组 Job 的监控主机节点。正常情况下,所有节点都应为UP
,表示数据采集正常。点击某一个Endpoint
,即可看到当前的监控数值。如果节点状态不为 UP,可以先访问 Doris 的 metrics 接口(见前文)检查是否可以访问,或查询 Prometheus 相关文档尝试解决。至此,一个简单的 Prometheus 已经搭建、配置完毕。更多高级使用方式,请参阅 官方文档
Grafana
在 Grafana 官网 下载最新版本的 Grafana。这里我们以 5.2.1.linux-amd64 版本为例。
在准备运行监控服务的机器上,解压下载后的 tar 文件。
打开配置文件 conf/defaults.ini。这里我们仅列举需要改动的配置项,其余配置可使用默认。
启动 Grafana
通过以下命令启动 Grafana
该命令将后台运行 Grafana,访问端口为上面配置的 8182
停止 Grafana
目前没有发现正式的进程停止方式,直接 kill -9 即可。当然也可以将 Grafana 设为一种 service,以 service 的方式启停。
访问 Grafana
通过浏览器,打开 8182 端口,可以开始访问 Grafana 页面。默认用户名密码为 admin。
配置 Grafana
初次登陆,需要根据提示设置数据源(data source)。我们这里的数据源,即上一步配置的 Prometheus。
数据源配置的 Setting 页面说明如下:
- Name: 数据源的名称,自定义,比如 doris_monitor_data_source
- Type: 选择 Prometheus
- URL: 填写 Prometheus 的 web 地址,如
- Access: 这里我们选择 Server 方式,即通过 Grafana 进程所在服务器,访问 Prometheus。
- 其余选项默认即可。
- 点击最下方
Save & Test
,如果显示Data source is working
,即表示数据源可用。 - 确认数据源可用后,点击左边导航栏的 + 号,开始添加 Dashboard。这里我们已经准备好了 Doris 的 Dashboard 模板(本文档开头)。下载完成后,点击上方的
New dashboard
->Import dashboard
->Upload .json File
,将下载的 json 文件导入。 - 导入后,可以命名 Dashboard,默认是 。同时,需要选择数据源,这里选择之前创建的
doris_monitor_data_source
- 点击
Import
,即完成导入。之后,可以看到 Doris 的 Dashboard 展示。
- 至此,一个简单的 Grafana 已经搭建、配置完毕。更多高级使用方式,请参阅 官方文档
这里我们简要介绍 Doris Dashboard。Dashboard 的内容可能会随版本升级,不断变化,本文档不保证是最新的 Dashboard 说明。
顶栏
- 左上角为 Dashboard 名称。
- cluster_name: 即 Prometheus 配置文件中的各个 job_name,代表一个 Doris 集群。选择不同的 cluster,下方的图表将展示对应集群的监控信息。
- fe_master: 对应集群的 Master Frontend 节点。
- fe_instance: 对应集群的所有 Frontend 节点。选择不同的 Frontend,下方的图表将展示对应 Frontend 的监控信息。
- be_instance: 对应集群的所有 Backend 节点。选择不同的 Backend,下方的图表将展示对应 Backend 的监控信息。
- interval: 有些图表展示了速率相关的监控项,这里可选择以多大间隔进行采样计算速率(注:15s 间隔可能导致一些图表无法显示)。
Row
Grafana 中,Row 的概念,即一组图表的集合。如上图中的 Overview、Cluster Overview 即两个不同的 Row。可以通过点击 Row,对 Row 进行折叠。当前 Dashboard 有如下 Rows(持续更新中):
- Overview: 所有 Doris 集群的汇总展示。
- Cluster Overview: 选定集群的汇总展示。
- Query Statistic: 选定集群的查询相关监控。
- FE JVM: 选定 Frontend 的 JVM 监控。
- BE: 选定集群的 Backends 的汇总展示。
- BE Task: 选定集群的 Backends 任务信息的展示。
图表
一个典型的图标分为以下几部分:
- 鼠标悬停左上角的 i 图标,可以查看该图表的说明。
- 点击下方的图例,可以单独查看某一监控项。再次点击,则显示所有。
- 在图表中拖拽可以选定时间范围。
- 标题的 [] 中显示选定的集群名称。
- 一些数值对应左边的Y轴,一些对应右边的,可以通过图例末尾的
-right
区分。 - 点击图表名称->
Edit
,可以对图表进行编辑。
Dashboard 更新
- 点击 Grafana 左边栏的
+
,点击Dashboard
。 - 点击左上角的
New dashboard
,在点击右侧出现的Import dashboard
。 - 点击 ,选择最新的模板文件。
- 点击
Import(Overwrite)
,完成模板更新。