Attendees: Robert Lupton, K-T Lim, Bill Chickering, Mike Freemon, Serge Monkewitz, Jacek High level summary ================== - application-level logging: - considering using log4cxx, plus one-line interface and configuration - swig it to python - distributed logging: - considering using Apache Flume - next steps: - build a prototype - evaluate - make final decision (this is probably SAT level) - expecting to have app-level prototype in late January, with Flume in February [Bill will build it] Related reading =============== https://dev.lsstcorp.org/trac/wiki/db/Qserv/Logging (it will be updated shortly after these notes are sent out) Detailed notes ============== the wiki page does not cover our existing event system - it could be considered as an option for distributed logging - although it has many issues google logging - automatically selects module name (we dislike it) - doesn't seem very popular yes, pex_logging has optimizations and tries to minimize computation if logging turned off pay attention to performance, e.g., ideally Robert would like an option to compile out logging all together it'd be useful to define even more levels than log4cxx offers (e.g., several levels within "debug") - need to research if that is doable Robert dislikes the api in pex_logging, want something as easy as printf, a.la.: LOG("a.b.c", n, message, args, ...); where "a.b.c" is the hierarchical component name, n is the severity, and args are printf/boost::format/stream style arguments for the message. need to be able to attach metadata to individual log messages log4cxx directly vs wrapping? - log4cxx plus one-line simple format, and dealing with configuration need to be able to dynamically turn on/off distributed logging (isolate our software from distributed logging) - proposed model: configure system to produce log in log4j format, distributed logging simply consumes the data same logging system from python and C++ or they can diverge? - same. It is a requirement! logging from python - swig the c++ implementation - yes, even for simple, python-only admin tools configuring logging - from c++: through api or a text file - from python: through a text file only two main uses for logging: - manual debugging - automated parsing of logs - want key/value for that - can configure log4cxx to write in json format problem with existing event system - ingesting into rdbms slow, querying key/value in rdbms slow - it does not batch - issues with multi-threading - but using event system as a transport protocol is an option, it is fast, scales, reliable sending log data to distributed logging system - through local files, or streaming directly - if local files: space mgmt issues (disks getting full) - but acts as a buffer, if distrib logging down, can resync and catch up Flume vs Kafka - Flum is simpler, easier to deploy than Kafka - Kafka focuses a lot on high throughput / high performance - both use ZooKeeper - Flume is not just for hdfs - both solid, well supported, Apache products --> prototype with Flume if we use Flume, would we still use event system for monitoring? Options: - use event system - do event monitoring in Flume - generate events from Flume and use event system after Flume This discussion is all about application level logging, not for system level logging (done by NCSA) - NCSA has good tools that they use and like - Mike will send some info, if it looks interesting to us we will schedule a phone call to discuss Jacek On 12/17/2013 10:53 PM, Jacek Becla wrote: > Hi, > > I've put together a sketch proposal for logging system > based on earlier research done by our student Bill > on distributed logging systems, plus a couple of > hours of research/reading up about pex_logging, > log4cxx, Flume and Kafka, see: > > https://dev.lsstcorp.org/trac/wiki/db/Qserv/Logging > > I'm planning to discuss it tomorrow (Wed) at 11:00 > pacific with Bill and K-T. > > If anyone is interested in joining, we'll keep > the line open: 866 740 1260, pass 9268664. > > Jacek > ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the QSERV-L list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=QSERV-L&A=1