cd1-agent 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. cd1_agent-0.1.0/PKG-INFO +429 -0
  2. cd1_agent-0.1.0/README.md +357 -0
  3. cd1_agent-0.1.0/cd1_agent.egg-info/PKG-INFO +429 -0
  4. cd1_agent-0.1.0/cd1_agent.egg-info/SOURCES.txt +415 -0
  5. cd1_agent-0.1.0/cd1_agent.egg-info/dependency_links.txt +1 -0
  6. cd1_agent-0.1.0/cd1_agent.egg-info/requires.txt +64 -0
  7. cd1_agent-0.1.0/cd1_agent.egg-info/top_level.txt +1 -0
  8. cd1_agent-0.1.0/pyproject.toml +186 -0
  9. cd1_agent-0.1.0/setup.cfg +4 -0
  10. cd1_agent-0.1.0/src/__init__.py +11 -0
  11. cd1_agent-0.1.0/src/agent_server/__init__.py +1 -0
  12. cd1_agent-0.1.0/src/agent_server/adw_dashboard/__init__.py +1 -0
  13. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/__init__.py +5 -0
  14. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/bastion_provider.py +87 -0
  15. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/bigquery_provider.py +464 -0
  16. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/cloudsql_provider.py +73 -0
  17. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/composer_provider.py +165 -0
  18. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/dag_processor_provider.py +71 -0
  19. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/factory.py +106 -0
  20. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/gcs_infra_provider.py +69 -0
  21. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/gcs_provider.py +95 -0
  22. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/scheduler_provider.py +78 -0
  23. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/triggerer_provider.py +70 -0
  24. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/webserver_provider.py +71 -0
  25. cd1_agent-0.1.0/src/agent_server/adw_dashboard/providers/worker_provider.py +130 -0
  26. cd1_agent-0.1.0/src/agent_server/adw_dashboard/services/__init__.py +1 -0
  27. cd1_agent-0.1.0/src/agent_server/adw_dashboard/services/adw_metrics_service.py +144 -0
  28. cd1_agent-0.1.0/src/agent_server/adw_dashboard/services/infra_report_generator.py +391 -0
  29. cd1_agent-0.1.0/src/agent_server/adw_dashboard/services/report_data.py +51 -0
  30. cd1_agent-0.1.0/src/agent_server/adw_dashboard/services/service_report_generator.py +261 -0
  31. cd1_agent-0.1.0/src/agent_server/app.py +112 -0
  32. cd1_agent-0.1.0/src/agent_server/auth.py +33 -0
  33. cd1_agent-0.1.0/src/agent_server/bdp_airflow/__init__.py +10 -0
  34. cd1_agent-0.1.0/src/agent_server/bdp_airflow/handler.py +611 -0
  35. cd1_agent-0.1.0/src/agent_server/bdp_airflow/server.py +257 -0
  36. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/__init__.py +5 -0
  37. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/airflow_failure_store.py +396 -0
  38. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/cross_dag_analyzer.py +213 -0
  39. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/daily_report_generator.py +225 -0
  40. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/e2e_report_generator.py +924 -0
  41. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/e2e_runner.py +583 -0
  42. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/e2e_ssr_report_generator.py +529 -0
  43. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/event_publisher.py +152 -0
  44. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/failure_detector.py +870 -0
  45. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/log_analyzer.py +413 -0
  46. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/models.py +315 -0
  47. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/op_kwargs_analyzer.py +160 -0
  48. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/precursor_analyzer.py +364 -0
  49. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/remediation_engine.py +356 -0
  50. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/report_store.py +454 -0
  51. cd1_agent-0.1.0/src/agent_server/bdp_airflow/services/summary_generator.py +218 -0
  52. cd1_agent-0.1.0/src/agent_server/bdp_common/__init__.py +28 -0
  53. cd1_agent-0.1.0/src/agent_server/bdp_common/anomaly/__init__.py +31 -0
  54. cd1_agent-0.1.0/src/agent_server/bdp_common/anomaly/detector.py +395 -0
  55. cd1_agent-0.1.0/src/agent_server/bdp_common/anomaly/ecod.py +122 -0
  56. cd1_agent-0.1.0/src/agent_server/bdp_common/anomaly/models.py +66 -0
  57. cd1_agent-0.1.0/src/agent_server/bdp_common/anomaly/patterns.py +460 -0
  58. cd1_agent-0.1.0/src/agent_server/bdp_common/aws_session.py +12 -0
  59. cd1_agent-0.1.0/src/agent_server/bdp_common/chart_utils.py +256 -0
  60. cd1_agent-0.1.0/src/agent_server/bdp_common/charts/__init__.py +5 -0
  61. cd1_agent-0.1.0/src/agent_server/bdp_common/charts/generator.py +370 -0
  62. cd1_agent-0.1.0/src/agent_server/bdp_common/charts/png_chart.py +323 -0
  63. cd1_agent-0.1.0/src/agent_server/bdp_common/charts/svg_chart.py +356 -0
  64. cd1_agent-0.1.0/src/agent_server/bdp_common/clients/__init__.py +5 -0
  65. cd1_agent-0.1.0/src/agent_server/bdp_common/clients/cached_bigquery.py +77 -0
  66. cd1_agent-0.1.0/src/agent_server/bdp_common/clients/cached_cloudwatch.py +133 -0
  67. cd1_agent-0.1.0/src/agent_server/bdp_common/clients/cached_cloudwatch_logs.py +187 -0
  68. cd1_agent-0.1.0/src/agent_server/bdp_common/deep_agent/__init__.py +22 -0
  69. cd1_agent-0.1.0/src/agent_server/bdp_common/deep_agent/executor.py +178 -0
  70. cd1_agent-0.1.0/src/agent_server/bdp_common/deep_agent/graph.py +95 -0
  71. cd1_agent-0.1.0/src/agent_server/bdp_common/deep_agent/nodes.py +623 -0
  72. cd1_agent-0.1.0/src/agent_server/bdp_common/deep_agent/schemas.py +80 -0
  73. cd1_agent-0.1.0/src/agent_server/bdp_common/deep_agent/state.py +31 -0
  74. cd1_agent-0.1.0/src/agent_server/bdp_common/deep_agent/tools.py +581 -0
  75. cd1_agent-0.1.0/src/agent_server/bdp_common/eventbridge/__init__.py +21 -0
  76. cd1_agent-0.1.0/src/agent_server/bdp_common/eventbridge/publisher.py +446 -0
  77. cd1_agent-0.1.0/src/agent_server/bdp_common/kakao/__init__.py +6 -0
  78. cd1_agent-0.1.0/src/agent_server/bdp_common/kakao/models.py +18 -0
  79. cd1_agent-0.1.0/src/agent_server/bdp_common/kakao/notifier.py +535 -0
  80. cd1_agent-0.1.0/src/agent_server/bdp_common/logging_utils.py +46 -0
  81. cd1_agent-0.1.0/src/agent_server/bdp_common/mail/__init__.py +5 -0
  82. cd1_agent-0.1.0/src/agent_server/bdp_common/mail/scheduler.py +340 -0
  83. cd1_agent-0.1.0/src/agent_server/bdp_common/mail/sender.py +130 -0
  84. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/__init__.py +6 -0
  85. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/base.py +428 -0
  86. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/charts.py +1038 -0
  87. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/csv_export.py +84 -0
  88. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/email_charts.py +974 -0
  89. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/email_utils.py +108 -0
  90. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/pdf.py +291 -0
  91. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/png.py +107 -0
  92. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/s3_export.py +132 -0
  93. cd1_agent-0.1.0/src/agent_server/bdp_common/reports/styles.py +451 -0
  94. cd1_agent-0.1.0/src/agent_server/bdp_common/retry.py +70 -0
  95. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/__init__.py +17 -0
  96. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/admin_settings_reader.py +70 -0
  97. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/alert_config_reader.py +110 -0
  98. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/base.py +116 -0
  99. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/bigquery_cache.py +195 -0
  100. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/log_cache.py +406 -0
  101. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/metric_cache.py +305 -0
  102. cd1_agent-0.1.0/src/agent_server/bdp_common/stores/metric_config_reader.py +90 -0
  103. cd1_agent-0.1.0/src/agent_server/bdp_common/tests/__init__.py +0 -0
  104. cd1_agent-0.1.0/src/agent_server/bdp_common/tests/test_stores_base.py +175 -0
  105. cd1_agent-0.1.0/src/agent_server/bdp_cost/__init__.py +10 -0
  106. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/__init__.py +44 -0
  107. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/handler.py +807 -0
  108. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/server.py +239 -0
  109. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/__init__.py +83 -0
  110. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/anomaly_detector.py +520 -0
  111. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/athena_cost_analyzer.py +534 -0
  112. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/athena_cost_models.py +59 -0
  113. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/athena_cost_report_generator.py +413 -0
  114. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/athena_pricing_provider.py +188 -0
  115. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/comparison_analyzer.py +134 -0
  116. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/comparison_models.py +58 -0
  117. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/comparison_report_generator.py +471 -0
  118. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/html_report_generator.py +349 -0
  119. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/multi_account_provider.py +988 -0
  120. cd1_agent-0.1.0/src/agent_server/bdp_cost/bdp_cost/services/summary_generator.py +307 -0
  121. cd1_agent-0.1.0/src/agent_server/bdp_cost/handler.py +623 -0
  122. cd1_agent-0.1.0/src/agent_server/bdp_cost/server.py +266 -0
  123. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/__init__.py +74 -0
  124. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/anomaly_detector.py +719 -0
  125. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/chart_generator.py +359 -0
  126. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/comparison_analyzer.py +126 -0
  127. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/comparison_models.py +111 -0
  128. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/comparison_report_generator.py +475 -0
  129. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/config_loader.py +256 -0
  130. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/cost_explorer_provider.py +729 -0
  131. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/cost_status_service.py +332 -0
  132. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/e2e_report_generator.py +1111 -0
  133. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/e2e_runner.py +234 -0
  134. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/event_publisher.py +92 -0
  135. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/html_report_generator.py +1321 -0
  136. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/kakao_notifier.py +698 -0
  137. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/notification_router.py +438 -0
  138. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/pattern_recognizers.py +848 -0
  139. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/report_generator.py +194 -0
  140. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/report_store.py +463 -0
  141. cd1_agent-0.1.0/src/agent_server/bdp_cost/services/summary_generator.py +521 -0
  142. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/__init__.py +0 -0
  143. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/__init__.py +5 -0
  144. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/dag_processor_provider.py +49 -0
  145. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/database_provider.py +73 -0
  146. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/environment_provider.py +59 -0
  147. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/factory.py +103 -0
  148. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/scheduler_provider.py +57 -0
  149. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/storage_provider.py +50 -0
  150. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/triggerer_provider.py +50 -0
  151. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/webserver_provider.py +56 -0
  152. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/providers/worker_provider.py +97 -0
  153. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/__init__.py +0 -0
  154. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/airflow_stats_service.py +226 -0
  155. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/daily_report_generator.py +1419 -0
  156. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/detection_service.py +214 -0
  157. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/infra_log_service.py +548 -0
  158. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/infra_metrics_service.py +4146 -0
  159. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/infra_report_generator.py +1970 -0
  160. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/infra_service.py +4499 -0
  161. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/kpi_mock_data.py +388 -0
  162. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/kpi_service.py +213 -0
  163. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/report_store.py +450 -0
  164. cd1_agent-0.1.0/src/agent_server/bdp_dashboard/services/universe_pipeline_service.py +266 -0
  165. cd1_agent-0.1.0/src/agent_server/bdp_drift/__init__.py +8 -0
  166. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/__init__.py +19 -0
  167. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/handler.py +571 -0
  168. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/__init__.py +27 -0
  169. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/baseline_store.py +1126 -0
  170. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/chart_generator.py +341 -0
  171. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/config_fetcher.py +721 -0
  172. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/config_mapper.py +185 -0
  173. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/daily_report_generator.py +511 -0
  174. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/drift_detector.py +424 -0
  175. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/e2e_report_generator.py +747 -0
  176. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/e2e_runner.py +356 -0
  177. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/fetchers/__init__.py +25 -0
  178. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/fetchers/eks_fetcher.py +285 -0
  179. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/fetchers/msk_fetcher.py +218 -0
  180. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/fetchers/sagemaker_fetcher.py +557 -0
  181. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/fetchers/service_quota_fetcher.py +223 -0
  182. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/fetchers/vpc_fetcher.py +275 -0
  183. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/html_report_generator.py +2572 -0
  184. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/models.py +390 -0
  185. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/report_store.py +459 -0
  186. cd1_agent-0.1.0/src/agent_server/bdp_drift/bdp_drift/services/summary_generator.py +291 -0
  187. cd1_agent-0.1.0/src/agent_server/bdp_drift/handler.py +584 -0
  188. cd1_agent-0.1.0/src/agent_server/bdp_drift/server.py +567 -0
  189. cd1_agent-0.1.0/src/agent_server/bdp_metrics/__init__.py +1 -0
  190. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/__init__.py +1 -0
  191. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/handler.py +1972 -0
  192. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/__init__.py +1 -0
  193. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/baseline_store.py +1224 -0
  194. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/daily_report_generator.py +511 -0
  195. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/e2e_report_generator.py +424 -0
  196. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/e2e_runner.py +317 -0
  197. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/__init__.py +25 -0
  198. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/eks_node_metrics_fetcher.py +759 -0
  199. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/eks_pod_metrics_fetcher.py +431 -0
  200. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/emr_cluster_metrics_fetcher.py +365 -0
  201. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/emr_serverless_fetcher.py +432 -0
  202. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/msk_metrics_fetcher.py +362 -0
  203. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/mwaa_metrics_fetcher.py +402 -0
  204. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/quota_fetcher.py +325 -0
  205. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/rds_metrics_fetcher.py +396 -0
  206. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/sagemaker_endpoint_fetcher.py +348 -0
  207. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/fetchers/subnet_metrics_fetcher.py +286 -0
  208. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/metric_anomaly_detector.py +152 -0
  209. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/models.py +435 -0
  210. cd1_agent-0.1.0/src/agent_server/bdp_metrics/bdp_metrics/services/report_store.py +561 -0
  211. cd1_agent-0.1.0/src/agent_server/bdp_stats/__init__.py +1 -0
  212. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/__init__.py +1 -0
  213. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/handler.py +496 -0
  214. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/services/__init__.py +1 -0
  215. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/services/fetchers/__init__.py +11 -0
  216. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/services/fetchers/athena_stats_fetcher.py +346 -0
  217. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/services/fetchers/emr_stats_fetcher.py +378 -0
  218. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/services/fetchers/sagemaker_stats_fetcher.py +293 -0
  219. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/services/models.py +136 -0
  220. cd1_agent-0.1.0/src/agent_server/bdp_stats/bdp_stats/services/project_code_provider.py +201 -0
  221. cd1_agent-0.1.0/src/agent_server/config.py +41 -0
  222. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/__init__.py +8 -0
  223. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/handler.py +311 -0
  224. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/scripts/test_alerts.py +230 -0
  225. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/server.py +238 -0
  226. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/__init__.py +39 -0
  227. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/alert_processor.py +379 -0
  228. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/deduplication_store.py +212 -0
  229. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/html_report_generator.py +2313 -0
  230. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/models.py +273 -0
  231. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/notification_router.py +508 -0
  232. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/prometheus_alert_fetcher.py +380 -0
  233. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/severity_mapper.py +222 -0
  234. cd1_agent-0.1.0/src/agent_server/hdsp_alertmanager/services/summary_generator.py +425 -0
  235. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/__init__.py +0 -0
  236. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/__init__.py +5 -0
  237. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/api_provider.py +62 -0
  238. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/backup_provider.py +69 -0
  239. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/cost_provider.py +251 -0
  240. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/factory.py +93 -0
  241. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/haproxy_provider.py +61 -0
  242. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/jupyter_provider.py +392 -0
  243. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/k8s_provider.py +515 -0
  244. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/minio_provider.py +240 -0
  245. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/nfs_provider.py +247 -0
  246. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/pipeline_provider.py +57 -0
  247. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/registry_provider.py +49 -0
  248. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/providers/spark_provider.py +499 -0
  249. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/__init__.py +0 -0
  250. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/detection_service.py +200 -0
  251. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/hdsp_metrics_service.py +143 -0
  252. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/hdsp_utils.py +35 -0
  253. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/infra_report_generator.py +843 -0
  254. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/k8s_infra_service.py +1281 -0
  255. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/l0_ingestion_service.py +118 -0
  256. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/report_store.py +459 -0
  257. cd1_agent-0.1.0/src/agent_server/hdsp_dashboard/services/service_report_generator.py +266 -0
  258. cd1_agent-0.1.0/src/agent_server/hdsp_metrics/__init__.py +8 -0
  259. cd1_agent-0.1.0/src/agent_server/hdsp_metrics/handler.py +344 -0
  260. cd1_agent-0.1.0/src/agent_server/hdsp_metrics/server.py +172 -0
  261. cd1_agent-0.1.0/src/agent_server/hdsp_metrics/services/__init__.py +31 -0
  262. cd1_agent-0.1.0/src/agent_server/hdsp_metrics/services/anomaly_detector.py +546 -0
  263. cd1_agent-0.1.0/src/agent_server/hdsp_metrics/services/prometheus_client.py +728 -0
  264. cd1_agent-0.1.0/src/agent_server/routers/__init__.py +37 -0
  265. cd1_agent-0.1.0/src/agent_server/routers/adw_dashboard.py +615 -0
  266. cd1_agent-0.1.0/src/agent_server/routers/bdp_airflow.py +43 -0
  267. cd1_agent-0.1.0/src/agent_server/routers/bdp_cost.py +43 -0
  268. cd1_agent-0.1.0/src/agent_server/routers/bdp_dashboard.py +1988 -0
  269. cd1_agent-0.1.0/src/agent_server/routers/bdp_drift.py +44 -0
  270. cd1_agent-0.1.0/src/agent_server/routers/bdp_metrics.py +49 -0
  271. cd1_agent-0.1.0/src/agent_server/routers/bdp_stats.py +50 -0
  272. cd1_agent-0.1.0/src/agent_server/routers/hdsp_dashboard.py +859 -0
  273. cd1_agent-0.1.0/src/agent_server/routers/supervisor.py +54 -0
  274. cd1_agent-0.1.0/src/agent_server/supervisor/__init__.py +1 -0
  275. cd1_agent-0.1.0/src/agent_server/supervisor/graph.py +116 -0
  276. cd1_agent-0.1.0/src/agent_server/supervisor/handler.py +156 -0
  277. cd1_agent-0.1.0/src/agent_server/supervisor/nodes.py +309 -0
  278. cd1_agent-0.1.0/src/agent_server/supervisor/schemas.py +180 -0
  279. cd1_agent-0.1.0/src/agent_server/supervisor/services/__init__.py +1 -0
  280. cd1_agent-0.1.0/src/agent_server/supervisor/services/correlator.py +322 -0
  281. cd1_agent-0.1.0/src/agent_server/supervisor/services/dedup.py +88 -0
  282. cd1_agent-0.1.0/src/agent_server/supervisor/services/event_collector.py +136 -0
  283. cd1_agent-0.1.0/src/agent_server/supervisor/services/incident_store.py +103 -0
  284. cd1_agent-0.1.0/src/agent_server/supervisor/state.py +36 -0
  285. cd1_agent-0.1.0/src/agents/bdp_common/aws_session.py +12 -0
  286. cd1_agent-0.1.0/src/common/__init__.py +1 -0
  287. cd1_agent-0.1.0/src/common/agent/__init__.py +47 -0
  288. cd1_agent-0.1.0/src/common/agent/executor.py +237 -0
  289. cd1_agent-0.1.0/src/common/agent/graph.py +151 -0
  290. cd1_agent-0.1.0/src/common/agent/nodes.py +371 -0
  291. cd1_agent-0.1.0/src/common/agent/rds_tools.py +355 -0
  292. cd1_agent-0.1.0/src/common/agent/tools.py +377 -0
  293. cd1_agent-0.1.0/src/common/chat/__init__.py +50 -0
  294. cd1_agent-0.1.0/src/common/chat/agent.py +479 -0
  295. cd1_agent-0.1.0/src/common/chat/config.py +150 -0
  296. cd1_agent-0.1.0/src/common/chat/nodes/__init__.py +21 -0
  297. cd1_agent-0.1.0/src/common/chat/nodes/act.py +159 -0
  298. cd1_agent-0.1.0/src/common/chat/nodes/human_review.py +182 -0
  299. cd1_agent-0.1.0/src/common/chat/nodes/observe.py +98 -0
  300. cd1_agent-0.1.0/src/common/chat/nodes/plan.py +100 -0
  301. cd1_agent-0.1.0/src/common/chat/nodes/reflect.py +133 -0
  302. cd1_agent-0.1.0/src/common/chat/nodes/respond.py +154 -0
  303. cd1_agent-0.1.0/src/common/chat/state.py +255 -0
  304. cd1_agent-0.1.0/src/common/chat/tools/__init__.py +120 -0
  305. cd1_agent-0.1.0/src/common/chat/tools/airflow.py +354 -0
  306. cd1_agent-0.1.0/src/common/chat/tools/cloudwatch.py +144 -0
  307. cd1_agent-0.1.0/src/common/chat/tools/drift.py +362 -0
  308. cd1_agent-0.1.0/src/common/chat/tools/prometheus.py +216 -0
  309. cd1_agent-0.1.0/src/common/chat/tools/rds.py +293 -0
  310. cd1_agent-0.1.0/src/common/chat/tools/service_health.py +332 -0
  311. cd1_agent-0.1.0/src/common/handlers/__init__.py +14 -0
  312. cd1_agent-0.1.0/src/common/handlers/analysis_handler.py +294 -0
  313. cd1_agent-0.1.0/src/common/handlers/base_handler.py +223 -0
  314. cd1_agent-0.1.0/src/common/handlers/remediation_handler.py +345 -0
  315. cd1_agent-0.1.0/src/common/hitl/__init__.py +24 -0
  316. cd1_agent-0.1.0/src/common/hitl/router.py +295 -0
  317. cd1_agent-0.1.0/src/common/hitl/schemas.py +115 -0
  318. cd1_agent-0.1.0/src/common/hitl/store.py +1012 -0
  319. cd1_agent-0.1.0/src/common/models/__init__.py +40 -0
  320. cd1_agent-0.1.0/src/common/models/agent_state.py +121 -0
  321. cd1_agent-0.1.0/src/common/models/analysis_result.py +101 -0
  322. cd1_agent-0.1.0/src/common/models/anomaly.py +100 -0
  323. cd1_agent-0.1.0/src/common/prompts/__init__.py +46 -0
  324. cd1_agent-0.1.0/src/common/prompts/analysis_prompts.py +250 -0
  325. cd1_agent-0.1.0/src/common/prompts/detection_prompts.py +252 -0
  326. cd1_agent-0.1.0/src/common/prompts/reflection_prompts.py +245 -0
  327. cd1_agent-0.1.0/src/common/prompts/replan_prompts.py +317 -0
  328. cd1_agent-0.1.0/src/common/prompts/utils.py +242 -0
  329. cd1_agent-0.1.0/src/common/server/__init__.py +18 -0
  330. cd1_agent-0.1.0/src/common/server/adapter.py +118 -0
  331. cd1_agent-0.1.0/src/common/server/base_app.py +159 -0
  332. cd1_agent-0.1.0/src/common/server/config.py +150 -0
  333. cd1_agent-0.1.0/src/common/server/middleware.py +98 -0
  334. cd1_agent-0.1.0/src/common/server/routers/__init__.py +13 -0
  335. cd1_agent-0.1.0/src/common/server/routers/health.py +204 -0
  336. cd1_agent-0.1.0/src/common/server/routers/metrics.py +194 -0
  337. cd1_agent-0.1.0/src/common/server/schemas/__init__.py +23 -0
  338. cd1_agent-0.1.0/src/common/server/schemas/detection.py +265 -0
  339. cd1_agent-0.1.0/src/common/services/__init__.py +17 -0
  340. cd1_agent-0.1.0/src/common/services/aws_client.py +869 -0
  341. cd1_agent-0.1.0/src/common/services/aws_session.py +97 -0
  342. cd1_agent-0.1.0/src/common/services/llm_client.py +294 -0
  343. cd1_agent-0.1.0/src/common/services/rds_client.py +802 -0
  344. cd1_agent-0.1.0/src/common/services/schema_loader.py +414 -0
  345. cd1_agent-0.1.0/src/common/timezone.py +13 -0
  346. cd1_agent-0.1.0/src/portal/__init__.py +1 -0
  347. cd1_agent-0.1.0/src/portal/app.py +346 -0
  348. cd1_agent-0.1.0/src/portal/auth.py +97 -0
  349. cd1_agent-0.1.0/src/portal/config.py +77 -0
  350. cd1_agent-0.1.0/src/portal/dependencies.py +203 -0
  351. cd1_agent-0.1.0/src/portal/routers/__init__.py +1 -0
  352. cd1_agent-0.1.0/src/portal/routers/airflow_config.py +112 -0
  353. cd1_agent-0.1.0/src/portal/routers/airflow_reports.py +27 -0
  354. cd1_agent-0.1.0/src/portal/routers/airflow_status.py +27 -0
  355. cd1_agent-0.1.0/src/portal/routers/api/__init__.py +0 -0
  356. cd1_agent-0.1.0/src/portal/routers/api/adw.py +205 -0
  357. cd1_agent-0.1.0/src/portal/routers/api/airflow_config.py +72 -0
  358. cd1_agent-0.1.0/src/portal/routers/api/airflow_reports.py +64 -0
  359. cd1_agent-0.1.0/src/portal/routers/api/airflow_stats.py +37 -0
  360. cd1_agent-0.1.0/src/portal/routers/api/alert_config.py +97 -0
  361. cd1_agent-0.1.0/src/portal/routers/api/auth.py +16 -0
  362. cd1_agent-0.1.0/src/portal/routers/api/cost.py +66 -0
  363. cd1_agent-0.1.0/src/portal/routers/api/cost_status.py +80 -0
  364. cd1_agent-0.1.0/src/portal/routers/api/dashboard.py +17 -0
  365. cd1_agent-0.1.0/src/portal/routers/api/dashboard_reports.py +64 -0
  366. cd1_agent-0.1.0/src/portal/routers/api/drift_config.py +171 -0
  367. cd1_agent-0.1.0/src/portal/routers/api/drift_reports.py +72 -0
  368. cd1_agent-0.1.0/src/portal/routers/api/hdsp.py +528 -0
  369. cd1_agent-0.1.0/src/portal/routers/api/hdsp_dashboard_reports.py +64 -0
  370. cd1_agent-0.1.0/src/portal/routers/api/hdsp_metrics_reports.py +132 -0
  371. cd1_agent-0.1.0/src/portal/routers/api/hitl.py +313 -0
  372. cd1_agent-0.1.0/src/portal/routers/api/holmes_gpt.py +77 -0
  373. cd1_agent-0.1.0/src/portal/routers/api/infra.py +749 -0
  374. cd1_agent-0.1.0/src/portal/routers/api/mail_config.py +121 -0
  375. cd1_agent-0.1.0/src/portal/routers/api/metric_config.py +154 -0
  376. cd1_agent-0.1.0/src/portal/routers/api/metric_status.py +16 -0
  377. cd1_agent-0.1.0/src/portal/routers/api/metrics.py +68 -0
  378. cd1_agent-0.1.0/src/portal/routers/api/settings.py +55 -0
  379. cd1_agent-0.1.0/src/portal/routers/auth_routes.py +68 -0
  380. cd1_agent-0.1.0/src/portal/routers/baselines.py +260 -0
  381. cd1_agent-0.1.0/src/portal/routers/cost_reports.py +83 -0
  382. cd1_agent-0.1.0/src/portal/routers/cost_status.py +81 -0
  383. cd1_agent-0.1.0/src/portal/routers/dashboard.py +24 -0
  384. cd1_agent-0.1.0/src/portal/routers/drift_config.py +231 -0
  385. cd1_agent-0.1.0/src/portal/routers/drift_reports.py +27 -0
  386. cd1_agent-0.1.0/src/portal/routers/drift_status.py +27 -0
  387. cd1_agent-0.1.0/src/portal/routers/hitl.py +210 -0
  388. cd1_agent-0.1.0/src/portal/routers/infra.py +53 -0
  389. cd1_agent-0.1.0/src/portal/routers/metric_config.py +240 -0
  390. cd1_agent-0.1.0/src/portal/routers/metric_status.py +68 -0
  391. cd1_agent-0.1.0/src/portal/routers/metrics.py +154 -0
  392. cd1_agent-0.1.0/src/portal/routers/settings.py +128 -0
  393. cd1_agent-0.1.0/src/portal/services/__init__.py +1 -0
  394. cd1_agent-0.1.0/src/portal/services/_import_helper.py +173 -0
  395. cd1_agent-0.1.0/src/portal/services/airflow_config_service.py +306 -0
  396. cd1_agent-0.1.0/src/portal/services/airflow_config_store.py +150 -0
  397. cd1_agent-0.1.0/src/portal/services/airflow_report_service.py +89 -0
  398. cd1_agent-0.1.0/src/portal/services/alert_config_service.py +56 -0
  399. cd1_agent-0.1.0/src/portal/services/alert_config_store.py +231 -0
  400. cd1_agent-0.1.0/src/portal/services/baseline_service.py +170 -0
  401. cd1_agent-0.1.0/src/portal/services/cost_report_service.py +166 -0
  402. cd1_agent-0.1.0/src/portal/services/dashboard_report_service.py +89 -0
  403. cd1_agent-0.1.0/src/portal/services/db.py +371 -0
  404. cd1_agent-0.1.0/src/portal/services/drift_config_service.py +699 -0
  405. cd1_agent-0.1.0/src/portal/services/drift_config_store.py +304 -0
  406. cd1_agent-0.1.0/src/portal/services/drift_report_service.py +375 -0
  407. cd1_agent-0.1.0/src/portal/services/hdsp_dashboard_report_service.py +88 -0
  408. cd1_agent-0.1.0/src/portal/services/hitl_service.py +159 -0
  409. cd1_agent-0.1.0/src/portal/services/holmesgpt_service.py +405 -0
  410. cd1_agent-0.1.0/src/portal/services/holmesgpt_session_store.py +290 -0
  411. cd1_agent-0.1.0/src/portal/services/mail_config_service.py +111 -0
  412. cd1_agent-0.1.0/src/portal/services/metric_catalog_service.py +44 -0
  413. cd1_agent-0.1.0/src/portal/services/metric_config_service.py +205 -0
  414. cd1_agent-0.1.0/src/portal/services/metric_config_store.py +255 -0
  415. cd1_agent-0.1.0/src/portal/services/metric_status_service.py +253 -0
  416. cd1_agent-0.1.0/src/portal/services/metrics_report_service.py +102 -0
  417. cd1_agent-0.1.0/src/portal/services/settings_service.py +356 -0
