Druid Web控制台与运维管理
Apache Druid的Web控制台是一个基于React和TypeScript构建的现代化数据管理界面,提供了强大的可视化监控和管理能力。本文详细解析了控制台的架构技术栈、核心功能模块(包括数据源管理、SQL工作台、数据加载和集群监控),以及运维最佳实践和故障排查方法,帮助用户高效管理和维护Druid集群。
Web控制台功能与界面解析
Apache Druid的Web控制台是一个功能强大的数据管理界面,为Druid集群提供了直观的可视化管理和监控能力。该控制台基于现代化的React技术栈构建,采用TypeScript开发,提供了丰富的用户界面组件和交互体验。
控制台架构与技术栈
Druid Web控制台采用现代化的前端技术架构:
控制台的核心技术特性包括:
- TypeScript强类型支持:确保代码质量和开发效率
- Blueprint.js组件库:提供一致的企业级UI体验
- 模块化架构:支持功能扩展和维护
- 响应式设计:适配不同屏幕尺寸
主要功能模块解析
数据源管理视图
数据源视图是控制台的核心功能之一,提供了对Druid数据源的全面管理:
// 数据源表格列配置示例
const tableColumns = {
'full': [
'Datasource name',
'Availability',
'Historical load/drop queues',
'Total data size',
'Running tasks',
'Segment rows',
'Segment size',
'Segment granularity',
'Total rows',
'Avg. row size',
'Replicated size',
'Compaction',
'% Compacted',
'Left to be compacted',
'Retention'
]
};
数据源视图提供的关键功能包括:
| 功能类别 | 具体功能 | 描述 |
|---|---|---|
| 监控指标 | 数据可用性 | 显示数据源的在线状态和副本数 |
| 容量管理 | 数据大小统计 | 展示总数据量、段大小、行数等指标 |
| 任务管理 | 运行中任务 | 显示与数据源相关的任务状态 |
| 压缩管理 | 压缩进度 | 展示数据压缩的完成百分比和剩余量 |
| 保留策略 | 数据保留规则 | 管理数据的自动保留和删除策略 |
SQL工作台功能
SQL工作台是数据分析师和开发人员最常用的功能,提供了强大的查询编辑和执行环境:
工作台支持的功能特性:
- DSQL语法高亮:专用的Druid SQL语法支持
- 查询参数化:支持参数化查询提高安全性
- 执行计划分析:展示查询的执行计划和性能指标
- 历史查询管理:保存和重用之前的查询
数据加载界面
数据加载界面提供了从多种数据源导入数据到Druid的能力:
// 数据加载步骤定义
const LOAD_DATA_STEPS = [
'input-source', // 输入源选择
'input-format', // 数据格式配置
'schema', // 模式定义
'destination', // 目标配置
'execution' // 执行确认
];
支持的数据源类型包括:
- 本地文件:CSV、JSON、Parquet等格式
- 云存储:S3、Azure Blob Storage、Google Cloud Storage
- 流数据源:Kafka、Kinesis实时数据流
- 数据库:JDBC连接的关系型数据库
监控和运维面板
运维面板提供了集群状态的实时监控:
| 监控指标 | 显示内容 | 告警阈值 |
|---|---|---|
| 节点状态 | Historical、Broker、Coordinator状态 | 节点离线 |
| 内存使用 | JVM堆内存使用情况 | >80%使用率 |
| 查询性能 | 查询延迟和吞吐量 | 延迟>1s |
| 任务队列 | 待处理任务数量 | 队列积压>100 |
界面交互设计
控制台采用直观的交互设计模式:
界面设计特点:
- 实时数据更新:通过轮询机制保持数据新鲜度
- 操作状态反馈:提供明确的操作成功/失败指示
- 批量操作支持:支持多选和批量管理操作
- 配置向导:提供步骤式配置引导用户体验
扩展性和定制化
Web控制台支持多种扩展方式:
- 视图组件扩展:可以添加新的功能视图模块
- API端点集成:支持自定义API端点的集成
- 主题定制:通过SCSS变量系统定制界面主题
- 国际化支持:支持多语言界面适配
控制台的模块化架构使得功能扩展变得简单,开发人员可以基于现有的组件体系快速添加新的管理功能。
通过深入了解Druid Web控制台的功能和界面设计,用户可以更有效地利用这个强大的工具来管理和监控Druid集群,提升数据运维的效率和质量。
数据源管理与任务监控
Druid Web控制台提供了强大的数据源管理和任务监控功能,让运维人员能够直观地管理和监控数据湖中的各种数据源以及运行中的任务。这些功能通过直观的界面和丰富的API集成,为大规模数据集群的日常运维提供了完整的解决方案。
数据源管理功能
Druid的数据源管理界面展示了集群中所有数据源的详细信息,包括:
| 监控指标 | 说明 | 格式化方式 |
|---|---|---|
| 数据源名称 | 数据源的唯一标识符 | 文本显示 |
| 可用性状态 | 数据源当前是否可用 | 状态标签 |
| 加载/丢弃队列 | Historical节点待加载/丢弃的段数量 | 格式化文本 |
| 总数据大小 | 数据源占用的总存储空间 | formatBytes |
| 运行任务数 | 当前针对该数据源运行的任务数量 | 计数统计 |
| 段行数统计 | 每个段包含的行数范围 | formatMillions |
| 段大小统计 | 每个段的大小范围 | formatBytes |
| 段粒度分布 | 按时间粒度统计的段分布 | 百分比显示 |
数据源操作功能
Druid Web控制台提供了丰富的数据源操作功能:
// 数据源操作类型定义
interface BasicAction {
icon: IconNames;
title: string;
onAction: () => void;
intent?: Intent;
disabled?: boolean;
}
// 数据源支持的操作
const datasourceActions: BasicAction[] = [
{
icon: IconNames.SEARCH_TEMPLATE,
title: '查看原始详情',
onAction: () => this.openDatasourceDetails(datasource)
},
{
icon: IconNames.EDIT,
title: '编辑保留规则',
onAction: () => this.openRetentionDialog(datasource, rules)
},
{
icon: IconNames.COMPRESSED,
title: '编辑压缩配置',
onAction: () => this.openCompactionDialog(datasource, compaction)
},
{
icon: IconNames.CROSS,
title: '删除数据源',
intent: Intent.DANGER,
onAction: () => this.openKillDialog(datasource)
}
];
任务监控体系
任务监控界面实时展示集群中所有任务的运行状态,支持按多种维度进行筛选和分组:
任务状态颜色编码
Druid使用颜色编码来直观显示任务状态:
| 状态 | 颜色 | 说明 |
|---|---|---|
| RUNNING | #2167d5 (蓝色) | 任务正在执行中 |
| WAITING | #d5631a (橙色) | 任务等待资源分配 |
| PENDING | #ffbf00 (黄色) | 任务在队列中等待 |
| SUCCESS | #57d500 (绿色) | 任务成功完成 |
| FAILED | #d5100a (红色) | 任务执行失败 |
| CANCELED | #858585 (灰色) | 任务被取消 |
压缩管理功能
数据压缩是Druid数据管理的重要功能,Web控制台提供了完整的压缩配置和监控:
// 压缩配置接口
interface CompactionConfig {
dataSource: string;
taskPriority?: number;
inputSegmentSizeBytes?: number;
maxRowsPerSegment?: number;
skipOffsetFromLatest?: string;
tuningConfig?: any;
taskContext?: Record<string, any>;
}
// 压缩状态监控
interface CompactionStatus {
dataSource: string;
scheduleStatus: string;
bytesAwaitingCompaction: number;
bytesCompacted: number;
bytesSkipped: number;
segmentCountAwaitingCompaction: number;
segmentCountCompacted: number;
segmentCountSkipped: number;
}
压缩进度监控
压缩任务的进度通过可视化方式展示:
保留规则管理
数据保留规则管理确保数据按照预定策略进行生命周期管理:
// 保留规则配置
interface Rule {
type: 'loadByPeriod' | 'dropByPeriod' | 'loadForever' | 'dropForever';
period?: string;
includeFuture?: boolean;
tieredReplicants?: Record<string, number>;
}
// 保留规则操作API
const retentionAPIs = {
// 获取数据源保留规则
getRules: (datasource: string) =>
Api.instance.get(`/druid/coordinator/v1/rules/${datasource}`),
// 设置数据源保留规则
setRules: (datasource: string, rules: Rule[]) =>
Api.instance.post(`/druid/coordinator/v1/rules/${datasource}`, rules),
// 删除数据源
killDatasource: (datasource: string, interval: string) =>
Api.instance.delete(
`/druid/coordinator/v1/datasources/${datasource}?kill=true&interval=${interval}`
)
};
实时监控告警
Druid Web控制台提供了实时的监控告警功能,当出现异常情况时会及时通知运维人员:
| 监控指标 | 告警阈值 | 处理建议 |
|---|---|---|
| 段加载队列积压 | > 100个段 | 检查Historical节点状态 |
| 压缩进度停滞 | 24小时无进展 | 检查压缩任务配置 |
| 任务失败率 | > 10% | 检查任务资源配置 |
| 数据增长异常 | 日增长 > 1TB | 检查数据摄入配置 |
API集成与扩展
所有管理功能都通过REST API暴露,支持自动化运维和第三方集成:
# 获取所有数据源信息
curl -X GET "http://druid-coordinator:8081/druid/coordinator/v1/datasources"
# 获取特定数据源详情
curl -X GET "http://druid-coordinator:8081/druid/coordinator/v1/datasources/{datasource}"
# 获取运行中的任务列表
curl -X GET "http://druid-overlord:8090/druid/indexer/v1/tasks"
# 强制运行压缩任务
curl -X POST "http://druid-coordinator:8081/druid/coordinator/v1/compaction/compact"
通过Druid Web控制台的这些功能,运维团队可以有效地管理大规模数据集群,确保数据的高可用性和查询性能,同时降低运维复杂度。
集群状态与性能指标查看
Druid Web控制台提供了全面的集群状态监控和性能指标查看功能,让运维人员能够实时掌握集群健康状况、服务状态以及性能表现。通过直观的可视化界面和详细的指标数据,用户可以快速识别潜在问题并进行性能优化。
集群状态概览
在Druid Web控制台的主页视图中,Status Card组件提供了集群的基本状态信息。通过调用/status API端点,控制台展示以下关键信息:
- Druid版本信息:显示当前运行的Apache Druid版本号
- 扩展模块数量:统计已加载的扩展模块总数
- 空值模式检测:显示与空值处理相关的服务器配置状态
服务状态监控
Services View是集群监控的核心组件,它通过多种API端点收集和展示所有Druid服务的详细信息:
| API端点 | 功能描述 | 数据内容 |
|---|---|---|
/druid/coordinator/v1/servers?simple | 获取所有服务节点信息 | 主机、类型、层级、当前大小、最大大小 |
/druid/coordinator/v1/loadqueue?simple | 获取加载队列信息 | 待加载段数、待删除段数、队列大小 |
/druid/indexer/v1/workers | 获取工作节点信息 | 容量使用、运行任务、最后完成时间 |
// 服务状态查询SQL示例
static SERVICE_SQL = `SELECT
"server" AS "service",
"server_type" AS "service_type",
"tier",
"host",
"plaintext_port",
"tls_port",
"curr_size",
"max_size",
"is_leader",
"start_time"
FROM sys.servers
ORDER BY service_type DESC, service DESC`;
性能指标可视化
Druid控制台使用多种格式化工具来展示性能指标数据:
数据大小格式化
// 字节大小格式化函数
export function formatBytes(n: NumberLike): string {
return numeral(n).format('0.00 b'); // 输出如: 10.00 KB
}
export function formatBytesCompact(n: NumberLike): string {
return numeral(n).format('0.00b'); // 输出如: 10.00KB
}
// 整数格式化
export function formatInteger(n: NumberLike): string {
return numeral(n).format('0,0'); // 输出如: 10,000
}
队列状态显示
控制台使用智能的队列状态格式化功能来展示加载和删除队列:
function formatQueues(
segmentsToLoad: NumberLike,
segmentsToLoadSize: NumberLike,
segmentsToDrop: NumberLike,
segmentsToDropSize: NumberLike,
): string {
const queueParts: string[] = [];
if (segmentsToLoad) {
queueParts.push(`${segmentsToLoad} segments to load (${formatBytesCompact(segmentsToLoadSize)})`);
}
if (segmentsToDrop) {
queueParts.push(`${segmentsToDrop} segments to drop (${formatBytesCompact(segmentsToDropSize)})`);
}
return queueParts.join(', ') || 'Empty load/drop queues';
}
服务类型分类与排序
Druid控制台对服务类型进行智能分类和排序,确保最重要的服务显示在顶部:
实时监控指标
Druid提供了丰富的实时监控指标,涵盖查询性能、摄入吞吐量、资源使用等方面:
查询性能指标
| 指标名称 | 描述 | 正常值范围 |
|---|---|---|
query/time | 查询完成时间 | < 1秒 |
query/bytes | 返回数据大小 | 根据查询结果变化 |
query/node/time | 单个节点查询时间 | < 1秒 |
query/node/ttfb | 首字节时间 | < 1秒 |
资源使用指标
pie title 集群资源使用分布
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



