Wazuh customization with custom rules and decoders

Custom decoders and rules make Wazuh parse your own log sources and raise alerts that match your risk. This page explains what the work includes, what drives its cost, and how to keep changes working through upgrades.

On this page

When does Wazuh customization become necessary?

Custom Wazuh rules and decoders become necessary when the default content does not classify the events your organization actually produces. A stock Wazuh server ships with decoders and rules for common operating system, application and network log formats. If events from an in-house application, a line-of-business system or a network device are not parsed into meaningful fields, or are matched by a generic rule that assigns the wrong severity, the alerts either disappear or land in front of the wrong people. That gap is the signal to customize.

The most common triggers are concrete. The first is a new log source, such as a custom billing service or a vendor appliance that writes syslog in a format Wazuh does not recognize. The second is noise: default alerts that fire constantly on benign activity and train analysts to ignore the queue. The third is internal policy mapping, where your own control library or severity scheme must be reflected in alert levels and groups so that evidence can be traced to a named requirement. The fourth is ownership, where a database team, a payments group or a regional operations team needs dashboard views and notifications scoped to its own events. Each trigger should be written down with the sample log lines that prove it.

Before committing to custom work, check whether the need is really a decoder problem, a rule problem or a configuration problem. Agent-side log collection settings, agent groups and the existing rule set can often solve the issue without new code. Ask who will own each custom rule after go-live, how each change will be tested against sample logs, and how rule IDs will be numbered so they do not collide with the vendor's ranges. Confirm these points with your Wazuh documentation for the 4.14 line and with your own log samples, because the exact decoder and rule syntax is version-specific.

Many teams with Linux administration or security engineering skills build their first custom decoders and rules in-house, especially when the log formats are stable and the volume of new sources is small. Others bring in a partner for the first build, usually when the number of log sources is large, when the internal policy mapping is complex, or when the team lacks time to test rules safely in a production-like environment. Either path works. The deciding factors are the skills available in your team, how many sources need work, and how much testing evidence an auditor or internal review board will expect to see.

What a Wazuh customization engagement includes

A customization engagement turns a working Wazuh server into one that understands your own log sources and raises alerts that matter to your team. The work items below connect through one idea: every custom decoder and rule is tested, versioned and documented so it survives later upgrades.

Log source inventory

Before writing any decoder, the team lists each source that sends events to Wazuh, including the agent-based hosts, syslog senders and API-backed devices, with its log format, owner and expected volume. This inventory sets the scope and prevents the common error of building rules for a source nobody collects. Ask for the inventory as a versioned document that lists which sources are in scope and which are deferred.

Custom decoder development

Decoders extract named fields from raw log lines so that rules can match on them. Each decoder is written for one log format, with a parent relationship where a format shares a prefix with another. The check to request is that every decoder is tested against real samples from the source, including malformed lines, rather than only against the vendor's example.

Custom rule development with levels and groups

Rules decide which decoded events become alerts, and each rule carries a severity level and group tags that drive dashboards, filtering and any later compliance mapping. Engineers set levels against your incident response thresholds and avoid rules that fire on routine noise. Confirm who approves each level and group before the rules reach production.

Test harness and sample event sets

A test harness replays stored sample events through the decoders and rules on a non-production server and reports which alerts fire, at which level and with which fields. Keeping these sample sets alongside the rule files lets you rerun the same checks after every change or upgrade. Ask whether the sample sets include both expected matches and events that must not match.

Dashboard and saved-search changes

New decoded fields and rule groups usually need matching dashboard panels, saved searches and filters so analysts can find the new alerts. These changes are exported as objects so they can be reviewed and restored, not edited by hand in production. Check that each panel points to fields that the decoders actually produce, since a renamed field silently empties a panel.

Integration points for syslog and API sources

Agentless sources reach Wazuh through syslog collection or periodic API probing, and each needs its own listener settings, credentials, polling interval and failure handling. Engineers review how these inputs connect to the decoders so events are not duplicated or dropped during collection. Confirm where credentials are stored and who can rotate them.

Change control and documentation package

