Helmを使ってGrafana Lokiを試してみる

スポンサーリンク

はじめに

Grafana Lokiが面白いと聞いたので試してみました。

また、Grafana LokiのデプロイにHelmを使っていたので初めてHelmも触ってみました。

参考サイト

Helmについてはこちらの内容を参考にさせていただきました。

Grafana Lokiのデプロイはここ参考に進めました。

LokiのversionはKubeapps Hubを見てversion確認しました。

grafanaのversionはこちらで確認しました。

Helmのインストール

公式の通り、From the Binary Releasesをやります。

希望のバージョンをこちらから取得します。

今回はv2.14.3のlinux amd64をダウンロード。

wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz

tar -zxvf helm-v2.14.3-linux-amd64.tar.gz

sudo mv linux-amd64/helm /usr/local/bin/helm

Helmを使うための準備

socatがないと動かなかったので

sudo apt-get update

sudo apt-get install socat

を全nodeで実施しました。

Grafana Lokiを動かす(デプロイ)

適当なディレクトリを作成して以下を実行します。

helm init --history-max 200

打ち込んだのはこちらのコマンド。(更新早いので試す方は↓をコピペしないで新しいversionをinstallすることをおすすめ)

helm repo add loki https://grafana.github.io/loki/charts/

helm repo update

helm install loki/loki-stack --version 0.16.0 -n loki-stack

ここでエラーが発生。tillerのpermission不足らしい。

こちらを投入して再度updateから実行して解決しました。

kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
--clusterrole=cluster-admin --serviceaccount=kube-system:tiller

kubectl --namespace kube-system patch deploy tiller-deploy \
-p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

改めてLokiをデプロイします↓

helm repo update

helm install loki/loki-stack --version 0.16.0 -n loki-stack

投入後のkubectl get podはこちら。

GrafanaもHelm経由でデプロイします。

helm install stable/grafana --version 3.8.4 -n loki-grafana

投入後のkubectl get podはこちら。

ついでに動作確認用のnginxをdeployしておきます。

Lokiでnginxのlogを見るためにport-fowardしてcurlで適当にアクセスしてlogを稼ぎます。

上のファイル名を適当にnginx.yamlにして以下コマンドでデプロイします。

kubectl apply -f nginx.yaml

kubectl get podでnginxがデプロイされていることを確認したあと以下コマンドでnginxにアクセスします。

kubectl port-forward deployment/nginx --address 0.0.0.0 32711:80 &

curl http://localhost:32711

curl http://localhost:32711/no.html

↑404狙いです。no.htmlなんて用意してないです。

動作確認

port-forwardでGrafanaにアクセスします。

kubectl port-forward service/loki-grafana 3000:80 --address 0.0.0.0 &

消すときは

jobs

kill %1とか

HelmでデプロイしたGrafanaにはadmin/adminでログインできなかったので以下でパスワードゲット。namespaceはdefaultなのでコマンドから除外。admin/↓で出力される文字列でログインします。

kubectl get secret loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

私の場合はk8sのmasterのpublicip(ここでは18.179.57.104でした)にブラウザからアクセスします。

http://publicip:3000

datasourceからLoki選んでHTTPのURLにkubectl get serviceで表示されるservice名を入力する。今回は名前指定しているのでloki-stackとなるためhttp://loki-stack:3100と入力しました。

サイドバーのExploreを選択。Lokiを選びLog labelsに
{namespace="kube-system"}

と入力して右上のRun Queryを押すと何かしらのlogが見れました。すごい・・・。

ExploreのLog labelsをクリックしてから「container_name」→「nginx」を選択するとnginxのログが見れます。

TimestampとかLocaltimeとか選べるしかなり良い感じですね。

{container_name="nginx"} 200

とか

{container_name="nginx"} 404で絞れたりします。

まだdashboardは作れないみたい。

Loki is currently not supported as dashboard data source. We are working on it!

と書かれています。

消し方

helm delete --purge loki-stack

helm delete --purge loki-grafana

おまけ manifestみたい

こちらを参考にさせていただきました。

Grafana

helm fetch stable/grafana --version 3.8.4

file grafana-3.8.4.tgz

helm template grafana-3.8.4.tgz

これでずらーーーーとmanifestの内容がみえます。

Loki

helm fetch loki/loki-stack --version 0.16.0

file loki-stack-0.16.0.tgz

helm template loki-stack-0.16.0.tgz

出力は長いので割愛します。

最後に

触ってみた感想としては動作が軽さに驚きました。かなりスペックの低いインスタンス(t2.small3台)で動かしていたのですがサクサク動きました。prometheusなしでここまで簡単にlogを見れるようになるのは便利ですね。

dashboardに作れるようになったらalertとかいじれるかな?

色々楽しみ。

関連コンテンツ



シェアする

  • このエントリーをはてなブックマークに追加

フォローする