我尝试轻松地试用了Grafana Loki

首先
由于想要将k8s的日志以图形化的方式呈现出来,所以决定尝试使用Grafana Loki。
虽然EFK堆栈在日志基础设施领域很有名,但考虑到Grafana Loki具有轻量级操作、类似Prometheus并且是更新的开源解决方案,所以决定尝试使用Grafana Loki。
有关两者的比较,请参考以下链接:
https://grafana.com/docs/loki/latest/overview/comparisons/
安装
环境
-
- Ubuntu 18.04
-
- ベアメタル
-
- proxyあり
- kubernetes v1.18.5
任务记录
截至2021年1月29日,以下有五种安装方法。
不同方法安装Loki和Promtail的说明。
使用Tanka进行安装(推荐)
通过Helm进行安装
通过Docker或Docker Compose进行安装
本地安装和运行
从源代码进行安装
首先,我尝试了使用推荐的Tanka方法,但并不顺利(所有的pod都没有运行成功)。
由于处理垃圾桶似乎要花费很长时间,所以我决定先尝试使用Helm的方式。
只要运行Helm安装,Loki和Promtail就很容易搞定。
按照Helm的步骤进行安装。
$ helm repo add grafana https://grafana.github.io/helm-charts
"grafana" has been added to your repositories
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
--- snip ---
Grafana的存储库已经被注册了。
执行deploy-loki-stack-loki-promtail-grafana-prometheus命令,进行Loki Stack(Loki,Promtail,Grafana,Prometheus)的安装。
$ k create ns loki
namespace/loki created
$ helm upgrade --install -n loki loki grafana/loki-stack --set grafana.ena
bled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persisten
tVolume.enabled=false
Release "loki" does not exist. Installing it now.
NAME: loki
LAST DEPLOYED: Fri Jan 29 06:34:32 2021
NAMESPACE: loki
STATUS: deployed
REVISION: 1
NOTES:
The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana.
See http://docs.grafana.org/features/datasources/loki/ for more detail.
$ k -n loki get pod
NAME READY STATUS RESTARTS AGE
loki-0 1/1 Running 0 3h24m
loki-grafana-84f56465bc-6bd5n 1/1 Running 0 3h24m
loki-kube-state-metrics-5867478d69-qgmk5 1/1 Running 0 3h24m
loki-prometheus-alertmanager-995847787-nzmnf 2/2 Running 0 3h24m
loki-prometheus-node-exporter-kvqqr 0/1 Pending 0 3h24m
loki-prometheus-pushgateway-945fb9558-mfmfv 1/1 Running 0 3h24m
loki-prometheus-server-9f7bdb9b4-4r6z9 2/2 Running 0 3h24m
loki-promtail-z6vpx 1/1 Running 0 3h24m
$ $ k -n loki describe pod loki-prometheus-node-exporter-kvqqr
--- snip ---
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 4m16s (x141 over 3h25m) default-scheduler 0/1 nodes are available: 1 node(s) didn't have free ports for the requested pod ports.
node-exporter已经在另一个命名空间中运行,所以没有问题。
由于pod的hostPort重复,导致其处于挂起状态。
为了登录Grafana,使用kubectl edit将Grafana的service类型更改为NodePort。
(本应该使用Helm的变量进行指定,但由于本次只是试验,所以使用edit命令)
确认Grafana初始用户的登录信息。
$ kubectl -n loki get secret loki-grafana -o jsonpath='{.data.admin-user}' |base64 -d
admin
$ kubectl -n loki get secret loki-grafana -o jsonpath='{.data.admin-password}' |base64 -d
RUEmHKEj2jSMGmOmyAiBFnhMWugaM0GLjEzF7MjXn
我原本期望能夠在不進行Grafana設定的情況下查看日誌儀表板,但卻沒有發現任何儀表板。(雖然已經註冊了Loki和Prometheus的數據源)
因此,我使用了Grafana Labs網站上提供的以下儀表板來創建自己的儀表板。
-
- https://grafana.com/grafana/dashboards/12611
- https://grafana.com/grafana/dashboards/12019
以下是通过Loki的日志仪表板的图像。



由于可以轻松搜索日志,我觉得可以用于运营。
由于donut使用了Pie Chart的面板,因此需要在Grafana中单独安装插件。
为了安装插件,我在Grafana的pod中执行了grafana-cli plugins install grafana-piechart-panel命令,但由于代理环境的原因失败了。
因此,最终我决定将Grafana挂载PV(NFS),在NFS上下载插件模块并安装插件。
在中文中进行陈述, 只需要一种选项:
引用
-
- https://grafana.com/docs/loki/latest/overview/comparisons/
-
- https://speakerdeck.com/polar3130/lets-begin-cloud-native-logging-with-grafana-loki
-
- https://grafana.com/docs/loki/latest/installation/
-
- https://grafana.com/docs/loki/latest/installation/helm/
- https://grafana.com/grafana/plugins/grafana-piechart-panel/