Every change moves through a recorded review with a named approver, a rollback step and a short note on why the rule exists and which events it covers. This package is what lets a future administrator, or an auditor, trace an alert back to its logic. Ask how changes are tracked in your own repository and who owns the merge step.

How decoders and rules fit into the Wazuh server pipeline

The fastest way to decide where a customization belongs is to know which stage of the pipeline owns each job. Decoders and rules both live on the Wazuh server, but they do different work. A decoder reads a raw event and extracts named fields from it, such as a source address, a user name or an action. A rule then tests those fields and decides whether the event matters and how severe it is by assigning an alert level. If a field is missing from the alert, the problem is usually in the decoder. If the field is present but the alert is noisy, missing or mis-levelled, the problem is usually in the rule. Keeping that split in mind prevents engineers from tuning rule levels to hide a parsing failure.

Data moves through four components. Wazuh agents on endpoints collect logs, file activity, inventory and other events and send them to the Wazuh server. The server runs its decoders and rules against each event and produces alerts. Those alerts are stored in the Wazuh indexer, which is a full-text search and analytics engine, and the Wazuh dashboard reads from the indexer to present them. The server is the only stage where your custom decoders and rules take effect, so a change made anywhere else will not alter how events are classified. Before you change anything, confirm with your own test events which stage produces the symptom you are seeing.

Custom decoder and rule files are not edited directly on each server by default. The Wazuh server manages agent configuration remotely, and the same central mechanism is the practical route for delivering shared configuration to agents. Your team should therefore treat custom files as managed artifacts: keep them in version control, deliver them through one controlled path, and validate them before they reach production. Confirm in the Wazuh documentation for your exact 4.14 patch level how the server checks rule and decoder syntax, how it reports errors on restart, and whether a failed file stops the service or is skipped, because that behavior determines how much damage a bad change can do.

A practical check is to replay representative events through a test server before each change. Collect a sample of raw logs from each source you customize, including normal and unusual cases, and record which fields and alert levels they produce today. After a change, compare the new output against that baseline. Differences should be intentional. This also gives you evidence for later upgrades, because the same replay set shows whether a new 4.14 patch changed how your custom rules behave. Plan for this testing from the start, since rules that work on one log format often fail silently when a vendor changes its output.

What drives Wazuh customization effort and cost

This table lists the main factors that change how much work a Wazuh customization project takes, why each one matters, and what the client can do in advance to keep effort contained. Read each row as a lever: the cheaper option is usually the one where the client prepares inputs and decisions before the partner starts writing rules and decoders.

DriverWhy it changes effortHow to keep it down
Number and variety of log sourcesEach source family needs its own decoder, field mapping and test cases, so effort grows with the number of distinct products, versions and log types rather than with the number of hosts.Inventory sources by product and version, and retire or defer low-value sources before scoping.
Quality and consistency of log formatsInconsistent or undocumented formats, multi-line events, and mixed encodings require more trial decoding and exception handling before rules can match reliably.Provide representative sample logs in advance, including normal, error and edge-case events, and document any format changes between versions.
Number of custom rules and alert levelsEvery rule needs a condition, a severity level, a test event that fires it and a check that it does not fire on benign traffic. Alert level decisions also need agreement with the security operations team.Agree a fixed list of use cases with expected outcomes and alert levels before development starts, and cap the first release to that list.
Integrations beyond syslog or agentsPulling data from APIs, cloud audit trails or ticketing tools adds authentication, polling, error handling and rate-limit work on top of decoding and rules.Name each integration, its owner and its access method early, and confirm the client can grant service accounts and network paths.
Number of environments and promotion pathLab, staging and production each need their own test runs and configuration deployment. Promotion steps, change approvals and rollback procedures add effort per release.Agree the promotion process and change approval steps upfront, and keep one versioned repository for rules and decoders across all environments.
Compliance mapping requirementsMapping rules and alerts to control requirements of a framework such as PCI DSS, HIPAA or NIST 800-53 needs a traceable matrix, evidence of testing and review by the compliance owner.Choose the framework and control scope before work starts, and ask the compliance owner to supply the control list and evidence format.
Number of teams consuming dashboardsEach audience, such as security operations, IT operations, compliance and management, needs its own views, filters, saved searches and access roles, and each set needs review.Limit the first release to a small number of named audiences, and collect their required fields and questions in one workshop.

