Skip to main content
Cisco Meraki

Syslog Server Overview and Configuration

A syslog server can be configured to store messages for reporting purposes from MX Security Appliances, MR Access Points, and MS switches. This document will provide examples of syslog messages and how to configure a syslog server to store the messages.

Types of Syslog Messages

The MX Security Appliance supports sending four categories of messages/roles: Event Log, IDS Alerts, URLs, and Flows.  MR access points can send the same roles with the exception of IDS alerts. MS switches currently only support Event Log messages. 


Any HTTP GET requests will generate a syslog entry.



Apr 20 14:36:35 1 948077314.907556162 MX60 urls src= dst=54.241.7.X.X mac=00:1A:A0:XX:XX:XX request: GET


A client with IP address sent a HTTP GET request for


Inbound and outbound flows will generate a syslog message showing the source and destination along with port numbers and the firewall rule that they matched. For inbound rules, 1=deny and 0=allow.



Inbound Flow: 1 948077334.886213117 MX60 flows src=39.41.X.X dst=114.18.X.X protocol=udp sport=13943 dport=16329 pattern: 1 all

Outbound Flow: 1 948136486.721741837 MX60 flows src= dst= mac=00:18:0A:XX:XX:XX protocol=udp sport=9562 dport=53 pattern: allow all


The inbound flow example shows a blocked UDP flow from 39.41.X.X to the WAN IP of the MX. The outbound flow shows an allowed outbound flow for a DNS request.   


Appliance/Switch/Wireless Event Log

A copy of the messages found in the dashboard under Network-wide > Monitor > Event log.



May 10 18:46:04 1 948080570.911780502 MX60 events dhcp lease of ip from server mac 00:18:0A:XX.XX.XX for client mac 58:67:1A:XX.XX.XX from router on subnet with dns,


A client with MAC address 00:18:0A:XX.XX.XX leased an IP address from the MX and the MX provided and as DNS servers to the client.

Security Events

Any security events will generate a syslog message (MX security appliance only role).



1490031971.951780201 ANB_MX80 security_event ids_alerted signature=1:39867:3 priority=3 timestamp=1490031971.693691 shost=00:15:5D:1E:08:04 direction=egress protocol=udp/ip src= dst= message: INDICATOR-COMPROMISE Suspicious .tk dns query


A IDS syslog message was generated when a .tk DNS query was sent from to

Air Marshal Events

Air Marshal events will generate a syslog message describing the wireless traffic detected.



Oct 20 17:21:33 0.0 syslog2 airmarshal_events type= rogue_ssid_detected ssid='' vap='0' bssid='FF:FF:FF:FF:FF:FF' src='02:18:6A:XX:XX:XX dst='FF:FF:FF:FF:FF:FF' wired_mac='00:18:0A:XX:XX:XX' vlan_id='0' channel='44' rssi='60' fc_type='0' fc_subtype='4'


A beacon was sent by a device that exists on the LAN, generating a rogue SSID event that resulted in a syslog message.

Log Samples and More Information

For more information on Syslog Event Types and a list of log samples for each product, please refer to this article.

Configuring a Syslog Server

A syslog server can easily be configured on a Linux system in a short period of time, and there are many other syslog servers available for other OSes (Kiwi Syslog for Windows, for example).

The following commands detail an example syslog server configuration on Ubuntu 13.04 using syslog-ng, to gather syslog information from an MX security appliance.

Note: The following commands outline an example configuration for demonstration purposes. Please refer to your server documentation for specific instructions and information.


The first step is to install the syslog application:

sysadmin@ubuntu:~$ sudo apt-get install syslog-ng


Once syslog-ng has been installed it needs to be configured to receive log messages from the MX.  These instructions will configure syslog-ng to store each of the role categories in their own log file.  There will be an individual log file for URLs, Event Logs, etc.  Alternatively, it could be configured to store all logs in one file.  Use any appropriate editor to make changes to the syslog-ng configuration file.  In this example nano is used to edit the file.

sysadmin@ubuntu:~$ sudo nano /etc/syslog-ng/syslog-ng.conf


The LAN IP of the MX in this example will be The syslog server is listening on UDP port 514. Update as needed to reflect the LAN IP of the MX and the syslog server being configured.  The first section of code will configure all syslog messages from the MX to be stored in /var/log/meraki.log.  The second section of code will use regular expressions to match each of the role categories and store them in individual log files.  Only one of the options needs to be configured.

Option 1 - Log all messages to /var/log/meraki.log:

#define syslog source
source s_net { udp(ip( port(514)); };

#create filter to match traffic (this filter will catch all syslog messages that come from the MX)
filter f_meraki { host( "" ); };

#define a destination for the syslog messages
destination df_meraki { file("/var/log/meraki.log"); };

#bundle the source, filter, and destination rules together with a logging rule
log { source ( s_net ); filter( f_meraki ); destination ( df_meraki ); };

Option 2 - Log different message types to individual log files: 

#define syslog source
source s_net { udp(ip( port(514)); };

#create individual filters to match each of the role categories
filter f_meraki_urls { host( "" ) and match("urls" value ("MESSAGE")); };
filter f_meraki_events { host( "" ) and match("events" value ("MESSAGE")); };
filter f_meraki_ids-alerts { host( "" ) and match("ids_alerted" value ("MESSAGE")); };
filter f_meraki_flows { host( "" ) and match("flows" value ("MESSAGE")); };

#define individual destinations for each of the role categories
destination df_meraki_urls { file("/var/log/meraki_urls.log"); };
destination df_meraki_events { file("/var/log/meraki_events.log"); };
destination df_meraki_ids-alerts { file("/var/log/meraki_ids-alerts.log"); };
destination df_meraki_flows { file("/var/log/meraki_flows.log"); };

#bundle the source, filter, and destination rules together with a logging rule for each role category
log { source ( s_net ); filter( f_meraki_urls ); destination ( df_meraki_urls ); };
log { source ( s_net ); filter( f_meraki_events ); destination ( df_meraki_events ); };
log { source ( s_net ); filter( f_meraki_ids-alerts ); destination ( df_meraki_ids-alerts ); };
log { source ( s_net ); filter( f_meraki_flows ); destination ( df_meraki_flows ); };


The final step will restart the syslog-ng process:

sysadmin@ubuntu:~$ sudo /etc/init.d/syslog-ng restart 

Configure Dashboard

Syslog servers can be defined in the Dashboard from Network-wide > Configure > General.

Click the Add a syslog server link to define a new server.  An IP address, UDP port number, and the roles to send to the server need to be defined.  Multiple syslog servers can be configured.


If the Flows role is enabled on an MX security appliance, logging for individual firewall rules can be enabled/disabled on the Security appliance > Configure > Firewall page, under the Logging column:

Additional Considerations

Syslog messages can take a up a large amount of disk space.  When deciding on a host to run the syslog server make sure to have enough storage space on the host to hold the logs.  Consult the syslog-ng man page for further information on only keeping logs for a certain amount of time.


If the environment has multiple MX devices using site-to-site VPN, and logging is done to a syslog server on the remote side of the VPN, that traffic will be subject to the site-to-site firewall. As such, note that it may be necessary to create a Site-to-site firewall rule to allow the syslog traffic through. This is done from Security appliance > Configure > Site-to-site VPN > Organization-wide settings > Add a rule.


The source IP address needs to be the IP address of the highest vlan on the MX sending the syslog messages back to the syslog server.  The destination IP address is the IP address of the syslog server.  Change the destination port number if the syslog server does not use the standard UDP port 514 to listen on for syslog messages.

  • Was this article helpful?