Skip to content

@slim-bean slim-bean released this Dec 9, 2019

One week has passed since the last Loki release, and it's time for a new one!

Notable Changes

We have continued our work making our API Prometheus-compatible. The key
changes centered around API compatibility are:

  • 1370 slim-bean: Change /loki/api/v1/label to loki/api/v1/labels
  • 1381 owen-d: application/x-www-form-urlencoded support

Meanwhile, @pstibrany has done great work ensuring that Loki handles hash
collisions properly:

  • 1247 pstibrany: pkg/ingester: handle labels mapping to the same fast fingerprint.

As always, the full list of changes can be found in the CHANGELOG!

Installation:

The components of Loki are currently distributed in plain binary form and as Docker container images. Choose what fits your use-case best.

Docker container:

$ docker pull "grafana/loki:v1.2.0"
$ docker pull "grafana/promtail:v1.2.0"

Binary

We provide pre-compiled binary executables for the most common operating systems and architectures.
Choose from the assets below for the application and architecture matching your system.
Example for Loki on the linux operating system and amd64 architecture:

$ curl -O -L "https://github.com/grafana/loki/releases/download/v1.2.0/loki-linux-amd64.zip"
# extract the binary
$ unzip "loki-linux-amd64.zip"
# make sure it is executable
$ chmod a+x "loki-linux-amd64"
Assets 25

@slim-bean slim-bean released this Dec 4, 2019

It's been a busy 2 weeks since the 1.0.0 release and quite a few important PR's have been merged to Loki.

The most significant:

  • 1322 rfratto: Fix v1 label API to be Prometheus-compatible

Some might call this a breaking change, we are instead calling it a bug fix as our goal was to be prometheus compatible and we were not 😃

But please be aware if you are using the /loki/api/v1/label or /loki/api/v1/label/<name>/values the JSON result will be different in 1.1.0

Old result:

{
  "values": [
    "label1",
    "label2",
    "labeln"
  ]
}

New result:

{
  "status": "success",
  "data": [
    "label1",
    "label2",
    "labeln"
  ]
}

ALSO IMPORTANT

  • 1160 daixiang0: replace gzip with zip

Binaries will now be zipped instead of gzipped as many people voiced their opinion that zip is likely to be installed on more systems by default.

If you had existing automation to download and install binaries this will have to be updated to use zip instead of gzip

Notable Fixes and Improvements

  • Broken version info in startup log message:

    1095 pstibrany: Makefile changes to allow easy builds with or without vendoring. Also fixes version bug for both cases.

  • The hashing algorithm used to calculate the hash for a stream was creating hash collisions in some instances.
    Please Note this is just one part of the fix and is only in Promtail, the second part for Loki can be tracked in PR1247 which didn't quite make the cut for 1.1.0 and will be in 1.2.0:

    1254 pstibrany: pkg/promtail/client: Handle fingerprint hash collisions

  • Thank you @putrasattvika for finding and fixing an important bug where logs were some logs were missed in a query shortly after a flush!

    1299 putrasattvika: storage: fix missing logs with batched chunk iterator

  • Thank you @danieldabate for helping to again improve our API to be more Prometheus compatible:

    1355 danieldabate: HTTP API: Support duration and float formats for step parameter

  • LogQL will support duration formats that are not typically handled by Go like [1d] or [1w]

    1357 cyriltovena: Supports same duration format in LogQL as Prometheus

The full list of changes can be found in the CHANGELOG

Installation:

The components of Loki are currently distributed in plain binary form and as Docker container images. Choose what fits your use-case best.

Docker container:

$ docker pull "grafana/loki:v1.1.0"
$ docker pull "grafana/promtail:v1.1.0"

Binary

We provide pre-compiled binary executables for the most common operating systems and architectures.
Choose from the assets below for the application and architecture matching your system.
Example for Loki on the linux operating system and amd64 architecture:

$ curl -O -L "https://github.com/grafana/loki/releases/download/v1.1.0/loki-linux-amd64.zip"
# extract the binary
$ unzip "loki-linux-amd64.zip"
# make sure it is executable
$ chmod a+x "loki-linux-amd64"
Assets 25

@slim-bean slim-bean released this Nov 20, 2019

🎉 Nearly a year since Loki was announced at KubeCon in Seattle 2018 we are very excited to announce the 1.0.0 release of Loki! 🎉