@@ -0,0 +1,429 @@
1
+ Metadata-Version: 2.4
2
+ Name: cd1-agent
3
+ Version: 0.1.0
4
+ Summary: AWS Lambda-based intelligent log analysis and auto-remediation system
5
+ Author: CD1 Team
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/lks21c/cd1-agent
8
+ Project-URL: Documentation, https://github.com/lks21c/cd1-agent#readme
9
+ Project-URL: Repository, https://github.com/lks21c/cd1-agent
10
+ Keywords: aws,lambda,langgraph,anomaly-detection,remediation
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Requires-Python: >=3.13
18
+ Description-Content-Type: text/markdown
19
+ Requires-Dist: pydantic>=2.0.0
20
+ Requires-Dist: langchain-core>=0.1.0
21
+ Requires-Dist: langgraph>=0.0.30
22
+ Requires-Dist: boto3>=1.28.0
23
+ Provides-Extra: dev
24
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
25
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
26
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
27
+ Requires-Dist: black>=23.0.0; extra == "dev"
28
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
29
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
30
+ Requires-Dist: build>=1.0.0; extra == "dev"
31
+ Requires-Dist: twine>=4.0.0; extra == "dev"
32
+ Provides-Extra: vllm
33
+ Requires-Dist: openai>=1.0.0; extra == "vllm"
34
+ Requires-Dist: httpx>=0.25.0; extra == "vllm"
35
+ Provides-Extra: victoria
36
+ Requires-Dist: requests>=2.31.0; extra == "victoria"
37
+ Provides-Extra: rds
38
+ Requires-Dist: pymysql>=1.1.0; extra == "rds"
39
+ Requires-Dist: cryptography>=41.0.0; extra == "rds"
40
+ Provides-Extra: pyod
41
+ Requires-Dist: pyod>=2.0.0; extra == "pyod"
42
+ Requires-Dist: numpy>=1.24.0; extra == "pyod"
43
+ Requires-Dist: scipy>=1.10.0; extra == "pyod"
44
+ Provides-Extra: bdp-cost
45
+ Requires-Dist: cd1-agent[pyod,server]; extra == "bdp-cost"
46
+ Provides-Extra: gcp
47
+ Requires-Dist: google-cloud-bigquery>=3.0.0; extra == "gcp"
48
+ Provides-Extra: server
49
+ Requires-Dist: fastapi>=0.115.0; extra == "server"
50
+ Requires-Dist: uvicorn[standard]>=0.32.0; extra == "server"
51
+ Requires-Dist: pydantic-settings>=2.0.0; extra == "server"
52
+ Requires-Dist: prometheus-client>=0.21.0; extra == "server"
53
+ Requires-Dist: httpx>=0.27.0; extra == "server"
54
+ Requires-Dist: jinja2>=3.1.0; extra == "server"
55
+ Requires-Dist: weasyprint>=62.0; extra == "server"
56
+ Requires-Dist: kubernetes>=28.1.0; extra == "server"
57
+ Requires-Dist: apscheduler<4,>=3.10; extra == "server"
58
+ Requires-Dist: cairosvg>=2.7.0; extra == "server"
59
+ Requires-Dist: pymupdf>=1.25.0; extra == "server"
60
+ Provides-Extra: portal
61
+ Requires-Dist: cd1-agent[rds,server]; extra == "portal"
62
+ Requires-Dist: authlib>=1.3.0; extra == "portal"
63
+ Requires-Dist: itsdangerous>=2.1.0; extra == "portal"
64
+ Requires-Dist: python-multipart>=0.0.6; extra == "portal"
65
+ Provides-Extra: lambda-layer
66
+ Requires-Dist: pydantic>=2.0.0; extra == "lambda-layer"
67
+ Requires-Dist: langchain-core>=0.1.0; extra == "lambda-layer"
68
+ Requires-Dist: langgraph>=0.0.30; extra == "lambda-layer"
69
+ Requires-Dist: boto3>=1.28.0; extra == "lambda-layer"
70
+ Provides-Extra: all
71
+ Requires-Dist: cd1-agent[pyod,rds,server,victoria,vllm]; extra == "all"
72
+
73
+ # CD1 Agent
74
+
75
+ AWS Lambda 기반 서버리스 멀티 에이전트 이상 탐지 및 자동 복구 플랫폼
76
+
77
+ ## Overview
78
+
79
+ CD1 Agent는 **4개의 독립적인 서브 에이전트**로 구성된 이상 탐지 플랫폼입니다. 각 에이전트는 MWAA(Airflow)에서 5분 주기로 호출되며, 독립적인 Step Functions 워크플로우를 통해 탐지 → 분석 → 복구 조치를 수행합니다.
80
+
81
+ ### 서브 에이전트 구성
82
+
83
+ | Agent | 대상 | 탐지 방식 | 설명 |
84
+ |-------|------|----------|------|
85
+ | **BDP Agent** | AWS 인프라 | CloudWatch Logs/Metrics | 로그 패턴, 메트릭 이상, 에러 스파이크 감지 |
86
+ | **HDSP Agent** | On-Prem K8s | Prometheus 메트릭 | Pod/Node 상태, CPU/Memory 이상, OOMKill 감지 |
87
+ | **Cost Agent** | AWS 비용 | Cost Explorer + Luminol | 비용 이상, 서비스별 급증, 근본 원인 분석 |
88
+ | **Drift Agent** | AWS 설정 | Git Baseline 비교 | 구성 드리프트, 보안 설정 변경 감지 |
89
+
90
+ ### Provider 구성
91
+
92
+ #### LLM Provider
93
+
94
+ | 환경 | Provider | 모델 | 용도 |
95
+ |------|----------|------|------|
96
+ | **On-Premise** | vLLM | 자체 호스팅 LLM | 프로덕션 분석 |
97
+ | **Public (Mock)** | Google Gemini | Gemini 2.5 Pro/Flash | 개발/테스트 |
98
+ | **로컬 테스트** | Mock LLM | 내장 Mock | AWS/LLM 없이 로직 테스트 |
99
+
100
+ #### AWS Provider
101
+
102
+ | 환경 | Provider | 용도 |
103
+ |------|----------|------|
104
+ | **Production** | AWS | 실제 AWS 서비스 호출 |
105
+ | **Public/로컬** | Mock | AWS 없이 전체 로직 테스트 |
106
+
107
+ ### 주요 기능
108
+
109
+ - **LangGraph Agent**: 동적 ReAct 루프 기반 분석 에이전트
110
+ - **주기적 로그 감지**: 5-10분 간격으로 CloudWatch 및 RDS 통합 로그 분석
111
+ - **AI 기반 근본 원인 분석**: vLLM 또는 Gemini를 활용한 ReAct 패턴 분석
112
+ - **승인 기반 실행**:
113
+ - 0.5+ : 승인 요청 후 실행
114
+ - <0.5 : 담당자 에스컬레이션
115
+ - **AWS 리소스 조정**: Lambda 재시작, RDS 파라미터 변경, Auto Scaling 조정
116
+ - **EventBridge 알림**: 외부 시스템 연동 (Slack, Teams 등)
117
+
118
+ ## Architecture
119
+
120
+ ### Multi-Agent Orchestration
121
+
122
+ ```
123
+ ┌─────────────────────────────────────────────────────────────────────────┐
124
+ │ MWAA (Airflow DAGs) - 5분 주기 │
125
+ └────────┬────────────────┬────────────────┬────────────────┬─────────────┘
126
+ │ │ │ │
127
+ ▼ ▼ ▼ ▼
128
+ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐
129
+ │ BDP Agent │ │ HDSP Agent │ │ Cost Agent │ │ Drift Agent │
130
+ │ (AWS 로그) │ │ (Prometheus) │ │ (Cost Explorer)│ │ (Git Baseline) │
131
+ ├────────────────┤ ├────────────────┤ ├────────────────┤ ├────────────────┤
132
+ │ Detection │ │ Detection │ │ Detection │ │ Detection │
133
+ │ ↓ │ │ ↓ │ │ ↓ │ │ ↓ │
134
+ │ Step Functions │ │ Step Functions │ │ Step Functions │ │ Step Functions │
135
+ │ (개별 WF) │ │ (개별 WF) │ │ (개별 WF) │ │ (개별 WF) │
136
+ │ ↓ │ │ ↓ │ │ ↓ │ │ ↓ │
137
+ │ Analysis │ │ Analysis │ │ Analysis │ │ Analysis │
138
+ │ ↓ │ │ ↓ │ │ ↓ │ │ ↓ │
139
+ │ Action │ │ Action │ │ Action │ │ Action │
140
+ └────────────────┘ └────────────────┘ └────────────────┘ └────────────────┘
141
+ │ │ │ │
142
+ └────────────────┴────────────────┴────────────────┘
143
+
144
+
145
+ ┌──────────────────────────┐
146
+ │ 공통 컴포넌트 │
147
+ │ - Analysis Agent (LLM) │
148
+ │ - Action Engine │
149
+ │ - EventBridge 알림 │
150
+ └──────────────────────────┘
151
+ ```
152
+
153
+ **핵심 설계 원칙**:
154
+ - **독립적 워크플로우**: 각 에이전트는 개별 Step Functions 워크플로우 실행
155
+ - **공통 분석 엔진**: LangGraph 기반 ReAct 루프를 모든 에이전트가 공유
156
+ - **유연한 스케줄링**: MWAA DAG별 독립적인 실행 주기 설정 가능
157
+
158
+ ### 워크플로우 상세
159
+
160
+ ```mermaid
161
+ stateDiagram-v2
162
+ [*] --> DetectAnomalies
163
+ DetectAnomalies --> CheckAnomalies
164
+
165
+ CheckAnomalies --> NoAnomalies: No Issues
166
+ CheckAnomalies --> AnalyzeRootCause: Issues Found
167
+
168
+ NoAnomalies --> [*]
169
+
170
+ AnalyzeRootCause --> EvaluateConfidence
171
+
172
+ EvaluateConfidence --> RequestApproval: >= 0.5
173
+ EvaluateConfidence --> Escalate: < 0.5
174
+
175
+ RequestApproval --> CheckApproval
176
+ CheckApproval --> ExecuteApproved: Approved
177
+ CheckApproval --> Rejected: Rejected
178
+ ExecuteApproved --> Reflect
179
+
180
+ Reflect --> Success: Resolved
181
+ Reflect --> Replan: Needs Retry
182
+ Replan --> AnalyzeRootCause: Attempt < 3
183
+ Replan --> Escalate: Max Attempts
184
+
185
+ Escalate --> [*]
186
+ Rejected --> [*]
187
+ Success --> [*]
188
+ ```
189
+
190
+ ## Project Structure
191
+
192
+ ```
193
+ cd1-agent/
194
+ ├── docs/
195
+ │ ├── ARCHITECTURE.md # 상세 아키텍처 문서
196
+ │ ├── PROMPTS.md # 프롬프트 템플릿 설계
197
+ │ ├── COST_OPTIMIZATION.md # 비용 최적화 전략
198
+ │ ├── IMPLEMENTATION_GUIDE.md # 구현 가이드
199
+ │ ├── HDSP_DETECTION.md # HDSP Agent 문서
200
+ │ ├── COST_ANOMALY_DETECTION.md # Cost Agent 문서
201
+ │ └── CONFIG_DRIFT_DETECTION.md # Drift Agent 문서
202
+ ├── src/
203
+ │ ├── common/ # 공통 코드
204
+ │ │ ├── handlers/ # 공통 핸들러 (base, analysis, remediation)
205
+ │ │ ├── services/ # 공통 서비스 (llm_client, aws_client, rds_client)
206
+ │ │ ├── models/ # 데이터 모델
207
+ │ │ ├── prompts/ # 프롬프트 템플릿
208
+ │ │ ├── agent/ # LangGraph Agent
209
+ │ │ └── chat/ # Interactive Chat
210
+ │ └── agents/ # Agent별 코드
211
+ │ ├── bdp/ # BDP Agent (AWS CloudWatch)
212
+ │ │ └── handler.py
213
+ │ ├── hdsp/ # HDSP Agent (Prometheus/K8s)
214
+ │ │ ├── handler.py
215
+ │ │ └── services/ # prometheus_client, anomaly_detector
216
+ │ ├── cost/ # Cost Agent (AWS Cost Explorer)
217
+ │ │ ├── handler.py
218
+ │ │ └── services/ # cost_explorer_client, anomaly_detector
219
+ │ └── drift/ # Drift Agent (GitLab Baseline)
220
+ │ ├── handler.py
221
+ │ └── services/ # config_fetcher, drift_detector, gitlab_client
222
+ ├── tests/
223
+ │ ├── common/ # 공통 코드 테스트
224
+ │ │ ├── agent/ # LangGraph 테스트
225
+ │ │ └── chat/ # Chat 테스트
226
+ │ └── agents/ # Agent별 테스트
227
+ │ ├── bdp/
228
+ │ ├── hdsp/
229
+ │ ├── cost/
230
+ │ └── drift/
231
+ └── dags/ # Airflow DAG 파일
232
+ ```
233
+
234
+ ## Quick Start
235
+
236
+ ### Prerequisites
237
+
238
+ - Python 3.12+
239
+ - AWS CLI configured
240
+
241
+ ### Installation
242
+
243
+ ```bash
244
+ # 1. Clone repository
245
+ git clone https://github.com/lks21c/cd1-agent.git
246
+ cd cd1-agent
247
+
248
+ # 2. Create virtual environment
249
+ python -m venv .venv
250
+ source .venv/bin/activate # Linux/Mac
251
+ # .venv\Scripts\activate # Windows
252
+
253
+ # 3. Install dependencies
254
+ pip install -r requirements.txt
255
+ ```
256
+
257
+ ### Configuration
258
+
259
+ #### Environment Variables
260
+
261
+ **Mock Mode (Public/Local Testing)**
262
+
263
+ | Variable | Description | Default |
264
+ |----------|-------------|---------|
265
+ | `AWS_MOCK` | AWS Mock 모드 활성화 (`true`/`false`) | `false` |
266
+ | `LLM_MOCK` | LLM Mock 모드 활성화 (`true`/`false`) | `false` |
267
+
268
+ **LLM Configuration**
269
+
270
+ | Variable | Description | Default |
271
+ |----------|-------------|---------|
272
+ | `LLM_PROVIDER` | LLM 제공자 (`vllm` 또는 `gemini`) | `vllm` |
273
+ | `VLLM_BASE_URL` | vLLM 서버 엔드포인트 (On-Prem) | `http://localhost:8000/v1` |
274
+ | `VLLM_MODEL_NAME` | vLLM 모델 이름 | Required (vllm 사용 시) |
275
+ | `GEMINI_API_KEY` | Gemini API 키 (Public Mock) | Required (gemini 사용 시) |
276
+ | `GEMINI_MODEL_ID` | Gemini 모델 ID | `gemini-2.5-flash` |
277
+
278
+ **AWS Configuration**
279
+
280
+ | Variable | Description | Default |
281
+ |----------|-------------|---------|
282
+ | `RDS_CLUSTER_ARN` | RDS Aurora Serverless 클러스터 ARN | Required (AWS 모드) |
283
+ | `RDS_SECRET_ARN` | RDS 접속 정보가 담긴 Secrets Manager ARN | Required (AWS 모드) |
284
+ | `RDS_DATABASE` | 데이터베이스 이름 | `unified_logs` |
285
+ | `DEDUP_TABLE` | DynamoDB 중복 제거 테이블 이름 | `bdp-anomaly-tracking` |
286
+
287
+ **Quick Start for Mock Mode**
288
+
289
+ ```bash
290
+ # AWS와 LLM 없이 로컬에서 로직 테스트
291
+ export AWS_MOCK=true
292
+ export LLM_MOCK=true
293
+ python -m examples.services.aws_client # AWS Mock 테스트
294
+ python -m examples.services.llm_client # LLM Mock 테스트
295
+ ```
296
+
297
+ #### DynamoDB Tables
298
+
299
+ | Table | Purpose | Key |
300
+ |-------|---------|-----|
301
+ | `bdp-anomaly-tracking` | 중복 제거 (TTL 7일) | `signature` |
302
+ | `bdp-workflow-state` | 워크플로우 상태 | `workflow_id`, `timestamp` |
303
+ | `bdp-action-history` | 복구 조치 감사 로그 | `action_id` |
304
+
305
+ ## Lambda Functions
306
+
307
+ ### Detection Lambda (에이전트별)
308
+
309
+ | Function | Memory | Timeout | Trigger | Description |
310
+ |----------|--------|---------|---------|-------------|
311
+ | `bdp-detection` | 512MB | 60s | MWAA DAG | AWS CloudWatch 로그/메트릭 이상 감지 |
312
+ | `bdp-hdsp-detection` | 512MB | 60s | MWAA DAG | On-Prem K8s Prometheus 메트릭 감지 |
313
+ | `bdp-cost-detection` | 512MB | 60s | MWAA DAG | AWS Cost Explorer 비용 이상 감지 |
314
+ | `bdp-drift-detection` | 512MB | 120s | MWAA DAG | AWS 설정 Git Baseline 드리프트 감지 |
315
+
316
+ ### 공통 Lambda
317
+
318
+ | Function | Memory | Timeout | Trigger | Description |
319
+ |----------|--------|---------|---------|-------------|
320
+ | `bdp-analysis` | 1024MB | 120s | Step Functions | LLM 기반 근본 원인 분석 |
321
+ | `bdp-action` | 512MB | 60s | Step Functions | 복구 조치 실행 |
322
+ | `bdp-approval` | 256MB | 30s | API Gateway | 승인 요청 처리 |
323
+
324
+ ## MWAA DAG 구성
325
+
326
+ | DAG | Schedule | Target Lambda | Description |
327
+ |-----|----------|---------------|-------------|
328
+ | `bdp_detection_dag` | `*/5 * * * *` | bdp-detection | AWS 로그/메트릭 감지 |
329
+ | `bdp_hdsp_detection_dag` | `*/5 * * * *` | bdp-hdsp-detection | K8s 장애 감지 |
330
+ | `bdp_cost_detection_dag` | `*/5 * * * *` | bdp-cost-detection | 비용 이상 감지 |
331
+ | `bdp_drift_detection_dag` | `*/5 * * * *` | bdp-drift-detection | 설정 드리프트 감지 |
332
+
333
+ ## Cost Estimation
334
+
335
+ ### Monthly Cost (~$11/month for 1M events, excluding LLM)
336
+
337
+ | Component | Cost |
338
+ |-----------|------|
339
+ | Lambda (ARM64) | ~$5 |
340
+ | Step Functions | ~$3 |
341
+ | DynamoDB (On-demand) | ~$2 |
342
+ | EventBridge | ~$1 |
343
+
344
+ ### LLM 비용
345
+
346
+ | Provider | 환경 | 비용 모델 |
347
+ |----------|------|----------|
348
+ | **vLLM (On-Prem)** | 프로덕션 | 자체 인프라 비용 (GPU 서버) |
349
+ | **Gemini 2.5 Pro** | Mock/개발 | ~$0.00125/1K input, ~$0.005/1K output |
350
+ | **Gemini 2.5 Flash** | Mock/개발 | ~$0.00015/1K input, ~$0.0006/1K output |
351
+
352
+ ### Cost Optimization Strategies
353
+
354
+ 1. **CloudWatch Field Indexing**: 67% 스캔 비용 감소
355
+ 2. **Hierarchical Summarization**: 80-90% 토큰 절감
356
+ 3. **ARM64/Graviton2**: 20-34% Lambda 비용 절감
357
+ 4. **Provisioned Concurrency**: Cold start 제거 (MWAA 트리거 사용 시)
358
+
359
+ ## Decision Flow
360
+
361
+ 모든 복구 조치는 **승인 후 실행** 방식으로 동작합니다.
362
+
363
+ | Confidence | Action | Use Case |
364
+ |------------|--------|----------|
365
+ | >= 0.5 | Request Approval | 분석 완료, 승인 요청 |
366
+ | < 0.5 | Escalate | 추가 분석 필요, 담당자 에스컬레이션 |
367
+
368
+ > **Note**: 자동 실행(Auto Execute) 기능은 현재 비활성화되어 있습니다. 모든 조치는 담당자 승인 후 실행됩니다.
369
+
370
+ ## 지원 복구 조치 (Supported Actions)
371
+
372
+ - `lambda_restart`: Lambda 함수 재시작
373
+ - `rds_parameter`: RDS 파라미터 변경
374
+ - `auto_scaling`: Auto Scaling 설정 조정
375
+ - `eventbridge_event`: 이벤트 발행 (알림)
376
+ - `investigate`: 추가 정보 수집 요청
377
+
378
+ ## Documentation
379
+
380
+ ### 시스템 문서
381
+ - [Architecture Guide](docs/ARCHITECTURE.md) - 상세 시스템 아키텍처
382
+ - [Prompt Templates](docs/PROMPTS.md) - AI 프롬프트 설계
383
+ - [Cost Optimization](docs/COST_OPTIMIZATION.md) - 비용 최적화 전략
384
+ - [Implementation Guide](docs/IMPLEMENTATION_GUIDE.md) - 단계별 구현 가이드
385
+
386
+ ### 에이전트별 문서
387
+ - [HDSP Detection](docs/HDSP_DETECTION.md) - On-Prem K8s 장애 감지 (HDSP Agent)
388
+ - [Cost Anomaly Detection](docs/COST_ANOMALY_DETECTION.md) - 비용 이상 탐지 (Cost Agent)
389
+ - [Config Drift Detection](docs/CONFIG_DRIFT_DETECTION.md) - 설정 드리프트 감지 (Drift Agent)
390
+
391
+ ## Development
392
+
393
+ ### Running Tests
394
+
395
+ ```bash
396
+ # Unit tests
397
+ pytest tests/unit/
398
+
399
+ # Integration tests
400
+ pytest tests/integration/
401
+
402
+ # All tests with coverage
403
+ pytest --cov=src tests/
404
+ ```
405
+
406
+ ### Code Quality
407
+
408
+ ```bash
409
+ # Linting
410
+ ruff check src/
411
+
412
+ # Type checking
413
+ mypy src/
414
+
415
+ # Formatting
416
+ black src/
417
+ ```
418
+
419
+ ## Contributing
420
+
421
+ 1. Fork the repository
422
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
423
+ 3. Commit your changes (`git commit -m 'feat: Add amazing feature'`)
424
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
425
+ 5. Open a Pull Request
426
+
427
+ ## License
428
+
429
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.