I’ve been fortunate enough to appear on a podcast with the excellent Coding Over Cocktails team from Toro Cloud. we got to talk about some of the ideas discussed in my Logging In Action book. You can check the podcast out via their website which includes all the episode details and links to all the platforms that host the podcast. There have been some great previous guests such as Luis Weir (my old boss), Chris Richardson of Microservices.io, Matthew Reinbold from Postman, Sam Newman to name just a few.
One aspect of logging I didn’t directly address with my Fluentd book was consuming multiline logs, such as those you’ll often see when a stack trace is included in the log output. Implementing the feature with Fluentd isn’t hugely complex as it leverages the use of regular expressions (addressed in the book in more depth) to recognize the 1st line in a multiline log entry and for subsequent lines.
I didn’t address it for a couple of reasons:
Using parsers is fairly inefficient, particularly when you’re using a parser to just decide how to then transform a line (this is why I’m not a huge fan of some of the 12 Factor App‘s recommendations when it comes to logging).
Incorporating into your Fluentd parser configurations for specific app log setups is arguably increasing the level of coupling.
Many logging frameworks can talk directly to Fluentd as we saw in the book. This is can be more efficient, which means that the log event is more likely to be passed over in a structured format (therefore less work to do).
But let’s also be realistic, many applications will be configured to simply log to a file and aren’t likely to be changed. At which point we do need to process such situations, so is it done? The process remains largely the same as the tail plugin we illustrated. Except we introduce a different parser called multiline. The documentation provided by Fluentd includes several examples of multiline configurations that will work for default log formats (such as Log4J and Rails). If we took our most basic source setup:
Then assuming our log Simulator played back multiline logs (the provided configuration doesn’t do that) extended to consume standard Log4J2 logs we would have a configuration as follows:
As you can see we’ve set the parser type to multiline. Then there are two regular expressions, format_firstline is used to help recognize the start of a log event. Every line of the log is tested with this expression as we now assume unless this produces a valid result that the line will be part of a multiline event. If you look at the expression you’ll realize it is looking for a DateTime stamp in the form YYYY-MM-DD. This does mean if you generate a log that starts with the date even if it is part of a multiline output then you’ll trip up the parser. You could extend the expression – but the longer it is the slower the processing.
Following format_firstline we have in our example format1 which describes how to process the first line. This can be extended to define how to handle subsequent lines but this could be multiple format definitions. They do need to be presented in numerical order eg. format1, format2, format, and so on.
LogSimulator – Playing back multi-line logs
The Log simulator uses a very similar mechanism to Fluentd to understand how to playback multiple line logs. When it is reading the log lines in for replay it uses a regular expression to recognize the start of a new log entry (FIRSTOFMULTILINEREGEX) defined in the properties file. The simulator will concatenate lines together until it either hits the end of the file or has a new line that complies with the REGEX. It stores the line with an encoded /n (newline character). It will then print the log using the format specified and will allow the /n to create a newline (or not) based on another config parameter (ALLOWNL).
So why is worth snagging a download? Well, WebAssembly (Wasm) is the new way to deliver browser-based solutions to a client without having to develop with JavaScript. As a result, you have the chance to reuse more of your existing code. It also has the benefit of having been precompiled to a binary form, offering code security and compact download. But Wasm also has been seeing adoption in back-end server solutions as well, particularly for feature extensions, etc.
Christian Posta and Rinor Maloku’s book with Manning, Istio In Action has just been published. I’ve previously said it’s a good book, and that’s not surprising given Christian’s role at solo.io. When the final chapters became available I started to go through it in more detail and built a mind map (As with the recent review of Kubernetes best practices). The map can be seen below.
As you can see the map is very substantial reflecting on the depth and value of the book. For those who look at the maps, may notice there are a couple of chapters not fully mapped. I will update the map to fill those gaps in, but given they focus on monitoring and observability, I was less concerned about those areas given my own writing. The book’s exercises are very much built around using Docker Desktop making it very easy to spin up the examples and exercises. If you want to know about Istio Service Mesh on K8s then I’d recommend it.
Reading through the book, I’ve learned details that I was not entirely aware of, for example the integration of non K8s workloads into the mesh. The tuning of Istio to keep it highly performant with a lot of workloads.
Those I interact with more regularly will know I have this last week started a new job. You could say I’ve followed a common path for Ace Directors that don’t have instrumental roles within a company and joined Oracle. But some things won’t change; my new role as Cloud Developer Evangelist means I will still be producing blog content. My writing will appear on Oracle’s websites through the Blog, Community, Developer, and Architecture parts of the site, plus potential contributing to other high profile sites. But We’ll continue to add posts here, including referencing contributions in other locations.
I will continue submitting papers/presentations to conferences and presenting. Hopefully, we’ll start to get out and see people whilst presenting as well.
This does mean a change to my Ace Director status, as I will become an Alumni of the community, and we’ll be updating logos etc. But I have developed many friendships and contacts within the ace community. Not to mention, I believe and value what the Ace Community does, so while I may not be officially part of the community anymore, I will endeavour to support my friends and the wider community.
Leaving Capgemini has been uncomfortable, as I have left behind many great people that I’ve enjoyed working with (although some of those have also preceded me into Oracle). But to do more of what I have learnt over the years as the most rewarding (talking and writing about applying technology to solve problems, sharing insights and knowledge), particularly as part of the Ace community, meant a need for a new challenge.
To those who have contributed and influenced my journey – as ever my thanks.
The final leg of getting the book published has taken a lot longer than had been expected. But we’ve just been told that the book has been sent to the printers. This means:
final eBook will be available from Manning in about 1 week
Preordered print copies of the book will be dispatched in about 2 weeks
The alternative ebook formats for mobile readers e.g. kindle etc available in about 3 weeks
The book will become available to purchase from other book stores such as Amazon in 3-4 weeks
Safari Books Online and Apple stores will have the ebook in 4-5 weeks
It also means the project from a writing perspective is complete. But we’re starting to look at the additional examples we’ll add to the GitHub repo. These will be dependent upon the book.
I’ve had some time to catch up on books I’d like to read, including Kubernetes Best Practises in the last few weeks. While I think I have a fair handle on Kubernetes, the development of my understanding has been a bit ad-hoc as I’ve dug into different areas as I’ve needed to know more. This meant reading a Dummies/Introduction to entry style guide would, to an extent, likely prove to be a frustrating read. Given this, I went for the best practises book because if I don’t understand the practises, then there are gaps in my understanding still, and I can look at more foundation resources.
As it goes, this book was perfect. It quickly covered the basics of the different aspects of Kubernetes helping to give context to the more advanced aspects, and the best practices become almost a formulated summary in each section. The depth of coverage and detail is certainly very comprehensive, explaining the background of CNI (Container Network Interface) to network-level security within Kubernetes.
The book touched upon Service Meshes such as Istio and Linkerd2 but didn’t go into great depth, but again this is probably down to the fact that Service Mesh ideas are still maturing, and you have initiatives like SMI (Service Mesh Interface still in the CNCF’s sandbox).
In terms of best practices, that really stood out for me:
Use of Taints and Tolerations for refined control of pod deployment (Allowing affinity to be controlled to optimise resilience, or direct types of pod deployment to nodes with specialist capabilities such as GPU).
There are a lot more differences and options then you might realize in terms of ingress controller capabilities, so take time to identify what you may need from an ingress controller.
Don’t forget pods can be scaled vertically with the VPA (Vertical Pod Autoscaler)as well as horizontally through the HPA.
While using a managed persistence service will make statement storage a lot easier, stateful sets will give you a very portable solution.
As with a lot of technical books I read. As I go through the book I build up a mind map of what I think are the key points. Doing so leaves me with a resource I can use as a quick reference, but creating the mind map helps reinforce the learning. So here is the mind map …
Opening of the blog post on blogs.oracle.commy Author Profile on blogs.oracle.com
World Festival Conference
We’ve also scored another success, this time we’ve been invited to speak at WorldFestival in August, this is an online conference organized by the same team behind DeveloperWeek. This is the first time outside of an Oracle linked event where I’ve been amongst the first few named speakers, so proud of that. The conference looks really interesting as it looks beyond just core developer themes with conference tracks on Space & Transportation, Smart Cities, Robotics, Digital Health to name a few of the 12 streams. Worth checking out.
I wrote a blog after completing my first book with Robert van Mölken about what was involved. That post can be seen here. It focussed on the processes with Packt and how Robert and I worked to try to ensure the book felt consistent despite the two of us writing.
Writing Logging In Action was a solo project for a different publisher. It seems like an opportunity to share some fresh insights.
Time and Effort
Surprisingly the time between signing the contract and the manuscript being completed ready to go through the final production process didn’t vary hugely roughly 15-18 months. The final steps of preparing to go to print did take longer, in part down to the number of extra steps taken by Manning to ensure the book was polished. Upon reflection, I think that is at least partly down to the fact you need the chapters to need to flow, particularly when one chapter leads directly to the next. So you do get periods of respite until your co-author has got sufficiently far enough with their writing to enable you to start the next part. Writing solo, as soon as one chapter is completed you’re into the next, so no periods of respite.
When it comes to the amount of actual time involved. That is different, I didn’t keep track exactly. But knowing what I typically did each week and roughly how many quiet periods I had I think it works out to be 300 hours give or take 50 hours. That sounds a lot, but then if you look at it as 1 hour per page it doesn’t seem too significant.
Using Time and Self Discipline
The way time is used has been a little different, when co-authoring you have to allow time for coordinating and supporting each other, peer-reviewing writing pushing each other along in terms of keeping to plan. The Manning development team are pretty good at keeping you moving without it feeling like you’re being chased, and will provide constructive and supportive feedback. But your co-authors will know the subject matter very well and know what your best work is like, so are able to challenge you when peer-reviewing the work. When we wrote the API book, I remember one of my colleagues reviewing a chapter and coming back saying it was a solid chapter, but I know you have explained these ideas more clearly. When I went back over the chapter, I could see what they meant. As a result a better book.
The bottom line is it can be difficult to bring a critical eye to your own work, particularly soon after have written it. But you do need that self-discipline when working on your own. This is where the Manning editorial team really stood out.
The book is published, that’s the end?
It is easy to think that’s the end of things, and certainly in terms of solid writing it is. But after all the invested effort in writing it. You might as well help promote the book and take advantage of the reputation of being a published author. This means presenting on the subject of your book. The book will provide a level of credentials & credibility to the subject you’ve written about. Despite being an introvert (which is why I take pleasure in the writing process) getting through the pre-presentation nerves, feelings of imposter syndrome once on stage and talking about your subject can be a rush, particularly as you finish. The personal payoff from presenting can come after the event, when someone who has seen your presentation says to you afterwards, that really helped me, or they really enjoyed or found the presentation thought-provoking.
If presenting is too much then these days there are other paths available, such as writing articles for journals, participating in podcasts. Having participated in several podcasts if you have a good host, this can be good fun.
What do I get out of writing?
The benefit of royalties certainly won’t replace a typical developer’s salary, unless you’re really lucky. Even with mainstream publications, only a small proportion of authors are successful enough for it to become their day job. But, there are indirect benefits. If you want something to put your CV above many others – then a book will really help. This is often why a lot of freelancers write books – it helps provide credibility over others. There is no doubt that my writing has made a difference to a change in job. I suspect that joining Capgemini and my next move has been a lot easier because of it. Not to mention, I’ve known clients like the idea that within the team they’ve engaged are people with credibility beyond just the supplier. Depending upon your employer, the marketing value for them to employ you (or me) as an author (and by implication an SME) add differentiation as well.
Writing solo again?
I’ve heard technical book authors say, never again once they’ve been published. A few I know have written multiple books. Given the experience, I think co-authoring is easier. But the gratification of completing a solo effort is so much greater.
The technical book landscape is shifting, technology cycles seem to be accelerating (or is it that I’ve reached an age where time seems to go by so much quicker) which is impacting a book’s shelf life. The ability to provide, receive and expect more interactive engagement is evolving – LiveBooks, Katacoda etc. The need to consume smaller pieces across multiple sources is growing as we need to build new skills, but don’t want to start from scratch (as I described here for example).
There is no doubt I’ll get involved in another book project. But a solo writing project will probably be smaller so we can shorten that development cycle.
The book has had a title change as Manning found that links the book was clashing with other solutions using the term ‘Unified Logging’. With the name change it helps bring the book inline with the Manning naming with their In action series. This means the book website is now https://www.manning.com/books/logging-in-action.
With the name change we’ve agreed that there should an additional chapter added. As I’d written the book with a view that everything we cover applies to both modern solutions such as Microservices coming from the CNCF camp but equally relevant to more traditional IT landscapes. Within the book we have explianed how things are positioned and can be used in Kubernetes, but it was agreed with our editorial team that not tackling the configuration of Fluentd with Kubernetes and Docker was to an extent ignoring a key community that will be using Fluentd. So the new chapter will be introduced to address this aspect.
In terms of progress we’re into the 1’s – 1 Chapter to start (the new one), 1 Chapter back from the Technical Editor (Logging Best Practises) – some edits to be done, 1 Chapter now with the editor (How To Create Custom Plugins), 1 Chapter being finished (Logging Frameworks) and finally 1 peer review cycle to go.
Given the lovely review comments that have been quoted on the book’s page. I can only recommend if you have an interest in logging and monitoring then check it out through Manning Early Access Programme (MEAP).
You must be logged in to post a comment.