观测云私有化部署方案

基于观测云技术架构整理的私有化部署指南

一、私有化部署概述

1.1 什么是私有化部署

私有化部署是指将观测云平台部署在企业自有服务器或私有云环境中,数据完全由企业掌控,满足数据安全合规要求。

1.2 适用场景

场景说明
数据安全合规金融、政务、医疗等敏感行业
网络隔离环境内网、专网、air-gapped 环境
大规模数据超大规模数据量,公有云成本过高
定制化需求需要深度定制和二次开发

1.3 部署架构

┌─────────────────────────────────────────────────────────┐ │ 私有化部署架构 │ ├─────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ DataKit │ │ DataKit │ │ DataKit │ │ │ │ 数据采集 │ │ 数据采集 │ │ 数据采集 │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ └────────────────┼────────────────┘ │ │ ▼ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 私有部署集群 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │GuanceDB │ │OpenSearch│ │ Kafka │ │ │ │ │ │ 时序数据 │ │ 日志分析 │ │ 消息队列 │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 观测云控制台(私有) │ │ │ │ Web UI + API + 告警管理 │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘

二、系统要求

2.1 硬件要求

最小部署(测试环境)

组件配置数量
计算节点8核16GB1台
存储节点100GB SSD1台

生产部署(推荐)

组件配置数量说明
计算节点16核32GB3台+处理查询和计算
存储节点500GB+ SSD3台+时序数据和日志存储
管理节点8核16GB2台高可用管理平面

2.2 软件要求

软件版本用途
Kubernetes1.24+容器编排
Docker20.10+容器运行时
Helm3.0+包管理
LinuxCentOS 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"}}}}'

附录:端口清单

组件端口说明
GuanceDB8086数据写入
GuanceDB8088查询接口
OpenSearch9200REST API
Kafka9092客户端连接
Console80/443Web界面
DataKit9529本地API