Posts Tagged ‘python’

Buckler: Authentication and authorization for Kibana, for free!

Thursday, September 29th, 2016

 

At Kumina, we make heavy use of the ELK stack: Elasticsearch, Logstash and Kibana. All of our servers have their logs collected by Logstash and stored in Elasticsearch, so we can easily access them through Kibana. As of recently we started providing direct access to our Kibana instance to our customers, so that they can perform analysis on the data themselves. This brings us to an interesting problem: Elasticsearch – and in effect Kibana – does not implement any authentication and authorization mechanisms. This means that by default customers would be able to view each other’s data.

Support for access controls is instead offered by a commercial product by Elastic, called Shield. Though Shield certainly looks like an interesting product, it looks far too advanced and costly for the problem we tried to solve at Kumina: simply having partitioned access to the data for several customers. This is why we commissioned the development of a new piece of software called Buckler. Buckler is a light-weight proxy for Kibana, written in Python (Django). It allows you to restrict access in Kibana by adding password authentication. When logged in, a user is only allowed to access indices specified for that user in Buckler’s configuration file.


Free alternative to Shield

Today we’re glad to announce that we’re releasing Buckler as open source software licensed under the Apache License, version 2.0. The Git repository containing sources and documentation can be found on our company’s Git Hub page. In addition to the proxy itself, we’re also releasing a Vagrant environment that allows you to easily test and experiment with Buckler. Right now Buckler only works in combination with Kibana 4.1, as that’ s the version in use at Kumina. There is a fair chance we’re going to extend Buckler over time to support newer versions of Kibana, such as 4.3 and 5.x.

Enjoy!

buckler_logo

Vacature: Python programmeur bij Kumina

Thursday, May 21st, 2015

This post is in Dutch, since we’re looking for a Dutch native speaker for this opening.

Kumina is een groeiend bedrijf en we hebben de ambitie om nog verder te groeien! We zijn druk bezig met een klantportal en willen graag overstappen van puppet naar ansible. Hiervoor zijn wij op zoek naar een Python programmeur.

Wie wij zijn

Kumina is een bedrijf dat het systeembeheer van de servers van haar klanten verzorgt. Kumina heeft een grote diversiteit aan klanten in zowel binnen- als buitenland (Verenigd Koninkrijk, Denemarken) welke allen als overeenkomst hebben dat ze vernieuwend bezig zijn op het gebied van internetgebaseerde applicaties. Behalve het standaard systeembeheer, verzorgt Kumina redundante oplossingen voor de verschillende applicaties en denken we mee bij het ontwerp van ‘built to fail’ opstellingen.

Wie wij zoeken

De belangrijkste eigenschap die we zoeken in eigenlijk iedere medewerker bij Kumina is de aansluiting op het bestaande team. Als Python programmeur in ons team zul je werken aan onze interne automatisering en de manier waarop wij data ontsluiten richting onze klanten.

Een overzicht van de eigenschappen die wij zoeken:

  • Je hebt kennis van programmeren op HBO niveau, blijkende uit opleiding of werkervaring,
  • Je hebt veel ervaring met het programmeren in Python (2.x),
  • Je hebt ervaring met het ontwikkelen van web-gebaseerde oplossingen,
  • Kennis en ervaring met het gebruik van PostgreSQL,
  • Kennis en ervaring met het automatisch testen van je code,
  • Ervaring met het programmeren op een Linux omgeving (wij gebruiken specifiek Debian),
  • Je kunt zelfstandig werken aan problemen en komen met een technisch correcte en praktische oplossing,
  • Goede beheersing van Nederlands en Engels, zowel gesproken als schriftelijk,
  • Bij voorkeur kennis en ervaring met één of meerdere van de volgende libraries:
    • SQLAlchemy
    • Celery
    • Pyramid
    • Gevent
  • Kennis en ervaring van Ansible is een pré.

Waar je komt te werken

Kumina is een organisatie die zich richt op automatisering en nieuwe technieken, waardoor er ruimte is om het één en ander te testen en nieuwe dingen te proberen. Het project waar je je in eerste instantie mee bezig gaat houden, heeft nog een lange weg te gaan, want we hebben een heleboel ideeën. Je krijgt daarbij de kans om zelf je ideeën en oplossingen aan te dragen.

Het werk wordt 4 dagen per week op ons kantoor in Eindhoven gedaan, de vijfde dag werken we meestal thuis. We reizen allemaal met het openbaar vervoer en zijn tussen half negen en half tien op kantoor. We zijn daarnaast bereid om te praten over flexibelere werktijden, als het voor iedereen maar duidelijk is wanneer ze je kunnen verwachten.

We lunchen we allemaal samen, op kosten van Kumina. We hebben goede koffie, iedere kan vers gemalen.

Alles wat we doen is een team effort, we verwachten dat je bereid bent om opmerkingen en kritieken van je collega’s te incasseren. Daarnaast heb je misschien ook wel een mening over andere dingen die besproken worden en dat is altijd welkom.

