K8S 使用loki 監控 應用日誌的搭建辦法
阿新 • • 發佈:2021-10-03
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以及組織許可權就可以 使用自定義使用者進行檢視日誌了.