成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Loki日志系統,比ELK輕量多了

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

[[423204]]

圖片來自 包圖網

先看看結果有多輕量吧:

Loki 是一個為有效保存日志數據而優化的數據存儲。日志數據的高效索引將 Loki 與其他日志系統區分開來。與其他日志系統不同,Loki 索引是根據標簽構建的,原始日志消息未編入索引。

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

Loki 特點如下:

用于索引日志的高效內存使用:通過在一組標簽上建立索引,索引可以明顯小于其他日志聚合產品。更少的內存使得操作成本更低。

多租戶:Loki 允許多個租戶使用單個 Loki 實例。不同租戶的數據與其他租戶完全隔離。通過在代理中分配租戶 ID 來配置多租戶。

LogQL,Loki 的查詢語言:Prometheus 查詢語言 PromQL 的用戶會發現 LogQL 熟悉且靈活,可用于生成針對日志的查詢。該語言還有助于從日志數據中生成指標,這是一項遠遠超出日志聚合的強大功能。

可擴展性:Loki 在小范圍內運行良好。在單進程模式下,所有需要的微服務都在一個進程中運行。

單進程模式非常適合測試 Loki、在本地運行或小規模運行。Loki 還旨在為大規模安裝進行橫向擴展。

Loki 的每個微服務組件都可以分解為單獨的進程,并且配置允許對組件進行單獨擴展。

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

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

Loki/Promtail/Grafana vs EFK

EFK(Elasticsearch、Fluentd、Kibana)堆棧用于從各種來源攝取、可視化和查詢日志。

Elasticsearch 中的數據作為非結構化 JSON 對象存儲在磁盤上。每個對象的鍵和每個鍵的內容都被索引。

然后可以使用 JSON 對象定義查詢(稱為查詢 DSL)或通過 Lucene 查詢語言查詢數據。

相比之下,單二進制模式的 Loki 可以將數據存儲在磁盤上,但在水平可擴展模式下,數據存儲在云存儲系統中,例如 S3、GCS 或 Cassandra。

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

然而,由于這種設計權衡,基于內容(即日志行中的文本)過濾的 LogQL 查詢需要加載搜索窗口中與查詢中定義的標簽匹配的所有塊。

Fluentd 通常用于收集日志并將其轉發到 Elasticsearch。Fluentd 被稱為數據收集器,它可以從許多來源攝取日志,對其進行處理,并將其轉發到一個或多個目標。

相比之下,Promtail 的用例是專門為 Loki 量身定制的。它的主要操作模式是發現存儲在磁盤上的日志文件,并將它們與一組標簽相關聯地轉發給 Loki。

Promtail 可以為與 Promtail 運行在同一節點上的 Kubernetes pod 進行服務發現,充當容器邊車或 Docker 日志驅動程序,從指定文件夾讀取日志,并跟蹤 systemd 日志。

Loki 通過一組標簽對表示日志的方式類似于 Prometheus表示指標的方式。

當與 Prometheus 一起部署在環境中時,由于使用相同的服務發現機制,Promtail 的日志通常具有與應用程序指標相同的標簽。

具有相同標簽的日志和指標使用戶能夠在指標和日志之間無縫切換上下文,幫助進行根本原因分析。

Kibana 用于可視化和搜索 Elasticsearch 數據,并且在對這些數據進行分析方面非常強大。

Kibana 提供了許多可視化工具來進行數據分析,例如位置圖、用于異常檢測的機器學習以及用于發現數據關系的圖形。警報可以配置為在發生意外情況時通知用戶。

相比之下,Grafana 專門針對來自 Prometheus 和 Loki 等來源的時間序列數據量身定制。

儀表板可以設置為可視化指標(即將提供日志支持),并且可以使用瀏覽視圖對您的數據進行臨時查詢。與 Kibana 一樣,Grafana 支持根據您的指標發出警報。

架構圖:

收集日志的架構圖:

一套輕量級日志收集方案:

  • Promtail:日志收集工具
  • Loki:日志聚合系統
  • Grafana:可視化工具

部署 Loki

官網地址:

  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 

創建 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 

