Skip to content
extract whitebox monitoring data from application logs for collection in a timeseries database
Go Yacc Makefile Emacs Lisp Shell Dockerfile Awk
Branch: master
Clone or download

Latest commit

Latest commit 076065d May 18, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows golangci-lint is at warning until proven not failing. Mar 19, 2020
cmd Merge branch 'master' of https://github.com/google/mtail Feb 13, 2020
docs Create a commandline flag that disables runtime error logging. Feb 24, 2020
examples Make line count consistent Jul 26, 2019
hooks add post_push tagging for semantic versioning Apr 19, 2018
internal Perform unification on alternate expressions in a capture group. May 18, 2020
.cirrus.yml Remove the binary artifacts thing which failed with a challenging err… Mar 6, 2020
.gitattributes Move the whole parser and it's cyclic mess to its own package. Dec 2, 2018
.gitignore Ignore the fuzzit binary when locally debugging. Mar 19, 2020
.gitlab-ci.yml Update gitlab to use latest golang image. Mar 6, 2020
.golangci.yml Allow tests to have magic numbers and not be dinged by lint. Feb 13, 2020
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Sep 20, 2017
CONTRIBUTING.md Update contribution guide to indicate response time. Apr 22, 2018
Dockerfile Ensure that the log file location exists in the docker container. May 15, 2020
ISSUE_TEMPLATE.md Create Github ISSUE_TEMPLATE.md Feb 18, 2018
LICENSE Add CONTRIBUTING and LICENSE. Mar 2, 2015
Makefile Release a linux/ppc64 build. May 15, 2020
README.md Link to event. Mar 19, 2020
TODO Document how I debug fuzz crashes. Feb 13, 2020
benchmark_results.csv Read up to 4K from each log. Sep 9, 2013
go.mod Update go modules. Apr 30, 2020
go.sum Update go modules. Apr 30, 2020
log_rewriter.awk Fix an output formatting bug in the rewriter script. Apr 5, 2015
logo.png Adds project logo. Sep 20, 2017
mtail-mode.el Merge branch 'master' into vsftpd Feb 12, 2019
subject_summarizer.mtail Adds a simple mtail program for counting subject lines in an mbox. Nov 7, 2018

README.md

mtail

mtail - extract whitebox monitoring data from application logs for collection into a timeseries database

GoDoc Go Report Card fuzzit OSS-Fuzz CirrusCI Build Status codecov .github/workflows/reviewdog.yml

mtail is a tool for extracting metrics from application logs to be exported into a timeseries database or timeseries calculator for alerting and dashboarding.

It fills a monitoring niche by being the glue between applications that do not export their own internal state (other than via logs) and existing monitoring systems, such that system operators do not need to patch those applications to instrument them or writing custom extraction code for every such application.

The extraction is controlled by mtail programs which define patterns and actions:

# simple line counter
counter lines_total
/$/ {
  lines_total++
}

Metrics are exported for scraping by a collector as JSON or Prometheus format over HTTP, or can be periodically sent to a collectd, StatsD, or Graphite collector socket.

Read the programming guide if you want to learn how to write mtail programs.

Mailing list: https://groups.google.com/forum/#!forum/mtail-users

Installation

There are various ways of installing mtail.

Precompiled binaries

Precompiled binaries for released versions are available in the Releases page on Github. Using the latest production release binary is the recommended way of installing mtail.

Windows, OSX and Linux binaries are available.

Building from source

The simplest way to get mtail is to go get it directly.

go get github.com/google/mtail/cmd/mtail

This assumes you have a working Go environment with a recent Go version. Usually mtail is tested to work with the last two minor versions (e.g. Go 1.12 and Go 1.11).

If you want to fetch everything, you need to turn on Go Modules to succeed because of the way Go Modules have changed the way go get treats source trees with no Go code at the top level.

GO111MODULE=on go get -u github.com/google/mtail
cd $GOPATH/src/github.com/google/mtail
make install

If you develop the compiler you will need some additional tools like goyacc to be able to rebuild the parser.

See the Build instructions for more details.

A Dockerfile is included in this repository for local development as an alternative to installing Go in your environment, and takes care of all the build dependency installation, if you don't care for that.

Deployment

mtail works best when it paired with a timeseries-based calculator and alerting tool, like Prometheus.

So what you do is you take the metrics from the log files and you bring them down to the monitoring system?

It deals with the instrumentation so the engineers don't have to! It has the extraction skills! It is good at dealing with log files!!

Read More

Full documentation at http://google.github.io/mtail/

Read more about writing mtail programs:

Read more about hacking on mtail

Read more about deploying mtail and your programs in a monitoring environment

After that, if you have any questions, please email (and optionally join) the mailing list: https://groups.google.com/forum/#!forum/mtail-users or file a new issue.

You can’t perform that action at this time.