
近期有需求在kubernetes安裝loki,此文檔用于記錄一下
環(huán)境說(shuō)明
kubernetes1.14.3 helm3.x loki1.6 promtail1.6
loki是什么
Loki是一個(gè)水平可擴(kuò)展,高可用性,多租戶的日志聚合系統(tǒng),受到Prometheus的啟發(fā)。它的設(shè)計(jì)非常經(jīng)濟(jì)高效且易于操作,因?yàn)樗粫?huì)為日志內(nèi)容編制索引,而是為每個(gè)日志流編制一組標(biāo)簽。官方介紹說(shuō)到:Like Prometheus, but for logs. 具體的可以參考以前寫的Grafana日志聚合工具Loki搭建使用這篇博客。
安裝lokiss
添加helm的chart庫(kù)
$ helm repo add loki https://grafana.github.io/loki/charts
"loki" has been added to your repositories
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "loki" chart repository
Update Complete. ? Happy Helming!?
$ helm repo list
NAME URL
loki https://grafana.github.io/loki/charts
安裝loki及promtail
安裝方式分為多種,我是下載相應(yīng)的chart包修改了些配置再安裝的
# 查找loki的相關(guān)chart 其中l(wèi)oki-stack是包含了loki和promtail
$ helm search repo loki
NAME CHART VERSION APP VERSION DESCRIPTION
loki/loki 0.31.0 v1.6.0 Loki: like Prometheus, but for logs.
loki/loki-stack 0.40.0 v1.6.0 Loki: like Prometheus, but for logs.
loki/fluent-bit 0.3.0 v1.6.0 Uses fluent-bit Loki go plugin for gathering lo...
loki/promtail 0.24.0 v1.6.0 Responsible for gathering logs and sending them...
# 安裝參考
## 默認(rèn)參考
$ helm upgrade --install loki loki/loki-stack
# 自定義安裝
$ helm upgrade --install loki -n loki loki/loki-stack
# 只安裝loki或者promtail
$ helm upgrade --install loki loki/loki
$ helm upgrade --install promtail loki/promtail --set "loki.serviceName=loki"
- 修改配置及安裝
下載相應(yīng)的chart包,修改一些配置再安裝
# 需要給loki做持久化
$ kubectl create ns loki
$ helm pull loki/loki
$ tar -xvf loki-0.31.0.tgz
$ vim loki/values.yaml
......
# 由于獲取的日志都存放在loki中,所以給loki做一下持久化
persistence:
enabled: true #由原來(lái)的false改為true
storageClassName: loki #添加這一行 前提是你需要?jiǎng)?chuàng)建好名為loki的storageclasses
accessModes:
- ReadWriteOnce
size: 50Gi
annotations: {}
# subPath: ""
# existingClaim:
......
# 安裝loki
$ helm upgrade --install loki loki/ -n loki
# 給promtail做一些配置
$ helm pull loki/promtail
$ ls
promtail-0.24.0.tgz
$ tar -xvf promtail-0.24.0.tgz
$ vim promtail/values.yaml
......
# 如果你想要promtail對(duì)接外部的loki,這個(gè)地方需要修改,我這里不是對(duì)接外部的loki 所以沒有修改
loki:
serviceName: "" # Defaults to "${RELEASE}-loki" if not set
servicePort: 3100
serviceScheme: http
# 如果你的docker存儲(chǔ)位置修改過(guò),這里就要做對(duì)應(yīng)的修改 否則promtail拉取日志時(shí)會(huì)報(bào)錯(cuò)的
# Extra volumes to scrape logs from
volumes:
- name: docker
hostPath:
path: /home/docker-data/docker/containers
- name: pods
hostPath:
path: /var/log/pods
# Custom volumes together with the default ones
extraVolumes: []
volumeMounts:
- name: docker
mountPath: /home/docker-data/docker/containers
readOnly: true
- name: pods
mountPath: /var/log/pods
readOnly: true
......
# 安裝
$ helm upgrade --install promtail promtail/ --set "loki.serviceName=loki" -n loki
$ kubectl get pods -n loki
NAME READY STATUS RESTARTS AGE
loki-0 1/1 Running 0 5m20s
promtail-82czd 1/1 Running 0 2m10s
promtail-d5xjp 1/1 Running 0 2m10s
promtail-h9rc9 1/1 Running 0 2m10s
promtail-n99vv 1/1 Running 0 2m10s
promtail-pfs78 1/1 Running 0 2m10s
promtail-shwr9 1/1 Running 0 2m10s
promtail-wxp4t 1/1 Running 0 2m10s
grafana的安裝配置不再做過(guò)過(guò)多贅述。
需要注意的事
- 如果你grafana是和loki安裝在同一namespaces下,配置loki源時(shí)寫入http://loki:3100。
- 如果你的grafana是和loki安裝在不同namespaces下,配置loki源時(shí)寫入http://loki.loki.svc.cluster.local:3100(.svc前面為你namespaces名字)
- 如果你的grafana是安裝在外部機(jī)器上的,需要你的loki暴露出來(lái)端口或解析為域名在配置loki源,ip+port和域名兩種方式都可以配置