How a custom rules and decoders project runs, phase by phase

The sequence turns raw log formats and security questions into tested Wazuh decoders and rules that reach production without disrupting agents or alerting. Each phase closes with a named output that the next phase depends on.

  1. Inventory log sources and current detections

    DeployOpen's engineers list every log source that should reach Wazuh, including the agent-collected files, Windows event channels, syslog feeds and API-probed devices. They record the format, owner, volume and any existing decoders or rules already in use. The output is a log source inventory signed off by your team, showing which sources are in scope and which are deliberately excluded. The phase is complete when every in-scope source has a named owner and a sample location.

  2. Specify use cases and alert levels

    Working with your security team, DeployOpen turns each detection need into a written use case: the event pattern, the business or compliance reason, the expected alert level and the response owner. Alert levels are agreed so that noisy conditions do not reach the dashboard at the same severity as true threats. The output is a use-case specification document with one entry per rule family. The phase closes when your team approves every entry, including the alert levels and any suppression conditions.

  3. Develop decoders and rules in a test environment

    Engineers write decoders that extract fields from each log format and rules that match those fields to the agreed use cases. Work happens in a non-production Wazuh stack, ideally one that mirrors the server and dashboard versions in use, with custom files kept in version control. Custom rule IDs are assigned from the documented custom range so they do not collide with vendor rules. The output is a versioned set of decoder and rule files with a short change note for each rule.

  4. Validate against captured sample logs

    The team replays captured sample logs, including normal events, edge cases and known malicious patterns, through the test server using the log test tooling. They check that each decoder extracts the expected fields and that each rule fires on intended events and stays silent on benign ones. Failures return to development until the results match the use-case specification. The output is a validation report listing each rule, its test cases and the observed results, which becomes the baseline for later regression checks.

  5. Roll out in stages through configuration

    Decoders and rules are deployed first to a small group of servers or a pilot agent group, using the server configuration and centralized agent group settings so changes do not need manual edits on each endpoint. The team watches alert volume, error logs and dashboard fields before widening the scope to the rest of the fleet. Rollback steps are rehearsed before the first production change. The output is a deployment record showing the stages, the agent groups affected and the checks passed at each stage.

  6. Tune after deployment and hand over

    After production runs under real traffic, DeployOpen reviews alert volume and false positives with your analysts and adjusts thresholds, levels or suppression conditions. Each change is recorded against the use-case specification and the validation baseline. The engagement closes with a handover package containing the source files, the test cases, the runbook for adding new decoders and rules and a note on how to retest after Wazuh upgrades. The output is the handover pack and an agreed list of open tuning items, with the support arrangement agreed in the written scope.

Tuning alert levels and noise without losing detections

Tuning in Wazuh should make the alert stream easier to act on without removing the ability to see what matters. The main levers are the rule level (the severity Wazuh assigns when a rule matches), suppression rules that discard known benign events, and grouping that keeps related detections together on the dashboard. Each lever changes what analysts see, so each change needs a stated reason, a narrow scope and a way to be reversed. Start by identifying the handful of rules that produce most of the volume, then decide for each whether the problem is the severity, the trigger conditions or the way the output is presented.

Adjusting a default rule level is usually safer than suppressing the rule. Wazuh ships its rules in its own rule files, and local changes belong in the custom rules location so that they survive package updates. Where a rule is noisy in one environment but meaningful in another, a child rule that inherits from the parent and sets a different level for a specific agent group, host pattern or decoded field is easier to explain than an edit to the parent. Confirm the exact rule ID ranges, override mechanics and file locations for your installed 4.14 release in the official documentation before you build the change, because the precedence between parent and child rules determines which level actually fires.

