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

Loki日志系統(tǒng),比ELK輕量多了

開發(fā) 前端 開發(fā)工具
Grafana Loki 是一個(gè)日志聚合工具,它是功能齊全的日志堆棧的核心。

[[423204]]

圖片來(lái)自 包圖網(wǎng)

先看看結(jié)果有多輕量吧:

Loki 是一個(gè)為有效保存日志數(shù)據(jù)而優(yōu)化的數(shù)據(jù)存儲(chǔ)。日志數(shù)據(jù)的高效索引將 Loki 與其他日志系統(tǒng)區(qū)分開來(lái)。與其他日志系統(tǒng)不同,Loki 索引是根據(jù)標(biāo)簽構(gòu)建的,原始日志消息未編入索引。

代理(也稱為客戶端)獲取日志,將日志轉(zhuǎn)換為流,然后通過(guò) HTTP API 將流推送到 Loki。Promtail 代理專為 Loki 安裝而設(shè)計(jì),但許多其他代理與 Loki 無(wú)縫集成。

Loki 特點(diǎn)如下:

用于索引日志的高效內(nèi)存使用:通過(guò)在一組標(biāo)簽上建立索引,索引可以明顯小于其他日志聚合產(chǎn)品。更少的內(nèi)存使得操作成本更低。

多租戶:Loki 允許多個(gè)租戶使用單個(gè) Loki 實(shí)例。不同租戶的數(shù)據(jù)與其他租戶完全隔離。通過(guò)在代理中分配租戶 ID 來(lái)配置多租戶。

LogQL,Loki 的查詢語(yǔ)言:Prometheus 查詢語(yǔ)言 PromQL 的用戶會(huì)發(fā)現(xiàn) LogQL 熟悉且靈活,可用于生成針對(duì)日志的查詢。該語(yǔ)言還有助于從日志數(shù)據(jù)中生成指標(biāo),這是一項(xiàng)遠(yuǎn)遠(yuǎn)超出日志聚合的強(qiáng)大功能。

可擴(kuò)展性:Loki 在小范圍內(nèi)運(yùn)行良好。在單進(jìn)程模式下,所有需要的微服務(wù)都在一個(gè)進(jìn)程中運(yùn)行。

單進(jìn)程模式非常適合測(cè)試 Loki、在本地運(yùn)行或小規(guī)模運(yùn)行。Loki 還旨在為大規(guī)模安裝進(jìn)行橫向擴(kuò)展。

Loki 的每個(gè)微服務(wù)組件都可以分解為單獨(dú)的進(jìn)程,并且配置允許對(duì)組件進(jìn)行單獨(dú)擴(kuò)展。

靈活性:許多代理(客戶端)都有插件支持。這允許當(dāng)前的可觀察性結(jié)構(gòu)將 Loki 添加為他們的日志聚合工具,而無(wú)需切換可觀察性堆棧的現(xiàn)有部分。

Grafana 集成:Loki 與 Grafana 無(wú)縫集成,提供完整的可觀察性堆棧。

Loki/Promtail/Grafana vs EFK

EFK(Elasticsearch、Fluentd、Kibana)堆棧用于從各種來(lái)源攝取、可視化和查詢?nèi)罩尽?/p>

Elasticsearch 中的數(shù)據(jù)作為非結(jié)構(gòu)化 JSON 對(duì)象存儲(chǔ)在磁盤上。每個(gè)對(duì)象的鍵和每個(gè)鍵的內(nèi)容都被索引。

然后可以使用 JSON 對(duì)象定義查詢(稱為查詢 DSL)或通過(guò) Lucene 查詢語(yǔ)言查詢數(shù)據(jù)。

相比之下,單二進(jìn)制模式的 Loki 可以將數(shù)據(jù)存儲(chǔ)在磁盤上,但在水平可擴(kuò)展模式下,數(shù)據(jù)存儲(chǔ)在云存儲(chǔ)系統(tǒng)中,例如 S3、GCS 或 Cassandra。

