Howto put your symfony logs into ELK with filebeat

TL;DR

Log messages in your symfony app with fields in the logging context and make them available in Kibana for reporting.

  • write logfiles logstash formated into a file
  • use filebeat to transfer them logstash
  • post process them with logstash
  • put them in elasticsearch to view them with kibana

logging in symfony controller

$logger = $this->get('monolog.logger.elk');
$logger->info(‘niepi.someMessage’, ['value1' => $value1, 'value2’ => $value2]);

logger config (app/config/config.yml)

monolog:
	channels: [ "elk"]
…
kibana:
	type:stream
	path:"%kernel.logs_dir%/elk.log"
	formatter: service.elkformater
	action_level: info
	channels: ["elk"]

formater config (src/AppBundle/Resources/config/services.yml)

service.elkformater:
	class: Monolog\Formatter\LogstashFormatter
	arguments:
		- 'appName'
		- ~
		- ~
		- ~
		- 1

filebeat config (/etc/filebeat/filebeat.yml)

…
filebeat:
	prospectors:
		-
		 paths:
			- “/%APP_LOCATION%/app/logs/elk.log"
		 document_type: application # this is just an identifier for logstash

Logstash config

filter {
	if [type] == "application" {
		json{
			source => "message"
		}
	}
}

Quantified Self Setup 2014

Im letzten Jahres habe ich begonnen eine Vielzahl von Daten zu sammeln. Da ich oft gefragt wurde was ich alles für Tools verwende, habe ich einmal eine kleine Übersicht erstellt.

Fitbit One

Den Fitbit One habe ich seit einem Jahr und verwende ihn tagsüber als Schrittzähler.
In der Nacht zeiche ich damit meinen Schlaf auf, dabei mißt er wie oft man sich im Schlaf bewegt. Dafür trägt man den Fitbit in einem Armband. Man kann dann seine Wachphasen (Bewegungen) sehen und auch die Zeit welche man im Bett verbracht hat im Vergleich zur wirklichen Schlafzeit.

Withings WS-50 Smart Body Analyzer

Eine elektronische Waage, welche zusätzlich zum Gewicht noch den BMI, Körperfettanteil, Puls und Temperatur- und Kohlendioxid misst.

Moves-App

Eine iPhone App welche die Schritte und zurückgelegte Wegstrecke aufzeichnet. Die Daten lassen sich dann auch auf einer Karte anzeigen.

Pedometer++

Einfacher iPhone Schrittzähler, welcher den A7 Chip des iPhone 5s verwendet. Pedometer++ zeigt bei mir meist deutlich weniger Schritte als der Fitbit an.

bereitgestellt. Es bietet zwar auch eine Datenexport Möglichkeit, aber die Software ist nicht besonders gut.

Die Daten erfasse ich deswegen mit MySugr, das mir eine deutlich bessere Übersicht über meine Werte kurz- und langfristig gibt.

Rescue Time

Rescue Time ist eine OSX App. Sie erfasst die Programme die man verwendet und Webseiten die man besucht. Diese werden dann nach der Produktivität bewertet. Wöchentlich sieht man dann einen Übersicht womit man seine Zeit verbringt.

Gmail Meter

Gmail Meter ist ein Script was den monatlichen Email-Verkehr eines Gmail Accounts auswertet. Dies ermittelt z.b. die Anzahl der Nachrichten pro Tag, Woche und Monat, Länge der Nachrichten, Zeit bis zur ersten Antwort.

OSX PHP Homebrew Setup

fork me on github

install php with mysql pgsql intl support

$ brew install php –with-apache –with-mysql –with-pgsql –with-intl

set php timezone in php ini

date.timezone = Europe/Vienna

load php module in apache

in /private/etc/apache2/httpd.conf add

LoadModule php5_module $FULLPATH/libphp5.so

fix pear permissions and config

$ chmod -R ug+w /usr/local/Cellar/php/5.3.10/lib/php
$ pear config-set php_ini /usr/local/etc/php.ini

install mysql default tables

$ unset TMPDIR
$ mysql_install_db –verbose –user=whoami –basedir=”$(brew –prefix mysql)” –datadir=/usr/local/var/mysql –tmpdir=/tmp

set mysql up to start automatically on system boot:

$ mkdir -p ~/Library/LaunchAgents
$ cp /usr/local/Cellar/mysql/5.5.10/com.mysql.mysqld.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

Start mysql:

$ mysql.server start

install xdebug & apc

if you don’t have autoconf (Xcode 4.3) install autoconf

$ brew install autoconf

$ pecl installxdebug apc

xdebug setup

and change

extension=xdebug.so

to

zend_extension=”$fullpath/xdebug.so”
xdebug.remote_enable = On
xdebug.remote_autostart = 1

install pear packages

php q/a tools

$ pear config-set auto_discover 1
$ pear install pear.phpqatools.org/phpqatools pear.netpirates.net/phpDox

this will install:

PHP_Depend, PHP_CodeSniffer, File_Iterator Text_Template, PHP_Timer, YAML, Console_CommandLine, Log, PHP_TokenStream, Base, PHP_PMD, PHP_CodeBrowser, PHP_CodeCoverage, PHPUnit_MockObject, ConsoleTools, PHPUnit, phpcpd, phploc, phpqatools

install phing

$ pear channel-discover pear.phing.info
$ pear config-set preferred_state beta
$ pear install phing/phing
$ pear config-set preferred_state stable

resources