Docker環境インストール
DockerコンテナベースのGoアプリケーションにWhaTapモニタリングエージェントをインストールする方法を案内します。次の2つの方法から選択してください。
-
クイックインストール方法: Dockerfileの作成からコンテナの実行、モニタリングデータの確認までの全インストールプロセス
-
デプロイ環境別設定: アーキテクチャ(x64/ARM64)、Kubernetes、Docker Compose環境別の 追加設定方法
Tips
インストールを開始する前に、次の情報を準備してください。
- WhaTapプロジェクトアクセスキー([プロジェクトメニュー] > [管理] > [エージェントインストール]で確認)
- WhaTap収集サーバーIPアドレス
クイックインストール方法
3つのファイルだけでWhaTapモニタリングが適用されたDockerイメージをビルドできます。
ステップ1. 必須ファイルの準備
プ ロジェクトルートに次の3つのファイルを作成してください。
- 1. Dockerfile
- 2. entrypoint.sh
- 3. main.go (例)
# ============================================
# Build stage - whatap-go-instビルド
# ============================================
FROM golang:1.21-alpine AS builder
WORKDIR /app
# whatap-go-instインストール
#RUN go install github.com/whatap/go-api-inst/cmd/whatap-go-inst@latest
RUN wget -qO- https://github.com/whatap/go-api-inst/releases/latest/download/whatap-go-inst_linux_amd64.tar.gz | tar xz -C /usr/local/bin/
# ソースコピー
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# whatap-go-instビルド
RUN whatap-go-inst go build -o /app/main .
# ============================================
# Runtime stage
# ============================================
FROM alpine:latest
WORKDIR /app
# WhaTapデータ中継エージェントインストール
RUN apk add --no-cache wget
RUN wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/x86_64/whatap-agent.tar.gz
RUN tar -xvzf whatap-agent.tar.gz -C /
RUN rm whatap-agent.tar.gz
# アプリケーションコピー
COPY /app/main .
# 起動スクリプト
COPY entrypoint.sh /app/
RUN chmod +x /app/entrypoint.sh
ENTRYPOINT ["/app/entrypoint.sh"]
#!/bin/sh
# whatap.conf生成 (環境変数から)
mkdir -p /app/whatap_home
cat > /app/whatap_home/whatap.conf << EOF
license=${WHATAP_LICENSE}
whatap.server.host=${WHATAP_SERVER_HOST}
app_name=${WHATAP_APP_NAME:-myapp}
EOF
export WHATAP_HOME=/app/whatap_home
# データ中継エージェン ト起動後、アプリケーション実行
/usr/whatap/agent/whatap-agent start
exec ./main
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Hello WhaTap"})
})
r.Run(":8080")
}
ステップ2. イメージビルド
docker build -t my-go-app .
ステップ3. コンテナ実行
環境変数でWhaTap設定を渡します。
docker run -d \
-e WHATAP_LICENSE={アクセスキー} \
-e WHATAP_SERVER_HOST={収集サーバーIP} \
-e WHATAP_APP_NAME=myapp \
-p 8080:8080 \
my-go-app
ステップ4. モニタリング確認
- アプリケーションにトラフィック発生:
curl http://localhost:8080 - WhaTapモニタリングサービスでデータ確認
データが表示されませんか?
トラブルシューティングセクションを参照してください 。
デプロイ環境別設定
アーキテクチャ別Dockerfile設定
前述のクイックスタート例は**x64 (AMD64)**を基準としています。ARM64環境ではエージェントダウンロードURLのみ変更してください。
WhaTapエージェントのアーキテクチャ別URL
| アーキテクチャ | エージェントダウンロードURL |
|---|---|
| x64 (AMD64) | https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/x86_64/whatap-agent.tar.gz |
| ARM64 (AArch64) | https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/aarch64/whatap-agent.tar.gz |
ARM64 Dockerfile修正例
Dockerfileのエージェントインストール部分のみ変更:
# Runtime stageで変更
RUN apk add --no-cache wget && \
wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/aarch64/whatap-agent.tar.gz && \
tar -xvzf whatap-agent.tar.gz -C / && rm whatap-agent.tar.gz
ARM64完全なDockerfileを表示
FROM golang:1.21-alpine AS builder
WORKDIR /app
# whatap-go-instインストール
#RUN go install github.com/whatap/go-api-inst/cmd/whatap-go-inst@latest
RUN wget -qO- https://github.com/whatap/go-api-inst/releases/latest/download/whatap-go-inst_linux_amd64.tar.gz | tar xz -C /usr/local/bin/
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN whatap-go-inst go build -o /app/main .
FROM alpine:latest
WORKDIR /app
RUN apk add --no-cache wget && \
wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/aarch64/whatap-agent.tar.gz && \
tar -xvzf whatap-agent.tar.gz -C / && rm whatap-agent.tar.gz
COPY /app/main .
COPY entrypoint.sh /app/
RUN chmod +x /app/entrypoint.sh
ENTRYPOINT ["/app/entrypoint.sh"]
Kubernetesデプロイ
Dockerイメージをビルドした後、Kubernetesクラスターにデプロイできます。
ステップ1: Dockerイメージをレジストリにプッシュ
# イメージタグ指定
docker tag my-go-app:latest your-registry/my-go-app:v1.0
# レジストリプッシュ
docker push your-registry/my-go-app:v1.0
ステップ2: WhaTap設定Secret作成
kubectl create secret generic whatap-secret \
--from-literal=license={アクセスキー}
ステップ3: Deploymentデプロイ
- deployment.yaml
- service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-go-app
spec:
replicas: 3
selector:
matchLabels:
app: my-go-app
template:
metadata:
labels:
app: my-go-app
spec:
containers:
- name: my-go-app
image: your-registry/my-go-app:v1.0
ports:
- containerPort: 8080
env:
- name: WHATAP_LICENSE
valueFrom:
secretKeyRef:
name: whatap-secret
key: license
- name: WHATAP_SERVER_HOST
value: "{収集サーバーIP}"
- name: WHATAP_APP_NAME
value: "my-go-app"
# Kubernetesメタデータ (オプション)
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
apiVersion: v1
kind: Service
metadata:
name: my-go-app
spec:
selector:
app: my-go-app
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
環境変数の説明
必須環境変数
| 環境変数 | 説明 | 例 |
|---|---|---|
WHATAP_LICENSE | WhaTapプロジェクトアクセスキー | x4t2r... |
WHATAP_SERVER_HOST | WhaTap収集サーバーIP | 13.124.11.223 |
WHATAP_APP_NAME | アプリケーション名 (オプション) | my-go-app |
Kubernetesメタデータ (オプション)
ポッドの実行位置情報をWhaTapに渡すには追加してください:
| 環境変数 | 説明 |
|---|---|
NODE_IP | ポッドが実行されているノードのIP |
NODE_NAME | ポッドが実行されているノードの名前 |
POD_NAME | ポッドの名前 |
Docker Compose
docker-compose.yml
version: '3.8'
services:
my-go-app:
build: .
ports:
- "8080:8080"
environment:
- WHATAP_LICENSE={アクセスキー}
- WHATAP_SERVER_HOST={収集サーバーIP}
- WHATAP_APP_NAME=my-go-app
restart: unless-stopped
docker-compose up -d
トラブルシューティング
モニタリングデータが表示されない場合
ステップ1: 環境変数の確認
コンテナ内部で環境変数が正しく設定されているか確認:
docker exec -it <container_id> sh
echo $WHATAP_LICENSE
echo $WHATAP_SERVER_HOST
cat /app/whatap_home/whatap.conf
ステップ2: エージェント実行の確認
# エージェントプロセス確認
docker exec -it <container_id> ps -ef | grep whatap
# エージェントログ確認
docker exec -it <container_id> cat /app/whatap_home/logs/whatap-*.log
正常出力例:
root 12 1 0 Jan21 ? 00:00:03 /usr/whatap/agent/whatap-agent
ステップ3: ネットワークの確認
WhaTap収集サーバー(6600ポート)へのアウトバウンド接続が可能か確認:
docker exec -it <container_id> nc -zv {収集サーバーIP} 6600
計測が適用されない場合
計測詳細ログの確認
# ビルド時のデバッグ出力
GO_API_AST_DEBUG=1 whatap-go-inst go build ./...
一般的な問題と解決方法
| 症状 | 原因 | 解決方法 |
|---|---|---|
| データ未受信 | 環境変数未設定 | WHATAP_LICENSE、WHATAP_SERVER_HOST確認 |
| エージェント起動失敗 | ネットワーク遮断 | 6600ポートアウトバウンド許可 |
| 計測未適用 | 初期化漏れ | Dockerfileにwhatap-go-inst init追加確認 |
| ARM64エラー | 誤ったバイナリ | アーキテクチャ別エージェントURL確認 |
追加サポート
上記の方法で解決しない場合:
-
WhaTapサポートセンターにお問い合わせ
-
次の情報を提供:
- Dockerfile全体の内容
- エージェントログ (
/app/whatap_home/logs/) docker logs <container_id>の出力