bronto-dataset-discovery
Skill137 starsChanged 10 days agoApache-2.0View on GitHub
Load this skill when investigating an incident or answering a question that needs logs from Bronto and the dataset that holds them is not already known - for example a service, host, function or resource that is failing, slow or throwing errors. It finds which Bronto datasets hold that service's logs, which key identifies the service, and whether there is data in the incident window, before any log search runs.
In this repository72 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- agentcore-observability-setupSkill
- agentcore-ops-reviewSkill
- aiml-access-diagnosticsSkill
- aiml-gpu-training-cluster-investigationSkill
- analytics-opensearch-expertiseSkill
- aws-backup-coverage-reviewSkill
- aws-eks-healthdashboardSkill
- aws-eks-operations-reviewSkill
- aws-fsxn-operations-reviewSkill
- aws-health-eventsSkill
- aws-natgw-traffic-analysisSkill
- aws-routingSkill
- aws-vpc-dns-investigationSkill
- bedrock-adoption-readinessSkill
- bedrock-operation-reviewSkill
- bronto-error-investigationSkill
- bronto-log-searchSkill
- cloudtrail-cost-optimizationSkill
- config-cost-optimizationSkill
- coralogix-ai-centerSkill
- coralogix-alertsSkill
- coralogix-case-analyticsSkill
- coralogix-case-managementSkill
- coralogix-casesSkill
- coralogix-dashboardsSkill
- coralogix-dataprimeSkill
- coralogix-datasetsSkill
- coralogix-data-usageSkill
- coralogix-docsSkill
- coralogix-infrastructureSkill
- coralogix-logsSkill
- coralogix-metrics-querySkill
- coralogix-ollySkill
- coralogix-rumSkill
- coralogix-service-catalogSkill
- coralogix-single-caseSkill
- coralogix-spansSkill
- coralogix-viewsSkill
- crm-production-investigation-guidelinesSkill
- database-migration-service-expertiseSkill
- database-rds-devopsSkill
- devops-agent-cost-insightsSkill
- ecs-operation-reviewSkill
- eks-upgrade-readinessSkill
- enrich-with-aws-security-agentSkill
- eos-cost-analysisSkill
- firehose-operation-reviewSkill
- grafana-cloud-investigationSkill
- guardduty-cost-optimizationSkill
- honeycomb-create-boardSkill
- honeycomb-metrics-queriesSkill
- honeycomb-observability-fundamentalsSkill
- honeycomb-production-investigationSkill
- honeycomb-query-patternsSkill
- honeycomb-slos-and-triggersSkill
- honeycomb-verify-recent-traceSkill
- investigation-cost-guardrailSkill
- live-streaming-event-readiness-reviewSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 2 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
All steps are read-only. Do not create monitors or saved searches as part of this skill.
- Very specific: line 46
Prefer datasets whose environment tag or collection name matches the incident's environment.
- Very specific: line 49
Never conclude that a service stopped logging from last_heartbeat_at or active.
- Very specific: line 53
Keep the full ranked list for the report.
- Very specific: line 59
Call get_keys with its log_id.
- Very specific: line 60
Call get_key_values for the most likely key to confirm the service appears as a value.
- Very specific: line 68
If a filtered count is zero, check the key spelling with get_keys before you report that there are no logs.
- Distinctive: line 72
Before any log search, report one line per dataset you will use:
- Very specific: line 88
Never put event fields in from_expr.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Find the Bronto datasets for an investigation
Use the tools on the connected Bronto MCP server to work out where the affected service's logs live before you search them. A Bronto organization can hold hundreds of datasets with different schemas. A search across all of them returns events from unrelated services, and a field filter that is valid in one dataset silently matches nothing in another, so an empty result can look like evidence when it isn't.
All steps are read-only. Do not create monitors or saved searches as part of this skill.
1. Collect identifiers and the time window
From the incident or question, note:
- The service, application or function name, and any likely variants (hyphens or underscores, with or without an environment suffix such as
-prod). - The environment (production, staging) and region.
- Hostnames, instance IDs, container or task names, cluster or namespace.
- Request IDs, trace IDs or error strings quoted in the incident.
- The incident window as start and end times in Unix epoch milliseconds. Widen it by 15 minutes on each side.
2. Find candidate datasets
Datasets are grouped into collections and carry tags such as service, environment and region. Always pass a selector to get_datasets. Without one it returns every dataset in the organization, which can be hundreds of entries. For the same reason, do not call get_all_datasets_keys.
Try these in order and stop once you have candidates:
- By tag:
get_datasetswithfrom_exprset to"service" = '<service>'. AddAND "environment" = '<environment>'when you know the environment, andAND "region" = '<region>'when you know the region. Tags are optional, so if a narrowed selector returns nothing, drop the region and then the environment before moving on. - By name:
get_datasetswithfrom_exprset to"dataset" LIKE '%<name>%' OR "collection" LIKE '%<name>%'. Repeat with each name variant. - By errors in the window:
get_error_summarywithfrom_tsandto_tsset to the window. Itsby_datasetlist names only the datasets that logged errors or warnings, and it does not use search quota.
get_datasets_by_name matches the dataset and collection names exactly, so use it only when you already know both.
Set minimal_output to true. Pass minimal_output: false with from set to the candidate log_id values when you need a dataset's tags.
3. Rank the candidates
- Prefer datasets whose
environmenttag or collection name matches the incident's environment. - Prefer datasets whose
regiontag or name matches the incident's region, such aseu-west-1. A dataset for another region holds traffic the incident did not affect. When one dataset holds every region, keep it and filter on the event's region key instead, found in step 4. - Use
last_heartbeat_atonly to set aside datasets that have been dormant for a long time. It is recorded about once a day, so a dataset that is ingesting normally can show a heartbeat up to 48 hours old. Set a dataset aside only when itslast_heartbeat_atis more than 2 days before the window start.activeis false when the heartbeat is more than 14 days old or missing. A missing heartbeat means unknown, not dormant, so keep such a dataset if it is the best match. - Never conclude that a service stopped logging from
last_heartbeat_atoractive. Use the event counts in step 5. - Collections whose names start with a dot, such as
.metricsand.traces, hold metrics and traces rather than log events. Include them only when the question is about metrics or traces. - Sibling datasets with suffixes such as
_gcor_systemdhold host and runtime logs. Rank them below the application dataset, but keep them for crashes, restarts and out-of-memory events.
Keep the full ranked list for the report. Only the next step is limited, because get_keys responses can list hundreds of keys.
4. Confirm the filter key
For each of the top candidates:
- Call
get_keyswith itslog_id. Look for keys that identify the service or host, such asservice,$service,service.name,host,hostnameor Kubernetes and container keys. When the dataset holds more than one region, also look for a region key such asregionorcloud.region. - Call
get_key_valuesfor the most likely key to confirm the service appears as a value. The values come from the most frequent keys only, so a missing value is not proof of absence.
Copy key names exactly as get_keys returns them. Do not list every value of a key that holds IDs, timestamps or other high-cardinality data.
5. Check there is data in the window
For each of the top three candidates, call timeseries with metric_functions: ["COUNT(*)"], that dataset's log_id in log_ids, the window as timerange_start and timerange_end, the service filter from step 4 as search_filter, and num_of_slices: 6. Leave minimal_output false, because the minimal response leaves out the per-bucket counts. The buckets show whether the service logged before, during and after the incident. A gap that starts at the incident is itself evidence. Make a separate call per dataset, because the filter key can differ between datasets and a combined call adds the counts together.
If a filtered count is zero, check the key spelling with get_keys before you report that there are no logs.
6. Report the dataset map
Before any log search, report one line per dataset you will use:
- Dataset name, collection and
log_id. - Why it matched: tag, name, key value or error summary.
- The filter key and value to use, in
search_filtersyntax, such as"service.name"='checkout-api'. Include the region filter when the dataset holds more than one region, such as"service.name"='checkout-api' AND "cloud.region"='eu-west-1'. - Whether it has data in the window, and when it last ingested.
- Your confidence: high, medium or low.
- The
webapp_urlfrom thetimeseriesresponse, so a person can open the same search in Bronto.
Then give the first query to run: a get_error_summary for the window, or a search_logs or timeseries call scoped to the chosen log_ids with the filter above and a small limit.
If no dataset matches after every step in section 2, say that the service's logs were not found in Bronto and list the names and tags you tried. Do not search every dataset instead, and do not guess. Bronto only returns datasets the connected user or API key can see, so a missing dataset can also mean missing permissions; say so.
Limits
- Make at most 15 Bronto tool calls in this skill before reporting.
- Never put event fields in
from_expr. It selects datasets by collection, dataset name and tags only; event filters belong insearch_filter.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

