偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

中小項目用ELK做日志?我準備玩點新花樣

開發(fā) 項目管理
項目做正規(guī)了,日志系統(tǒng)是少不了的。目前大部分日志平臺推薦基于ELK構建,不過ELK算是比較重了,架構太大,中小項目不太好Hold住,希望找一款簡單一些的,如果實在找不到再上ELK。

[[399208]]

項目做正規(guī)了,日志系統(tǒng)是少不了的。目前大部分日志平臺推薦基于ELK構建,不過ELK算是比較重了,架構太大,中小項目不太好Hold住,希望找一款簡單一些的,如果實在找不到再上ELK。之前儲備了一些技術候選庫,翻了翻果然有一款名叫Loki的日志系統(tǒng),可百度大部分都是電影里的這貨,不靠譜?

Loki

事實上日志系統(tǒng)的開發(fā)團隊靠譜的很,就是監(jiān)控領域大名鼎鼎的Grafana Labs,為人所熟知的有開源數(shù)據(jù)可視化工具Grafana、監(jiān)控系統(tǒng)Prometheus等等。

Loki是他們受 Prometheus 啟發(fā)打造的開源項目,是一款可擴展,高可用,支持多租戶的日志聚合系統(tǒng)。設計的理念就是為了讓日志聚合更簡單,它被設計為非常經(jīng)濟高效且易于操作。它不索引日志的內(nèi)容,而是為每個日志流設置一組標簽。它主要由三部分組成:

  • Promtail是日志收集器,負責收集應用的日志并發(fā)送給Loki。
  • Loki用于日志的存儲和解析,并提供查詢API給下游展示。
  • Grafana負責將Loki的日志可視化。

Loki流程圖

看上去挺不錯的,我要試一試。

簡單上手

遇到新東西先跑個小DEMO,說實話目前國內(nèi)介紹這個的都沒有詳細的上手DEMO,尤其是和Spring Boot對接這一塊。我照著原版文檔,花了小半天終于跑成功了。

Loki安裝

首先是安裝,現(xiàn)在跑DEMO我優(yōu)先選擇快捷方便的Docker。下面是我修改過的Docker Compose腳本,根據(jù)你自己的需要改改就能一鍵啟動Loki。

  1. version: "3" 
  2.  
  3. networks: 
  4.   loki: 
  5.  
  6. services: 
  7.   loki: 
  8.     image: grafana/loki:2.2.1 
  9.     container_name: loki-service 
  10.     volumes: 
  11. #    將loki的配置文件掛載到本地 c:/docker/loki 目錄 
  12.       - c:/docker/loki:/etc/loki/ 
  13.     ports: 
  14.       - "3100:3100" 
  15.     command: -config.file=/etc/loki/loki.yml 
  16.     networks: 
  17.       - loki 
  18.  
  19.   promtail: 
  20.     image: grafana/promtail:2.2.1 
  21.     container_name: promtail-service 
  22.     volumes:   
  23.     #  為了讀取本地的日志目錄,這個是個默認配置目的就是為跑起來,生產(chǎn)肯定不是這樣的。    
  24.       - c:/docker/log:/var/log/ 
  25.     #  promtail  的配置文件也掛載到本地 c:/docker/promtail目錄   
  26.       - c:/docker/promtail:/etc/promtail/ 
  27.     command: -config.file=/etc/promtail/promtail.yml 
  28.     networks: 
  29.       - loki 
  30.  
  31.   grafana: 
  32.     image: grafana/grafana:latest 
  33.     container_name: grafana-service 
  34.     ports: 
  35.       - "3000:3000" 
  36.     networks: 
  37.       - loki 

上面的掛載目錄c:/docker/loki和c:/docker/promtail你根據(jù)自己的情況調整位置。

Loki的配置

上面文件中的-config.file=/etc/loki/loki.yml是Loki的配置文件,我們需要將配置文件loki.yml提前放在c:/docker/loki下,我使用默認配置:

  1. auth_enabled: false 
  2.  
  3. server: 
  4.   http_listen_port: 3100 
  5.  
  6. ingester: 
  7.   lifecycler: 
  8.     address: 127.0.0.1 
  9.     ring: 
  10.       kvstore: 
  11.         store: inmemory 
  12.       replication_factor: 1 
  13.     final_sleep: 0s 
  14.   chunk_idle_period: 1h       # Any chunk not receiving new logs in this time will be flushed 
  15.   max_chunk_age: 1h           # All chunks will be flushed when they hit this age, default is 1h 
  16.   chunk_target_size: 1048576  # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first 
  17.   chunk_retain_period: 30s    # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m) 
  18.   max_transfer_retries: 0     # Chunk transfers disabled 
  19.  
  20. schema_config: 
  21.   configs: 
  22.     - from: 2020-10-24 
  23.       store: boltdb-shipper 
  24.       object_store: filesystem 
  25.       schema: v11 
  26.       index
  27.         prefix: index_ 
  28.         period: 24h 
  29.  
  30. storage_config: 
  31.   boltdb_shipper: 
  32.     active_index_directory: /loki/boltdb-shipper-active 
  33.     cache_location: /loki/boltdb-shipper-cache 
  34.     cache_ttl: 24h         # Can be increased for faster performance over longer query periods, uses more disk space 
  35.     shared_store: filesystem 
  36.   filesystem: 
  37.     directory: /loki/chunks 
  38.  
  39. compactor: 
  40.   working_directory: /loki/boltdb-shipper-compactor 
  41.   shared_store: filesystem 
  42.  
  43. limits_config: 
  44.   reject_old_samples: true 
  45.   reject_old_samples_max_age: 168h 
  46.  
  47. chunk_store_config: 
  48.   max_look_back_period: 0s 
  49.  
  50. table_manager: 
  51.   retention_deletes_enabled: false 
  52.   retention_period: 0s 
  53.  
  54. ruler: 
  55.   storage: 
  56.     type: local 
  57.     local
  58.       directory: /loki/rules 
  59.   rule_path: /loki/rules-temp 
  60.   alertmanager_url: http://localhost:9093 
  61.   ring: 
  62.     kvstore: 
  63.       store: inmemory 
  64.   enable_api: true 

