holmesgpt 0.14.1a0__tar.gz → 0.14.2__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.
Potentially problematic release.
This version of holmesgpt might be problematic. Click here for more details.
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/PKG-INFO +2 -2
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/__init__.py +1 -1
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/clients/robusta_client.py +5 -2
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/common/env_vars.py +2 -2
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/config.py +1 -1
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/llm.py +44 -6
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tool_calling_llm.py +9 -1
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/toolset_manager.py +2 -2
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_fetch_logs.jinja2 +10 -1
- holmesgpt-0.14.2/holmes/plugins/toolsets/datadog/datadog_api.py +682 -0
- holmesgpt-0.14.2/holmes/plugins/toolsets/datadog/datadog_logs_instructions.jinja2 +54 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/toolset_datadog_general.py +329 -190
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/toolset_datadog_logs.py +181 -9
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/toolset_datadog_metrics.py +75 -10
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/toolset_datadog_rds.py +2 -2
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/toolset_datadog_traces.py +3 -3
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/toolset_grafana_loki.py +2 -1
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/toolset_grafana_tempo.py +3 -3
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/logging_utils/logging_api.py +1 -1
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/prometheus/prometheus.py +704 -349
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/prometheus/prometheus_instructions.jinja2 +27 -11
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/pyproject.toml +5 -4
- holmesgpt-0.14.1a0/holmes/plugins/toolsets/datadog/datadog_api.py +0 -216
- holmesgpt-0.14.1a0/holmes/plugins/toolsets/datadog/datadog_logs_instructions.jinja2 +0 -43
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/LICENSE.txt +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/README.md +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/.git_archival.json +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/common/openshift.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/config.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/conversations.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/investigation.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/investigation_structured_output.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/issue.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/models.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/openai_formatting.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/performance_timing.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/prompt.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/resource_instruction.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/runbooks.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/safeguards.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/supabase_dal.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/todo_tasks_formatter.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tools.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tools_utils/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tools_utils/data_types.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tools_utils/tool_context_window_limiter.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tools_utils/tool_executor.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tools_utils/toolset_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/tracing.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/transformers/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/transformers/base.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/transformers/llm_summarize.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/transformers/registry.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/core/transformers/transformer.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/interactive.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/main.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/destinations/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/destinations/slack/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/destinations/slack/plugin.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/interfaces.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_ai_safety.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_current_date_time.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_default_log_prompt.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_general_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_global_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_permission_errors.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_runbook_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/_toolsets_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/generic_ask.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/generic_ask_conversation.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/generic_ask_for_issue_conversation.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/generic_investigation.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/generic_post_processing.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/generic_ticket.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/investigation_output_format.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/investigation_procedure.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/kubernetes_workload_ask.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/prompts/kubernetes_workload_chat.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/CLAUDE.md +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/README.md +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/catalog.json +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/jira.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/kube-prometheus-stack.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/networking/dns_troubleshooting_instructions.md +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/runbooks/upgrade/upgrade_troubleshooting_instructions.md +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/sources/github/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/sources/jira/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/sources/opsgenie/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/sources/pagerduty/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/sources/prometheus/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/sources/prometheus/models.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/sources/prometheus/plugin.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/aks-node-health.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/aks.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/argocd.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/atlas_mongodb/instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/aws.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/apis/alert_monitoring_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/apis/azure_sql_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/apis/connection_failure_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/apis/connection_monitoring_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/apis/storage_analysis_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/azure_base_toolset.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/azure_sql_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/azure_sql_toolset.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/install.md +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/analyze_connection_failures.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_connections.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_health_status.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_performance.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/analyze_database_storage.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/get_active_alerts.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/get_slow_queries.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/get_top_cpu_queries.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/get_top_data_io_queries.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/tools/get_top_log_io_queries.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/azure_sql/utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/argocd/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/argocd/constants.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/aws/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/aws/constants.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/azure/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/azure/constants.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/bash_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/bash_toolset.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/common/bash.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/common/bash_command.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/common/config.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/common/stringify.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/common/validators.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/docker/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/docker/constants.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/helm/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/helm/constants.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/constants.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/kubectl_describe.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/kubectl_events.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/kubectl_get.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/kubectl_logs.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/kubectl_run.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/kubectl/kubectl_top.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/parse_command.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/base64_util.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/cut.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/grep/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/head.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/jq.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/sed.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/sort.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/tail.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/tr.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/uniq.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/bash/utilities/wc.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/confluence.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/consts.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/coralogix/api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/coralogix/toolset_coralogix_logs.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/coralogix/utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/datadog_general_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/datadog_metrics_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/datadog_rds_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/datadog_traces_formatter.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/datadog/instructions_datadog_traces.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/docker.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/git.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/base_grafana_toolset.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/common.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/grafana_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/grafana_tempo_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/loki_api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/toolset_grafana.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/toolset_grafana_tempo.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/grafana/trace_parser.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/helm.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/internet/internet.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/internet/notion.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/investigator/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/investigator/core_investigation.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/investigator/investigator_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/investigator/model.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/kafka.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/kubernetes.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/kubernetes_logs.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/kubernetes_logs.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/logging_utils/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/logging_utils/types.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/mcp/toolset_mcp.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/newrelic.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/opensearch/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/opensearch/opensearch.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/opensearch/opensearch_logs.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/opensearch/opensearch_traces.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/opensearch/opensearch_traces_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/opensearch/opensearch_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/prometheus/utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/rabbitmq/api.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/rabbitmq/rabbitmq_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/rabbitmq/toolset_rabbitmq.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/robusta/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/robusta/robusta.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/robusta/robusta_instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/runbook/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/runbook/runbook_fetcher.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/service_discovery.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/servicenow/install.md +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/servicenow/instructions.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/servicenow/servicenow.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/slab.yaml +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/toolsets/utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/plugins/utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/__init__.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/cache.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/cert_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/colors.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/config_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/console/consts.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/console/logging.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/console/result.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/default_toolset_installation_guide.jinja2 +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/definitions.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/env.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/file_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/global_instructions.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/holmes_status.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/holmes_sync_toolsets.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/keygen_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/llms.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/markdown_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/pydantic_utils.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/sentry_helper.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/stream.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/utils/tags.py +0 -0
- {holmesgpt-0.14.1a0 → holmesgpt-0.14.2}/holmes/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: holmesgpt
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.2
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Natan Yellin
|
|
6
6
|
Author-email: natan@robusta.dev
|
|
@@ -26,7 +26,7 @@ Requires-Dist: fastapi (>=0.116,<0.117)
|
|
|
26
26
|
Requires-Dist: humanize (>=4.9.0,<5.0.0)
|
|
27
27
|
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
|
|
28
28
|
Requires-Dist: kubernetes (>=32.0.1,<33.0.0)
|
|
29
|
-
Requires-Dist: litellm (
|
|
29
|
+
Requires-Dist: litellm (==1.77.1)
|
|
30
30
|
Requires-Dist: markdown (>=3.6,<4.0)
|
|
31
31
|
Requires-Dist: markdownify (>=1.1.0,<2.0.0)
|
|
32
32
|
Requires-Dist: mcp (==v1.12.2)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import List, Optional
|
|
2
|
+
from typing import List, Optional, Dict, Any
|
|
3
3
|
import requests # type: ignore
|
|
4
4
|
from functools import cache
|
|
5
|
-
from pydantic import BaseModel, ConfigDict
|
|
5
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
6
6
|
from holmes.common.env_vars import ROBUSTA_API_ENDPOINT
|
|
7
7
|
|
|
8
8
|
HOLMES_GET_INFO_URL = f"{ROBUSTA_API_ENDPOINT}/api/holmes/get_info"
|
|
@@ -17,6 +17,9 @@ class HolmesInfo(BaseModel):
|
|
|
17
17
|
class RobustaModelsResponse(BaseModel):
|
|
18
18
|
model_config = ConfigDict(extra="ignore")
|
|
19
19
|
models: List[str]
|
|
20
|
+
models_args: Dict[str, Any] = Field(
|
|
21
|
+
default_factory=dict, alias="models_holmes_args"
|
|
22
|
+
)
|
|
20
23
|
default_model: Optional[str] = None
|
|
21
24
|
|
|
22
25
|
|
|
@@ -73,11 +73,11 @@ LOG_LLM_USAGE_RESPONSE = load_bool("LOG_LLM_USAGE_RESPONSE", False)
|
|
|
73
73
|
# For CLI only, enable user approval for potentially sensitive commands that would otherwise be rejected
|
|
74
74
|
ENABLE_CLI_TOOL_APPROVAL = load_bool("ENABLE_CLI_TOOL_APPROVAL", True)
|
|
75
75
|
|
|
76
|
-
MAX_GRAPH_POINTS = float(os.environ.get("MAX_GRAPH_POINTS",
|
|
76
|
+
MAX_GRAPH_POINTS = float(os.environ.get("MAX_GRAPH_POINTS", 100))
|
|
77
77
|
|
|
78
78
|
# Limit each tool response to N% of the total context window.
|
|
79
79
|
# Number between 0 and 100
|
|
80
80
|
# Setting to either 0 or any number above 100 disables the logic that limits tool response size
|
|
81
81
|
TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_PCT = float(
|
|
82
|
-
os.environ.get("TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_PCT",
|
|
82
|
+
os.environ.get("TOOL_MAX_ALLOCATED_CONTEXT_WINDOW_PCT", 15)
|
|
83
83
|
)
|
|
@@ -131,7 +131,7 @@ class Config(RobustaBaseConfig):
|
|
|
131
131
|
def log_useful_info(self):
|
|
132
132
|
if self.llm_model_registry and self.llm_model_registry.models:
|
|
133
133
|
logging.info(
|
|
134
|
-
f"
|
|
134
|
+
f"Loaded models: {list(self.llm_model_registry.models.keys())}"
|
|
135
135
|
)
|
|
136
136
|
else:
|
|
137
137
|
logging.warning("No llm models were loaded")
|
|
@@ -3,7 +3,7 @@ import logging
|
|
|
3
3
|
from abc import abstractmethod
|
|
4
4
|
from typing import Any, Dict, List, Optional, Type, Union, TYPE_CHECKING
|
|
5
5
|
|
|
6
|
-
from litellm.types.utils import ModelResponse
|
|
6
|
+
from litellm.types.utils import ModelResponse, TextCompletionResponse
|
|
7
7
|
import sentry_sdk
|
|
8
8
|
|
|
9
9
|
from litellm.litellm_core_utils.streaming_handler import CustomStreamWrapper
|
|
@@ -90,9 +90,13 @@ class DefaultLLM(LLM):
|
|
|
90
90
|
self.args = args or {}
|
|
91
91
|
self.tracer = tracer
|
|
92
92
|
self.name = name
|
|
93
|
-
|
|
93
|
+
self.update_custom_args()
|
|
94
94
|
self.check_llm(self.model, self.api_key, self.api_base, self.api_version)
|
|
95
95
|
|
|
96
|
+
def update_custom_args(self):
|
|
97
|
+
self.max_context_size = self.args.get("custom_args", {}).get("max_context_size")
|
|
98
|
+
self.args.pop("custom_args", None)
|
|
99
|
+
|
|
96
100
|
def check_llm(
|
|
97
101
|
self,
|
|
98
102
|
model: str,
|
|
@@ -178,6 +182,9 @@ class DefaultLLM(LLM):
|
|
|
178
182
|
return list(dict.fromkeys(names_to_try))
|
|
179
183
|
|
|
180
184
|
def get_context_window_size(self) -> int:
|
|
185
|
+
if self.max_context_size:
|
|
186
|
+
return self.max_context_size
|
|
187
|
+
|
|
181
188
|
if OVERRIDE_MAX_CONTENT_SIZE:
|
|
182
189
|
logging.debug(
|
|
183
190
|
f"Using override OVERRIDE_MAX_CONTENT_SIZE {OVERRIDE_MAX_CONTENT_SIZE}"
|
|
@@ -424,7 +431,8 @@ class LLMModelRegistry:
|
|
|
424
431
|
|
|
425
432
|
for model in robusta_models.models:
|
|
426
433
|
logging.info(f"Loading Robusta AI model: {model}")
|
|
427
|
-
|
|
434
|
+
args = robusta_models.models_args.get(model)
|
|
435
|
+
self._llms[model] = self._create_robusta_model_entry(model, args)
|
|
428
436
|
|
|
429
437
|
if robusta_models.default_model:
|
|
430
438
|
logging.info(
|
|
@@ -492,7 +500,7 @@ class LLMModelRegistry:
|
|
|
492
500
|
)
|
|
493
501
|
|
|
494
502
|
model_key, first_model_params = next(iter(self._llms.items()))
|
|
495
|
-
logging.
|
|
503
|
+
logging.debug(f"Using first available model: {model_key}")
|
|
496
504
|
return first_model_params.copy()
|
|
497
505
|
|
|
498
506
|
def get_llm(self, name: str) -> LLM: # TODO: fix logic
|
|
@@ -509,12 +517,15 @@ class LLMModelRegistry:
|
|
|
509
517
|
|
|
510
518
|
return models
|
|
511
519
|
|
|
512
|
-
def _create_robusta_model_entry(
|
|
520
|
+
def _create_robusta_model_entry(
|
|
521
|
+
self, model_name: str, args: Optional[dict[str, Any]] = None
|
|
522
|
+
) -> dict[str, Any]:
|
|
513
523
|
return self._create_model_entry(
|
|
514
524
|
model="gpt-4o", # Robusta AI model is using openai like API.
|
|
515
525
|
model_name=model_name,
|
|
516
526
|
base_url=f"{ROBUSTA_API_ENDPOINT}/llm/{model_name}",
|
|
517
527
|
is_robusta_model=True,
|
|
528
|
+
args=args or {},
|
|
518
529
|
)
|
|
519
530
|
|
|
520
531
|
def _create_model_entry(
|
|
@@ -523,10 +534,37 @@ class LLMModelRegistry:
|
|
|
523
534
|
model_name: str,
|
|
524
535
|
base_url: Optional[str] = None,
|
|
525
536
|
is_robusta_model: Optional[bool] = None,
|
|
537
|
+
args: Optional[dict[str, Any]] = None,
|
|
526
538
|
) -> dict[str, Any]:
|
|
527
|
-
|
|
539
|
+
entry = {
|
|
528
540
|
"name": model_name,
|
|
529
541
|
"base_url": base_url,
|
|
530
542
|
"is_robusta_model": is_robusta_model,
|
|
531
543
|
"model": model,
|
|
532
544
|
}
|
|
545
|
+
if args:
|
|
546
|
+
entry["custom_args"] = args # type: ignore[assignment]
|
|
547
|
+
|
|
548
|
+
return entry
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
def get_llm_usage(
|
|
552
|
+
llm_response: Union[ModelResponse, CustomStreamWrapper, TextCompletionResponse],
|
|
553
|
+
) -> dict:
|
|
554
|
+
usage: dict = {}
|
|
555
|
+
if (
|
|
556
|
+
(
|
|
557
|
+
isinstance(llm_response, ModelResponse)
|
|
558
|
+
or isinstance(llm_response, TextCompletionResponse)
|
|
559
|
+
)
|
|
560
|
+
and hasattr(llm_response, "usage")
|
|
561
|
+
and llm_response.usage
|
|
562
|
+
): # type: ignore
|
|
563
|
+
usage["prompt_tokens"] = llm_response.usage.prompt_tokens # type: ignore
|
|
564
|
+
usage["completion_tokens"] = llm_response.usage.completion_tokens # type: ignore
|
|
565
|
+
usage["total_tokens"] = llm_response.usage.total_tokens # type: ignore
|
|
566
|
+
elif isinstance(llm_response, CustomStreamWrapper):
|
|
567
|
+
complete_response = litellm.stream_chunk_builder(chunks=llm_response) # type: ignore
|
|
568
|
+
if complete_response:
|
|
569
|
+
return get_llm_usage(complete_response)
|
|
570
|
+
return usage
|
|
@@ -27,7 +27,7 @@ from holmes.core.investigation_structured_output import (
|
|
|
27
27
|
is_response_an_incorrect_tool_call,
|
|
28
28
|
)
|
|
29
29
|
from holmes.core.issue import Issue
|
|
30
|
-
from holmes.core.llm import LLM
|
|
30
|
+
from holmes.core.llm import LLM, get_llm_usage
|
|
31
31
|
from holmes.core.performance_timing import PerformanceTiming
|
|
32
32
|
from holmes.core.resource_instruction import ResourceInstructions
|
|
33
33
|
from holmes.core.runbooks import RunbookManager
|
|
@@ -422,7 +422,11 @@ class ToolCallingLLM:
|
|
|
422
422
|
)
|
|
423
423
|
costs.total_cost += post_processing_cost
|
|
424
424
|
|
|
425
|
+
self.llm.count_tokens_for_message(messages)
|
|
425
426
|
perf_timing.end(f"- completed in {i} iterations -")
|
|
427
|
+
metadata["usage"] = get_llm_usage(full_response)
|
|
428
|
+
metadata["max_tokens"] = max_context_size
|
|
429
|
+
metadata["max_output_tokens"] = maximum_output_token
|
|
426
430
|
return LLMResult(
|
|
427
431
|
result=post_processed_response,
|
|
428
432
|
unprocessed_result=raw_response,
|
|
@@ -863,6 +867,10 @@ class ToolCallingLLM:
|
|
|
863
867
|
|
|
864
868
|
tools_to_call = getattr(response_message, "tool_calls", None)
|
|
865
869
|
if not tools_to_call:
|
|
870
|
+
self.llm.count_tokens_for_message(messages)
|
|
871
|
+
metadata["usage"] = get_llm_usage(full_response)
|
|
872
|
+
metadata["max_tokens"] = max_context_size
|
|
873
|
+
metadata["max_output_tokens"] = maximum_output_token
|
|
866
874
|
yield StreamMessage(
|
|
867
875
|
event=StreamEvents.ANSWER_END,
|
|
868
876
|
data={
|
|
@@ -464,12 +464,12 @@ class ToolsetManager:
|
|
|
464
464
|
|
|
465
465
|
logger = logging.getLogger(__name__)
|
|
466
466
|
|
|
467
|
-
logger.
|
|
467
|
+
logger.debug(
|
|
468
468
|
f"Starting fast_model injection. global_fast_model={self.global_fast_model}"
|
|
469
469
|
)
|
|
470
470
|
|
|
471
471
|
if not self.global_fast_model:
|
|
472
|
-
logger.
|
|
472
|
+
logger.debug("No global_fast_model configured, skipping injection")
|
|
473
473
|
return
|
|
474
474
|
|
|
475
475
|
injected_count = 0
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* IMPORTANT: ALWAYS inform the user about what logs you fetched. For example: "Here are pod logs for ..."
|
|
12
12
|
* IMPORTANT: If logs commands have limits mention them. For example: "Showing last 100 lines of logs:"
|
|
13
13
|
* IMPORTANT: If a filter was used, mention the filter. For example: "Logs filtered for 'error':"
|
|
14
|
+
* IMPORTANT: If a date range was used (even if just the default one and you didn't specify the parameter, mention the date range. For example: "Logs from last 1 hour..."
|
|
14
15
|
|
|
15
16
|
{% if loki_ts and loki_ts.status == "enabled" -%}
|
|
16
17
|
* For any logs, including for investigating kubernetes problems, use Loki
|
|
@@ -34,7 +35,15 @@ Tools to search and fetch logs from Coralogix.
|
|
|
34
35
|
### datadog/logs
|
|
35
36
|
#### Datadog Logs Toolset
|
|
36
37
|
Tools to search and fetch logs from Datadog.
|
|
37
|
-
|
|
38
|
+
* Use the tool `fetch_pod_logs` to access an application's logs.
|
|
39
|
+
* Do fetch application logs yourself and DO not ask users to do so
|
|
40
|
+
* If you have an alert/monitor try to figure out the time it fired
|
|
41
|
+
** Then, use `start_time=-300` (5 minutes before `end_time`) and `end_time=<time monitor started firing>` when calling `fetch_pod_logs`.
|
|
42
|
+
** If there are too many logs, or not enough, narrow or widen the timestamps
|
|
43
|
+
* If the user did not explicitly ask about a given timeframe, ignore the `start_time` and `end_time` so it will use the default.
|
|
44
|
+
* IMPORTANT: ALWAYS inform the user about the actual time period fetched (e.g., "Looking at logs from the last <X> days")
|
|
45
|
+
* IMPORTANT: If a limit was applied, ALWAYS tell the user how many logs were shown vs total (e.g., "Showing latest <Y> of <Z> logs")
|
|
46
|
+
* IMPORTANT: If any filters were applied, ALWAYS mention them explicitly
|
|
38
47
|
{%- elif k8s_yaml_ts and k8s_yaml_ts.status == "enabled" -%}
|
|
39
48
|
### kubernetes/logs
|
|
40
49
|
#### Kubernetes Logs Toolset
|