基于 Docker Compose
基础要求
- 部署服务器需预留 CPU、内存资源在 4C、8G 以上,磁盘可用空间不小于 100G。
- 为减少部署复杂度,建议基于 HAP 现有服务器进行部署运维平台。
- 使用 外部组件时,则需通过环境变量将相关组件的连接信息传递给
agent服务。
开始部署
拉取镜像(离线包下载)
docker pull nocoly/ops-gateway:1.2.4
docker pull nocoly/ops-prometheus:1.2.2
docker pull nocoly/ops-grafana:1.2.5
docker pull nocoly/ops-alloy:1.2.4
docker pull nocoly/ops-loki:1.2.2
docker pull nocoly/ops-tempo:1.2.2
docker pull nocoly/ops-agent:1.2.0
docker pull nocoly/ops-nodeagent:1.2.0
创建配置文件
cat > /data/hap/script/ops.yaml <<\EOF
version: '3'
services:
gateway:
image: nocoly/ops-gateway:1.2.4
ports:
- "48881:48881"
environment: &common_env
TZ: "Asia/Shanghai"
ENV_OPS_TOKEN: "SS9PobGG7SDTpcyfSZ1VVmn3gCmy2P52tYk" # 首次部署务必调整,此值为运维平台访问认证密钥
# ===================== 子路径(可选)=====================
# 通过反向代理挂载子路径时填写,如 /mdis;直接端口访问时删除此行
# ENV_OPS_SUB_PATH: /mdis
# ===================== 主机监控(可选)=====================
# Node Exporter 主机列表,格式:别名/IP:端口,多个用逗号分隔
ENV_PROMETHEUS_HOST: "hap_1/192.168.1.12:59100" # 调整为部署服务器实际内网 IP,端口固定 59100
# ===================== 中间件监控(可选)=====================
ENV_PROMETHEUS_KAFKA: "kafka_1/agent:9308"
ENV_PROMETHEUS_ELASTICSEARCH: "elasticsearch_1/agent:9114"
ENV_PROMETHEUS_REDIS: "redis_1/agent:9121"
ENV_PROMETHEUS_MONGODB: "mongodb_1/agent:9216"
ENV_PROMETHEUS_MYSQL: "mysql_1/agent:9104"
# ===================== 中间件连接信息(可选)=====================
ENV_MYSQL_HOST: "sc"
ENV_MYSQL_PORT: "3306"
ENV_MYSQL_USERNAME: "root"
ENV_MYSQL_PASSWORD: "123456"
ENV_MONGODB_URI: "mongodb://sc:27017"
ENV_MONGODB_OPTIONS: ""
ENV_REDIS_HOST: "sc"
ENV_REDIS_PORT: "6379"
ENV_REDIS_PASSWORD: "123456"
ENV_KAFKA_ENDPOINTS: "sc:9092"
ENV_ELASTICSEARCH_ENDPOINTS: "sc:9200"
ENV_ELASTICSEARCH_PASSWORD: "md:ESPassWD1234"
ENV_PROMETHEUS_SERVER: "http://ops-prometheus:9090" # Prometheus 内部地址
ENV_FLINK_URL: "http://flink:8081" # 未部署 Flink 则注释此行
# ===================== 告警邮件(可选)=====================
# ENV_SMTP_ENABLED: "true"
# ENV_SMTP_HOST: "smtp.example.com"
# ENV_SMTP_PORT: "465"
# ENV_SMTP_USER: "send@example.com"
# ENV_SMTP_PASSWORD: "your-password"
# ENV_SMTP_SKIPVERIFY: "true"
# ENV_SMTP_FROM_ADDR: "send@example.com"
# ENV_SMTP_FROM_NAME: "Grafana Alert"
depends_on:
- ops-prometheus
- ops-grafana
- ops-loki
- ops-tempo
- ops-alloy
ops-prometheus:
image: nocoly/ops-prometheus:1.2.2
volumes:
- ./volume/data/prometheus/server/:/data/prometheus/server/
environment:
<<: *common_env
ops-grafana:
image: nocoly/ops-grafana:1.2.5
volumes:
- ./volume/data/prometheus/grafana/:/var/lib/grafana/
environment:
<<: *common_env
GF_SECURITY_ALLOW_EMBEDDING: "true"
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_AUTH_ANONYMOUS_ORG_ROLE: Editor
GF_SECURITY_COOKIE_SAMESITE: lax
GF_USERS_DEFAULT_THEME: light
ops-loki:
image: nocoly/ops-loki:1.2.2
volumes:
- ./volume/data/loki/:/loki/
environment:
ENV_LOKI_RETENTION: "720h" # 日志保留时长,默认 30 天
# ===================== S3/MinIO 存储(可选)=====================
# 不填则使用本地文件系统存储
# ENV_S3_ENDPOINT: "http://minio:9000"
# ENV_S3_BUCKET: "loki"
# ENV_S3_ACCESS_KEY: "mdstorage"
# ENV_S3_SECRET_KEY: "your-secret-key"
ops-tempo:
image: nocoly/ops-tempo:1.2.2
volumes:
- ./volume/data/tempo/:/var/tempo/
environment:
ENV_TEMPO_RETENTION: "720h" # 链路数据保留时长 ,默认 30 天
ops-alloy:
image: nocoly/ops-alloy:1.2.4
ports:
- "4317:4317" # OTLP gRPC,供应用上报链路数据
- "4318:4318" # OTLP HTTP,供应用上报链路数据
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./volume/data/alloy/:/var/lib/alloy/data/
environment:
ENV_TEMPO_GRPC_URL: "http://ops-tempo:4317"
ENV_PROMETHEUS_REMOTE_WRITE_URL: "http://ops-prometheus:9090/api/v1/write"
ENV_LOKI_PUSH_URL: "http://ops-loki:3100/loki/api/v1/push"
agent:
image: nocoly/ops-agent:1.2.0
environment:
<<: *common_env
nodeagent:
image: nocoly/ops-nodeagent:1.2.0
volumes:
- /:/host:ro,rslave
network_mode: host
pid: host
environment:
<<: *common_env
networks:
script_default:
external: true
EOF
启动服务
docker-compose -f /data/hap/script/ops.yaml up -d
停止服务可使用以下命令:
docker-compose -f /data/hap/script/ops.yaml down
访问运维平台
访问地址为:
http://部署服务器IP:48881
- 登录 Token 为
ops.yaml中的ENV_OPS_TOKEN环境变量值