When OpenSearch alerting and anomaly detection replace a separate monitoring stack
If your logs or metrics already live in OpenSearch and you want to be told when something goes wrong, the alerting and anomaly detection features can often cover that need without adding a second monitoring tool. Monitors run queries on a schedule, triggers define the conditions that fire, and notifications send the result to the people or channels that need it. Whether this is enough depends on three things: what you alert on, who must respond and how quickly, and whether the alerts must keep working when the cluster itself is unhealthy. Those questions decide the fit more than the feature list does.
The three most common uses map to different configurations. An error spike is usually a query monitor that counts documents matching an error level or status code over a recent window and fires when the count crosses a threshold you set. A threshold breach, such as latency above an agreed value or a queue field that stays high, is a monitor on an aggregation of a numeric field. Unusual patterns in event volume suit an anomaly detector, which uses the Random Cut Forest algorithm to learn a baseline from historical data and flag points that deviate from it. Detectors need enough history to learn normal behavior, so confirm the training window and data density for your version before promising coverage on a new index. Write down what counts as an incident before building any of them.
Staying inside OpenSearch makes most sense when the team already searches and builds dashboards there, the data is retained and access-controlled in that cluster, and the alert recipients can be reached through the notification destinations your version supports. Plan who may create and edit monitors using the role-based access control of the Security plugin, because a monitor that can read an index can also expose its contents in notification messages. Confirm how credentials for each notification destination are stored and rotated. Treat monitor definitions as configuration: keep them in version control or in exported backups so changes can be reviewed and restored.
Several signs point toward a separate alerting platform. The first is paging and escalation: if you need on-call schedules, acknowledgement, escalation chains and incident tracking, a dedicated tool usually handles these better than a notification step attached to a monitor. The second is data that never reaches OpenSearch, such as host metrics, network devices or cloud service health, where an alert would require a new pipeline just to feed the cluster. The third is dependency. A cluster cannot reliably report its own failure, so any setup that relies only on in-cluster alerts needs an independent availability check running outside the cluster. A fourth sign is alert volume from many teams that need separate routing, ownership and reporting.
Before deciding, inventory the alerts you run today and sort them by data source, recipient and required response time. Identify which ones could move into OpenSearch without a new pipeline. Build a pilot with two or three monitors that represent different types, then test them during a planned failure: stop the ingest path, take a node out of service and confirm that a person still receives the alert. Record which settings produced noise and tune thresholds and training windows before a wider rollout. If the pilot exposes gaps in routing or escalation, that is the point to scope a second tool, and the scope should name the systems it reads from and the people who answer its pages.
Monitor, trigger and detector options and when each fits
This table compares the monitor types, trigger settings, notification routes and anomaly detector modes you will choose between when designing alerting. Read each row by asking what the rule must detect and who acts on it, then check the cost column for query load or tuning effort. Monitor types and notification channels vary by OpenSearch version and installed plugins, so confirm the exact list in your cluster before finalizing the design.
| Option | When it fits | Cost in query load or tuning effort |
|---|---|---|
| Extraction query monitor | Counts or filters documents over a time window, such as failed sign-ins above a fixed count for a short period. | Load grows with index size and run frequency. Narrow the time range and index pattern first. |
| Bucket-level monitor | Groups results by a field such as source host, then alerts per group when an aggregation crosses a threshold. | Each bucket is evaluated, so high-cardinality fields raise load. Limit bucket counts with filters and sizes. |
| Document-level monitor | Checks newly indexed documents against specific rules, such as a known bad value in an event field. | Rule count and field mappings drive effort. Confirm the document-level monitor type and its limits in your version first. |
| Threshold trigger | Fires when a monitor result crosses a fixed level. Easy to explain to on-call staff and simple to test. | Low build effort, but static levels create noise as traffic changes. Review thresholds after the first baseline period. |
| Throttling and action grouping | Limits repeated notifications while the same condition stays true, so one incident produces fewer messages. | Too long a throttle hides new incidents, too short floods the channel. Set it per severity with the team that responds. |
| Notification channel | Routes alerts to the team that acts, such as email, chat, webhook or ticketing. Confirm which channel types your version and plugins support. | Each channel needs credentials, a test and an owner. Failed deliveries need their own monitoring. |
| Real-time anomaly detector | Scores incoming data on a set interval for sudden shifts in a metric, such as request volume or error counts. | Runs on every interval, so load and false positives rise with feature count and short intervals. Start with one or two features. |
| Historical anomaly analysis | Trains on past data to find anomalies in a fixed window, useful for tuning a detector before it goes live. | Uses cluster resources during the run. Schedule it against a stable history window and review results with domain owners. |
How monitors, triggers and notifications work together
A monitor in OpenSearch alerting is the object that ties the chain together. It holds a schedule and a query. Each time the schedule fires, the query runs against the indices it names, and one or more triggers evaluate the results against a condition, such as a document count crossing a threshold. When a trigger's condition is met, the alert moves into an active state and the trigger's actions run. Each action builds a message from a template and sends it through a notification channel to the recipients or destinations configured for it. Because an alert tracks state across runs, a condition that stays true does not necessarily create a new incident on every execution. Confirm in your version's documentation which alert states exist, how they change, and which of them trigger actions.
The query window, the schedule and the trigger threshold only make sense together. The query window is the time range written into the query, usually expressed relative to the moment the monitor runs. The schedule decides how often that window is evaluated. If the window is shorter than the interval between runs, events that arrive between two windows are never counted, which produces missed alerts. If the window is longer than the interval, consecutive runs count the same events again, which inflates counts and produces repeat alerts for one underlying problem. Illustrative example: a ten-minute window evaluated every minute counts each event up to ten times, so a threshold chosen for a one-minute view will fire far too often. Set the window, the interval and the threshold as one decision and record the reasoning next to the monitor.
Ingestion delay is the factor teams most often overlook. A document carries an event timestamp, but it becomes searchable only after it is indexed, and that can happen well after the timestamp, especially when logs pass through collectors, queues or batch shippers. A window that ends at the current time will miss late arrivals, and the event will never be counted by any later run if its timestamp falls outside the window that was checked. A common mitigation is to offset the window end so that it trails the present by the typical indexing lag. Measure that lag in your own pipeline before choosing the offset. Schedule frequency also has a cost: each run executes the query on the cluster, so frequent monitors over large indices or heavy aggregations compete with search and indexing workloads. Confirm the schedule options your version supports, including whether cron expressions and time zones are available, and test the load before production use.
Notifications are the last link and the one that reaches people. Each trigger can carry one or more actions, and each action points at a destination configured through the notifications feature, such as an email recipient or a webhook. Confirm which destination types your version supports and how credentials for them are stored and rotated. Actions also determine how often a person hears about a condition, and the options for repeating or suppressing notifications differ between versions, so verify them directly rather than assuming the defaults. Before go-live, run each monitor against known test data, record how many alerts and messages you expect, and compare that with what arrives. Assign an owner for every monitor and every destination, so that when a recipient leaves or a channel changes, someone is responsible for updating the chain.
Setting up OpenSearch alerting and anomaly detection in order
This sequence takes an OpenSearch cluster from a version check to a working monitor, alert path and anomaly detector, with a check after each step. Build the monitor and trigger before the detector so that each piece can be verified against data you already understand.
Confirm cluster version and plugin state
The platform owner records the OpenSearch version of the cluster and of OpenSearch Dashboards, then confirms that the Alerting, Notifications and Anomaly Detection plugins are installed and enabled. Keep the version in the change record, because menu paths, labels and some settings depend on the Dashboards version and you should follow the documentation for that release. The step is complete when cluster health is stable and all three plugins show as enabled in the plugin list or the plugin API output. If a plugin is missing, fix that before any monitor is built.
Plan index patterns and field mappings
The team lists the indices each monitor will query, the fields it will filter and aggregate on, and the timestamp field used for time windows. Check that the fields used in range and term queries are mapped as dates, keywords or numerics, since text fields are analyzed and behave differently in aggregations. Decide the index pattern name and how indices roll over, because a monitor on a pattern picks up new indices automatically. The step is complete when a Discover search in Dashboards returns the expected fields with the expected types on a sample of documents.
Create a test monitor on known data
Choose a past time window where the outcome is documented, such as a known number of failed logins or error responses, and create a per-query monitor with a simple extraction query over that window. Run the monitor manually with a preview before enabling its schedule. The step is complete when the run output shows the hit count you expected for the known window and returns zero hits for an empty window. If the counts differ, check the time field and time zone handling before adding complexity (illustrative: a login failure count from a single day).
Define triggers and notification channels
Create the notification channel first in the Notifications plugin and send a test message to the destination your on-call or security team uses. Then add a trigger to the monitor with a condition on the query result, such as a hit count above a threshold, and set a severity. Attach an action that uses the channel, and set any throttling options your version provides with the team that receives the alerts. The step is complete when forcing the trigger to fire against the test data delivers the message and the alert history shows the triggered state.
Add an anomaly detector on a metric
Create a Random Cut Forest detector on one numeric metric that has a long, stable history, selecting the timestamp field and a detector interval that matches how the metric is sampled. Start with a single feature and no category field so that the first results are easy to explain. The step is complete when the detector finishes initializing and training, and the results view shows anomaly scores over the historical period that line up with incidents you can name. If the detector returns no results, revisit the interval, the feature query and the data density before changing thresholds.
How Random Cut Forest anomaly detectors learn what normal looks like
Random Cut Forest detectors score each new interval of a time series against a baseline learned from historical data. The inputs you choose, including feature fields, aggregation, interval and data history, determine what that baseline represents. The cards cover each input and the feed conditions that affect whether the results can be trusted.
Feature fields define what is measured
Each detector reads one or more feature fields, usually numeric values such as response time or bytes sent, and scores them together for every interval. Adding features can reveal correlated shifts, but it also makes the baseline harder to explain to the engineer who receives the alert. Confirm which field types and how many features your OpenSearch version accepts before you design the detector.
Aggregation sets the meaning of a data point
Before the forest scores anything, OpenSearch summarizes raw documents into buckets using an aggregation such as count, average, sum or maximum. The choice changes what counts as unusual, because an average can hide a short spike that a maximum would expose. Pick the aggregation that matches the question the alert must answer, then test it against a past incident your team already understands.
Interval controls resolution and noise
The bucket interval sets how often a new point is scored. Short intervals catch fast changes but produce sparser, noisier buckets, while long intervals smooth out spikes and delay detection. Choose the interval based on how quickly your team must respond and how many events each bucket will hold, then confirm how your version handles interval settings in its documentation.
Training history builds the baseline
During training, the detector reads historical buckets and builds the model that scores later data. A short or unrepresentative history produces a baseline that either misses normal cycles or flags them as anomalies. Confirm the minimum training window and data volume in your version's documentation, and check that the history includes normal peaks, quiet periods and at least one routine release.
Stable feeds keep the baseline valid
A baseline assumes that the same fields arrive on schedule and keep the same meaning. Delayed ingestion, missing buckets, renamed fields or a changed log parser can look like anomalies or quietly shift what normal means. Monitor ingest lag and field mappings for the source index, and decide in advance whether a broken feed should pause the detector or raise its own alert so the gap is visible.
Seasonality and drift need planned retraining
Traffic often repeats on daily and weekly cycles, and a baseline trained on a quiet period will flag ordinary peaks as unusual. Systems also drift after releases, growth or migrations, so yesterday's normal may no longer apply. Plan when to retrain or re-baseline, record each change window, and review detector results after major changes so alert volume does not rise unnoticed.
Tuning alerts to avoid alert fatigue
Threshold monitors fire when a query result crosses a fixed value, so most of their noise comes from a limit set without knowing normal behavior. Raising the limit reduces noise but can hide slow degradation. Lowering it catches more problems but pages people for ordinary peaks. Each lever below moves along that same line.
- Lookback window: A longer window smooths short spikes but delays detection. A shorter window catches problems sooner and fires more often on brief fluctuations.
- Count or rate: A raw error count rises with traffic. Comparing errors against request volume in the same window often produces fewer false positives during busy periods.
- Consecutive runs: Requiring the condition across several runs before firing filters single-run blips, at the cost of a later first alert.
- Exclusions: Maintenance windows and known batch jobs can be excluded in the query. Every exclusion is also a place where a real incident can hide, so record each one with an owner and a review date.
Before widening a monitor's audience, count how many times it fired over a period you choose and check whether each firing led to action. Thresholds must come from your own baseline data, collected under normal load. Examples in documentation are starting points only.
Anomaly detectors built on the Random Cut Forest algorithm learn what normal looks like for a metric and flag deviations from it. Tuning therefore centers on the training data, the feature set and sensitivity, not on fixed limits. The main trade-off is that higher sensitivity catches subtle shifts and also produces more noisy flags. If the training window contains an incident, the detector learns that incident as normal.
- Training window: Cover at least one full cycle of the normal pattern, including weekday and month-end behavior, and exclude known incidents.
- Feature selection: Start with a few well-understood fields. Each added feature gives the detector another way to deviate, which can raise noise.
- Detector interval: Shorter intervals reveal sudden change quickly but produce more noisy data points.
- Sensitivity: Confirm the exact setting names in your OpenSearch version. Change one setting at a time so you can attribute any change in alert volume.
- Category fields: A per-entity detector suits many hosts or services but multiplies alerts. Decide whether each alert should point to one entity or to an aggregate.
To review volume, compare detector flags against incidents your team already knows about over a period you choose. Count flags that matched a known incident, flags that matched nothing, and incidents the detector missed. Widen the audience only after the flags that matter are consistent and the false flags can be explained.
Notifications decide who hears about a firing, through which channel and how often. A well-designed monitor that notifies the wrong people still produces fatigue. Routing to fewer recipients reduces noise but risks that no one acts. Broad routing ensures coverage but teaches people to ignore messages. Routing decisions should follow the severity and ownership of each alert.
- Severity routing: Send only critical alerts to paging. Send lower-severity alerts to a ticket queue or a periodic digest where your version and plugins support it. Confirm the supported channels before you design the routes.
- Repeat frequency: Repeated notifications for an unchanged condition train people to ignore the channel. Set repeat behavior so people are not re-notified about a state nobody has changed.
- Message content: Include the monitor name, the triggering value and a link to the relevant dashboard so responders can act without searching.
- Named owners: Each monitor should have one owner who receives its notifications and can retune it.
- Staged audience: Add recipients in steps, only after volume review shows the alert is actionable for the people receiving it.
Track, for each recipient, how many notifications led to a documented action. Widen the audience only when a trial period shows that volume is manageable and the alerts are acted on. Confirm the notification options and throttling behavior of your OpenSearch version before you finalize routing.
Securing alert data, notification targets and monitor ownership
An alerting setup is only as safe as the monitors, notification channels and messages it produces. The cards below cover who can read and change monitors, what alert messages expose, how channel credentials are stored, how notification traffic is encrypted and how changes are recorded.
Role-based access to monitors and detectors
OpenSearch Security role-based access control determines which users and roles can create, view, edit or run alerting monitors and anomaly detectors. Map alerting permissions to team ownership so that a monitor is changed only by the group responsible for the data it watches. Confirm in your version which alerting and anomaly detection permissions exist and whether they can be scoped to specific indexes.
Alert messages leaking sensitive fields
Alert notifications are built from message templates that can include query results, field values and document content. A template that prints a whole matched document can push customer identifiers, tokens or personal data into chat or email, where access controls are weaker than on the cluster. Review each template against the fields it renders and limit output to the minimum needed to triage the alert.
Document and field security for monitor queries
Monitors run queries under a defined identity, so the data they can see depends on the roles behind that identity. OpenSearch Security supports document-level security, field-level security and field masking, which can limit what a monitor query returns. Test that a monitor owned by one team cannot read fields it should not see, and that its alert output respects the same limits.
Secret handling for webhook and channel credentials
Webhook URLs, API tokens and channel credentials used by notification targets are secrets, and they should not be pasted into monitor definitions that many users can read. Decide where these values live, who can view them and how they are rotated when a team member leaves. Confirm how your OpenSearch version stores notification channel configuration and whether it keeps credentials out of readable exports.
TLS for notification target traffic
Alert delivery sends data from the cluster to external endpoints such as email gateways, chat services and incident tools. Require TLS for every notification target, verify certificates against a trusted authority and decide which outbound networks the cluster may reach. The Security plugin's TLS settings cover node and client traffic, so confirm separately how outbound notification connections validate certificates in your setup.
Audit logging of monitor changes
Changes to monitors, triggers and notification channels should be recorded with who made them and when, so that a silenced alert or a new recipient can be traced. The Security plugin provides audit logs that can be configured by category and storage target. Keep these records outside the cluster they describe, and confirm which alerting actions your configured audit categories capture.
What running alerting in production demands from your team
Alerting in production is an operating commitment, not a feature you switch on once. Before you build monitors, decide who owns each one, how its notifications reach an on-call person, how a change to its query or trigger gets reviewed, and how you confirm that alerting still behaves correctly after the cluster is upgraded. Those four decisions determine whether OpenSearch alerting and anomaly detection stays useful after the first month, when the people who built the monitors have moved on to other work.
Start with monitor ownership. Every monitor, whether it is a per-query monitor, a bucket-level monitor, a document-level monitor or a detector for anomalies, should have a named owner, a documented purpose, the index patterns it reads and the destination it notifies. Keep that register in version control next to the monitor definitions, so a reviewer can see what a trigger is supposed to catch. Ask whether the owners are application teams, the platform team or a security team, because the answer decides who gets paged, who tunes thresholds and who is accountable when a monitor goes quiet.
The cluster layout is what keeps those alerts running when hardware fails. The OpenSearch cluster documentation recommends dedicated cluster manager nodes, replicas on separate nodes and shard allocation awareness for availability. Alerting depends on the cluster state and on the index that stores monitor definitions and alert history, so a cluster that loses its cluster manager quorum or its only copy of a shard can stop evaluating monitors even if the data nodes look healthy. Confirm with your own topology that replicas land in different failure domains, that allocation awareness matches your racks or zones, and that you have tested a single node loss while monitors were firing.
Test alerting during routine maintenance windows, not only during incidents. Once per window, fire a known test condition, confirm the trigger evaluates, confirm the notification reaches the on-call channel and confirm the alert is recorded. Repeat this after every rolling upgrade, because the upgrade path can change plugin behavior, and after any change to node roles or allocation rules. Record the results with the window date and the OpenSearch version, so you can show an auditor or a new on-call engineer what was verified and when.
Finally, plan how monitor changes are reviewed. Treat trigger thresholds and query changes like code: a second person checks the query against the expected log fields, the alert volume it would have produced over recent data and the routing to the right channel. Tie tuning to the alert fatigue goal of the topic by reviewing noisy monitors on a schedule and retiring those nobody acts on. Ask your implementation partner, or your own team, to write down the review and retirement process before the first production monitor goes live.
Limits to confirm before relying on OpenSearch alerts
Alerting and anomaly detection depend on plugin packaging, version-specific feature support and configuration details that change between OpenSearch releases. The items below are the ones to verify in your environment before you rely on monitors, triggers and detectors for operational or security decisions. Confirm each one against the documentation for the exact version you run.
Plugin availability by distribution
Confirm that the alerting and anomaly detection plugins are included in the distribution you install, whether that is a Docker image, Helm chart, package or tarball, and in the version your cluster runs. Packaging choices can change which plugins are bundled or enabled by default, so check the install documentation for your method. Record plugin versions alongside the core version so later upgrades do not silently break monitors.
Supported monitor and detector types
Check which monitor types, trigger conditions and anomaly detector configurations your version supports. Feature support can differ between query-based, bucket-level and document-level monitors, and between single-stream and multi-entity detectors. Map each alert your team needs to a supported type before design starts, and note any use case that would require a custom workaround, such as an external scheduled job.
Notification channel coverage
Verify which notification channels your version supports and how each one authenticates to its destination, including chat tools, email servers, webhooks and paging services. Channel setup often depends on outbound network access and stored credentials, so confirm both with your security team. Test delivery end to end, including message content and failure behavior, because a monitor that fires without a delivered notification gives no protection.
Query and detector resource limits
Identify the limits that apply to monitor queries and detector runs, and how they affect cluster heap, thread pools and shard load. Limits can cover query size, run frequency, concurrent detectors and the amount of data a detector models, and their defaults and settings change between versions. Ask the documentation for your exact release which limits are configurable, then test monitor schedules and detector windows on a cluster that matches production.
Behavior after restore and across clusters
Confirm whether monitors, detectors, their state and their notification settings survive a snapshot restore, and whether they resume after an index rename or a restore into a different cluster. Also check how alerting behaves with cross-cluster search or replication, including where monitors execute and which cluster owns the resulting alerts. Test a restore in a non-production environment and document which objects must be recreated manually.
Questions buyers ask before hiring help with OpenSearch alerting
Does OpenSearch alerting cost money to license?
No license fee applies to the software itself. All software in the OpenSearch project is released under the Apache License, Version 2.0, and the project does not describe a paid edition. Your spend therefore comes from three places: the infrastructure that runs the cluster, one-time setup and configuration labor, and ongoing tuning and operations labor. Infrastructure recurs and scales with log volume, retention and replica count. Setup labor is mostly one-time, covering monitor design, notification channels and anomaly detector baselines. Tuning recurs as log sources change. Ask any provider to separate these lines in a quote, and ask which items are fixed scope and which are billed by time.
How long does it take to get the first useful alert working?
The answer depends on how quickly your team can name the signal and route the notification, so no duration applies across environments. The fastest path is one well-understood condition, such as error rate on a single application index, sent to a channel someone actively watches. Most of the time goes to confirming that log fields are parsed consistently, agreeing the threshold with the service owner, testing the notification path end to end, and choosing whether a monitor or an anomaly detector fits. Anomaly detection needs historical data and a learning period before its output is trustworthy, so plan it after threshold monitors are stable. Ask a provider which first alert it will deliver and what must be true before it goes live.
What does our team need to provide before alerting work starts?
Four inputs decide whether the work moves quickly: log data quality, named owners, an on-call process and a test environment. Logs need consistent timestamps, field names and parsing, or monitors will match the wrong events. Each alert needs an owner who decides what a firing alert means and what action follows. The on-call process defines who receives notifications, at what hours and how escalation works. A test environment lets the team replay known incidents and confirm that triggers fire and stay quiet when they should, without paging people during tests. Also confirm access to the cluster's dashboards and API, the notification endpoints such as chat or paging tools, and the change process for production monitors.
Can our own engineers build OpenSearch alerts without a partner?
Yes, if your team already runs OpenSearch and has people comfortable with its query language and cluster permissions. Monitors, triggers and notification channels are configured through OpenSearch Dashboards and the API, and the software's Apache 2.0 license creates no barrier to using them. The harder parts are judgment calls: choosing thresholds that match actual service behavior, tuning anomaly detectors to limit alert fatigue, and designing routing so the right people receive the right alerts. Teams without recent experience of these tasks often spend more time on trial and error. A partner is most useful for a fixed scope such as an initial alert catalog, a review of an existing setup or a tuning pass. Decide in advance who will own the alerts after handover.
What makes OpenSearch alerting projects cost more or less?
Scope and environment complexity drive most of the variance. Cost rises with the number of log sources and services that need coverage, the number of distinct owners and notification routes, the state of log parsing and field naming, and the number of anomaly detectors to baseline. Multi-cluster or cross-site deployments, strict access controls and formal change approval add effort. Air-gapped networks and regulated environments often require more documentation and evidence. Cost falls when logs are already consistent, alert owners are named, a test environment exists and the first set of monitors is kept small. Ask for the quote to list the monitors, detectors, notification channels, environments and review cycles it includes.
How do we keep alerts from causing alert fatigue?
Start with fewer alerts, each with a clear owner and a clear action. Set thresholds from observed behavior and avoid default values, and use suppression or grouping so one incident does not page people repeatedly. Anomaly detectors suit metrics with recurring patterns, but they need a training period and periodic review, and they produce noise if their baselines include past incidents. Review firing history on a schedule and retire alerts that nobody acts on. Test every trigger against known incidents in a non-production environment before routing it to on-call. The goal is a short list of alerts people trust. Ask a provider how it will measure noise after go-live and who approves changes to thresholds.
What does DeployOpen deliver for OpenSearch alerting?
DeployOpen plans, implements, tunes and documents OpenSearch monitors, triggers, notification channels and anomaly detectors inside your own infrastructure, including your cloud accounts, data centers or air-gapped networks. Work is usually fixed-scope, with scope, deliverables and timelines agreed in writing before work starts. Ongoing tuning and review are available as retainers. DeployOpen does not issue audit reports or certifications, and alerting results depend on the log quality, owners and on-call process your team provides. Before engaging, ask for a written scope that names the log sources, alert catalog, environments and handover documentation included.
How DeployOpen scopes, builds and supports OpenSearch alerting
DeployOpen plans, implements, hardens, documents and supports self-hosted OpenSearch inside your own infrastructure, including monitors, triggers, notifications and Random Cut Forest anomaly detectors for logs and metrics. Scope, alert thresholds and tuning rules are agreed in writing before the build starts, so the alerting design is settled with the teams who will receive the notifications.
How we scope
- Inventory the log and metric sources, indices and owners that alerts will watch before any monitor is written.
- Agree in writing which monitors, triggers, notification channels and anomaly detectors are in scope, and which are not.
- Fixed-scope engagements set deliverables and timelines in writing before work starts, and ongoing tuning can run as a retainer.
How we build
- Build monitors and triggers against sample data from your environment, and test each one with known-good and known-bad events.
- Set role-based access so each team sees the monitors and alert history it owns, using the OpenSearch Security plugin.
- Tune anomaly detector features, thresholds and suppression windows in a staging cluster before they page anyone.
How we hand over
- Document each monitor's purpose, query, trigger logic, owner and escalation path in a runbook your team keeps.
- Walk your operators through alert triage, tuning changes and how to disable a noisy monitor safely.
- Leave configuration in version control where your tooling allows, so changes to alerting are reviewed like other code.
How we support
- Plan upgrades around OpenSearch's maintenance period, which includes bug fixes and security patches but no new features.
- Review alert volume and detector accuracy on an agreed schedule, and change rules through your change process.
- Ongoing support, upgrades and continuous testing are available as retainers, scoped in writing like the original build.