A lot has happened since the announcement, the project just recently passed 1000 commits by 138 contributors over 700+ PR's accumulating over 7700 GitHub stars!

Internally at Grafana Labs we have been using Loki to monitor all of our infrastructure and ingest around 1.5TB/10 billion log lines a day. Since the v0.2.0 release we have found Loki to be reliable and stable in our environments.

We are comfortable with the state of the project in our production environments and think it's time to promote Loki to a non-beta release to communicate to everyone that they should feel comfortable using Loki in their production environments too.
API Stability

With the 1.0.0 release our intent is to try to follow Semver rules regarding stability with some aspects of Loki, focusing mainly on the operating experience of Loki as an application. That is to say we are not planning any major changes to the HTTP API, and anything breaking would likely be accompanied by a major release with backwards compatibility support.

We are currently NOT planning on maintaining Go API stability with this release, if you are importing Loki as a library you should be prepared for any kind of change, including breaking, even in minor or bugfix releases.

Loki is still a young and active project and there might be some breaking config changes in non-major releases, rest assured this will be clearly communicated and backwards or overlapping compatibility will be provided if possible.

The full list of changes for this release can be found in the CHANGELOG

Installation:

The components of Loki are currently distributed in plain binary form and as Docker container images. Choose what fits your use-case best.

Docker container:

$ docker pull "grafana/loki:v1.0.0"
$ docker pull "grafana/promtail:v1.0.0"

Binary:

Choose from the assets below for the application and architecture matching your system.

Example for Loki on the linux operating system and amd64 architecture:

# curl -L "https://github.com/grafana/loki/releases/download/v1.0.0/loki-linux-amd64.gz

# extract the binary
$ gunzip "loki-linux-amd64.gz"

# make sure it is executable
$ chmod a+x "loki-linux-amd64"
Assets 25

@slim-bean slim-bean released this Oct 24, 2019

This is release v0.4.0 of Loki.

EDIT 2019/10/25:

PR 948 introduces more limit configurations on Loki and you may find the defaults too low for your installation resulting in rate limiting on the clients writing to Loki which was not happening prior to v0.4.0. The limits can be configured higher to avoid this, more info on limits can be found here.

Limits are mostly useful for multi-tenant installations, however they can be useful in single tenant and even single binary installations as a mechanism to help keep Loki's resources constrained. We are discussing if the current defaults are too low and/or if they should be removed entirely from the Helm installation.

Relevant issues #1200 and #1199

Notable changes:

