mkdir -p /data/tempo/{conf,data,metrics-generator} mkdir -p /data/tempo/data/wal mkdir -p /data/tempo/metrics-generator/wal chown -R tempo:tempo /data/tempo chown -R tempo:tempo /data/tempo/data/traces # 创建一个专用用户并配置服务,确保 Tempo 在后台稳定运行 sudo useradd --no-create-home --shell /bin/false tempo || true # 下载tar包 wget https://github.com/grafana/tempo/releases/download/v2.9.0/tempo_2.9.0_linux_amd64.tar.gz # 解压 tar -xzf tempo_2.9.0_linux_amd64.tar.gz -C /data/tempo/ # 移动可执行文件到 /usr/local/bin/ mv /data/tempo/tempo /data/tempo/tempo-cli /data/tempo/tempo-query /usr/local/bin/ # 检查版本 tempo --version # 创建配置文件(本地为存储介质) vim local-tempo.yaml server: http_listen_port: 3200 # Tempo Web 端口(Grafana 对接用) grpc_listen_port: 9095 # gRPC 端口(可选) distributor: receivers: # 接收 OTel 追踪数据的协议(核心) otlp: protocols: grpc: # 监听 4317 端口(和 OTel Collector 一致,接收 OTLP gRPC 数据) endpoint: 0.0.0.0:4317 http: # 监听 4318 端口(接收 OTLP HTTP 数据) endpoint: 0.0.0.0:4318 ingester: max_block_duration: 5m # 数据块存储时长(测试环境可设小) trace_idle_period: 10s # 追踪会话空闲超时 compactor: compaction: block_retention: 30d # 追踪数据保留 30 天(可按需调整) storage: trace: backend: local # 单节点本地存储(生产可换 S3/MinIO) local: path: /data/tempo/data # 追踪数据存储目录(指定到 /data/tempo/data) wal: path: /data/tempo/data/wal # 预写日志目录(保证数据不丢) # 存储桶为存储对象 vim cos-tempo.yaml # 前台启动 /usr/local/bin/tempo \ -config.file=/data/tempo/conf/tempo.yaml \ -config.expand-env=true # 检查服务状态 systemctl is-active tempo # Systemd 服务守护进程 vim /etc/systemd/system/tempo.service [Unit] Description=Grafana Tempo Wants=network-online.target After=network-online.target [Service] User=tempo Group=tempo Type=simple # config.file 指定配置文件路径,这里的配置文件注意文件名 ExecStart=/usr/local/bin/tempo \ -config.file=/data/tempo/conf/tempo.yaml \ -config.expand-env=true Restart=always LimitNOFILE=65536 [Install] WantedBy=multi-user.target # 加载配置 sudo systemctl daemon-reload # 启动并设置自启 sudo systemctl enable --now tempo # 检查状态 sudo systemctl status tempo # 查看日志 journalctl -u tempo --no-pager -n 50