Log Management and Analytics

Explore the full capabilities of Log Management and Analytics powered by SolarWinds Loggly

View Product Info


Infrastructure Monitoring Powered by SolarWinds AppOptics

Instant visibility into servers, virtual hosts, and containerized environments

View Infrastructure Monitoring Info

Application Performance Monitoring Powered by SolarWinds AppOptics

Comprehensive, full-stack visibility, and troubleshooting

View Application Performance Monitoring Info

Digital Experience Monitoring Powered by SolarWinds Pingdom

Make your websites faster and more reliable with easy-to-use web performance and digital experience monitoring

View Digital Experience Monitoring Info

Blog How-tos

How to automatically set up Loggly using Puppet

By Zach Flower 23 Apr 2015

To anyone that knows me, it should come as no surprise that I am a huge fan of Puppet. The ease of use is, in my opinion, unparalleled among configuration management systems. In fact, Puppet is my provisioner of choice for Vagrant, as well as for both my personal and professional servers.

While Puppet is insanely useful for configuration management and consistency, it can get a bit tedious figuring out how to set up each individual package. One good example is setting up log aggregation using Loggly.

Basic Setup

Setting up Loggly on the syslog level is incredibly easy, thanks to the official Loggly Puppet module. To install the Loggly Puppet module, first log into your Puppet Master server and navigate to your Puppet modules directory:

Then, install the official module using the following command

After you’ve installed the Loggly module, you have to configure your server nodes to utilize the new module. First, open up your nodes module for editing (this can vary based on server configuration):

Within your nodes manifest file, add the following code to one of your server nodes:

Note: Remember to set to your own personal Loggly token. This token can be found under Source Setup > Customer Tokens within your Loggly dashboard

What the previous block of code does is sets up Loggly log aggregation of rsyslog on the designated servers.

Advanced Setup

Once you’ve completed the basic Loggly syslog setup, the next step will be to set up log aggregation for your various services. In the following examples, we will cover how to set up PHP and Apache log aggregation; however, the same flow can be followed to set up log aggregation for other services as well.

Apache Log Aggregation

Unfortunately, the Loggly Puppet module doesn’t have more advanced configuration options, so we’ll have to manually setup the Apache syslog configuration. Using Puppet’s `file` type, we can setup the proper file to automatically pipe Apache logs to Loggly using syslog. To do this, put the following block of code in the same node that the original Loggly setup was put in above:

What the above block of code does is ensures that `/etc/rsyslog.d/21-apache.conf` is configured as per the recommended Loggly setup. It is worth noting that, while I am using a `content` parameter to configure the file for the purposes of this demonstration, the proper way to manage this file would be to utilize the Puppet File Server.

PHP Log Aggregation

After we’ve set up our Apache log aggregation, setting up our PHP log aggregation is even easier. Much like the Apache setup, the details of the PHP setup can be found within the Loggly documentation. To send our PHP logs to Loggly, all we have to do is save our PHP logs to syslog. To do this, put the following block of code in your Puppet nodes manifest:

While I obviously haven’t gone over how to aggregate all of your application logs in Loggly, the two examples above should give you a good idea on easily it can be done using Puppet. When setting up aggregation for your other applications, the single most useful thing I can recommend for you to do is to follow the great examples provided by Loggly’s own Support Center.

The Loggly and SolarWinds trademarks, service marks, and logos are the exclusive property of SolarWinds Worldwide, LLC or its affiliates. All other trademarks are the property of their respective owners.
Zach Flower

Zach Flower