►
Description
Loki 2.4 and GEL 1.2 introduced a hybrid deployment model that takes the simplicity of running the Loki log aggregation solution as a single binary and introduces an easy path to high availability and scalability. Particularly for organizations running on virtual machine and bare metal (non-Kubernetes) environments, this is a game-changer! Learn more in this tutorial from Grafana Labs Senior Software Engineer Trevor Whitney.
For more about Loki, go to https://grafana.com/oss/loki/.
Interested in trying out Grafana Enterprise Logs? Contact us: https://grafana.com/contact?about=grafana-enterprise-traces&src=yt
A
A
The
new
targets
that
exist
in
the
simple
scalable
deployment
also
exists
in
loki
2.4.1,
so
you
can
do
this
using
the
open
source
loki
and
if
you
run
gel
the
enterprise
loki
without
a
license,
it
should
operate
just
like
an
open
source
loki.
So
you
should
be
able
to
follow
along
with
this
sort
of
exercise.
Exactly
if
you
want
to
so
to
do
this
exercise,
I
am
going
to
have
two
machines.
A
No
kubernetes,
no
orchestration
we're
just
going
to
do
this,
as
if
we
were
on
bare
metal
to
show
you
how
hopefully
illustrate
how
simple
this
deployment
architecture
is,
even
if
you're
not
using
kubernetes.
Now
behind
the
scenes
what's
going
on
here
is
I'm
actually
running
a
docker
compose
stack,
it's
giving
me
a
grafana,
it's
giving
me
a
minion
which
we're
going
to
use
for
object.
Storage
a
little
bit
later.
A
It's
also
giving
me
a
min
grammar
flog
image,
which
is
hitting
my
loki
using
the
docker
compose
loki
logs
driver,
and
so
what
I'm
actually
operating
in
here
is.
I
have
two
containers
so
on
the
left
side
here
is
going
to
be
the
right
container.
Well,
that's
confusing!
Isn't
it
and
on
the
right
side,
is
going
to
be
the
read
container,
so
I've
gone
ahead
and
downloaded
that
rpm
package,
and
so
I'm
going
to
run
this
script.
A
A
That
is
the
directory
that
the
rpm
installed
loki
and
systemd
unit
are
going
to
be
looking
are
going
to
use
for
all
their
for
their
work
directory
and
then
it's
going
to
call
system
cuddle,
enable
enterprise
logs.
So
let's
go
ahead
and
do
that?
A
Okay,
so
the
this
installed
sort
of
a
few
things
of
note,
there's
the
actual.
In
this
case
enterprise
logs
binary.
There
is
a
configuration
file
which
is
at
etsy
enterprise
logs
config.
A
A
If
you
are
on
a
debian
system,
this
will
be
etsy
defaults,
and
so
you
can
see
here.
Those
are
some
environment
variables
we
set,
including
the
config
file.
Runtime
config.
Custom
args
is
where
you
can
specify
runtime
flags
and
that's
where
we
will
specify
targets
later
on.
But
for
starters,
let's
just
get
going
with
a
single
binary,
so
I
just
installed
it
and
then
it's
I've
enabled
the
systemd
unit.
So
I'm
just
going
to
go
ahead
and
start
it
and
then
I
will
tail
the
logs.
A
A
Now
we
brought
up
a
loki,
but
the
ring
hadn't
stabilized
now
the
ring
has
stabilized
and
those
errors
have
stopped.
So
let's
go
ahead
on
over
to
our
to
the
browser
and
we're
going
to
go
into
the
grafana
and
log
in.
A
A
I'm
going
to
go
ahead
and
have
some
some
browser
history
here,
that's
a
preview
of
the
future
right
now,
it's
on
the
loki,
simple
scalable
data
source.
So
the
only
difference
between
these
two
data
sources
is
the
single
binary.
One
is
configured
to
read
from
from
the
right
node,
which
is
the
one
that
is
acting
as
our
single
binary
right
now
and
we'll
get
to
the
simple
scalable
later.
But
here
we
go
put
it
on
the
loki
single
binary
and
we
see
that
the
logs
are
coming
in.
A
So
let's
go
back
to
the
terminal
and
let's,
let's
do
better
okay,
so
single
binary
is
a
great
way
to
just
spin
up
a
single
instance.
Kick
the
tires,
maybe
throw
some
like
localhost
logs
at
it
practice.
A
Log
ql
things
like
that,
but
it's
it's
difficult
to
scale
because
you've
coupled
the
read
in
the
right
path,
and
so
not
only
do
those
paths
often
have
to
scale
separately,
but
you
now
have
created
a
situation
where,
if
you
have
a
really
heavy
query,
load
or
or
a
bad
actor
on
the
query
side,
it
could
actually
cause
you
data
loss
and
take
down
your
right
path
and
similarly,
a
problem
with
the
right
path
could
take
on
the
read
path.
So
what
the
simple
scalable
deployment
model
does?
Is
it
splits,
write
and
read?
A
It
doesn't
go
to
full
micro
services
because
we're
trying
to
keep
things
simple.
So
the
goal
is
to
just
have
two
targets
that
can
be
scaled
independently
and
that,
depending
on
the
size
of
your
environment,
should
be
plenty
robust
enough
to
handle
many
production
loads.
So
how
do
we
get
there?
Well,
the
first
thing
that
we're
going
to
do
is
we're
going
to
go
into
our
config.
A
So
that's
enterprise
logs
and
there's
our
config,
and
I
wanted.
I
want
to
set
ourselves
up
for
success
for
when
we
scale-
and
that
is,
I
want
to
provide
a
member
list
config.
A
When
we
start
when
we
start
scaling
our
our
deployment,
7946,
the
various
right
nodes
and
the
various
read
nodes
need
to
talk
to
each
other,
because
the
distributors
need
to
find
out
where
all
the
injectors
are
and
the
query
front-ends
need
to
find
out
where
all
the
query
schedulers
are,
and
we
use
a
component
called
a
ring
to
do
that
and
the
ring
needs
a
key
value
store
back
end.
A
A
What
it
does
is
it
allows
you
to
just
define
your
ring
configuration
and
your
storage
configuration
in
one
place
and
it'll
it'll
replicate
that
config
to
all
the
places
that
it's
needed
and
then
the
last
thing
I'm
gonna
do,
I'm
not
sure
if
you
caught
this
and
the
logs,
but
the
current
load
that
I'm
getting
from
my
sort
of
dummy
log
system
is
higher
than
the
default
and
the
default
being
three
megabytes.
A
So
I'm
gonna
up
this
to
five
megabytes,
just
to
quiet
that
log
stream
down
a
little
bit.
Okay.
So
now
we've
gone
and
added
member
list
to
our
write
node,
so
it
can
now
cluster.
So
the
next
thing
that
we
need
to
do
is
change
the
runtime
sort
of
environment
arguments
to
specify
that
the
target,
so
that's
in
cisco,
config
enterprise
logs,
so
we're
gonna
come
down
here
when
you
don't
provide
any
target.
A
The
default
target
is
all
so
single
binary,
which
is
what
we
were
running
previously,
and
so
what
I'm
going
to
do
is
I'm
just
going
to
turn
this
into
a
write,
node,
okay,
I'm
going
to
go
ahead
and
restart
it
now
so
system
cuddle,
restart
the
enterprise
logs
service
and
then
we'll
go
ahead
and
tail
those
logs
again
and
here's
our
empty
ring
that
should
resolve
itself.
A
So
I'm
going
to
run
that
same
install
script
cool
now
I
need
to
do
a
little
bit
of
a
hack
here,
and
that
is
because,
as
I
mentioned,
I'm
doing
this
demo
inside
of
containers
and
in
order
to
get
systemd
working
inside
of
containers.
I
had
to
mount
my
local
c
group
and
there's
interesting
things
going
on
with
the
sort
of
systemd
bus
in
that,
if
I
don't
rename
this
service,
it
will
conflict
with
the
the
one
running
in
the
other
container.
A
So
again,
if
you're
running
this
on
vms,
you
don't
have
to
do
this
step.
I
mean
containers,
so
I
do
so.
I'm
I'm
going
to
disable
system
cuddle,
I'm
going
to
disable
the
enterprise
logs
service,
I'm
going
to
move
enterprise
logs.
A
Sorry,
I
need
to
be
in
systemd
system,
I'm
going
to
move
the
enterprise
logs
service
to
enterprise
logs,
I'm
just
going
to
call
this
enterprise
logs
read
and
that's
just
a
little
hack
that
I
need
to
do
because
I'm
inside
of
containers
again,
you
won't
need
to
do
this
if
you're
running
on
vms
or
bare
metal.
So
let's
go
ahead
and
enable
the
read
service.
Okay,
so
I
need
to
modify
the
default
config.
A
Oh
and
this
loki
7946
what's
going
on
there,
I
will
show
you
in
just
a
second,
so
I
have
a
dns
entry
set
up
so
that
all
so
that
both
of
these
containers
are
behind
that
one
dns
entry
loki
and
that
just
makes
it
really
easy
to
set
up
member
lists.
Just
one
thing
that
you
have
to
add
to
that
join
members
and
then
as
instances
join
and
register
themselves
with
your
dns,
a
record
they'll
get
added
to
the
ring
and
and
same
when
they
leave.
A
A
This
is
again
where
the
environment
variables
are
and
make
this
target
of
read
so
again
right.
It's
on
the
left,
just
to
not
be
confusing,
read
is
on
the
right
and
now
I'm
going
to
go
ahead
and
start
my
enterprise
logs
read
service,
and
we
will
go
ahead
and
tail
that
okay,
so
we
have
our
two
services
working,
so
we
should
be
able
to
go
back
to
the
browser
now
and
I'm
gonna
change.
A
My
target
here,
my
my
data
source
great
and
it
ran
that
same
query
against
log
gen,
and
we
now
have
more
recent
logs,
and
these
are
now
coming
off
of
my
read
node
and
so
the
read
and
write
are
working
together.
So
this
is
great.
We
went
from
single
binary.
We
now
have
separated
our
reading
our
right
path.
No,
the
only
thing
left
to
do
is
to
scale
those
well,
it's
going
to
be
hard
to
scale
right
now,
because
we
are
using
file
system.
A
So
if
we
go
ahead
and
look
at
our
config,
our
storage
is
file
system,
and
so
the
next
step
is
we're
going
to
add
an
object.
Storage
back
end
here,
however,
migrating
from
a
file
system,
stacked,
storage
to
object,
storage
could
get
a
little
messy.
Your
indexes
are
going
to
get
out
of
whack
your
sort
of
bolt
db
active
directory
could
get
a
little
confused.
A
So
what
I'm
gonna
do
is
I'm
just
going
to
nuke
these
two
containers,
I'm
gonna
reboot
and
sort
of
reset
up
the
cluster
from
scratch,
but
using
object,
storage
as
the
storage
back
end,
and
so
I'm
just
going
to
cut
real,
quick
and
I'll
bring
you
back
after
I've.
I've
gone
through
that
reboot.
A
All
right,
I'm
back
so
here
I
am
again
right-
is
on
the
left
and
then
the
read
is
on
the
right
and
I'm
gonna
go
ahead
and
add
object
storage
as
our
back
end.
So
I
need
to
go
to
the
etsy
enterprise
logs
config,
and
so
here
we
have
member
list
as
our
memberless
config.
We
have
a
ring
configured
member
list
and
what
I'm
going
to
do
is
I'm
going
to
take
out
this
file
system,
storage,
config
and
I'm
going
to
replace
that
with
an
s3
config,
it's
using
minio.
A
So
that
this
is
just
another
service,
that's
running
in
my
docker
compose
stack.
Obviously
I
don't
recommend
you
using
mini
my
nail
for
production,
but
this
will
be
fine
for
this
experiment.
A
A
A
So
again,
let's
make
sure
that
this
is
member
list
is
correct
and
then
we
have
the
ring
store
member
list
right.
There
perfect
I'm
going
to
go
ahead
and
add
my
object:
storage
config
there
oops.
That
was
the
right
indentation.
These
need
to
go
in
one,
I'm
gonna
get
rid
of
so
no
longer
using
file
system,
okay
and
let's
go
ahead,
and
that
looks
right.
Let's
remind
ourselves
of
this,
so
target
equals
read
great.
So
let's
start
this
one
up.
A
Okay,
so
we
now
have
a
right
and
a
read
both
backed
by
object:
storage.
Let's
go
ahead
on
back
to
our
grafana
instance
and
see
like
see
how
we
do
so
our
grafana
instance,
because
we
restarted
everything.
So
I
have
to
log
back
in
again.
A
A
And
I'm
back
so
we
can
see
here
now
that
there's
there's
still
just
a
little
bit
of
cruft
in
the
var
lib
enterprise
logs
folder.
A
Once
I
cleared
that
out,
we
can
go
ahead
and
run
this
and
we
can
see
down
here
if
we
go
back
to
our
terminal
that
we're
getting
so
here's
the
the
read
on
the
right
and
the
right
is
on
the
left,
and
these
are
now
I'm
min
io
as
their
backend
for
object
storage,
so
they
can
be
scaled
independently
and
we
now
have
a
production,
ready
architecture
for
running
loki
at
scale.
So
thank
you
so
much
for
taking
the
time
to
watch
this
video.
I
do
hope
you
give
out
this.
A
Give
the
simple
scalable
deployment
model
a
try
and
please
let
us
know
any
feedback
that
you
have.
Thank
you
so
much.