loki-docker-driver を手軽に試せる良いエントリがあったのでやってみた。
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 を確認。

おそうじ
さようならファインマンさん
$ docker rm agitated_feynman $ docker-compose down $ docker plugin disable loki $ docker plugin rm loki