tjtjtjのメモ

自分のためのメモです

loki-docker-driver を試す

loki-docker-driver を手軽に試せる良いエントリがあったのでやってみた。

qiita.com

loki-docker-driver インストール

インストール

$ docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
latest: Pulling from grafana/loki-docker-driver
7ff4041d336b: Download complete
Digest: sha256:6b5a85811b87539bf8541cae1235029dd3e9436917690fbde44f4e1c4ef8fe25
Status: Downloaded newer image for grafana/loki-docker-driver:latest
Installed plugin grafana/loki-docker-driver:latest

確認

$ docker plugin ls
ID                  NAME                DESCRIPTION           ENABLED
e11d47dcd939        loki:latest         Loki Logging Driver   true

$ docker inspect e1
[
    {
        "Config": {
            "Args": {
                "Description": "",
                "Name": "",
                "Settable": null,
                "Value": null
            },
            "Description": "Loki Logging Driver",
            "DockerVersion": "17.09.0-ce",
            "Documentation": "https://github.com/grafana/loki",
            "Entrypoint": [
                "/bin/docker-driver"
            ],
:
        }
    }
]

loki+grafana+promtail インストール

$ git clone https://github.com/grafana/loki.git
$ cd loki/production/
$ docker-compose up -d

docker-compose 確認。localhost:3000 が grafana、localhost:3100 が loki に向いている。

$ docker-compose ps
               Name                             Command               State               Ports
------------------------------------------------------------------------------------------------------------
production_grafana_1_74ab379aaf97    /run.sh                          Up      0.0.0.0:3000->3000/tcp
production_loki_1_87e5d054fa8d       /usr/bin/loki -config.file ...   Up      0.0.0.0:3100->3100/tcp, 80/tcp
production_promtail_1_5e7f3e404eca   /usr/bin/promtail -config. ...   Up

grafana 確認

  • ブラウザで http://<ipaddress>:3000 を開く
  • admin/admin でログイン
  • パスワード変更を求められるがskip
  • Add data source をクリックし、loki を選択
  • URLに http://loki:3100 を入力 Save & Test をクリック
  • explore -> loki -> labels -> テキトーなの選択
  • localhost の /var/log が promtail で loki に送信されているのがわかる

コンテナからログ送信

やりたいのはpromtailでなく dockerコンテナのログ送信。続けてコンテナからログ送信してみる。logdriver に loki を指定し docker run。

$ docker run --log-driver=loki \
     --log-opt loki-url="http://localhost:3100/api/prom/push" \
     --log-opt loki-retries=5 \
     --log-opt loki-batch-size=400 \
     alpine:3.9 ping localhost

PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.730 ms
64 bytes from 127.0.0.1: seq=1 ttl=64 time=0.367 ms
64 bytes from 127.0.0.1: seq=2 ttl=64 time=0.123 ms
64 bytes from 127.0.0.1: seq=3 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: seq=4 ttl=64 time=0.086 ms
64 bytes from 127.0.0.1: seq=5 ttl=64 time=0.078 ms
^C
--- localhost ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 0.078/0.245/0.730 ms

docker logs を確認。動揺したファインマンw

$ docker ps -al
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES
d81ddbfa74c7        alpine:3.9          "ping localhost"    About a minute ago   Exited (0) 57 seconds ago                       agitated_feynman
[j-takeuchi@localhost ~]$ docker logs d8
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.730 ms
64 bytes from 127.0.0.1: seq=1 ttl=64 time=0.367 ms
64 bytes from 127.0.0.1: seq=2 ttl=64 time=0.123 ms
64 bytes from 127.0.0.1: seq=3 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: seq=4 ttl=64 time=0.086 ms
64 bytes from 127.0.0.1: seq=5 ttl=64 time=0.078 ms

--- localhost ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 0.078/0.245/0.730 ms
[

grafana を確認。

f:id:tjtjtjofthedead:20190817145232p:plain

おそうじ

さようならファインマンさん

$ docker rm agitated_feynman
$ docker-compose down
$ docker plugin disable loki
$ docker plugin rm loki