不要糾結這些配置項是干什么的,先跑起來再說,用到了去查文檔,要有的放矢。

Promtail的配置

和Loki類似,Promtail也要在本地掛載的c:/docker/promtail目錄下配置promtail.yml,這里也使用默認配置:

  1. server: 
  2.   http_listen_port: 9080 
  3.   grpc_listen_port: 0 
  4.  
  5. positions: 
  6.   filename: /tmp/positions.yaml 
  7.  
  8. clients: 
  9.   - url: http://loki:3100/loki/api/v1/push 
  10.  
  11. scrape_configs: 
  12.   - job_name: system 
  13.     static_configs: 
  14.       - targets: 
  15.           - localhost 
  16.         labels: 
  17.           job: varlogs 
  18.           # 這個跟掛載的位置有點關系,你可以猜猜 
  19.           __path__: /var/log/*log 

我猜測/var/log/*log就是讀取日志的位置,所以我把它掛載到本地c:/docker/log,等下弄點日志到本地這個目錄下,看看能讀取出來不。

啟動Loki

配置完畢后執(zhí)行docker-compose -f up命令,會先下載鏡像然后啟動三個Docker容器。成功后打開http://localhost:3000/登錄Grafana,默認賬號密碼是admin/admin。然后在側邊欄添加數(shù)據(jù)源為Loki:

點擊圖中的Add data source

然后配置Loki的URL為http://loki:3100,然后點確定和測試,有綠色提示就表示成功了。

我們使用的是Docker Compose,因此hostname是服務名稱loki。

然后點擊側邊欄一個指南針形狀的圖標Explore,就進入日志的UI了,這時候啥也沒有。

得造點日志,搞一個Spring Boot應用,然后在application.yml中配置日志選項,然后啟動應用生成一些日志。

  1. logging: 
  2.   file: 
  3.   # 弄到疑似Promtail的日志讀取路徑試試 
  4.     path: c:/docker/log 
  5.   level
  6.     org: debug 

然后我輸入了一個從文檔中找到的查詢?nèi)罩镜谋磉_式(Loki query){filename="/var/log/spring.log"}, 文件名稱去c:/docker/log下看,有了有了!Nice!

Loki中查詢展示Spring Boot日志

總結 

今天從零演示了Spring Boot對接日志新貴Loki,看上去還真不錯。學習新東西,要清楚它的場景,要清楚自己每一步的目標,先跑起來DEMO,再去研究定制化,最后才是底層原理。你學得越多就越熟練,你學得越多就越知道自己的短板,才能有目標和方向,不要盲目學,更不要過于追求底層原理。

本文轉載自微信公眾號「碼農(nóng)小胖哥」,可以通過以下二維碼關注。轉載本文請聯(lián)系碼農(nóng)小胖哥公眾號。

 

責任編輯:武曉燕 來源: 碼農(nóng)小胖哥
相關推薦

2025-09-09 01:25:00

2022-05-30 08:01:25

Windows 11操作系統(tǒng)桌面貼紙

2022-05-09 08:01:23

countdistinctMySQL

2012-11-20 16:23:19

飛輪UPS數(shù)據(jù)中心電源

2013-10-22 09:37:14

網(wǎng)絡配置管理網(wǎng)絡性能監(jiān)控

2022-06-15 12:35:24

數(shù)據(jù)泄露勒索軟件網(wǎng)絡攻擊

2009-05-13 20:12:15

殺毒設計師H1N1

2013-01-22 11:22:02

聯(lián)想Yoga

2017-02-27 21:37:49

2021-01-04 11:14:09

品牌營銷UGC

2010-09-01 13:47:42

釣魚網(wǎng)站

2017-05-22 15:50:38

ICT華為生態(tài)之行

2024-06-11 09:52:39

2019-05-09 15:53:27

PythonR數(shù)據(jù)科學

2020-11-19 15:18:19

無人機技術工業(yè)

2025-03-04 07:53:40

2020-09-03 14:45:09

C語言開源項目
點贊
收藏

51CTO技術棧公眾號