Suppression is where detections are most often lost. A rule that discards events should match only the exact benign pattern, such as one service account performing one scheduled task from one known host, and should never match on a broad keyword or an entire rule group. Treat every suppression as a claim that a specific event is never worth an analyst's time, and test that claim against a sample of the events it would drop. Grouping related rules works differently: it changes how alerts are labelled and clustered so that a burst of related events reads as one story. Grouping does not remove events, so it is the safer tool when the goal is readability.

Measure every change before and after it goes live. For each rule you touch, record its alert count over a comparable window before the change, the count after it, the number of events suppressed or re-leveled, and a short sample of what was removed. A large drop with a clean sample is evidence that the change worked. A large drop with unexplained content is a warning that the rule is too broad. Keep the measurements alongside the change record. Ask your internal team or any implementation partner to define the observation window and the sampling method in writing before tuning begins, so the results can be compared later.

Keep an approval record for each change. The record should name the rule ID, the original and new level or suppression condition, the business or threat reason, the person who approved it, the date, and the rollback step. Analysts need this to understand why an alert that used to be critical is now informational, and auditors need it to confirm that detection coverage was reviewed rather than quietly reduced. Store the records in the same version control as your custom rule files so that every change is traceable to a commit. Review suppressions on a fixed schedule, because a benign pattern that was valid last year may no longer be benign after an infrastructure change.

Which Wazuh customization work teams keep in-house

This table splits Wazuh customization work into parts that internal teams usually keep and parts that organizations often outsource, and lists the skills each part draws on. Read each row to see who typically carries the work, then check the skills column against the people you have. The main takeaway is that ongoing ownership of rules and alerts stays with your analysts, while one-time build and validation work for hard formats is where a partner tends to add the most value.

Work itemUsually kept in-houseOften outsourcedSkills needed
Ongoing rule maintenanceYes: tuning rules, retiring noisy alerts and adjusting levels as applications changeOccasionally, as a fixed-scope cleanupDetection engineering, XML, change management
Triage of alertsYes: daily review, escalation and feedback into rule tuningRarely, unless a managed service is boughtLinux and Windows administration, detection engineering
Dashboard use and saved viewsYes: building searches, views and reports for your own teamsSometimes, for initial dashboard designLog format analysis, Wazuh dashboard familiarity
Initial decoder build for hard formatsSometimes, if the team has parsing experience with the log sourceOften, for proprietary or multi-line formats with little documentationLog format analysis, regular expressions, XML
Rule design mapped to a control setSometimes, when compliance owners can review each mappingOften, to map rules to a chosen control set with evidence notesDetection engineering, regular expressions, change management
Test harness creationSometimes, using sample logs from your own systemsOften, to build repeatable replay tests for decoders and rulesLog format analysis, XML, Linux administration
Upgrade regression checksYes: running the test set and reviewing alerts after each patch releaseSometimes, as a scheduled retainer or one-time check before a major moveChange management, Linux administration, detection engineering

What goes wrong with custom rules after go-live

Custom Wazuh decoders and rules usually work on the day they are written and then degrade slowly, through vendor changes, upgrades, untested edits and missing ownership. Each card below names one failure mode and the preventive step that keeps custom logic working over time.

Decoders break on log format changes

A decoder written against one version of a vendor's log line can stop matching when the vendor adds a field, reorders values or changes a timestamp format. Events then fall through to generic handling and detections stop firing without any error. Keep a sample of current production logs for each custom decoder, and check the match rate after every source upgrade.

Rules tested only on synthetic events

Rules validated with hand-written test events often pass while missing the spacing, casing and field variations that real agents produce. A rule that looked correct in isolation may over-match busy hosts or never fire on production traffic. Build a regression event set from sanitized real events, store it with the rules, and run it before every change is deployed.

Custom files overwritten during upgrades

Editing vendor-supplied rule and decoder files directly means a package upgrade can replace local changes without warning, or leave them in place while the vendor logic around them moves on. Keep custom decoders and rules in their own files, separate from the vendor directories, and confirm after each upgrade that the custom files still load. Treat the upgrade checklist as part of the change process, not an afterthought.

Rule IDs colliding with vendor IDs

