Bot

開発記録#156(2025/3/25)「論文ベースのbot開発フローpart.18」

2025年3月25日

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

本記事では「暗号通貨のパンプ&ダンプスキームの検出」に関する論文をベースにbot開発の過程をまとめていきます。

🔍 デプロイ後の安定性確認 (サーバー監視とログの確認)

次のステップでは、システムの安定性を確保するために、以下のポイントに焦点を当てて確認します。


1. 確認の目的

長期運用中の安定性確認
異常やエラーの早期発見と対策
リソース使用状況の監視
Botのパフォーマンス記録


2. 確認チェックリスト

チェック項目内容コマンド / 手順
Podの状態すべてのPodが正常稼働しているかkubectl get pods
データ収集の安定性データ収集のエラーや欠損がないかkubectl logs <data_collector_pod>
P&Dイベント検出精度実際の市場データと比較して検出率を確認Grafanaのダッシュボード確認
取引成功率取引成功率と利益率の確認Slack通知 / ログ確認
APIエラーの発生率API接続や認証エラーの有無kubectl logs <trade_executor_pod>
CPU/メモリ使用率使用状況が適正か (70%以下が目標)kubectl top pods
Slack通知通知の正常性を確認Slackチャネル確認

3. リアルタイム監視コマンド

Podの状態確認

kubectl get pods

ログのリアルタイム確認

kubectl logs -f <POD_NAME>

CPU/メモリ使用状況の確認

kubectl top pods

4. エラー発生時の対応フロー

エラータイプ原因対応方法
APIエラーBybit APIの通信失敗APIキーの確認 ➔ 再試行処理を確認
データ欠損ネットワーク遅延や接続断kubectl restart <data_collector_pod>
CPU/メモリ過負荷Botの計算量が増加kubectl scale deployment crypto-bot --replicas=5
Slack通知エラーSlack API接続失敗Slack Webhook URLの確認 ➔ 再デプロイ

5. 定期監視の自動化

監視スクリプト (monitor.py)

以下のスクリプトは、CPU/メモリ監視とエラー検出時のSlack通知を行います。

import subprocess
import requests
import time
from datetime import datetime

# Slack通知設定
SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/YOUR_WEBHOOK_URL"

# Slack通知関数
def send_slack_alert(message):
    payload = {"text": f"🚨 {message}"}
    requests.post(SLACK_WEBHOOK_URL, json=payload)

# CPU/メモリ使用率監視
def check_resource_usage():
    result = subprocess.getoutput("kubectl top pods")
    for line in result.split('\n')[1:]:
        data = line.split()
        pod_name, cpu, mem = data[0], int(data[1].replace('m', '')), int(data[2].replace('Mi', ''))
        
        if cpu > 700 or mem > 1000:
            alert_msg = f"{pod_name} のリソース使用率が高すぎます (CPU: {cpu}m, メモリ: {mem}Mi)"
            print(alert_msg)
            send_slack_alert(alert_msg)

# メイン処理
def monitor_system():
    while True:
        check_resource_usage()
        time.sleep(300)  # 5分ごとに確認

if __name__ == "__main__":
    monitor_system()

スクリプトの実行

python monitor.py

6. データの記録と評価

データ項目記録方法評価指標
取引結果Slack通知 + ログファイル取引成功率、利益率
P&D検出結果Slack通知 + Grafanaダッシュボード検出成功率、誤検出数
リソース使用率Prometheus/GrafanaCPU 70%以下、メモリ 70%以下
エラー発生数kubectl logs + Slack通知APIエラー 5%以下

7. 今後の対応計画

  1. ✅ システムの稼働状況確認 (ログ・リソース状況)
  2. ✅ APIエラーやBot停止などの問題がないか確認
  3. ✅ 取引の成功率や利益率を確認し、必要に応じた調整
  4. ✅ 1週間ごとの安定性チェックと最適化

8. 次のステップ

運用が安定した後の対応として、以下を検討するのが良いでしょう。

運用後の改善提案 (トレードロジックの強化や新機能の追加)
セキュリティ強化 (データバックアップ、APIキーのローテーションなど)
パフォーマンス改善 (アルゴリズムの最適化や計算の高速化)

Yodaka

次のステップとして、改善案に基づいたシステムの強化に取り組みます。

関連
開発記録#157(2025/3/25)「論文ベースのbot開発フローpart.19」

続きを見る

-Bot