日志系统----Loki日志新贵

Loki

  • 一、Loki简介(译)
  • 二、helm部署Loki
    • 1、环境准备
    • 2、helm部署Loki
  • 三、grafana使用简单说明

一、Loki简介(译)

Like Prometheus, but for logs
github地址

Loki是 Grafana Labs 团队最新的开源项目,是受Prometheus启发的水平可扩展,高度可用的多租户日志聚合系统。它的设计非常经济高效,并且易于操作。它不索引日志的内容,而是为每个日志流设置一组标签。

与其他日志聚合系统相比,Loki的一些特性:

  • 不对日志进行全文本索引。通过存储压缩的、非结构化的日志以及仅索引元数据,Loki更加易于操作且运行成本更低。
  • 使用与Prometheus相同的标签对日志流进行索引和分组,从而使您能够使用与Prometheus相同的标签在指标和日志之间无缝切换。
  • 特别适合存储Kubernetes Pod日志。诸如Pod标签之类的元数据会自动被抓取并建立索引。
  • 在Grafana中原生支持(需要Grafana v6.0)。

Loki包含3个组件:

  • loki是主服务器,负责存储日志和处理查询。
  • promtail是代理,负责收集日志并将其发送给Loki。
  • Grafana用于查询和显示日志。

Loki像Prometheus一样,但是对于日志:我们更喜欢基于多维标签的索引方法,并且希望使用没有依赖关系的单一二进制,易于操作的系统。Loki与Prometheus的不同之处在于,它侧重于日志而不是指标,并通过推送而不是拉动交付日志。

二、helm部署Loki

1、环境准备

kubernetes集群部署请参考:https://blog.csdn.net/cyfblog/article/details/97666349

helm安装部署请参考:https://blog.csdn.net/cyfblog/article/details/99594921

grafana部署请参考:https://blog.csdn.net/cyfblog/article/details/106805616

2、helm部署Loki

环境准备好后,添加Loki的charts

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

通过运行以下命令来更新图表存储库:

helm repo update

创建一个命名空间

kubectl create namespace gpl

通过如下命令部署到gpl命名空间

helm upgrade --install loki --namespace gpl loki/loki-stack --set grafana.enabled=true

查看所创建的资源

[root@master ~]# kubectl get all -n gpl
NAME                                READY   STATUS    RESTARTS   AGE
pod/loki-0                          1/1     Running   0          2m30s
pod/loki-grafana-687d84b9d6-xkm9p   1/1     Running   0          26s
pod/loki-promtail-4vqjl             1/1     Running   0          2m30s
pod/loki-promtail-6b9kg             1/1     Running   0          2m30s
pod/loki-promtail-nvc6g             1/1     Running   0          2m30s

NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/loki            ClusterIP   10.101.197.152   <none>        3100/TCP   2m30s
service/loki-grafana    ClusterIP   10.102.32.226    <none>        80/TCP     26s
service/loki-headless   ClusterIP   None             <none>        3100/TCP   2m30s

NAME                           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/loki-promtail   3         3         3       3            3           <none>          2m30s

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/loki-grafana   1/1     1            1           26s

NAME                                      DESIRED   CURRENT   READY   AGE
replicaset.apps/loki-grafana-687d84b9d6   1         1         1       26s

NAME                    READY   AGE
statefulset.apps/loki   1/1     2m30s

修改service 对外暴露类型为NodePort

kubectl get svc -n gpl loki-grafana -o yaml > loki-grafana-svc.yaml

修改loki-grafana-svc.yaml为如下配置:

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: loki
    meta.helm.sh/release-namespace: gpl
  labels:
    app: grafana
    app.kubernetes.io/managed-by: Helm
    chart: grafana-3.8.19
    heritage: Helm
    release: loki
  name: loki-grafana
  namespace: gpl
spec:
  ports:
  - name: service
    port: 80
    protocol: TCP
    targetPort: 3000
    nodePort: 30300
  selector:
    app: grafana
    release: loki
  type: NodePort

修改完成后,重新部署service

kubectl apply -f loki-grafana-svc.yaml

三、grafana使用简单说明

上述配置完成后,访问30300端口登录grafana,用户默认为admin,密码通过如下方式获取:

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

查看datasources可以看到Loki数据源已经配置好了
日志系统----Loki日志新贵_第1张图片
点击Explore,选中Loki数据源,进入如下界面:
日志系统----Loki日志新贵_第2张图片
作为开发人员最主要的就是查看服务日志,按如下方式即可:
日志系统----Loki日志新贵_第3张图片
可以看到如下日志(日志监控都通过grafana展示真的香啊):
日志系统----Loki日志新贵_第4张图片

你可能感兴趣的:(Docker,Kubernetes,日志系统ELK)