Custom rules that reuse an ID already defined by the vendor can override the built-in logic or be overridden by it, and the conflict may only show up when a new vendor ruleset is loaded. Agree on a local ID range that does not overlap with the vendor's published ranges, record every assigned ID in a register, and check for duplicates as part of the validation run.

Alert fatigue from unreviewed levels

Custom rules often ship with alert levels chosen during setup and never revisited. As agent counts grow, the result is a dashboard flooded with low-value alerts, which trains analysts to ignore the queue. Review alert volume by rule at a fixed interval, adjust levels and suppression logic with evidence, and record the reason for each change.

No named owner after handover

When the engagement ends and no one is named to maintain the rules, decoders drift from the environment, tickets for false positives sit unassigned and nobody knows which rules are still in use. Assign a named rule owner and a backup, document the review cadence and the change approval path, and keep the repository and runbook in a location the security operations team can reach.

How customization differs by starting point and environment

A new deployment inherits no local rules or decoders, so customization is mostly additive. The work is to decide which log sources matter first, then write and test decoders for them before tuning alert levels. Keeping the first set of sources short makes it easier to check each rule against real events.

  • Source list first: Confirm which sources the initial list covers and the event formats each one produces.
  • Decoders before rules: A rule can only match fields that a decoder has extracted, so build and test the decoder for each source first.
  • Reserved ID range: Use the range the documentation sets aside for local rules so custom content stays separate from vendor content.
  • Baseline alert levels: Record default levels for the first sources so later tuning has a reference point.

Confirm in the documentation for your release where the server loads local decoder and rule files and whether it validates them before a restart.

What you need to provide before customization starts

The most useful thing you can prepare before customization starts is administrative access to a test Wazuh environment that mirrors production. Custom decoders and rules are written as XML files on the Wazuh server, and they only become useful once they are tested against real agent traffic in the Wazuh dashboard and in the server's log test tool. Without admin access to both the server and the dashboard, every test waits on someone else's queue, and the first rounds of work become guesswork. Confirm that the account can edit the local rule and decoder files, restart the relevant services, and view alerts across the agent groups in scope. Sample logs are the single largest driver of rework. Ask for representative log lines from each source, taken from the same software version and log configuration your production agents send. Each sample should be labeled with what it means: normal activity, a known failure, or a specific attack pattern you want detected. Unlabeled samples force the team to guess field boundaries and severity, and guessed decoders often match the wrong events. Include enough volume to show variation, such as different user names, status codes and message formats, so that a decoder is not written around a single lucky line. You also need a named owner for alert decisions. This person decides which events should raise an alert, at what level, and which noisy patterns should be suppressed or grouped. Without one, rule changes stall while engineers wait for a decision, or they ship with thresholds nobody on your side agreed to. The owner should be reachable during testing and should sign off on the final alert levels before they reach the production dashboard. Next, provide the compliance or internal control list the alerts should map to. This is usually a set of control IDs and titles from frameworks such as PCI DSS, HIPAA or NIST 800-53, or from your own internal control library. Mapping targets determine which rule groups and dashboard views are needed and what evidence each alert must carry. A list supplied at the start prevents a later round of relabeling rules to match an auditor's wording. Finally, agree on change approval rules and a test or staging environment before any production change is made. Confirm who approves a rule change, how emergency fixes are handled, and how the approved change is recorded in your change system. Then confirm that the staging environment receives the same agent groups and configuration pattern as production, so tests reflect real behavior. Clear approval rules and a staging path shorten the schedule because each change is reviewed once, and they reduce rework because tested rules move to production without being reopened.

How much does Wazuh customization cost and what does it need from us?

Does a self-hosted Wazuh deployment need a license fee?

No. The self-hosted Wazuh software is open source and distributed under the GNU General Public License version 2, with an exception that permits linking with OpenSSL, so there is no license fee for the software itself. The costs you should plan for are the infrastructure to run the indexer, server and dashboard, the storage for alert data, staff time to operate and tune the platform, and any external services you choose to buy, such as implementation help. Wazuh Cloud is a separate, paid managed service, so confirm which model you are pricing before you compare quotes.

