Why Unified Monitoring Matters
In many data centres, the majority of infrastructure runs on Unix or Linux, while a few critical applications still depend on Windows NT, 2000, XP or Server 2003. The challenge is to keep a single eye on the whole environment, regardless of the operating system. When alerts, performance data and error logs are scattered across different platforms, an administrator must log into each system, run separate commands or even use distinct tools. That fragmentation not only wastes time but also raises the risk of missing a critical event, because an alert that arrives on a Windows box might never surface in the central monitoring console.
Centralising events simplifies not only the alerting workflow but also the long‑term analysis. When all logs reach a single syslog collector, you can correlate a spike in CPU usage with a specific Windows error, or trace a security breach that started with an unusual logon attempt on a Windows server and escalated to a denial‑of‑service on a Linux box. Without a unified feed, you would need to manually piece together evidence from separate archives, a task that becomes impossible as the number of machines grows.
Beyond operational convenience, unified monitoring also delivers a cost advantage. Instead of buying and maintaining a separate Windows‑specific event manager, a Unix syslog daemon can consume the same stream. The software stack stays simple, support contracts are streamlined, and staff training focuses on one set of tools. The trade‑off is that Windows must be able to publish its event logs in a format the syslog daemon understands. Historically, Windows lacked a native syslog protocol, which is why administrators often resorted to proprietary solutions. Fortunately, that barrier can now be bridged with a small yet powerful bridge program that reads the Windows Event Log and forwards each entry to the syslog server.
This guide walks you through every step needed to pull those Windows logs into a Unix syslog environment, from configuring the Unix side to installing and tuning the Windows bridge. By the end, you’ll have a single, searchable archive that contains all the important events from your entire network.
Syslog Basics and Why It Works
Syslog is a venerable protocol that has kept system messages flowing since the early days of Unix. Its design is intentionally lightweight: a client writes a message, a server receives it, and the server writes it to a file or forwards it elsewhere. Because of its simplicity, syslog is supported by most Unix distributions, many network devices, firewalls, and even some non‑Unix appliances. The protocol supports two main concepts that make filtering and routing easy: facilities and priorities. A facility identifies the subsystem that produced the message (e.g., daemon, kernel, mail), while a priority represents the severity (debug, info, warning, error, crit, alert, emerg). The syslog daemon can be configured to route messages with specific facility/priority combinations to different files or to drop them entirely.
On the server side, the syslog daemon - often named syslogd or rsyslog - listens for local and remote connections on UDP port 514. Once it receives a packet, it parses the header to extract the facility, priority, and the message itself, then writes the entry to a log file. The daemon can also forward the message to another syslog server, forming a chain that allows you to build a highly available, geographically distributed log collector.
Because syslog only carries plain text, it can be parsed by scripts written in any language. Perl, Python, awk or even a simple shell script can read the log file, extract the fields you care about, and trigger an alert or an automatic remediation step. That flexibility is why syslog remains the backbone of many monitoring and log‑analysis systems, from Nagios to Splunk.
When a Windows machine needs to join this ecosystem, the challenge is to translate the native Windows Event Log format into a syslog‑friendly string. The Event Log entries are not just plain text; they contain a timestamp, an event ID, an event source, a severity, and a message index that points to a message file on the local system. If that message file is missing or replaced, the actual message text disappears. The bridge program solves this by pulling the event details, resolving the message index into a readable string, and sending the result as a single syslog message. The bridge also maps Windows severities to syslog priorities so that the central syslog daemon can place the entry in the correct file or trigger the proper alert.
In the next section we’ll see how to prepare the Unix side so that it can receive those remote syslog packets.
Getting Your Unix Syslog Ready
The first step on the Unix side is to enable the syslog daemon to accept messages from remote hosts. Most distributions ship a syslog daemon that listens locally by default; to receive remote messages you need to enable a listening socket. For example, the classic syslogd accepts a "-r" flag to listen on port 514. In rsyslog, you add a module that listens for UDP traffic. Check your distribution’s documentation for the exact syntax, but the pattern is the same: expose a UDP listener on port 514 and allow inbound traffic from the IP addresses of your Windows machines.
Once the daemon is listening, you must open the firewall on the Unix host. A typical rule for iptables looks like:
Prompt
iptables -A INPUT -p udp --dport 514 -j ACCEPT</p>
If your network uses IPv6, also add a rule for port 514 over UDPv6. After adding the rules, reload the firewall configuration and verify that the socket is listening:
Prompt
netstat -anu | grep 514</p>
You should see a line indicating that the daemon is bound to 0.0.0.0:514 (and/or [::]:514). With the listening socket in place, any syslog packet sent to that port will arrive at the daemon for processing.
Next, decide how you want to store the incoming Windows messages. Since Windows logs often contain high‑volume event bursts (for instance during a brute‑force login attempt), you should allocate enough disk space for the files that will hold these messages. In rsyslog, you can create a dedicated file for Windows events, e.g., /var/log/windows.log. Add a rule that routes messages from a specific facility or a pattern matching the Windows hostname into that file. An example rsyslog rule:
Prompt
:msg, contains, "Windows NT" /var/log/windows.log</p>
Because the bridge program tags each message with the Windows hostname, you can filter on that hostname or on the syslog priority if you prefer. Make sure the log file is rotated regularly - use logrotate or the built‑in rsyslog rotation features - to avoid disk exhaustion.
If you have more than one Unix syslog server, you can also set up a forwarding chain. The first server receives the packets, processes them, and forwards them to the central server. This allows you to run a lightweight syslog daemon on each local rack to reduce network traffic and improve resilience.
Finally, test the setup by sending a single syslog packet from a Windows machine or from another Linux host using the logger command:
Prompt
logger -p user.info -n <span class="user'>your.unix.host</span> "Test message from Windows bridge"</p>
Check the target log file to confirm that the message arrived with the expected facility and priority. Once you confirm that remote messages are accepted and logged correctly, you’re ready to bring the Windows side into the picture.
Configuring Windows Event Logs for Long‑Term Capture
On the Windows side, the Event Log must be enabled and configured to retain enough entries between the bridge’s polling intervals. By default, Windows limits the size of each log file to a few megabytes and overwrites the oldest entries once the limit is reached. For the bridge to forward every event, you want to ensure that the log files do not wrap before the bridge can read them.
Open the Event Viewer (Control Panel → Administrative Tools → Event Viewer). For Windows 2000, you can access the same through Computer Management → System Tools. Right‑click on each log (Application, System, Security, and any additional logs for services like Exchange or IIS) and choose Properties. In the dialog, make sure the “Maximum log size” is large enough - typically at least 1 MB per log is safe. Enable the “Overwrite events as needed” option so that Windows keeps the newest entries. If you keep the “Do not overwrite events” setting, the log will stop recording new events once the file is full, which would mean missing important alerts.
The bridge program reads all logs every minute by default, so a 1 MB buffer will almost always be sufficient. However, some security incidents can generate dozens of events in a very short time. If you anticipate high‑volume bursts, increase the buffer to 5 MB or more for each log. Remember that Windows stores the logs on the system drive; ensure that you have spare space to avoid disk fill‑up.
Some administrators worry that allowing logs to overwrite may lead to loss of critical information. The bridge mitigates this risk by tracking the last processed event ID for each log. If the bridge detects that the log has been truncated - i.e., the last processed ID no longer appears - it can flag the event as a potential security issue. The bridge will still read any new events that have appeared after the truncation point, so you don’t miss fresh alerts.
After you have configured all logs, test the setup by generating a known event. For example, create a new user account, which triggers an Application log entry. Wait a minute, then check the Unix syslog file for the corresponding entry. The message should include the event source (“Microsoft Windows security auditing”), the event ID, and the resolved message string. If everything looks correct, the bridge is ready for deployment.
Deploying and Tuning EventReporter on Windows
EventReporter is a lightweight NT service that reads the Event Log and pushes each entry to a remote syslog daemon. It is installed on each Windows machine that you want to monitor. The installation package is available from the official site; the installer writes a registry key that points to the syslog host. You can configure one primary host and an optional backup host. When the primary is unreachable, EventReporter will automatically send the events to the backup.
After installation, launch the EventReporter Configuration tool. In the network tab, enter the IP address or hostname of your Unix syslog server. For the backup, type the alternate IP or hostname. Choose the syslog facility you want to use - EventReporter maps each Windows log to a specific facility: System events to kern, Application events to user, Security events to auth. This mapping can be overridden if you prefer a different structure. You can also change the syslog priority that EventReporter uses for each severity level. Windows defines severities as Information, Warning, Error, and Critical; EventReporter translates them to syslog priorities accordingly.
EventReporter also supports local filtering. In the filter tab, you can specify criteria such as Source, Event ID, or Keywords. For instance, if you only care about service failures, add a filter that matches the Source “Service Control Manager” and Event ID 7034. This reduces the traffic to the syslog server and keeps the log files focused on the events that matter most to your team.
Once you have entered the configuration, start the service. The first run will dump the current contents of all Event Logs to the syslog server, so expect a burst of entries. Subsequent runs will only send new events. The service runs as a background NT service, so it does not interfere with normal system operation. It also runs with minimal CPU and memory overhead - typically a few hundred kilobytes.
You can monitor the status of EventReporter from the Windows Services console. If the service stops, the log file in the Event Viewer under Application will contain a message with the reason. The service is robust; it will restart automatically if the underlying network connection to the syslog server fails. If you need to change the destination IP, you can update the registry entry and restart the service, or use the configuration tool to apply the new settings live.
Because EventReporter forwards each event with the Windows message text, there is no risk of losing the human‑readable description. Even if the original message file is missing on a remote machine, the bridge has already resolved the string before sending it. This ensures that your central syslog archive always contains complete information, which simplifies troubleshooting and forensic analysis.
With EventReporter installed on all target Windows machines and the Unix syslog server ready to accept remote messages, you now have a fully integrated monitoring environment. All logs from Windows and Unix share the same format, are stored in the same archive, and can be processed by the same scripts and alerting tools you already use. The result is a single, coherent view of your entire infrastructure, which saves time, reduces error, and improves overall reliability.
No comments yet. Be the first to comment!