前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。
本記事では「暗号通貨のパンプ&ダンプスキームの検出」に関する論文をベースにbot開発の過程をまとめていきます。
Detecting Crypto Pump-and-Dump Schemes: A Thresholding-Based Approach to Handling Market Noisehttps://t.co/ctCJEV1MBs
— よだか(夜鷹/yodaka) (@yodakablog) March 22, 2025
🔒 セキュリティ強化 (APIキーの安全な管理と監視機能の強化)
次のステップでは、システムのセキュリティを強化するために、以下の2点に取り組みます。
✅ APIキーの安全な管理
✅ 監視機能の強化 (Prometheus + Grafana)
1. APIキーの安全な管理
🔎 なぜSecretsが重要か?
- APIキーや認証情報が
config.yaml
や環境変数
に直接記載されていると、リスクが高まります。 - KubernetesのSecretsを活用することで、APIキーなどの機密情報を安全に管理できます。
(1) Kubernetes Secretsの作成
Secrets作成コマンド
kubectl create secret generic api-keys \ --from-literal=BYBIT_API_KEY='your_bybit_api_key' \ --from-literal=BYBIT_API_SECRET='your_bybit_api_secret'
✅ 確認コマンド
kubectl get secrets kubectl describe secret api-keys
(2) deployment.yaml
の修正
環境変数をSecretsから読み込む
apiVersion: apps/v1 kind: Deployment metadata: name: crypto-bot spec: replicas: 3 selector: matchLabels: app: crypto-bot template: metadata: labels: app: crypto-bot spec: containers: - name: data-collector image: crypto_bot:latest env: - name: BYBIT_API_KEY valueFrom: secretKeyRef: name: api-keys key: BYBIT_API_KEY - name: BYBIT_API_SECRET valueFrom: secretKeyRef: name: api-keys key: BYBIT_API_SECRET
✅ Secretsの再適用
kubectl apply -f deployment.yaml
2. 監視機能の強化 (Prometheus + Grafana)
🔎 なぜ監視が重要か?
- システムのパフォーマンスや異常を早期発見
- トレードシステムではAPIエラーや急激なトラフィック増加が致命的になるため、監視は不可欠です。
(1) Prometheus + Grafanaのインストール
PrometheusはKubernetesのPodやNodeのメトリクスを収集します。
Grafanaはこれらのデータを可視化します。
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo add grafana https://grafana.github.io/helm-charts helm repo update
Prometheusのインストール
helm install prometheus prometheus-community/prometheus
Grafanaのインストール
helm install grafana grafana/grafana
✅ Grafanaの初期パスワード確認
kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode
✅ Grafanaダッシュボードへのアクセス
kubectl port-forward svc/grafana 3000:80
📊 ブラウザでアクセス → http://localhost:3000
(2) メトリクスの設定
- Exporter導入 (Node Exporter)
- KubernetesのPodやCPU、メモリの使用状況を監視するためのエクスポーターを追加
- Custom Metricsの設定
- Botの取引件数、エラー率、APIレスポンス時間などのカスタムメトリクスをPrometheusに追加
(3) metrics.py
(Botのメトリクス収集)
from prometheus_client import start_http_server, Gauge import time import random # メトリクス定義 trade_success = Gauge('crypto_bot_trade_success', 'Successful trades') trade_failure = Gauge('crypto_bot_trade_failure', 'Failed trades') # サンプルメトリクスデータ def generate_metrics(): while True: trade_success.set(random.randint(10, 100)) # 成功トレード数 trade_failure.set(random.randint(0, 10)) # 失敗トレード数 time.sleep(5) if __name__ == '__main__': start_http_server(8000) # ポート8000でメトリクスを提供 generate_metrics()
✅ deployment.yaml
への追加
- name: metrics image: crypto_bot:latest command: ["python", "metrics.py"] ports: - containerPort: 8000
✅ Prometheusのターゲット設定
scrape_configs: - job_name: 'crypto-bot' static_configs: - targets: ['metrics:8000']
3. 完了後の確認
✅ Secretsの確認
kubectl get secrets
✅ Prometheusのターゲット確認
kubectl get pods -l app=prometheus
✅ Grafanaダッシュボードの確認
- CPU使用率、メモリ使用率、APIエラー、取引数の可視化
4. 次のステップ
これで、システムの構築とセキュリティ強化が完了しました。
次は、システムの本番稼働に向けた最終準備として、以下のタスクに取り組みます。
✅ 運用ルールの確立:Botの稼働スケジュールや障害対応フローの策定
✅ 最終パフォーマンスチェック:シミュレーションと実運用の比較検証
✅ デプロイ後の安定性確認:サーバー監視とログの確認

次の記事では、システムの安定稼働を確保することについてまとめます。
-
-
開発記録#151(2025/3/25)「論文ベースのbot開発フローpart.13」
続きを見る