What drives the cost of Wazuh customization work?

Cost follows the amount and difficulty of the work. The main drivers are the number and type of log sources that need custom decoders, how many rules and alert levels must be tuned, whether dashboards and integrations are included, how much of your environment must be tested before changes go live, and how well documented your existing detections are. Sources with unusual or undocumented log formats take longer to decode than standard syslog. Ask the provider to list each source and rule set in the written scope so the quote can be checked against it.

How long does Wazuh rule and decoder customization take?

Duration depends on scope rather than on the Wazuh product itself. A narrow change, such as decoding one application's log format and tuning a handful of rules, is much shorter than a program that covers many sources, several compliance mappings and dashboard work. Sample logs, access to the running environment and the speed of your review cycle also affect the timeline. No duration is fixed until the scope is written down, so ask the provider to state the phases, the deliverables for each phase and the assumptions behind the schedule.

Can a small team customize Wazuh without outside help?

Often yes, if the team has Linux administration skills, familiarity with log formats and a test environment where changes can be replayed safely. Writing decoders and rules is learnable, but tuning alert levels against real traffic and keeping the work maintainable takes sustained time. A small team should plan for the ongoing effort of reviewing alerts, which can be the larger cost over time. Outside help is most useful for the first set of decoders, a documented rule standard and knowledge transfer, so your staff can maintain the work afterward.

What happens to custom rules and decoders during a Wazuh upgrade?

Custom files are normally kept separate from the default rule set, so they can survive an upgrade, but they must still be tested. Each new release can change default rules, decoder behavior or dashboard components, which can create duplicate alerts, missed detections or broken parsing. Keep customizations in version-controlled files with IDs in the range reserved for local use, document the reason for each rule, and rerun your sample logs against the new version before promotion. Confirm the exact upgrade procedure against the release notes for your target version.

What should we ask for in a written quote for Wazuh customization?

Ask for a list of log sources, the decoders and rules to be delivered for each, the environments where work will be tested and deployed, and the acceptance criteria for each deliverable. Request which costs are one-time and which recur, such as retainers for upgrades or support. Confirm who provides infrastructure, sample logs, test systems and access, and what you must supply and by when. Also ask how documentation and knowledge transfer are handled, how changes after go-live are charged, and which assumptions would change the price.

What do we need to provide before customization starts?

You will need a working Wazuh environment or an agreed plan to build one, administrative access to the indexer, server and dashboard, and representative sample logs from each source, including edge cases and known false positives. Provide the alerting requirements you care about, any compliance mappings you must support, and the names of people who will approve rules before production use. A test environment that mirrors production closely is the most important input, because it lets you measure noise and confirm changes without touching live monitoring.

How DeployOpen scopes, delivers and hands over Wazuh customization

DeployOpen plans and builds Wazuh customization inside your own infrastructure, whether that is your cloud accounts, data centers or an air-gapped network. Each engagement starts with a written, fixed scope covering the custom decoders, rules, alert levels and integrations you need, and ends with documentation your team can maintain.

How we scope

  • Review your log sources and the decoders needed to parse them into Wazuh fields.
  • Map which events need custom rules, which existing rules to adjust, and which alerts to suppress.
  • Agree the written scope, deliverables and timeline with you before any custom code is written.

How we build

  • Write and test decoders against representative sample logs from each agreed source.
  • Build custom rules with documented IDs, levels and rationale, and test them against replayed events.
  • Keep customizations in separate local rule and decoder files so vendor updates do not overwrite them.

How we hand over

  • Deliver version-controlled rule and decoder files with a change log and a test dataset for each rule.
  • Document each customization, its purpose, owner and the alert it is expected to raise.
  • Walk your engineers through the upgrade test steps so they can re-run the checks after a Wazuh update.

How we support

  • Offer ongoing support and upgrade work as a retainer if you want DeployOpen to keep customizations current.
  • Re-test custom rules and decoders against each Wazuh 4.14 patch release you plan to adopt.
  • Confirm with us in the written scope which support hours, response channels and review cadence apply.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.