日志以純文本形式存儲(chǔ),并標(biāo)有一組標(biāo)簽名稱和值,其中僅索引標(biāo)簽對(duì)。這種權(quán)衡使得操作比完整索引更便宜,并允許開發(fā)人員積極地從他們的應(yīng)用程序中登錄。使用LogQL查詢 Loki 中的日志。

然而,由于這種設(shè)計(jì)權(quán)衡,基于內(nèi)容(即日志行中的文本)過(guò)濾的 LogQL 查詢需要加載搜索窗口中與查詢中定義的標(biāo)簽匹配的所有塊。

Fluentd 通常用于收集日志并將其轉(zhuǎn)發(fā)到 Elasticsearch。Fluentd 被稱為數(shù)據(jù)收集器,它可以從許多來(lái)源攝取日志,對(duì)其進(jìn)行處理,并將其轉(zhuǎn)發(fā)到一個(gè)或多個(gè)目標(biāo)。

相比之下,Promtail 的用例是專門為 Loki 量身定制的。它的主要操作模式是發(fā)現(xiàn)存儲(chǔ)在磁盤上的日志文件,并將它們與一組標(biāo)簽相關(guān)聯(lián)地轉(zhuǎn)發(fā)給 Loki。

Promtail 可以為與 Promtail 運(yùn)行在同一節(jié)點(diǎn)上的 Kubernetes pod 進(jìn)行服務(wù)發(fā)現(xiàn),充當(dāng)容器邊車或 Docker 日志驅(qū)動(dòng)程序,從指定文件夾讀取日志,并跟蹤 systemd 日志。

Loki 通過(guò)一組標(biāo)簽對(duì)表示日志的方式類似于 Prometheus表示指標(biāo)的方式。

當(dāng)與 Prometheus 一起部署在環(huán)境中時(shí),由于使用相同的服務(wù)發(fā)現(xiàn)機(jī)制,Promtail 的日志通常具有與應(yīng)用程序指標(biāo)相同的標(biāo)簽。

具有相同標(biāo)簽的日志和指標(biāo)使用戶能夠在指標(biāo)和日志之間無(wú)縫切換上下文,幫助進(jìn)行根本原因分析。

Kibana 用于可視化和搜索 Elasticsearch 數(shù)據(jù),并且在對(duì)這些數(shù)據(jù)進(jìn)行分析方面非常強(qiáng)大。

Kibana 提供了許多可視化工具來(lái)進(jìn)行數(shù)據(jù)分析,例如位置圖、用于異常檢測(cè)的機(jī)器學(xué)習(xí)以及用于發(fā)現(xiàn)數(shù)據(jù)關(guān)系的圖形。警報(bào)可以配置為在發(fā)生意外情況時(shí)通知用戶。

相比之下,Grafana 專門針對(duì)來(lái)自 Prometheus 和 Loki 等來(lái)源的時(shí)間序列數(shù)據(jù)量身定制。

儀表板可以設(shè)置為可視化指標(biāo)(即將提供日志支持),并且可以使用瀏覽視圖對(duì)您的數(shù)據(jù)進(jìn)行臨時(shí)查詢。與 Kibana 一樣,Grafana 支持根據(jù)您的指標(biāo)發(fā)出警報(bào)。

架構(gòu)圖:

收集日志的架構(gòu)圖:

一套輕量級(jí)日志收集方案:

  • Promtail:日志收集工具
  • Loki:日志聚合系統(tǒng)
  • Grafana:可視化工具

部署 Loki

官網(wǎng)地址:

  1. https://github.com/grafana/loki 

①loki

