下载
编译与部署
开始使用
操作手册
- 数据导入
- 表结构变更
- 物化视图
- HTTP API
- FE
- MANAGER
- Bootstrap Action
- Cancel Load Action
- Check Decommission Action
- Check Storage Type Action
- Config Action
- Connection Action
- Get DDL Statement Action
- Get Load Info Action
- Get Load State
- Get FE log file
- Get Small File
- HA Action
- Hardware Info Action
- Health Action
- Log Action
- Logout Action
- Meta Action
- Meta Action
- Meta Replay State Action
- Profile Action
- Query Detail Action
- Query Profile Action
- Row Count Action
- Session Action
- Set Config Action
- Show Data Action
- Show Meta Info Action
- Show Proc Action
- Show Runtime Info Action
- Statement Execution Action
- System Action
- Table Query Plan Action
- Table Row Count Action
- Table Schema Action
- Upload Action
- CANCEL LABEL
- Compaction Action
- CONNECTION
- getlogfile
- GET LABEL STATE
- GET TABLETS ON A PARTICULAR BE
- PROFILE
- QUERY DETAIL
- RESTORE TABLET
- SHOW DATA
- MIGRATE SINGLE TABLET TO A PARTICULAR DISK
- GET TABLETS DISTRIBUTION BETWEEN DIFFERENT DISKS
- FE
- 运维操作
- 配置文件
- 拦截规则
- 备份与恢复
- Broker
- Colocation Join
- Bucket Shuffle Join
- 动态分区
- 数据导出
- 导出查询结果集
- 分区缓存
- 权限管理
- LDAP
- 资源管理
- 查询执行的统计
- Runtime Filter
- Segment V2 升级手册
- 文件管理器
- SQL MODE
- 时区
- 变量
- 更新
- 多租户和资源划分
最佳实践
扩展功能
- 审计日志插件
- Doris On ES
- Doris output plugin
- ODBC External Table Of Doris
- Doris 插件框架
- Spark Doris Connector
- Flink Doris Connector
- DataX doriswriter
- UDF
设计文档
SQL 手册
- SQL 函数
- 日期函数
- convert_tz
- curdate
- current_timestamp
- curtime,current_time
- date_add
- date_format
- date_sub
- datediff
- day
- dayname
- dayofmonth
- dayofweek
- dayofyear
- from_days
- from_unixtime
- hour
- makedate
- minute
- month
- monthname
- now
- second
- strtodate
- time_round
- timediff
- timestampadd
- timestampdiff
- to_days
- unix_timestamp
- utc_timestamp
- week
- weekofyear
- year
- yearweek
- 地理位置函数
- 字符串函数
- 聚合函数
- bitmap 函数
- Hash函数
- Doris 窗口函数使用
- CAST
- DIGITAL_MASKING
- 日期函数
- 语法帮助
- 用户账户管理
- 集群管理
- ADMIN CANCEL REPAIR
- ADMIN CLEAN TRASH
- ADMIN CHECK TABLET
- ADMIN REPAIR
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ADMIN SHOW DATA SKEW
- ALTER CLUSTER
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE CLUSTER
- CREATE FILE
- DROP CLUSTER
- DROP FILE
- ENTER
- INSTALL PLUGIN
- LINK DATABASE
- MIGRATE DATABASE
- SET LDAPADMINPASSWORD
- SHOW BACKENDS
- SHOW BROKER
- SHOW FILE
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW MIGRATIONS
- SHOW PLUGINS
- SHOW TABLE STATUS
- SHOW TRASH
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER TABLE
- ALTER VIEW
- BACKUP
- CANCEL ALTER
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE DATABASE
- CREATE ENCRYPTKEY
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- DROP DATABASE
- DROP ENCRYPTKEY
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- HLL
- RECOVER
- RESTORE
- SHOW ENCRYPTKEYS
- SHOW RESOURCES
- TRUNCATE TABLE
- CREATE FUNCTION
- DROP FUNCTION
- SHOW FUNCTIONS
- DML
- BROKER LOAD
- CANCEL LOAD
- DELETE
- EXPORT
- GROUP BY
- LOAD
- MINI LOAD
- MULTI LOAD
- PAUSE ROUTINE LOAD
- RESUME ROUTINE LOAD
- ROUTINE LOAD
- SHOW ALTER
- SHOW BACKUP
- SHOW CREATE FUNCTION
- SHOW CREATE ROUTINE LOAD
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- SHOW PARTITIONS
- SHOW PROPERTY
- SHOW REPOSITORIES
- SHOW RESTORE
- SHOW ROUTINE LOAD TASK
- SHOW ROUTINE LOAD
- SHOW SNAPSHOT
- SHOW TABLES
- SHOW TABLET
- SHOW TRANSACTION
- SPARK LOAD
- STOP ROUTINE LOAD
- STREAM LOAD
- ALTER ROUTINE LOAD
- INSERT
- UPDATE
- 数据类型
- 辅助命令
开发者手册
- 调试工具
- Doris BE存储层Benchmark工具
- 使用 Eclipse 搭建 FE 开发环境
- 使用 IntelliJ IDEA 搭建 FE 开发环境
- Apache Doris Be 开发调试
- Java 代码格式化
- C++ 代码格式化
Apache 社区
监控和报警
本文档主要介绍 Doris 的监控项及如何采集、展示监控项。以及如何配置报警(TODO)
注:0.9.0(不含)之前的版本请使用 revision 1。0.9.x 版本请使用 revision 2。0.10.x 版本请使用 revision 3。
Dashboard 模板会不定期更新。更新模板的方式见最后一小节。
欢迎提供更优的 dashboard。
组件
Doris 使用 Prometheus 和 Grafana 进项监控项的采集和展示。
Prometheus
Prometheus 是一款开源的系统监控和报警套件。它可以通过 Pull 或 Push 采集被监控系统的监控项,存入自身的时序数据库中。并且通过丰富的多维数据查询语言,满足用户的不同数据展示需求。
Grafana
Grafana 是一款开源的数据分析和展示平台。支持包括 Prometheus 在内的多个主流时序数据库源。通过对应的数据库查询语句,从数据源中获取展现数据。通过灵活可配置的 Dashboard,快速的将这些数据以图表的形式展示给用户。
注: 本文档仅提供一种使用 Prometheus 和 Grafana 进行 Doris 监控数据采集和展示的方式。原则上不开发、维护这些组件。更多关于这些组件的详细介绍,请移步对应官方文档进行查阅。
监控数据
Doris 的监控数据通过 Frontend 和 Backend 的 http 接口向外暴露。监控数据以 Key-Value 的文本形式对外展现。每个 Key 还可能有不同的 Label 加以区分。当用户搭建好 Doris 后,可以在浏览器,通过以下接口访问到节点的监控数据:
- Frontend:
fe_host:fe_http_port/metrics
- Backend:
be_host:be_web_server_port/metrics
- Broker: 暂不提供
用户将看到如下监控项结果(示例为 FE 部分监控项):
```
# HELP jvm_heap_size_bytes jvm heap stat
# TYPE jvm_heap_size_bytes gauge
jvm_heap_size_bytes{type="max"} 41661235200
jvm_heap_size_bytes{type="committed"} 19785285632
jvm_heap_size_bytes{type="used"} 10113221064
# HELP jvm_non_heap_size_bytes jvm non heap stat
# TYPE jvm_non_heap_size_bytes gauge
jvm_non_heap_size_bytes{type="committed"} 105295872
jvm_non_heap_size_bytes{type="used"} 103184784
# HELP jvm_young_size_bytes jvm young mem pool stat
# TYPE jvm_young_size_bytes gauge
jvm_young_size_bytes{type="used"} 6505306808
jvm_young_size_bytes{type="peak_used"} 10308026368
jvm_young_size_bytes{type="max"} 10308026368
# HELP jvm_old_size_bytes jvm old mem pool stat
# TYPE jvm_old_size_bytes gauge
jvm_old_size_bytes{type="used"} 3522435544
jvm_old_size_bytes{type="peak_used"} 6561017832
jvm_old_size_bytes{type="max"} 30064771072
# HELP jvm_direct_buffer_pool_size_bytes jvm direct buffer pool stat
# TYPE jvm_direct_buffer_pool_size_bytes gauge
jvm_direct_buffer_pool_size_bytes{type="count"} 91
jvm_direct_buffer_pool_size_bytes{type="used"} 226135222
jvm_direct_buffer_pool_size_bytes{type="capacity"} 226135221
# HELP jvm_young_gc jvm young gc stat
# TYPE jvm_young_gc gauge
jvm_young_gc{type="count"} 2186
jvm_young_gc{type="time"} 93650
# HELP jvm_old_gc jvm old gc stat
# TYPE jvm_old_gc gauge
jvm_old_gc{type="count"} 21
jvm_old_gc{type="time"} 58268
# HELP jvm_thread jvm thread stat
# TYPE jvm_thread gauge
jvm_thread{type="count"} 767
jvm_thread{type="peak_count"} 831
...
```
这是一个以 Prometheus 格式 呈现的监控数据。我们以其中一个监控项为例进行说明:
# HELP jvm_heap_size_bytes jvm heap stat
# TYPE jvm_heap_size_bytes gauge
jvm_heap_size_bytes{type="max"} 41661235200
jvm_heap_size_bytes{type="committed"} 19785285632
jvm_heap_size_bytes{type="used"} 10113221064
- "#" 开头的行为注释行。其中 HELP 为该监控项的描述说明;TYPE 表示该监控项的数据类型,示例中为 Gauge,即标量数据。还有 Counter、Histogram 等数据类型。具体可见 Prometheus 官方文档 。
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 中获取数据。
- Alert Manager 为 Prometheus 报警组件,需单独部署(暂不提供方案,可参照官方文档自行搭建)。通过 Alert Manager,用户可以配置报警策略,接收邮件、短信等报警。
- 绿色部分为 Grafana 相关组件。Grafana Server 为 Grafana 的主进程。启动后,用户可以通过 Web 页面对 Grafana 进行配置,包括数据源的设置、用户设置、Dashboard 绘制等。这里也是最终用户查看监控数据的地方。
开始搭建
请在完成 Doris 的部署后,开始搭建监控系统。
Prometheus
- 在 Prometheus 官网 下载最新版本的 Prometheus。这里我们以 2.3.2-linux-amd64 版本为例。
- 在准备运行监控服务的机器上,解压下载后的 tar 文件。
打开配置文件 prometheus.yml。这里我们提供一个示例配置并加以说明(配置文件为 yml 格式,一定注意统一的缩进和空格):
这里我们使用最简单的静态文件的方式进行监控配置。Prometheus 支持多种 服务发现 方式,可以动态的感知节点的加入和删除。
# my global config global: scrape_interval: 15s # 全局的采集间隔,默认是 1m,这里设置为 15s evaluation_interval: 15s # 全局的规则触发间隔,默认是 1m,这里设置 15s # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'PALO_CLUSTER' # 每一个 Doris 集群,我们称为一个 job。这里可以给 job 取一个名字,作为 Doris 集群在监控系统中的名字。 metrics_path: '/metrics' # 这里指定获取监控项的 restful api。配合下面的 targets 中的 host:port,Prometheus 最终会通过 host:port/metrics_path 来采集监控项。 static_configs: # 这里开始分别配置 FE 和 BE 的目标地址。所有的 FE 和 BE 都分别写入各自的 group 中。 - targets: ['fe_host1:8030', 'fe_host2:8030', 'fe_host3:8030'] labels: group: fe # 这里配置了 fe 的 group,该 group 中包含了 3 个 Frontends - targets: ['be_host1:8040', 'be_host2:8040', 'be_host3:8040'] labels: group: be # 这里配置了 be 的 group,该 group 中包含了 3 个 Backends - job_name: 'PALO_CLUSTER_2' # 我们可以在一个 Prometheus 中监控多个 Doris 集群,这里开始另一个 Doris 集群的配置。配置同上,以下略。 metrics_path: '/metrics' static_configs: - targets: ['fe_host1:8030', 'fe_host2:8030', 'fe_host3:8030'] labels: group: fe - targets: ['be_host1:8040', 'be_host2:8040', 'be_host3:8040'] labels: group: be
启动 Prometheus
通过以下命令启动 Prometheus:
nohup ./prometheus --web.listen-address="0.0.0.0:8181" &
该命令将后台运行 Prometheus,并指定其 web 端口为 8181。启动后,即开始采集数据,并将数据存放在 data 目录中。
停止 Prometheus
目前没有发现正式的进程停止方式,直接 kill -9 即可。当然也可以将 Prometheus 设为一种 service,以 service 的方式启停。
访问 Prometheus
Prometheus 可以通过 web 页面进行简单的访问。通过浏览器打开 8181 端口,即可访问 Prometheus 的页面。点击导航栏中,
Status
->Targets
,可以看到所有分组 Job 的监控主机节点。正常情况下,所有节点都应为UP
,表示数据采集正常。点击某一个Endpoint
,即可看到当前的监控数值。如果节点状态不为 UP,可以先访问 Doris 的 metrics 接口(见前文)检查是否可以访问,或查询 Prometheus 相关文档尝试解决。至此,一个简单的 Prometheus 已经搭建、配置完毕。更多高级使用方式,请参阅 官方文档
Grafana
在 Grafana 官网 下载最新版本的 Grafana。这里我们以 5.2.1.linux-amd64 版本为例。
在准备运行监控服务的机器上,解压下载后的 tar 文件。
打开配置文件 conf/defaults.ini。这里我们仅列举需要改动的配置项,其余配置可使用默认。
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used) data = data # Directory where grafana can store logs logs = data/log # Protocol (http, https, socket) protocal = http # The ip address to bind to, empty will bind to all interfaces http_addr = # The http port to use http_port = 8182
启动 Grafana
通过以下命令启动 Grafana
nohup ./bin/grafana-server &
该命令将后台运行 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 地址,如 http://host:8181
- Access: 这里我们选择 Server 方式,即通过 Grafana 进程所在服务器,访问 Prometheus。
- 其余选项默认即可。
- 点击最下方
Save & Test
,如果显示Data source is working
,即表示数据源可用。 - 确认数据源可用后,点击左边导航栏的 + 号,开始添加 Dashboard。这里我们已经准备好了 Doris 的 Dashboard 模板(本文档开头)。下载完成后,点击上方的
New dashboard
->Import dashboard
->Upload .json File
,将下载的 json 文件导入。 - 导入后,可以命名 Dashboard,默认是
Doris Overview
。同时,需要选择数据源,这里选择之前创建的doris_monitor_data_source
- 点击
Import
,即完成导入。之后,可以看到 Doris 的 Dashboard 展示。
至此,一个简单的 Grafana 已经搭建、配置完毕。更多高级使用方式,请参阅 官方文档
Dashboard 说明
这里我们简要介绍 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
。 - 点击
Upload .json File
,选择最新的模板文件。 - 选择数据源
- 点击
Import(Overwrite)
,完成模板更新。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论