Logstash configuration for collecting OpenAM and OpenIDM logs


Following on to my previous posting, here is a logstash configuration that collects logs from both OpenAM and OpenIDM, and feeds them into elastic search:



 input {  
  file {  
   type => idmRecon  
   start_position => beginning  
   path => "/opt/openidm/audit/recon.csv"  
  }  
  file {  
   type => idmActivity  
   start_position => beginning  
   path => "/opt/openidm/audit/activity.csv"  
  }  
  file {  
   type => amAccess  
 #  start_position => beginning  
   path => "/opt/openam/openam-config/openam/log/amAuthentication.*"  
  }  
 }  
 filter {  
     if [type] == "idmRecon" {  
         csv {  
             columns => [  
                     "idX","action","actionId","ambiguousTargetObjectIds","entryType","message","reconciling","reconId",  
                     "rootActionId","situation","sourceObjectId","status","targetObjectId","timestamp"  
                     ]  
         }  
         date {  
             match => ["timestamp", "ISO8601"]  
         }  
     }  
     if [type] == "idmActivity" {  
         csv {  
             columns => [  
             "_id","action","activityId","after","before","changedFields","message","objectId","parentActionid",  
             "passwordChanged","requester","rev","rootActionId","status","timestamp"  
             ]  
         }  
         date {  
             match => ["timestamp", "ISO8601"]  
         }  
     }  
     if [type] == "amAccess" {  
     csv {  
         columns => [time,Data,LoginID,ContextID, IPAddr, LogLevel,  
             Domain, LoggedBy, MessageID, ModuleName, NameID, HostName]  
         separator => " "  
      }  
      date {  
             match => ["time", "yyyy-MM-dd HH:mm:ss"]  
      }  
      geoip {   
        database => "/usr/share/GeoIP/GeoIP.dat"  
        source => ["IPAddr"]  
      }     
   }  
 }  
 output {  
  # Use stdout in debug mode again to see what logstash makes of the event.  
  stdout {  
   debug => true  
   codec => rubydebug  
  }  
  elasticsearch { embedded => true }  
 }  



Now we can issue elastic search queries across all of the data sets. Here is a very simple Kibana dashboard showing events over time and their source:



















While this configuration is quite basic, it allows us to find and correlate events of interest across OpenAM and OpenIDM.

Try searching for a sample user "fred" by entering the string into the top search box. You will see all OpenAM and OpenIDM events that contain this string in any field. You can of course build more specific queries - but the default free form search does an excellent job.

Comments

Popular posts from this blog

Introducing ds-operator, the ForgeRock Directory Services Operator for Kubernetes

Automating OpenDJ backups on Kubernetes

OAM R2 REST APIs for Policy Management