編輯 loki 配置文件:loki-config.yaml,參考:

  1. https://grafana.com/docs/loki/latest/configuration/examples/ 
  2. https://grafana.com/docs/loki/latest/installation/docker/ 
  1. --- 
  2. apiVersion: v1 
  3. kind: ConfigMap 
  4. metadata: 
  5.   name: loki-config 
  6.   labels: 
  7.     name: loki 
  8. data: 
  9.   loki-config.yaml: |- 
  10.     auth_enabled: false 
  11.  
  12.     server: 
  13.       http_listen_port: 3100 
  14.       grpc_listen_port: 9096 
  15.  
  16.     ingester: 
  17.       lifecycler: 
  18.         address: 127.0.0.1 
  19.         ring: 
  20.           kvstore: 
  21.             store: inmemory 
  22.           replication_factor: 1 
  23.         final_sleep: 0s 
  24.       chunk_idle_period: 5m 
  25.       chunk_retain_period: 30s 
  26.  
  27.       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 
  28.       max_transfer_retries: 0     # Chunk transfers disabled 
  29.  
  30.     schema_config: 
  31.       configs: 
  32.       - from: 2021-08-18 
  33.         store: boltdb 
  34.         object_store: filesystem 
  35.         schema: v11 
  36.         index
  37.           prefix: index_ 
  38.           period: 168h 
  39.  
  40.     storage_config: 
  41.       boltdb: 
  42.         directory: /tmp/loki/index 
  43.  
  44.       filesystem: 
  45.         directory: /tmp/loki/chunks 
  46.  
  47.     limits_config: 
  48.       enforce_metric_name: false 
  49.       reject_old_samples: true 
  50.       reject_old_samples_max_age: 168h 
  51.  
  52.       ingestion_rate_mb: 15 
  53.  
  54.     chunk_store_config: 
  55.       max_look_back_period: 0s 
  56.  
  57.     table_manager: 
  58.       retention_deletes_enabled: false 
  59.       retention_period: 0s 
  1. kubectl apply -f  loki-config.yaml 

創(chuàng)建 Service 和 StatefulSet,loki,.yaml:

  1. --- 
  2. apiVersion: v1 
  3. kind: Service 
  4. metadata: 
  5.   name: loki 
  6.   annotations: 
  7.     k8s.kuboard.cn/displayName: loki 
  8.     k8s.kuboard.cn/workload: loki 
  9.   labels: 
  10.     name: loki 
  11. spec: 
  12.   ports: 
  13.     - name: http 
  14.       port: 3100 
  15.       protocol: TCP 
  16.       targetPort: 3100 
  17.   selector: 
  18.     name: loki 
  19.  
  20. --- 
  21. apiVersion: apps/v1 
  22. kind: StatefulSet 
  23. metadata: 
  24.   name: loki 
  25. spec: 
  26.   serviceName: loki 
  27.   selector: 
  28.     matchLabels: 
  29.       name: loki 
  30.   template: 
  31.     metadata: 
  32.       labels: 
  33.         name: loki 
  34.     spec: 
  35.       volumes: 
  36.       - name: loki-config 
  37.         configMap: 
  38.           #defaultMode: 0640 
  39.           name: loki-config 
  40.       containers: 
  41.       - name: loki 
  42.         #image: grafana/loki:2.3.0 
  43.         image: grafana/loki:master 
  44.         args: 
  45.         - -config.file=/etc/loki/loki-config.yaml 
  46.         ports: 
  47.         - containerPort: 3100 
  48.           name: loki 
  49.           protocol: TCP 
  50.         volumeMounts: 
  51.         - name: loki-config 
  52.           mountPath: /etc/loki/ 
  53.           readOnly: true 

執(zhí)行命令創(chuàng)建:

  1. kubectl apply -f loki.yaml 

②grafana

