Community:HowTo Configure Mac OS X Syslog To Forward Data
From Splunk Wiki
This tutorial shows how to configure Mac OS X to forward syslog events to a remote server.
The following configuration steps were tested and validated on a MacBook Pro running Mac OS X 10.6.2 (Snow Leopard).
Mac OS X Console.app (Applications - Utilities - Console.app) is the standard interface to visualize all events registered by the operating system. It is simple yet functional, but not very friendly on displaying the entries and actually finding some useful information.
Splunk has a Mac OS X version that allows for a better and more complete monitoring of the system and syslog events, it can also be installed and configured as a forwarder to your central monitoring server. But it doesn’t need to be installed for just monitoring syslog generated events.
It is worthy mentioning that in order to capture events forwarded by Mac OS X (or any other syslog forwarder, actually) you have to configure the Splunk server to:
(a.) receive data inputs on UDP port 514, and
(b.) allow incoming traffic through this port on all firewalls in place between the Mac OS X and the Splunk server - including the Windows Firewall, if that’s the case.
Configuring the Mac OS X Syslogd
The next steps are to be executed in a Terminal window, the Mac OS X command line interface. The steps to configure the syslog forwarding are:
1. Open a Terminal window: Applications - Utilities - Terminal, or by using the Spotlight (shortcut: command+space > Terminal)
2. Before touching anything, make a backup copy of the syslog configuration file (syslogd.conf) into the /tmp folder:
$ cp /etc/syslog.conf /tmp/syslog.conf.bkp
3. Open the configuration file on your favorite editor (in this case, we’re using vi):
$ sudo vi /etc/syslog.conf Password:
Use the ’sudo’ command to execute vi with ‘root’ privileges, otherwise you won’t be able to edit the file. Enter the password for the administrator account you are currently logged in as to continue.
4. Insert the following line anywhere in your syslogd.conf file, replacing the IP address 192.168.1.12 with the IP address of your Splunk server’s network interface.
Type ‘i’ in vi to enter the insert mode (text entry), then add the line above anywhere in the file.
‘’’IMPORTANT:’’’ The selector and action fields (see below) are separated by TABs. Do not use spaces.
The syslogd.conf file consists of lines with two fields: the selector field which specifies the types of messages and priorities to which the line applies, and an action field which specifies the action to be taken if a message syslogd receives matches the selection criteria.
If you would like to forward your syslog output on a different port to the standard 514, you can do this by specifying a specific port for your destination; e.g.
results in your syslog data being forwarded to port 5140 instead of the usual port 514.
The Selectors function are encoded as a Facility.Level. The line above is basically telling the Mac OS X syslog daemon to forward a copy of all (*.*) events to the syslog server listening on the IP address 192.168.1.12. If you don’t want to send all events, you can filter them out by setting a different level - for instance, you can replace the ‘*.*’ with ‘*.notice’. Check out the syslogd.conf and the syslog manual pages for all the options.
5. Save and Exit: Press ‘ESC’ to exit insert mode, and save the file by typing ’:wq <enter>’. If you don’t want to save it now, type ’:q!‘ to exit vi without saving and start over.
6. Restart the ‘syslogd’ service: But before doing so, check if it’s running by typing:
$ ps -e | grep syslogd 5070 ?? 2:33.75 /usr/sbin/syslogd
The following commands restart the service. Enter your password one more time if necessary.
$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
Check if the service was really shut down and restarted by typing the same command again. The counter should have been reset and the PID (5070 in the example above) should be a different one.
$ ps -e | grep syslogd 18597 ?? 0:00.01 /usr/sbin/syslogd
You can use ’tcpdump’ to verify that the events are being forwarded to the remote server. Use the command ’ifconfig’ to get the name of the Mac OS X network interface connected to the same IP network segment of the Splunk server and use it as a filter for ’tcpdump’. In this case, the interface name is ‘en1’:
$ sudo tcpdump -i en1 host 192.168.1.12 and udp port 514
Wait a few minutes until a syslog event in generated and forwarded, tcpdump will capture this packet and show you in the terminal window. If nothing happens, try forcing an event - open a new Terminal window on Mac OS X, for instance.
Sample packet captured by tcpdump: 18:53:47.625082 IP 192.168.1.10.56486 > 192.168.1.12.syslog: SYSLOG kernel.notice, length: 67
If tcpdump are still not capturing anything, first double check the tcpdump arguments then review the configuration and check if there is connectivity between the Mac OS X station and the Splunk server (a simple ‘ping’ will do it). Remember to allow UDP/514 traffic through the firewalls. As a last resort, restore your backup copy from the /tmp folder and repeat the process.
--Souza 14:29, 24 March 2010 (PDT)