您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何使用Loki監控SpringBoot應用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用Loki監控SpringBoot應用”這篇文章吧。
之前我們使用Docker Compose同時啟動了Grafana、Loki、Promtail來監控一個應用。以及整個日志體系的架構。
但是實際應用中不可能為每一個應用都建立一個Grafana-Loki-Promtail體系。
Promtail日志代理
目前Promtail可以從兩個來源跟蹤日志:本地日志文件和systemd日志,我們上一篇文章中演示的就是本地日志文件的加載,這種方式是目前我唯一能夠使用的途徑,另一種途徑是通過K8S的服務發現能力。
Loki流程圖
如果在多個應用服務器上部署對應的多個Promtail守護程序就能監視多個應用的靜態日志文件,并通過Loki API將日志推送到Loki中進行聚合式的管理。
Spring Boot日志的部署拓撲
我們只需要為Loki應用部署相關的Promtail守護程序即可。這里我仍然使用Docker對Promtail進行部署,不過我不能再使用默認配置了,這時的config.yml應該是:
server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /var/log/positions.yaml client: url: http://${LOKI_HOST}:${LOKI_PORT}/loki/api/v1/push scrape_configs: - job_name: system pipeline_stages: static_configs: - labels: app: ${APP_NAME} job: varlogs host: ${LOG_HOST} __path__: /var/log/*log
為了構建一個通用的配置,我將一些參數進行了動態化。這是Loki2.1+版本提供的特性,可以使用${}來引用環境變量,甚至你可以為其指定默認值${VAR:default_value}。但是你必須得知道為了開啟這一特性需要在Promtail啟動命令中添加選項-config.expand-env。
根據這個我對Promtail的Docker鏡像進行了改造,具體的Dockerfile為:
FROM grafana/promtail:2.2.1 LABEL AUTHOR = felord.cn VOLUME ["/var/log/"] EXPOSE 9080 ENV LOKI_HOST="localhost" ENV LOKI_PORT=3100 ENV APP_NAME="APP" ENV LOG_HOST="localhost" COPY config.yml /etc/promtail/ CMD ["-config.file=/etc/promtail/config.yml", "-config.expand-env"]
你可以通過docker build -t loki-promtail:1.0 .命令構建這個自定義Promtail鏡像。基本的啟動命令:
docker run -d --name promtail-service --network loki -v c:/docker/log:/var/log/ -e LOKI_HOST=loki -e APP_NAME=SpringBoot loki-promtail:1.0
其中掛載的目錄c:/docker/log依然是應用的日志目錄,LOKI_HOST要保證能夠同Loki服務器通信,無論你通過直連還是Docker網絡(這里用了Docker網橋)。你可以可以使用Docker Compose將應用和Promtail進行捆綁,所有的Promtail將把對應的日志發往Loki進行集中式的管理。另外通過自定義的Label我們可以通過應用名稱來搜索日志了。
以上是“如何使用Loki監控SpringBoot應用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。