根據(jù)自己時(shí)間情可對(duì)存儲(chǔ)那塊進(jìn)行更改,不改的話是 emptyDir,你懂的。賬號(hào)密碼為 admin/admin123.可自行修改。

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4.   name: grafana 
  5.   labels: 
  6.     k8s-app: grafana 
  7. spec: 
  8.   type: NodePort 
  9.   ports: 
  10.   - name: http 
  11.     port: 3000 
  12.     targetPort: 3000 
  13.   selector: 
  14.     k8s-app: grafana 
  15. --- 
  16. apiVersion: apps/v1 
  17. kind: Deployment 
  18. metadata: 
  19.   name: grafana 
  20.   labels: 
  21.     k8s-app: grafana 
  22. spec: 
  23.   selector: 
  24.     matchLabels: 
  25.       k8s-app: grafana 
  26.   template: 
  27.     metadata: 
  28.       labels: 
  29.         k8s-app: grafana 
  30.     spec: 
  31.      # initContainers:             ## 初始化容器,用于修改掛載的存儲(chǔ)的文件夾歸屬組與歸屬用戶 
  32.      # - name: init-file 
  33.      #   image: busybox:1.28 
  34.      #   imagePullPolicy: IfNotPresent 
  35.      #   securityContext: 
  36.      #     runAsUser: 0 
  37.      #   command: ['chown''-R'"472:0""/var/lib/grafana"
  38.      #   volumeMounts: 
  39.      #   - name: data 
  40.      #     mountPath: /var/lib/grafana 
  41.      #     subPath: grafana 
  42.       containers:                 
  43.       - name: grafana             ## Grafana 容器 
  44.         #image: grafana/grafana 
  45.         image: grafana/grafana:7.4.3 
  46.         #securityContext:          ## 容器安全策略,設(shè)置運(yùn)行容器使用的歸屬組與用戶 
  47.         #  fsGroup: 0 
  48.         #  runAsUser: 472 
  49.         ports: 
  50.         - name: http 
  51.           containerPort: 3000 
  52.           protocol: TCP 
  53.         env:                      ## 配置環(huán)境變量,設(shè)置 Grafana 的默認(rèn)管理員用戶名/密碼 
  54.         - name: GF_SECURITY_ADMIN_USER 
  55.           value: "admin" 
  56.         - name: GF_SECURITY_ADMIN_PASSWORD 
  57.           value: "admin123" 
  58.         readinessProbe:           ## 就緒探針 
  59.           failureThreshold: 10 
  60.           httpGet: 
  61.             path: /api/health 
  62.             port: 3000 
  63.             scheme: HTTP 
  64.           initialDelaySeconds: 10 
  65.           periodSeconds: 10 
  66.           successThreshold: 1 
  67.           timeoutSeconds: 30 
  68.         livenessProbe:            ## 存活探針 
  69.           failureThreshold: 10 
  70.           httpGet: 
  71.             path: /api/health 
  72.             port: 3000 
  73.             scheme: HTTP 
  74.           initialDelaySeconds: 10 
  75.           periodSeconds: 10 
  76.           successThreshold: 1 
  77.           timeoutSeconds: 1 
  78.         volumeMounts:            ## 容器掛載配置 
  79.         - name: data 
  80.           mountPath: /var/lib/grafana 
  81.           subPath: grafana 
  82.       volumes:                   ## 共享存儲(chǔ)掛載配置 
  83.       - name: data 
  84.         emptyDir: {} 
  85.         #persistentVolumeClaim: 
  86.         #  claimName: grafana     ## 指定使用的 PVC 

③promtail

應(yīng)用結(jié)合 promtail,進(jìn)行日志收集。這里使用 Sidecar 模式。一個(gè) pod 中跑兩個(gè)容器,一個(gè)為業(yè)務(wù)容器,一個(gè)為 promtail,兩個(gè)容器掛載同一個(gè)存儲(chǔ)目錄,promtail 即可收集日志。

