Porting loganalyser tools to pandas + jupyter notebooks


In [11]:
%matplotlib inline
from loganalyser import jvm, plot

JVM


In [12]:
jvm = reload(jvm)
plot = reload(plot)

gc = jvm.parse('data/grass-sheep.log', 'Europe/Berlin')
#gc = jvm.parse('data/FReportServer_gc.log', 'Europe/Berlin')
gc.head() # note timestamps are in UTC! (workaround for to_json)


Out[12]:
edenSize edenUsed elapsed fromSize fromUsed fullGC permSize permUsed tenuredSize tenuredUsed timestamp toSize toUsed type
0 15360 15360 0.0070220 2560 0 False 21248 2730 41024 0 2013-07-18 09:24:42.150 2560 0 GC
1 15360 0 0 2560 2508 False 21248 2730 41024 12758 2013-07-18 09:24:42.150 2560 0 NaN
2 15360 15206 0.0130340 2560 2508 False 21248 2734 41024 12758 2013-07-18 09:24:42.290 2560 0 GC
3 30720 0 0 2560 0 False 21248 2734 41024 27516 2013-07-18 09:24:42.290 2560 2534 NaN
4 30720 0 0.0200690 2560 0 True 21248 2734 41024 27516 2013-07-18 09:24:42.304 2560 2534 Full GC

In [13]:
gc.dtypes


Out[13]:
edenSize               object
edenUsed                int64
elapsed                object
fromSize               object
fromUsed                int64
fullGC                   bool
permSize               object
permUsed               object
tenuredSize            object
tenuredUsed            object
timestamp      datetime64[ns]
toSize                 object
toUsed                  int64
type                   object
dtype: object

In [14]:
# find out boundaries to select a timeframe -> use ms since epoch
# in a next version boundaries are provided by ipython widgets!
import datetime
from pytz import timezone
print gc.ix[20]
# proper way with tz http://www.saltycrane.com/blog/2009/05/converting-time-zones-datetime-objects-python/
ts = timezone('Europe/Berlin').localize(datetime.datetime.strptime('2013-07-18 11:24:45.356000', '%Y-%m-%d %H:%M:%S.%f'))
print int(ts.strftime("%s")) * 1000


edenSize                            61632
edenUsed                            61015
elapsed                         0.0230580
fromSize                            44992
fromUsed                                0
fullGC                              False
permSize                            21248
permUsed                             2734
tenuredSize                        133824
tenuredUsed                         48587
timestamp      2013-07-18 09:24:45.356000
toSize                              51328
toUsed                              44542
type                                   GC
Name: 20, dtype: object
1374139485000

In [15]:
plot.set_styles(['jvm'])


Out[15]:

In [16]:
plot = reload(plot)
plot.draw_graph('jvm', gc.to_json(orient='records'))


Out[16]:

In [ ]: