一、私有化部署概述
1.1 什么是私有化部署
私有化部署是指将观测云平台部署在企业自有服务器或私有云环境中,数据完全由企业掌控,满足数据安全合规要求。
1.2 适用场景
| 场景 | 说明 |
|---|---|
| 数据安全合规 | 金融、政务、医疗等敏感行业 |
| 网络隔离环境 | 内网、专网、air-gapped 环境 |
| 大规模数据 | 超大规模数据量,公有云成本过高 |
| 定制化需求 | 需要深度定制和二次开发 |
1.3 部署架构
┌─────────────────────────────────────────────────────────┐
│ 私有化部署架构 │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ DataKit │ │ DataKit │ │ DataKit │ │
│ │ 数据采集 │ │ 数据采集 │ │ 数据采集 │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 私有部署集群 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │GuanceDB │ │OpenSearch│ │ Kafka │ │ │
│ │ │ 时序数据 │ │ 日志分析 │ │ 消息队列 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 观测云控制台(私有) │ │
│ │ Web UI + API + 告警管理 │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
二、系统要求
2.1 硬件要求
最小部署(测试环境)
| 组件 | 配置 | 数量 |
|---|---|---|
| 计算节点 | 8核16GB | 1台 |
| 存储节点 | 100GB SSD | 1台 |
生产部署(推荐)
| 组件 | 配置 | 数量 | 说明 |
|---|---|---|---|
| 计算节点 | 16核32GB | 3台+ | 处理查询和计算 |
| 存储节点 | 500GB+ SSD | 3台+ | 时序数据和日志存储 |
| 管理节点 | 8核16GB | 2台 | 高可用管理平面 |
2.2 软件要求
| 软件 | 版本 | 用途 |
|---|---|---|
| Kubernetes | 1.24+ | 容器编排 |
| Docker | 20.10+ | 容器运行时 |
| Helm | 3.0+ | 包管理 |
| Linux | CentOS 7+/Ubuntu 20.04+ | 操作系统 |
三、部署架构
3.1 核心组件
┌────────────────────────────────────────────────────────────┐
│ 观测云私有化平台 │
├────────────────────────────────────────────────────────────┤
│ 数据采集层 │
│ ├── DataKit (DaemonSet) - 主机、容器、应用数据采集 │
│ ├── OpenTelemetry Collector - 标准化数据采集 │
│ └── 自定义采集器 - 业务自定义指标 │
├────────────────────────────────────────────────────────────┤
│ 数据存储层 │
│ ├── GuanceDB - 时序数据存储(Metrics) │
│ ├── OpenSearch - 日志和事件存储(Logs/Events) │
│ └── 对象存储 - 原始数据归档(S3/MinIO) │
├────────────────────────────────────────────────────────────┤
│ 计算分析层 │
│ ├── Query Engine - DQL查询引擎 │
│ ├── Stream Processing - 实时流处理 │
│ └── AI Engine - Obsy AI智能分析 │
├────────────────────────────────────────────────────────────┤
│ 应用服务层 │
│ ├── Web Console - 可视化控制台 │
│ ├── API Gateway - API网关 │
│ ├── Alert Manager - 告警管理 │
│ └── Report Service - 报表服务 │
└────────────────────────────────────────────────────────────┘
3.2 数据流向
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ 被监控 │────▶│ DataKit │────▶│ Kafka │────▶│ 存储层 │
│ 对象 │ │ 采集器 │ │ 消息队列 │ │GuanceDB │
└─────────┘ └─────────┘ └─────────┘ │OpenSearch│
└────┬────┘
│
┌───────────────────────┘
▼
┌─────────────┐
│ 查询分析层 │
│ DQL Engine │
└──────┬──────┘
│
▼
┌─────────────┐
│ Web Console│
│ 可视化控制台│
└─────────────┘
四、部署步骤
4.1 环境准备
# 1. 准备 Kubernetes 集群
# 使用 kubeadm、Rancher 或云厂商 K8s 服务
# 2. 安装 Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 3. 配置存储类(使用本地存储或 CSI 插件)
kubectl apply -f storage-class.yaml
# 4. 准备镜像仓库(离线环境需提前导入镜像)
# 私有镜像仓库: harbor.example.com/guance
4.2 部署核心组件
# 1. 添加观测云 Helm 仓库
helm repo add guance https://charts.guance.com
helm repo update
# 2. 创建命名空间
kubectl create namespace guance
# 3. 准备配置文件 values.yaml
cat > values.yaml <<EOF
# 基础配置
global:
storageClass: "local-storage"
imageRegistry: "harbor.example.com/guance"
# GuanceDB 配置
guancedb:
replicas: 3
persistence:
size: 500Gi
resources:
requests:
cpu: 4
memory: 8Gi
# OpenSearch 配置
opensearch:
replicas: 3
persistence:
size: 500Gi
# Kafka 配置
kafka:
replicas: 3
persistence:
size: 100Gi
# 控制台配置
console:
replicas: 2
ingress:
enabled: true
host: guance.company.com
EOF
# 4. 安装观测云
helm install guance guance/guance-stack \
-n guance \
-f values.yaml \
--timeout 30m
# 5. 检查部署状态
kubectl get pods -n guance
kubectl get svc -n guance
提示
部署完成后,可以通过 kubectl get pods -n guance -w 实时查看 Pod 启动状态。所有 Pod 状态为 Running 后,即可访问控制台。
4.3 配置数据采集
# 1. 获取 DataKit 安装命令
# 在控制台中生成安装 Token
# 2. 在目标主机安装 DataKit
curl -fsSL https://static.guance.com/datakit/install.sh | \
bash -s -- -t <YOUR_TOKEN> \
-s https://guance.company.com \
--insecure
# 3. 验证数据采集
datakit monitor
五、高可用配置
5.1 多副本部署
# 高可用配置示例
highAvailability:
enabled: true
# GuanceDB 三副本
guancedb:
replicas: 3
antiAffinity: hard
# OpenSearch 三副本
opensearch:
replicas: 3
minimumMasterNodes: 2
# Kafka 三副本
kafka:
replicas: 3
minInsyncReplicas: 2
# 控制台双活
console:
replicas: 2
pdb:
minAvailable: 1
5.2 数据备份策略
# 1. GuanceDB 备份
kubectl exec -it guancedb-0 -n guance -- \
guance-backup --dest /backup/guancedb-$(date +%Y%m%d)
# 2. OpenSearch 快照
kubectl exec -it opensearch-0 -n guance -- \
curl -X PUT "localhost:9200/_snapshot/backup/snapshot-$(date +%Y%m%d)"
# 3. 配置定时备份(CronJob)
kubectl apply -f backup-cronjob.yaml
六、运维管理
6.1 监控观测云本身
# 自监控配置
selfMonitoring:
enabled: true
# 监控 GuanceDB
guancedb:
metrics: true
logs: true
# 监控 OpenSearch
opensearch:
metrics: true
logs: true
# 监控 Kafka
kafka:
metrics: true
logs: true
6.2 扩容操作
# 1. 扩容 GuanceDB
kubectl scale statefulset guancedb --replicas=5 -n guance
# 2. 扩容控制台
kubectl scale deployment console --replicas=3 -n guance
# 3. 扩容存储
kubectl patch pvc guancedb-data-guancedb-0 -n guance \
--patch '{"spec":{"resources":{"requests":{"storage":"1Ti"}}}}'
附录:端口清单
| 组件 | 端口 | 说明 |
|---|---|---|
| GuanceDB | 8086 | 数据写入 |
| GuanceDB | 8088 | 查询接口 |
| OpenSearch | 9200 | REST API |
| Kafka | 9092 | 客户端连接 |
| Console | 80/443 | Web界面 |
| DataKit | 9529 | 本地API |