The Ops Community ⚙️

Alex
Alex

Posted on

loki && curl && logcli

With https://community.ops.io/la3mmchen/grafana-loki-28b9 I've shared some words on Loki as an introduction.

Lets follow up with some practical stuff: How can we run Loki an our local notebook with docker-compose?

Loki

As Grafana provides a good enough container images we just use the one from docker hub to get a local instance running.

---
version: "3.9"

services:
  loki:
    image: "grafana/loki:2.5.0"
    ports:
      - "3100:3100"
Enter fullscreen mode Exit fullscreen mode

As Loki follows the unix philosophy "Do One Thing and Do It Well" it's just a backend to send logs to and to query logs from.
Plain speaking: there is no graphical user interface in the Loki server.

We interact with the Loki instance with curl using the http api:

$  curl http://localhost:3100/ready  
ready
$ curl http://localhost:3100/loki/api/v1/labels
{"status":"success","data":["__name__"]}
Enter fullscreen mode Exit fullscreen mode

As the second request shows there are not many labels in the system yet.

Lets change this.

interact with curl

Loki offers a http api to send metrics. The data format is described at http push api, we use the following curl to create a new event stream:

$ curl -S -H "Content-Type: application/json" -XPOST -s http://localhost:3100/loki/api/v1/push --data-raw '{"streams": [{ "stream": { "app": "app1" }, "values": [ [ "1653855518000000000", "random log line" ] ] }]}'
$ curl http://localhost:3100/loki/api/v1/labels
{"status":"success","data":["__name__","app"]}
Enter fullscreen mode Exit fullscreen mode

As you can see in the second curl there is now a new label named "app". We can explore possible values for this label with the following curl.

$ curl http://localhost:3100/loki/api/v1/label/app/values
{"status":"success","data":["app1"]}
Enter fullscreen mode Exit fullscreen mode

And finaly see the stream with this label:

$ curl -G -Ss  http://localhost:3100/loki/api/v1/query_range --data-urlencode 'query={app="app1"}' | jq .
{
  "status": "success",
(...)
        "values": [
          [
            "1653855518000000000",
            "random log line"
          ]
        ]
      }
(...)
Enter fullscreen mode Exit fullscreen mode

(output shorted)

logcli

A more covenient way to interact with Loki from the command line is using logcli

$ LOKI_ADDR=http://localhost:3100 logcli labels
http://localhost:3100/loki/api/v1/labels?end=1653856566774536000&start=1653852966774536000
__name__
app
$ LOKI_ADDR=http://localhost:3100 logcli query '{app=~".+"}'
http://localhost:3100/loki/api/v1/query_range?direction=BACKWARD&end=1653856568404563000&limit=30&query=%7Bapp%3D~%22.%2B%22%7D&start=1653852968404563000
Common labels: {app="app1"}
2022-05-29T22:18:38+02:00 {} random log line
http://localhost:3100/loki/api/v1/query_range?direction=BACKWARD&end=1653855518000000001&limit=30&query=%7Bapp%3D~%22.%2B%22%7D&start=1653852968404563000
Common labels: {app="app1"}
Enter fullscreen mode Exit fullscreen mode

in case you do not want to install logcli locally just add another container to our docker-compose setup from the beginning of this article:

(..)
  logcli:
    image: "grafana/logcli:2.5.0-amd64"
    environment:
      - "LOKI_ADDR=http://loki:3100"
Enter fullscreen mode Exit fullscreen mode

with this container you can just do:

$ docker-compose run logcli labels
Creating loki_logcli_run ... done
(..)
__name__
app
Enter fullscreen mode Exit fullscreen mode

following up

in the next post we will add a grafana instance to our docker-compose that will enable us to click something ;-)

references

links

code reference

---
version: "3.9"

services:
  loki:
    image: "grafana/loki:2.5.0"
    ports:
      - "3100:3100"
  logcli:
    image: "grafana/logcli:2.5.0-amd64"
    environment:
      - "LOKI_ADDR=http://loki:3100"
Enter fullscreen mode Exit fullscreen mode

Top comments (38)

Collapse
 
david_4cdae633ac8f7656de1 profile image
David

Once your work is complete or after you have eaten, choose meals prepared with fresh and nutritious ingredients to help maintain your energy levels and overall health .

Collapse
 
nntech_ce34765219fe9625b6 profile image
nntech

Kick off your morning with the 2025 breakfast menu’s savory tacos, warm kolaches, and fresh pastries. Perfect for a quick and delicious start. Explore the full menu and prices at the breakfast essentials spot today.

Collapse
 
khurum_khan_083254db824f8 profile image
Khurum Khan

Waho App is a social interaction app designed to make communication simple, expressive, and engaging. It allows users to join conversations, reply to comments, share thoughts, and connect with others in a clean and friendly environment. Built for fast communication and smooth engagement, Waho focuses on real-time social interaction without distractions.

Collapse
 
digilocker_426f7e7da53bf3 profile image
Parivahan

Bhoomi RTC (often called Pahani) is the official digital land record document used in the state of Karnataka, India. It serves as the primary legal proof of land ownership and agricultural activity, managed through the government's "Bhoomi" portal.

Collapse
 
officialibommaapp_55aabcc profile image
officialibommaapp

Nice follow-up after the Loki introduction. Using curl and logcli makes it much easier to understand how Loki works in real use cases, especially for quick log querying and debugging.

This approach is also useful for tracking application logs, for example monitoring requests or errors from an app like ibomma app telugu movies‍‌‍‍‌. Overall, a helpful and practical continuation for Loki beginners.

Collapse
 
orion_appworks_faff231a32 profile image
Orion Appworks

SSO ID stands for Single Sign-On ID. It is a digital platform initiated by the Rajasthan government that allows users to access various government services online, including job applications, electricity bill payments, tax payments, license applications, and more, without the need to visit any physical location.

Collapse
 
officialibommaapp_55aabcc profile image
officialibommaapp

I’ve seen a lot of people mention the ibomma app download telugu movies​‍​‌‍​‍‌ when discussing platforms focused mainly on Telugu cinema. Users usually bring it up for its clean layout and the way it organizes movies by language and release type. For anyone who regularly watches Telugu films and wants a straightforward app experience, it often comes up in community discussions.

Collapse
 
orion_appworks_faff231a32 profile image
Orion Appworks

Patta Chitta
are crucial land ownership documents in Tamil Nadu. The Patta is a revenue record that certifies lawful ownership of a piece of land, including details such as the owner’s name, survey number

Collapse
 
shoaib_akhter_f8080e50adf profile image
Mr Hanslm

Parivahan Sewa is a useful platform that simplifies transport-related services for citizens. It allows people to apply for driving licenses, register vehicles, and access other services online, saving time and effort. Initiatives like this make government services more convenient, efficient, and accessible for everyone.

Collapse
 
digilocker_426f7e7da53bf3 profile image
Parivahan

Renewing your driving licence online in India is straightforward via the official Parivahan Sewa portal, you can renew up to 30 days before expiry or within a grace period (typically 30 days after, with late fees).

Some comments may only be visible to logged-in visitors. Sign in to view all comments.