{
  "analysis_logger": {
    "buffer_len": 0,
    "enabled": true,
    "file_path": "/data/playlist/logs/24/tracking_analysis_20260521_171313_daaf7920.jsonl",
    "flush_interval_seconds": 15.0,
    "max_buffer_records": 32,
    "record_counts": {
      "scenario_event": 0,
      "tracking_summary": 1936
    },
    "started": false
  },
  "buffers": {
    "frame_buffer_len": 50,
    "frame_buffer_maxlen": 50,
    "frame_queue_maxsize": 30,
    "frame_queue_size": 0
  },
  "cctv_id": "24",
  "cgroup_memory": {
    "current_mb": 4279.512,
    "limit_mb": null
  },
  "detail": {
    "cctv_id": "24",
    "celery_child": {
      "exists": true,
      "fd_count": 107,
      "hwm_mb": 817.289,
      "name": "celery",
      "pid": 219,
      "rss_mb": 774.805,
      "state": "R (running)",
      "threads": 26
    },
    "ffmpeg_process_candidates": {
      "candidate_count": 0,
      "candidates": [],
      "enabled": true,
      "known_recorder_pids": [],
      "orphan_candidate_count": 0
    },
    "input_ffmpeg": {
      "pid": 2147820,
      "process": {
        "exists": false,
        "pid": 2147820
      },
      "returncode": -9,
      "running": false
    },
    "instance_id": "daaf7920",
    "is_running": false,
    "monitor_url": "http://192.168.50.221:1223/mjpeg/24",
    "phase": "channel_stop_complete",
    "recorder": {
      "active_count": 0,
      "cooldown_sec": 100,
      "last_event_key_count": 0,
      "oldest_recorder_age_sec": null,
      "recorders": [],
      "running_ffmpeg_count": 0,
      "running_pids": [],
      "stopping_count": 0
    },
    "resource": {
      "celery": {
        "count": 17,
        "top": [
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 247,
            "ppid": 1,
            "process": {
              "exists": true,
              "fd_count": 129,
              "hwm_mb": 984.988,
              "name": "celery",
              "pid": 247,
              "rss_mb": 923.781,
              "state": "S (sleeping)",
              "threads": 30
            }
          },
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 217,
            "ppid": 1,
            "process": {
              "exists": true,
              "fd_count": 114,
              "hwm_mb": 951.148,
              "name": "celery",
              "pid": 217,
              "rss_mb": 920.949,
              "state": "S (sleeping)",
              "threads": 30
            }
          },
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 221,
            "ppid": 1,
            "process": {
              "exists": true,
              "fd_count": 105,
              "hwm_mb": 844.961,
              "name": "celery",
              "pid": 221,
              "rss_mb": 841.551,
              "state": "S (sleeping)",
              "threads": 5
            }
          },
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 219,
            "ppid": 1,
            "process": {
              "exists": true,
              "fd_count": 107,
              "hwm_mb": 817.289,
              "name": "celery",
              "pid": 219,
              "rss_mb": 774.805,
              "state": "R (running)",
              "threads": 26
            }
          },
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 1,
            "ppid": null,
            "process": {
              "exists": true,
              "fd_count": 117,
              "hwm_mb": 720.336,
              "name": "celery",
              "pid": 1,
              "rss_mb": 720.336,
              "state": "S (sleeping)",
              "threads": 1
            }
          },
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 245,
            "ppid": 1,
            "process": {
              "exists": true,
              "fd_count": 106,
              "hwm_mb": 451.406,
              "name": "celery",
              "pid": 245,
              "rss_mb": 451.406,
              "state": "S (sleeping)",
              "threads": 2
            }
          },
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 243,
            "ppid": 1,
            "process": {
              "exists": true,
              "fd_count": 105,
              "hwm_mb": 451.398,
              "name": "celery",
              "pid": 243,
              "rss_mb": 451.398,
              "state": "S (sleeping)",
              "threads": 2
            }
          },
          {
            "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
            "name": "celery",
            "pid": 235,
            "ppid": 1,
            "process": {
              "exists": true,
              "fd_count": 101,
              "hwm_mb": 451.395,
              "name": "celery",
              "pid": 235,
              "rss_mb": 451.395,
              "state": "S (sleeping)",
              "threads": 2
            }
          }
        ],
        "total_fd_count": 1778,
        "total_rss_mb": 9597.938,
        "total_threads": 116
      },
      "cgroup_memory": {
        "current_mb": 4281.934,
        "limit_mb": null
      },
      "enabled": true,
      "ffmpeg": {
        "processes": {
          "count": 0,
          "top": [],
          "total_fd_count": 0,
          "total_rss_mb": 0.0,
          "total_threads": 0
        },
        "source": {
          "hash": "30a2caff8863",
          "length": 36,
          "scheme": "rtsp"
        }
      },
      "observed_epoch": 1779408057.87,
      "self": {
        "exists": true,
        "fd_count": 107,
        "hwm_mb": 817.289,
        "name": "celery",
        "pid": 219,
        "rss_mb": 774.805,
        "state": "R (running)",
        "threads": 26
      },
      "triton": {
        "active_model_count": 2,
        "active_models": [
          "yolo11_960_workAndHeavyEquipment_39class",
          "yolo8_640_workPPEHeavy"
        ],
        "gpu": {
          "available": true,
          "enabled": true,
          "gpus": [
            {
              "index": 0,
              "memory_total_mb": 49140.0,
              "memory_used_mb": 11647.0,
              "name": "NVIDIA RTX A6000",
              "util_gpu_pct": 0.0
            }
          ]
        },
        "protocol": "http",
        "visible_triton_processes": {
          "count": 0,
          "top": [],
          "total_fd_count": 0,
          "total_rss_mb": 0.0,
          "total_threads": 0
        }
      }
    },
    "selection": {
      "active_scenarios": [],
      "ai_config_error_message": null,
      "ai_config_mode": "category",
      "ai_on": true,
      "configured_model_count": 2,
      "configured_models": [
        "yolo11_960_workAndHeavyEquipment_39class",
        "yolo8_640_workPPEHeavy"
      ],
      "effective_categories": [
        "중장비"
      ],
      "enabled_scenarios": [],
      "explicit_scenario_selection": true,
      "render_categories": [
        "중장비"
      ],
      "requested_visual_categories": [
        "중장비"
      ],
      "required_model_count": 2,
      "required_model_error": null,
      "required_models": [
        "yolo11_960_workAndHeavyEquipment_39class",
        "yolo8_640_workPPEHeavy"
      ],
      "scenario_required_categories": []
    },
    "source_url": "rtsp://nk20001.iptime.org:554/live02",
    "task_id": "23361256-b140-49fa-809d-f4c8e19bc3fa",
    "trigger": "start"
  },
  "event_type": "channel_stop_complete",
  "ffmpeg": {
    "error_count": 322,
    "h264_decode_error_count": 352,
    "h264_decode_error_count_per_hour": 34,
    "input_options": [
      "-rtsp_transport",
      "tcp",
      "-timeout",
      "10000000"
    ],
    "last_error_at": "2026-05-22T09:00:56+09:00",
    "last_error_summary": "[h264 @ 0x61b0fe639dc0] cabac decode of qscale diff failed at 54 31 [h264 @ 0x61b0fe639dc0] error while decoding MB 54 31, bytestream 14414 [h264 @ 0x61b0ff1a6fc0] cabac decode of qscale diff failed at 29 3 [h264 @ 0x61b0ff1a6fc0] error while decoding MB 29 3, bytestream 3145",
    "last_exit_at": "2026-05-22T08:59:09+09:00",
    "last_returncode": 0,
    "last_stable_duration_sec": 108.627,
    "last_started_at": "2026-05-22T08:59:09+09:00",
    "pid": 2147820,
    "process": {
      "exists": false,
      "pid": 2147820
    },
    "restart_count": 363,
    "restart_count_per_hour": 28,
    "rtsp_timeout_count": 38,
    "rtsp_timeout_count_per_hour": 2,
    "rtsp_tolerant_mode": false,
    "running": false,
    "start_count": 364
  },
  "health": {
    "criticals": [
      "ffmpeg_not_running",
      "ffmpeg_restart_count_per_hour>=6",
      "last_stable_duration_sec<180"
    ],
    "level": "critical",
    "thresholds": {
      "ffmpeg_restart_count_per_hour": {
        "critical": 6,
        "warning": 3
      },
      "h264_decode_error_count_per_hour": {
        "critical": 50,
        "warning": 10
      },
      "last_frame_pushed_age_sec": {
        "critical": 30,
        "warning": 10
      },
      "last_frame_read_age_sec": {
        "critical": 30,
        "warning": 10
      },
      "last_stable_duration_sec": {
        "critical_below": 180,
        "warning_below": 600
      },
      "mjpeg_age_sec": {
        "critical": 30,
        "warning": 10
      },
      "rtsp_timeout_count_per_hour": {
        "critical": 30,
        "warning": 10
      }
    },
    "warnings": [
      "h264_decode_error_count_per_hour>=10"
    ]
  },
  "instance_id": "daaf7920",
  "last_frame_pushed_age_sec": 1.475,
  "last_frame_pushed_at": "2026-05-22T09:00:56+09:00",
  "last_frame_read_age_sec": 1.541,
  "last_frame_read_at": "2026-05-22T09:00:56+09:00",
  "mjpeg": {
    "age_sec": 1.468,
    "exists": true,
    "mtime": "2026-05-22T09:00:56.470921+09:00",
    "mtime_epoch": 1779408056.4709213,
    "path": "/data/playlist/streaming/24/mjpeg.jpg",
    "size_bytes": 149972
  },
  "monitor_url": "http://192.168.50.221:1223/mjpeg/24",
  "observed_at": "2026-05-22T09:00:58+09:00",
  "process": {
    "exists": true,
    "fd_count": 107,
    "hwm_mb": 817.289,
    "name": "celery",
    "pid": 219,
    "rss_mb": 774.805,
    "state": "R (running)",
    "threads": 26
  },
  "reason_codes": [
    "ffmpeg_not_running",
    "ffmpeg_churn_critical",
    "ffmpeg_unstable_after_restart_critical",
    "h264_decode_error_warning"
  ],
  "recommended_action": "channel_restart_recommended",
  "recorder": {
    "active_count": 0,
    "cooldown_sec": 100,
    "last_event_key_count": 0,
    "oldest_recorder_age_sec": null,
    "recorders": [],
    "running_ffmpeg_count": 0,
    "running_pids": [],
    "stopping_count": 0
  },
  "recovery_eligible": true,
  "resource": {
    "celery": {
      "count": 17,
      "top": [
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 247,
          "ppid": 1,
          "process": {
            "exists": true,
            "fd_count": 129,
            "hwm_mb": 984.988,
            "name": "celery",
            "pid": 247,
            "rss_mb": 923.781,
            "state": "S (sleeping)",
            "threads": 30
          }
        },
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 217,
          "ppid": 1,
          "process": {
            "exists": true,
            "fd_count": 114,
            "hwm_mb": 951.148,
            "name": "celery",
            "pid": 217,
            "rss_mb": 920.949,
            "state": "S (sleeping)",
            "threads": 30
          }
        },
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 221,
          "ppid": 1,
          "process": {
            "exists": true,
            "fd_count": 105,
            "hwm_mb": 844.961,
            "name": "celery",
            "pid": 221,
            "rss_mb": 841.551,
            "state": "S (sleeping)",
            "threads": 5
          }
        },
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 219,
          "ppid": 1,
          "process": {
            "exists": true,
            "fd_count": 107,
            "hwm_mb": 817.289,
            "name": "celery",
            "pid": 219,
            "rss_mb": 774.805,
            "state": "R (running)",
            "threads": 26
          }
        },
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 1,
          "ppid": null,
          "process": {
            "exists": true,
            "fd_count": 117,
            "hwm_mb": 720.336,
            "name": "celery",
            "pid": 1,
            "rss_mb": 720.336,
            "state": "S (sleeping)",
            "threads": 1
          }
        },
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 245,
          "ppid": 1,
          "process": {
            "exists": true,
            "fd_count": 106,
            "hwm_mb": 451.406,
            "name": "celery",
            "pid": 245,
            "rss_mb": 451.406,
            "state": "S (sleeping)",
            "threads": 2
          }
        },
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 243,
          "ppid": 1,
          "process": {
            "exists": true,
            "fd_count": 105,
            "hwm_mb": 451.398,
            "name": "celery",
            "pid": 243,
            "rss_mb": 451.398,
            "state": "S (sleeping)",
            "threads": 2
          }
        },
        {
          "cmdline": "/usr/bin/python3 /usr/local/bin/celery -A tasks worker --pool=prefork -c 16 -Q celery,cctv_queue,frames_queue,test_celery -n cctv_worker@%h --loglevel=warning",
          "name": "celery",
          "pid": 235,
          "ppid": 1,
          "process": {
            "exists": true,
            "fd_count": 101,
            "hwm_mb": 451.395,
            "name": "celery",
            "pid": 235,
            "rss_mb": 451.395,
            "state": "S (sleeping)",
            "threads": 2
          }
        }
      ],
      "total_fd_count": 1778,
      "total_rss_mb": 9597.938,
      "total_threads": 116
    },
    "cgroup_memory": {
      "current_mb": 4280.262,
      "limit_mb": null
    },
    "enabled": true,
    "ffmpeg": {
      "processes": {
        "count": 0,
        "top": [],
        "total_fd_count": 0,
        "total_rss_mb": 0.0,
        "total_threads": 0
      },
      "source": {
        "hash": "30a2caff8863",
        "length": 36,
        "scheme": "rtsp"
      }
    },
    "observed_epoch": 1779408057.94,
    "self": {
      "exists": true,
      "fd_count": 107,
      "hwm_mb": 817.289,
      "name": "celery",
      "pid": 219,
      "rss_mb": 774.805,
      "state": "R (running)",
      "threads": 26
    },
    "triton": {
      "active_model_count": 2,
      "active_models": [
        "yolo11_960_workAndHeavyEquipment_39class",
        "yolo8_640_workPPEHeavy"
      ],
      "gpu": {
        "available": true,
        "enabled": true,
        "gpus": [
          {
            "index": 0,
            "memory_total_mb": 49140.0,
            "memory_used_mb": 11647.0,
            "name": "NVIDIA RTX A6000",
            "util_gpu_pct": 0.0
          }
        ]
      },
      "protocol": "http",
      "visible_triton_processes": {
        "count": 0,
        "top": [],
        "total_fd_count": 0,
        "total_rss_mb": 0.0,
        "total_threads": 0
      }
    }
  },
  "source_url": "rtsp://nk20001.iptime.org:554/live02",
  "stage_metrics": {
    "counts": {
      "inference_timeouts": 0,
      "invalid_reads": 0,
      "processed_frames": 143,
      "pushed_frames": 143,
      "read_frames": 142,
      "select_timeouts": 0,
      "triton_result_errors": 0
    },
    "enabled": true,
    "fps": {
      "processed": 4.768,
      "pushed": 4.768,
      "read": 4.734
    },
    "hints": [
      "read_fps_below_target",
      "processed_fps_below_target",
      "push_fps_below_target",
      "frame_processing_p95_over_budget",
      "triton_wait_p95_dominant"
    ],
    "latency_ms": {
      "analyze": {
        "avg_ms": 3.221,
        "count": 143,
        "max_ms": 9.738,
        "p95_ms": 5.824
      },
      "gstreamer_push": {
        "avg_ms": 2.039,
        "count": 143,
        "max_ms": 5.359,
        "p95_ms": 3.519
      },
      "model_completion": {
        "model_count": 2,
        "models": {
          "yolo11_960_workAndHeavyEquipment_39class": {
            "avg_ms": 77.775,
            "count": 143,
            "max_ms": 161.331,
            "p95_ms": 141.952
          },
          "yolo8_640_workPPEHeavy": {
            "avg_ms": 82.046,
            "count": 143,
            "max_ms": 179.615,
            "p95_ms": 153.658
          }
        },
        "truncated_count": 0
      },
      "processing_total": {
        "avg_ms": 93.993,
        "count": 143,
        "max_ms": 189.299,
        "p95_ms": 162.299
      },
      "read_interval": {
        "avg_ms": 200.989,
        "count": 142,
        "max_ms": 303.476,
        "p95_ms": 267.511
      },
      "triton_wait": {
        "avg_ms": 83.477,
        "count": 143,
        "max_ms": 179.626,
        "p95_ms": 153.665
      },
      "visualize": {
        "avg_ms": 5.577,
        "count": 143,
        "max_ms": 16.924,
        "p95_ms": 9.14
      }
    },
    "target_fps": 10.0,
    "target_frame_budget_ms": 100.0,
    "window_elapsed_s": 29.994,
    "window_s": 30.0
  },
  "started_at": "2026-05-21T17:13:13+09:00",
  "state": "stopped",
  "task_id": "23361256-b140-49fa-809d-f4c8e19bc3fa",
  "trigger": "start"
}