Ons kantoor is een verdieping in een kantoorvilla aan de Parklaan te Eindhoven. We verwachten dat je in staat bent om meerdere dagen op kantoor te werken. Als je in of in de buurt van Eindhoven woont, is dat erg praktisch. Het ligt natuurlijk aan jezelf hoe lang je wil reizen naar kantoor. Enkele dagen vanuit huis werken is een optie, maar je zult dan wel zelf moeten zorgen dat je een goede werkplek thuis hebt met internet. Thuiswerken is echter niet verplicht, uiteraard.

Wat bieden we

We bieden een enigszins chaotische maar erg open omgeving, waarin je vrij bent om commentaar te leveren maar ook in staat moet zijn om kritiek te ontvangen. We zijn trots op ons werk en zullen je aanmoedigen om jezelf en ons te verbeteren, zodat ook jij trots kunt zijn op je werk.

Afhankelijk van wat je ons kunt bieden, kunnen we je een salaris aanbieden tussen de €2500 en €3000 per maand, op basis van 40 uur en afhankelijk van hoe we je kennis en ervaring beoordelen. Je krijgt daarbij 25 vakantiedagen. Als je goed presteert, kun je verwachten dat je inkomen groeit naarmate het bedrijf groeit. Wanneer het met het bedrijf financieel goed gaat, merken de werknemers dat ook in hun eigen salaris. Eén en ander is natuurlijk afhankelijk van je eigen inzet.

Mocht je minder willen werken dan 40 uur, dan is dat uiteraard bespreekbaar. Je maandloon en bijbehorende vakantiedagen schalen dan uiteraard ook mee omlaag.

Geïnteresseerd en geen bedrijf?

Laat het ons weten! Mail ons op jobs@kumina.nl en geef daarbij duidelijk aan wat je kwalificaties zijn. Heb je nog vragen? Zet ze er gewoon bij en we doen ons best om ze voor je te beantwoorden.

Of je komt met ons chatten op IRC (kanaal #kumina op irc.kumina.nl). Als je je zin begint met ‘kumina’, dan krijgen we een notificatie en zullen we sneller reageren, afhankelijk van waar we mee bezig zijn. Hou er rekening mee dat het enkele minuten kan duren voordat we reageren.

Geïnteresseerd en wel een bedrijf?

Acquisitie op basis van deze vacature wordt niet op prijs gesteld.

On our new DNS infrastructure (and DNSSEC)

Thursday, August 15th, 2013

Recently we’ve been busy implementing a new DNS infrastructure for our resolvers as well as our authoritative servers. We wanted to be ready for future developments like DNSSEC and we wanted to re-new this important part of our infrastructure for a while. This blog-post gives an overview of our new setup.

(more…)

Debugging puppet queueing

Friday, December 9th, 2011

Today we ran into a problem where the data put in ActiveMQ by the puppetmaster seemed corrupted in some way. When running the puppet queue daemon on the foreground (with –debug –verbose –no-daemonize), we noticed messages like these:

info: Loaded queued catalog in 22.16 seconds
debug: Searched for resources in 0.31 seconds
err: Could not save queued catalog for web1.ourserver.com: syntax error on line 68, col 34: `  serverversion: 2.7.6  sshdsakey: [long string]'
notice: Processing queued catalog for web1.ourserver.com in 0.41 seconds

It seemed like for some reason there’s a newline missing there, but what exactly is it trying to do? It would be helpful if we could check the message in total, to see which resource is doing this. Python to the rescue!

On the machine that’s running the ActiveMQ, install python-stompy (we’re on Debian Squeeze). Open a python interactive shell and do this:

>>> from stompy.simple import Client
>>> stomp = Client()
>>> stomp.connect()
>>> stomp.subscribe("/queue/catalog")
>>> message = stomp.get_nowait()
>>> f = open("message","w")
>>> f.write(message.body)
>>> f.close()
>>> stomp.unsubscribe("/queue/catalog")
>>> stomp.disconnect()

You know have a file called message that contains the message. You might want to make the file a little bit easier to read by executing the following: sed -i 's/{/\n{/g' message, which adds a newline in front of each opening accolade. Now to search for the problem and the resource that causes it.

I hope this helps someone!

GlassFish 3.0.1’s pkg tool using Debian’s Python packages

Friday, July 23rd, 2010

While setting up GlassFish 3.0.1 for a customer on Debian Lenny using 64 bit machines, I ran into the problem that the update tool shipped with GlassFish (OpenSolaris‘s pkg tool) uses a Python interpreter which is part of the package. That Python interpreter however is 32 bit, which requires the ia32 libraries to be installed. Worse, it requires lididn in 32 bit, which is not part of the default Debian packages, so I had to get that one from the (very nice) Debian Multimedia repository. Although that’s a quick fix to get stuff working, we rather not use these repositories on production machines, due to security concerns and the like. Also, upgrades are easier if you only use the standard Debian repositories.

So I decided to see if I could get it working with the Debian supplied Python interpreter. One problem is that there’s a shared object file written in C which is part of the pkg application. That file is a 32 bit ELF too. So we’re going to download that source and recompile it for 64 bit. If you’re on a 32 bit system, you can skip that step (although it doesn’t hurt to do it anyway). First, we need to install the following packages:
(more…)