執行命令創建:

  1. kubectl apply -f loki.yaml 

②grafana

根據自己時間情可對存儲那塊進行更改,不改的話是 emptyDir,你懂的。賬號密碼為 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:             ## 初始化容器,用于修改掛載的存儲的文件夾歸屬組與歸屬用戶 
  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:          ## 容器安全策略,設置運行容器使用的歸屬組與用戶 
  47.         #  fsGroup: 0 
  48.         #  runAsUser: 472 
  49.         ports: 
  50.         - name: http 
  51.           containerPort: 3000 
  52.           protocol: TCP 
  53.         env:                      ## 配置環境變量,設置 Grafana 的默認管理員用戶名/密碼 
  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:                   ## 共享存儲掛載配置 
  83.       - name: data 
  84.         emptyDir: {} 
  85.         #persistentVolumeClaim: 
  86.         #  claimName: grafana     ## 指定使用的 PVC 

③promtail

應用結合 promtail,進行日志收集。這里使用 Sidecar 模式。一個 pod 中跑兩個容器,一個為業務容器,一個為 promtail,兩個容器掛載同一個存儲目錄,promtail 即可收集日志。

編輯 promtail-config.yaml,可根據不同業務設置標簽。參考:

  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 頁面:

輸入賬號密碼進行登陸 admin admin123。

配置數據源:

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

然后點擊頁面低下 "Save && test " 按鈕:

查看日志:

選擇 host 或者 job 來看不同業務的日志:

即可看到日志內容:

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

作者:Sunzz

編輯:陶家龍

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

責任編輯:武曉燕 來源: 博客園
相關推薦

2025-02-10 02:00:00

2022-04-15 14:31:02

鴻蒙操作系統

2024-02-04 00:00:00

Loki性能查詢

2022-02-09 19:45:41

MQTTOpenHarmon鴻蒙

2022-04-15 11:46:09

輕量系統解耦鴻蒙操作系統

2024-01-05 15:32:47

鴻蒙SNTP智慧時鐘

2021-06-11 17:04:55

Loki開源日志

2022-01-21 21:22:24

OpenHarmon操作系統鴻蒙

2022-02-10 15:07:10

云平臺OpenHarmon系統開發

2023-04-03 15:39:31

2020-12-22 09:17:49

日志Loki服務

2023-03-24 14:39:17

鴻蒙系統開發

2022-02-08 15:21:59

Hi3861開發鴻蒙

2021-08-26 05:27:57

Swift 監聽系統泛型

2021-06-02 06:02:50

Loki 源碼分析日志

2022-03-08 08:21:21

Spring日志分析系統日志數據

2022-01-24 18:43:20

OpenHarmon操作系統鴻蒙

2024-02-01 09:48:17

2021-05-18 07:30:36

開發Spring Boot日志

2022-06-28 08:40:16

LokiPromtail日志報警
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品免费 | 97国产精品视频人人做人人爱 | caoporn地址| 日韩欧美三区 | 精品视频国产 | 久热久| 国产成人免费视频网站视频社区 | 亚洲国产精品一区 | 亚洲精品久久久久avwww潮水 | 国产精品久久久久久 | 精品九九 | 欧美一级α片 | 在线观看中文字幕 | 毛片免费在线 | 久草在线青青草 | 中文字幕一区二区三区在线观看 | 久草网址| 日韩一区二区三区精品 | 国产成人精品久久二区二区91 | 在线观看免费av网 | 美女福利视频一区 | 97超碰人人| 国产人久久人人人人爽 | 国产精品视频一区二区三区四蜜臂 | 国产精品久久国产精品99 | 国产精品1区2区3区 欧美 中文字幕 | 国产a区 | 国产一区二区三区免费观看视频 | 日韩中文字幕网 | 国产剧情久久 | 色黄视频在线 | 中文字幕 在线观看 | 在线黄色网 | 91欧美| 先锋资源网站 | 久草免费电影 | 91麻豆精品国产91久久久久久久久 | 又黑又粗又长的欧美一区 | 日韩欧美一区二区三区免费观看 | 中文字幕亚洲区一区二 | 一区二区三区四区在线播放 |