編輯 promtail-config.yaml,可根據(jù)不同業(yè)務(wù)設(shè)置標(biāo)簽。參考:

  1. https://grafana.com/docs/loki/latest/clients/promtail/installation/ 
  1. --- 
  2. apiVersion: v1 
  3. kind: ConfigMap 
  4. metadata: 
  5.   name: promtail-config 
  6.   labels: 
  7.     k8s-app: promtail 
  8. data: 
  9.   promtail.yaml: |- 
  10.     server: 
  11.       http_listen_port: 9080 
  12.       grpc_listen_port: 0 
  13.  
  14.     positions: 
  15.       filename: ./positions.yaml # This location needs to be writeable by Promtail. 
  16.       #filename: /tmp/positions.yaml # This location needs to be writeable by Promtail. 
  17.  
  18.     client: 
  19.       url: http://loki:3100/loki/api/v1/push 
  20.  
  21.     scrape_configs: 
  22.     - job_name: system 
  23.     #- job_name: busybox 
  24.       static_configs: 
  25.       - targets: 
  26.           - localhost 
  27.         labels: 
  28.           job: varlog    #自定義 
  29.           host: busybox  #自定義 
  30.           __path__: /tmp/*log   收集日志的目錄 
  1. --- 
  2. apiVersion: apps/v1 
  3. kind: Deployment 
  4. metadata: 
  5.   name: promtail-deployment 
  6. spec: 
  7.   replicas: 2 
  8.   selector: 
  9.     matchLabels: 
  10.       name: promtail 
  11.   template: 
  12.     metadata: 
  13.       labels: 
  14.         name: promtail 
  15.     spec: 
  16.       volumes: 
  17.       - name: log 
  18.         emptyDir: {} 
  19.       - name: promtail-config 
  20.         configMap: 
  21.           name: promtail-config 
  22.  
  23.       containers: 
  24.       - name: promtail 
  25.         image: grafana/promtail:master 
  26.         imagePullPolicy: IfNotPresent 
  27.         args: 
  28.         - -config.file=/etc/promtail/promtail.yaml 
  29.         volumeMounts: 
  30.         - name: log 
  31.           mountPath: /tmp/ 
  32.         - name: promtail-config 
  33.           mountPath: /etc/promtail/ 
  34.  
  35.       - name: busybox 
  36.         image: centos:7 
  37.         imagePullPolicy: IfNotPresent 
  38.         args: 
  39.         - /bin/sh 
  40.         - -c 
  41.         - "while : ; do echo '--- promtail log test ---' `date` && echo '--- promtail log test ---' `date` >> /tmp/healthy.log && sleep 3 ; done " 
  42.         volumeMounts: 
  43.         - name: log 
  44.           mountPath: /tmp/ 

配置 grafana 并查看日志

查看 grafana 的 nodeport 端口:

  1. kubectl get svc 

瀏覽器輸入 Node IP +上邊看到的 port 打開 grafana 頁(yè)面:

輸入賬號(hào)密碼進(jìn)行登陸 admin admin123。

配置數(shù)據(jù)源:

找到 loki,然后 url 處寫上 loki 的 service name 和端口號(hào),即就是 http://locki:3100。

然后點(diǎn)擊頁(yè)面低下 "Save && test " 按鈕:

查看日志:

選擇 host 或者 job 來(lái)看不同業(yè)務(wù)的日志:

即可看到日志內(nèi)容:

至此,Loki+Promtail+Grafana 收集日志方案收工。

作者:Sunzz

編輯:陶家龍

出處:cnblogs.com/Sunzz/p/15190702.html

責(zé)任編輯:武曉燕 來(lái)源: 博客園
相關(guān)推薦

2025-02-10 02:00:00

2022-04-15 14:31:02

鴻蒙操作系統(tǒng)

2024-02-04 00:00:00

Loki性能查詢

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2022-04-15 11:46:09

輕量系統(tǒng)解耦鴻蒙操作系統(tǒng)

2024-01-05 15:32:47

鴻蒙SNTP智慧時(shí)鐘

2021-06-11 17:04:55

Loki開源日志

2020-12-22 09:17:49

日志Loki服務(wù)

2022-01-21 21:22:24

OpenHarmon操作系統(tǒng)鴻蒙

2022-02-10 15:07:10

云平臺(tái)OpenHarmon系統(tǒng)開發(fā)

2023-04-03 15:39:31

2021-06-02 06:02:50

Loki 源碼分析日志

2023-03-24 14:39:17

鴻蒙系統(tǒng)開發(fā)

2022-02-08 15:21:59

Hi3861開發(fā)鴻蒙

2021-08-26 05:27:57

Swift 監(jiān)聽系統(tǒng)泛型

2022-03-08 08:21:21

Spring日志分析系統(tǒng)日志數(shù)據(jù)

2022-12-29 08:00:26

Loki網(wǎng)絡(luò)設(shè)備

2021-05-18 07:30:36

開發(fā)Spring Boot日志

2022-06-28 08:40:16

LokiPromtail日志報(bào)警

2022-01-24 18:43:20

OpenHarmon操作系統(tǒng)鴻蒙
點(diǎn)贊
收藏

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