Splunk ♥ API’s

API staat voor Application Programming Interface. Het is een manier om een applicatie te manipuleren via andere applicaties. Dit manipuleren kan betekenen dat je zaken in de applicatie wijzigt, aanmaakt of verwijdert maar kan ook helpen om data uit een applicatie te krijgen. Op deze manier kun je applicaties met elkaar laten praten en kunnen ze data van elkaar gebruiken.

Uiteraard is Splunk dol op API’s. De basis van Splunk is het centraal verzamelen van data en API’s zijn daar een groot onderdeel van. Splunk is zelf ook opgebouwd uit API’s, Splunk Web is gebouwd op de API’s van Splunk Core.

Dat laatste is interessant voor een blogpost an sich maar vandaag wil ik het even hebben over het koppelen van API’s aan Splunk.

API smaken

API’s zijn er in veel verschillende smaken.

  • Web Service API’s (SOAP, XML-RPC, REST)
  • WebSocket API’s
  • Library-based API’s (JavaScript)
  • Class-based API’s (Java, Android, .Net)
  • Object Remoting API’s (CORBA, .Net Remoting, RMI)

De focus voor vandaag is WebService API’s omdat die ons helpen om data van applicatie A naar applicatie B te sturen.

SOAP en REST

Veruit de meest populaire WebService API’s zijn SOAP en REST. De kracht van deze API’s is dat applicaties in verschillende talen met elkaar kunnen communiceren over een protocol (HTTP(S)) wat breed uitgerold is en communicatie over het Internet mogelijk maakt.

SOAP is ontworpen in 1998 en staat voor Simple Object Access Protocol. Dit is een manier om via XML over HTTP(S) te praten met applicaties. Elke applicatie die SOAP toestaat beschrijft in zijn WSDL (Web Service Description Language) welke diensten en methodes andere applicaties kunnen aanroepen.

REST is de hippe nieuwkomer en staat voor Respresentational State Transfer. Ook al is REST als architectuur bedacht in 1999, sinds de opkomst van cloud-based diensten heeft REST een enorme groei doorgemaakt. REST werkt ook over HTTP(S) en kan data via XML of JSON teruggeven.

Het grote verschil tussen SOAP en REST is dat met SOAP applicatie A in de body van het HTTP(S) bericht (als XML) aangeeft welke service, welke methodes met welke parameters uitgevoerd moeten worden door applicatie B. Bij REST gebruik je of een HTTP GET of HTTP POST wat wil zeggen dat de informatie over welke service, welke methodes met welke parameters in de HTTP URI of HTTP Headers opgeslagen ligt. Applicatie B kan dan bepalen o.b.v de aanvraag hoe de data terug moet komen en applicatie A kan dan zelf deze data verwerken.

Splunk en Web Service API’s

Zoals in de inleiding aangegeven is Splunk de beste oplossing om data uit meerdere bronnen centraal te verzamelen. Het aansluiten van Splunk op een Web Service API is dan ook een veel gebruikte methode om dit mogelijk te maken.

65037606Python all-the-things

Veel add-ons op splunkbase maken gebruik van API’s om voor specifieke oplossingen data op te halen en te presenteren. Deze add-ons leveren input configuratie en Python scripts om met de API’s te praten.

Python is uit te breiden met een REST client of een SOAP client om met Web Service API’s te communiceren. Deze client’s maken het zeer eenvoudig om in korte tijd een add-on te schrijven die met andere oplossingen kan communiceren.

Modular Inputs

Modular Inputs zijn een manier om in Splunk custom Data Inputs te maken. Splunk ziet deze custom inputs als native inputs zodat gebruikers gemakkelijk via Splunk Web inputs kunnen configureren.

De voordelen van Modular Inputs zijn:

  • Beheer via Splunk Web
  • Beheer via Splunk REST API 🙂
  • Validatie op je Inputs
  • Platform specifieke versies in je add-on zijn mogelijk
  • Stream data as XML zodat je geavanceerde data verwerking kan doen
  • Permissions op inputs mogelijk

Splunk heeft zelf al een Modular Input gemaakt voor REST gebaseerde API’s. Deze add-on kun je downloaden vanaf splunkbase.

Splunk-REST-modular-input

Deze add-on maak het mogelijk om applicaties binnen je IT landschap te koppelen aan Splunk als daar nog geen specifieke add-on voor beschikbaar is. Voor Splunk beheerders zonder Python kennis maakt dit de wereld een stuk makkelijker.

splunk-json-fieldsWeb Service data verwerking

Of de data nu in XML of JSON geformatteerd is, Splunk houdt van deze data. De structuur is makkelijk te parsen zodat automatisch de juiste velden zichtbaar worden binnen Splunk. Zet in je props.conf de KV_MODE op XML of JSON en Splunk zal automatisch de velden extraheren.

 

 

 

Conclusie

Bovenstaande maakt duidelijk dat de Web Service API’s de wereld een stuk makkelijker hebben gemaakt. Zeker voor Splunk. Het ophalen en verwerken van JSON of XML data is veel eenvoudiger dan ruwe logfiles.

Ik verwacht dat de integratie met SOAP gebaseerde applicaties af zal nemen ten gunste van REST API’s. Dat is een goede ontwikkeling want SOAP integraties in Splunk verlopen vaak nog via Python scripts die lastiger te beheren zijn dan REST Data Inputs.

Veel van mijn klanten kijken voor een integratie met een andere oplossing als eerste naar splunkbase. Als daar geen add-on te vinden is vragen ze mij om deze add-on voor ze te bouwen. Als er een REST API is kan ik vaak samen met de klant de juiste Data Inputs configureren en heeft de klant de data binnen een dag ontsloten. Een SOAP koppeling ontwikkelen kost ongeveer tussen de 5 en 10 dagen afhankelijk van het aantal services en methoden die aangeroepen dienen te worden.

Mocht je meer willen weten over Splunk en API integraties, neem contact met mij op of laat een bericht achter. Ik hoop in ieder geval dat ik jullie iets meer heb kunnen vertellen over de mogelijkheden en de eenvoudige manier waarop je Splunk data kunt onboarden.

Over Coen Meerbeek

Splunk consultant @ Blue Factory, eigenaar en oprichter @ BuzzardLabs, basketbalspeler en Xbox-gamer. Lees meer van Coen op Launchers.nl en Twitter.

Loading Facebook Comments ...

Laat wat van je horen

*