K8S 使用loki 监控 应用日志的搭建办法

1. 背景

  • 这几天一直在用k8s部署分SU的测试环境,开发反馈看日志比较麻烦. 昨天晚上在家里本来想搭建ELK 发现比较重, 又说有一个比较轻量级的 loki 可以实现使用grafana进行监控和查看日志,所以今天就进行以下简单的尝试.

2. 搭建步骤

  • 搭建loki
使用helm 方式搭建还是很简单的, 最近在放国庆节, 公司的网络和docker pull 的次数不多 比较顺利的就完成了
helm repo add loki https://grafana.github.io/loki/charts && helm repo update
helm pull loki/loki-stack
tar xf loki-stack-2.1.2.tgz
helm install loki loki-stack/

如上四步就可以搭建完loki . 
然后可以使用 kubectl get pods |grep loki 的方式进行查看.

[root@k8s-master01 deploy]# kubectl get pods |grep loki
loki-0                           1/1     Running   0          44m
loki-promtail-xbj4m              1/1     Running   0          44m
  • 搭建grafana
  • 需要注意的一点是 虽然 helm install 成功了 但是我没仔细看他的chart文件, 怀疑应该是 没有暴露node节点的端口 所以只允许内部访问.
  • 最简单的办法就是在k8s内部搭建一套grafana进行使用. 反正今天网络好. 就直接开干了.
  • 创建一个 yaml文件. 注意我这边没有修改 kubelet 对应的 port range 所以选择使用 30555 这样比较大的端口号.
  • 搭建好文件直接 kubectl apply -f grafana.yaml 就可以了.
 cat<<EOF > grangfan.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana
  labels:
    app: grafana
spec:
  replicas: 1
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
      - name: grafana
        image: grafana/grafana:latest
        volumeMounts:
        - name: timezone
          mountPath: /etc/localtime
      volumes:
        - name: timezone
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai

---

apiVersion: v1
kind: Service
metadata:
  name: grafana-svc
spec:
  ports:
  - port: 3000
    targetPort: 3000
    nodePort: 30555
  type: NodePort
  selector:
    app: grafana
EOF
  • 搭建完成之后看一下 相关的 pod信息
[root@k8s-master01 deploy]# kubectl get pods |grep grafana
grafana-7b59dc9755-7z9v4         1/1     Running   0          45m

3. 查看日志


3.1 登录grafana 并且修改密码

登录 nodeip:30555 打开网页
输入自己需要设置的密码.
打开界面即可.

3.2 查看loki的日志信息

  • 注意 这一步好像最开始有一定的延迟存在, 会导致前面五分钟一点日志都看不到, 我一度以为自己弄错了, 但是过了几分钟后自己就好了.
  • 这里面操作就通过截图来说明了.

3.2.1 打开数据源定义, 添加loki的数据源.

  • 数据源的位置
    image
  • 添加loki的相关信息
    image
  • 注意 k8s内部直接属于 svc的名字既可以访问
    image
  • 相关查询服务的信息语句为:
[root@k8s-master01 deploy]# kubectl get svc |grep loki
loki            ClusterIP   10.103.24.66     <none>        3100/TCP         56m
loki-headless   ClusterIP   None             <none>        3100/TCP         56m

3.2.2 打开explorer 进行相关条件设置

  • 可以使用 admin 或者是后来添加的管理员权限进行处理.
    image
  • 注意 可以点击log browser 选择需要查看的日志信息
    image
  • 可以选中具体的一个pod 然后查看相应的日志, 注意需要选择使用 show log
    image

3.2.3 过滤日志范围等操作

  • 可以选择live 实时查看
  • 可以查看最近1小时内的日志
  • 没找到如何过滤 我直接使用的 ctrl+f
    image

3.3 grafana 添加用户 给其他同事使用

  • 可以使用 server admin 来添加用户
    image

  • 然后可以使用 user 给用户添加 admin以及组织权限就可以 使用自定义用户进行查看日志了.

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/15363508.html