1. 程式人生 > 其它 >K8S 使用loki 監控 應用日誌的搭建辦法

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的資料來源.

  • 資料來源的位置
  • 新增loki的相關資訊
  • 注意 k8s內部直接屬於 svc的名字既可以訪問
  • 相關查詢服務的資訊語句為:
[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 或者是後來新增的管理員許可權進行處理.
  • 注意 可以點選log browser 選擇需要檢視的日誌資訊
  • 可以選中具體的一個pod 然後檢視相應的日誌, 注意需要選擇使用 show log

3.2.3 過濾日誌範圍等操作

  • 可以選擇live 實時檢視
  • 可以檢視最近1小時內的日誌
  • 沒找到如何過濾 我直接使用的 ctrl+f

3.3 grafana 新增使用者 給其他同事使用

  • 可以使用 server admin 來新增使用者

  • 然後可以使用 user 給使用者新增 admin以及組織許可權就可以 使用自定義使用者進行檢視日誌了.