Please see the CHANGELOG for full release notes.

  • With PR 654 @cyriltovena added a really exciting new capability to Loki, a Prometheus compatible API with support for running metric style queries against your logs! Take a look at how to write metric queries for logs

    PLEASE NOTE: To use metric style queries in the current Grafana release 6.4.x you will need to add Loki as a Prometheus datasource in addition to having it as a Log datasource and you will have to select the correct source for querying logs vs metrics, coming soon Grafana will support both logs and metric queries directly to the Loki datasource!

  • PR 1022 (and a few others) @joe-elliott added a new set of HTTP endpoints in conjunction with the work @cyriltovena to create a Prometheus compatible API as well as improve how labels/timestamps are handled

    IMPORTANT: The new /api/v1/* endpoints contain breaking changes on the query paths (push path is unchanged) Eventually the /api/prom/* endpoints will be removed

  • PR 847 owes a big thanks to @cosmo0920 for contributing his Fluent Bit go plugin, now loki has Fluent Bit plugin support!!

  • PR 982 was a couple weeks of painstaking work by @rfratto for a much needed improvement to Loki's docs! Check them out!

  • PR 980 by @sh0rez improved how flags and config file's are loaded to honor a more traditional order of precedence:

    1. Defaults
    2. Config file
    3. User-supplied flag values (command line arguments)

    PLEASE NOTE: This is potentially a breaking change if you were passing command line arguments that also existed in a config file in which case the order they are given priority now has changed!

  • PR 1062 and 1089 have moved Loki from Dep to Go Modules and to Go 1.13

Installation:

The components of Loki are currently distributed in plain binary form and as Docker container images. Choose what fits your use-case best.

Binary:

# download a binary (adapt app, os and arch as needed)
$ curl -fSL -o "/usr/local/bin/loki.gz" "https://github.com/grafana/loki/releases/download/v0.4.0/loki-linux-amd64.gz"
$ gunzip "/usr/local/bin/loki.gz"

# make sure it is executable
$ chmod a+x "/usr/local/bin/loki"

Docker container:

$ docker pull "grafana/loki:v0.4.0"
$ docker pull "grafana/promtail:v0.4.0"
Assets 25

@slim-bean slim-bean released this Aug 18, 2019

This is release v0.3.0 of Loki.

Notable changes:

Please see the CHANGELOG for full release notes.

Loki sees readiness probes added for the queriers and distributors (for running Loki in microservices mode), some cleanup and improvement to the live tailing code, fix panic when ingesters are removed while being live tailed, and a couple bugs around chunk handling.

The promtail amd64 image now supports reading Systemd journal files. This has been a struggle as their only exists C libraries for reading the journal file which requires using CGO and an image with systemd packages. For now we have switched to a debian image for promtail which has the necessary systemd files. Currently however cross compiling for ARM is too much of a struggle and we have deferred this for when we switch to the native image building with the drone.io CI system, at which point we will have both amd64 and arm promtail images which can read the Systemd journal.

As just mentioned there has been a big effort to offload building images from circle ci to drone.io where we have access to native arm containers for building arm images without cross compiling. Drone also seems to be building much faster. Currently we are building in both CI systems but soon will switch the image building to drone.

Installation:

The components of Loki are currently distributed in plain binary form and as Docker container images. Choose what fits your use-case best.

Binary:

# download a binary (adapt app, os and arch as needed)
$ curl -fSL -o "/usr/local/bin/loki.gz" "https://github.com/grafana/loki/releases/download/v0.3.0/loki_linux_amd64.gz"
$ gunzip "/usr/local/bin/loki.gz"

# make sure it is executable
$ chmod a+x "/usr/local/bin/loki"

Docker container:

$ docker pull "grafana/loki:v0.3.0"
$ docker pull "grafana/promtail:v0.3.0"
Assets 19

@slim-bean slim-bean released this Aug 2, 2019

This is release v0.2.0 of Loki.

Notable changes:

There were over 100 PR's merged since 0.1.0 was released. Please see the CHANGELOG for a more complete list.

A few of the most notable improvements:

There were some significant improvements in memory handling and performance of Loki:

  • Loki: 713 Storage memory improvement.
  • Loki: 782 Performance improvement: Query storage by iterating through chunks in batches.
  • Loki: 788 Querier timeouts.
  • Loki: 794 Support ingester chunk transfer on shutdown.

Additionally, labels are now fetched from storage for the requested timeframe so you are no longer limited to only retrieving labels of what was still in memory:

  • Loki: 521 Query label values and names are now fetched from the store.

Please note this introduces a potential new issue if you're asking for labels across a large number of streams over a large timeframe, which causes a large amount of chunks to be loaded. A fix for this is currently being worked out.

Several additions were made to the log processing pipeline:

  • Pipeline: 738 Added a template stage for manipulating label values.
  • Pipeline: 732 Support for Unix timestamps.
  • Pipeline: 760 Support timestamps without year.

A docker logging plugin was created to allow docker containers to send logs directly to Loki:

  • Docker-Plugin: 663 Created a Docker logging driver plugin.

And starting with this release there are now multi-architecture docker containers and binaries:

  • Build: 668,762 Build multiple architecture containers.

Installation:

The components of Loki are currently distributed in plain binary form and as Docker container images. Choose what fits your use-case best.

Binary:

# download a binary (adapt app, os and arch as needed)
$ curl -fSL -o "/usr/local/bin/loki.gz" "https://github.com/grafana/loki/releases/download/v0.2.0/loki_linux_amd64.gz"
$ gunzip "/usr/local/bin/loki.gz"

# make sure it is executable
$ chmod a+x "/usr/local/bin/loki"

Docker container:

$ docker pull "grafana/loki:v0.2.0"
$ docker pull "grafana/promtail:v0.2.0"
Assets 18

@slim-bean slim-bean released this Jun 3, 2019 · 474 commits to master since this release

Loki Beta Release 1 🎉

Note: If you had been using the pipeline_stages in promtail which was introduced about a week ago, there were some breaking changes to this, please see here for information on the new config.

Getting Started

Assets 4
You can’t perform that action at this time.