自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

中小項(xiàng)目用ELK做日志?我準(zhǔn)備玩點(diǎn)新花樣

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

[[399208]]

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

Loki

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

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

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

Loki流程圖

看上去挺不錯(cuò)的,我要試一試。

簡單上手

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

Loki安裝

首先是安裝,現(xiàn)在跑DEMO我優(yōu)先選擇快捷方便的Docker。下面是我修改過的Docker Compose腳本,根據(jù)你自己的需要改改就能一鍵啟動(dòng)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.     #  為了讀取本地的日志目錄,這個(gè)是個(gè)默認(rèn)配置目的就是為跑起來,生產(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ù)自己的情況調(diào)整位置。

Loki的配置

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

  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 

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

Promtail的配置

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

  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.           # 這個(gè)跟掛載的位置有點(diǎn)關(guān)系,你可以猜猜 
  19.           __path__: /var/log/*log 

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

啟動(dòng)Loki

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

點(diǎn)擊圖中的Add data source

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

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

然后點(diǎn)擊側(cè)邊欄一個(gè)指南針形狀的圖標(biāo)Explore,就進(jìn)入日志的UI了,這時(shí)候啥也沒有。

得造點(diǎn)日志,搞一個(gè)Spring Boot應(yīng)用,然后在application.yml中配置日志選項(xiàng),然后啟動(dòng)應(yīng)用生成一些日志。

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

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

Loki中查詢展示Spring Boot日志

總結(jié) 

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

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

 

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

2022-05-30 08:01:25

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

2012-11-20 16:23:19

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

2022-05-09 08:01:23

countdistinctMySQL

2013-10-22 09:37:14

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

2022-06-15 12:35:24

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

2013-01-22 11:22:02

聯(lián)想Yoga

2009-05-13 20:12:15

殺毒設(shè)計(jì)師H1N1

2017-05-22 15:50:38

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

2010-09-01 13:47:42

釣魚網(wǎng)站

2021-01-04 11:14:09

品牌營銷UGC

2017-02-27 21:37:49

2019-05-09 15:53:27

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

2024-06-11 09:52:39

2020-11-19 15:18:19

無人機(jī)技術(shù)工業(yè)

2020-09-03 14:45:09

C語言開源項(xiàng)目

2017-02-27 15:21:39

2016-05-27 17:56:35

互聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)