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

ELK Stack生產(chǎn)實(shí)踐——pod日志采集(Elastic Agent方案)

開(kāi)發(fā) 前端
本篇主要內(nèi)容是介紹k8s容器日志采集到ES集群的常用解決方案以及各方案適用場(chǎng)景和性能瓶頸,并以自定義日志程序?yàn)槔菔救绾瓮ㄟ^(guò)Elastic Agent方案實(shí)現(xiàn)pod日志采集。

pod日志采集方案

方案選型

  1. DaemonSet+Elastic Agent方案:使用DaemonSet控制器在每個(gè)kubernetes集群節(jié)點(diǎn)上運(yùn)行elastic agent服務(wù),業(yè)務(wù)容器日志目錄統(tǒng)一掛載到節(jié)點(diǎn)指定目錄下。在fleet中配置集成Custom Logs集成策略,指定日志采集目錄和ingest pipeline,實(shí)現(xiàn)自定義路徑下的日志收集和清理操作。
  2. DaemonSet+filebeat+logstash方案:通過(guò)DaemonSet方式在每個(gè)kubernetes集群節(jié)點(diǎn)上運(yùn)行filebeat服務(wù)。以容器運(yùn)行時(shí)containerd為例,配置filebeat輸入路徑為/var/log/containers/<kubernetes.container.id>.log,輸出路徑為logstash。并在logstash中配置規(guī)則提取container名稱變量,然后在logstash輸出中引用container名稱變量,以此來(lái)實(shí)現(xiàn)寫(xiě)入到es的不同index中。
  3. sidecar+fluentd方案:每個(gè)業(yè)務(wù)容器中通過(guò)sidecar方式運(yùn)行一個(gè)fluentd日志采集處理容器,F(xiàn)luentd是一個(gè)開(kāi)源的數(shù)據(jù)收集器,專為處理數(shù)據(jù)流設(shè)計(jì),使用JSON作為數(shù)據(jù)格式。它采用了插件式的架構(gòu),具有高可擴(kuò)展性高可用性,同時(shí)還實(shí)現(xiàn)了高可靠的信息轉(zhuǎn)發(fā)。由于logstash處理性能較弱且占用資源較高,可以通過(guò)fluentd一個(gè)組件替代filebeat+logstash的功能,從而簡(jiǎn)化日志采集流程與配置。
  4. sidecar+filebeat+kafka+logstash方案:每個(gè)業(yè)務(wù)容器中通過(guò)sidecar方式運(yùn)行一個(gè)filebeat日志采集容器,用于采集業(yè)務(wù)容器產(chǎn)生的日志并輸出到kafka中。借助Kafka的Consumer Group技術(shù)可部署多個(gè)logstash副本,提升數(shù)據(jù)處理能力和高可用性。需要注意的是每個(gè)consumer最多只能使用一個(gè)partition,當(dāng)一個(gè)Group內(nèi)consumer的數(shù)量大于partition的數(shù)量時(shí),只有等于partition個(gè)數(shù)的consumer能同時(shí)消費(fèi),其他的consumer處于等待狀態(tài)。因此想要增加logstash的消費(fèi)性能,可以適當(dāng)?shù)脑黾觮opic的partition數(shù)量,但kafka中partition數(shù)量過(guò)多也會(huì)導(dǎo)致kafka集群故障恢復(fù)時(shí)間過(guò)長(zhǎng)。

適用場(chǎng)景

在小規(guī)模日志場(chǎng)景下,首選DaemonSet+Elastic Agent方案采集pod日志,我們只需要調(diào)整集成策略的采集日志路徑和ingest pipeline管道處理規(guī)則即可,集群性能瓶頸取決于ingest節(jié)點(diǎn)性能。 

在大規(guī)模日志場(chǎng)景下,推薦使用sidecar+fluentd方案,由fluentd實(shí)現(xiàn)日志的采集與過(guò)濾處理后直接寫(xiě)入ES集群,集群性能瓶頸取決于es集群hot節(jié)點(diǎn)性能。 

在超大規(guī)模且業(yè)務(wù)存在瞬間高峰的日志場(chǎng)景下,推薦使用sidecar+filebeat+kafka+logstash方案。可將日志內(nèi)容暫存到kafka消息隊(duì)列中,由logstash集群逐個(gè)消費(fèi)并寫(xiě)入ES,防止瞬間高峰導(dǎo)致直接寫(xiě)入ES失敗,集群性能瓶頸取決于logstash節(jié)點(diǎn)性能。

注意事項(xiàng)

應(yīng)用日志應(yīng)配置日志輪換以防止日志文件無(wú)限增長(zhǎng)并占用過(guò)多的磁盤(pán)空間。通過(guò)設(shè)置日志輪換參數(shù),可以控制日志文件的大小、保留的日志文件數(shù)量以及輪換的頻率。這種做法可以高效管理日志,避免磁盤(pán)空間問(wèn)題。

部署模擬日志程序

項(xiàng)目地址

代碼倉(cāng)庫(kù)地址:https://gitee.com/cuiliang0302/log_demo

日志格式

模擬常見(jiàn)的后端服務(wù)日志,格式如下

2023-07-23 09:35:18.987 | INFO     | __main__:debug_log:49 - {'access_status': 200, 'request_method': 'GET', 'request_uri': '/account/', 'request_length': 67, 'remote_address': '186.196.110.240', 'server_name': 'cu-36.cn', 'time_start': '2023-07-23T09:35:18.879+08:00', 'time_finish': '2023-07-23T09:35:19.638+08:00', 'http_user_agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.2999.0 Safari/537.36'}
2023-07-23 09:35:19.728 | WARNING  | __main__:debug_log:47 - {'access_status': 403, 'request_method': 'PUT', 'request_uri': '/public/', 'request_length': 72, 'remote_address': '158.113.125.213', 'server_name': 'cu-35.cn', 'time_start': '2023-07-23T09:35:18.948+08:00', 'time_finish': '2023-07-23T09:35:20.343+08:00', 'http_user_agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.2999.0 Safari/537.36'}
2023-07-23 09:35:19.793 | INFO     | __main__:debug_log:49 - {'access_status': 200, 'request_method': 'GET', 'request_uri': '/public/', 'request_length': 46, 'remote_address': '153.83.121.71', 'server_name': 'cm-17.cn', 'time_start': '2023-07-23T09:35:19.318+08:00', 'time_finish': '2023-07-23T09:35:20.563+08:00', 'http_user_agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:57.0) Gecko/20100101 Firefox/57.0'}
2023-07-23 09:35:20.614 | ERROR    | __main__:debug_log:45 - {'access_status': 502, 'request_method': 'GET', 'request_uri': '/public/', 'request_length': 62, 'remote_address': '130.190.246.56', 'server_name': 'cu-34.cn', 'time_start': '2023-07-23T09:35:20.061+08:00', 'time_finish': '2023-07-23T09:35:21.541+08:00', 'http_user_agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Hot Lingo 2.0)'}

打包并上傳鏡像

[root@es-master ~]# cd /opt/
[root@es-master opt]# git clone https://gitee.com/cuiliang0302/log_demo.git
[root@es-master opt]# cd log_demo/
[root@es-master log_demo]# ls
Dockerfile  log.py  main.py  readme.md  requirements.txt
[root@es-master log_demo]# docker build -t harbor.local.com/app/log_demo:1.0 .
[root@es-master log_demo]# docker push harbor.local.com/app/log_demo:1.0

部署服務(wù)

在本案例中,我們將容器日志目錄通過(guò)hostPath方式掛載到宿主機(jī)的/var/log/logDemo路徑下。

[root@tiaoban fleet]# cat log-demo.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: log-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: log-demo
  template:
    metadata:
      labels:
        app: log-demo
    spec:
      containers:
      - name: log-demo
        image: harbor.local.com/app/log_demo:1.0
        resources:
          requests:
            memory: "32Mi"
            cpu: "100m"
          limits:
            memory: "128Mi"
            cpu: "500m"
        volumeMounts:
          - mountPath: /opt/logDemo/log
            name: logs
      volumes:
        - name: logs
          hostPath:
            path: /var/log/logDemo
            type: DirectoryOrCreate
[root@tiaoban fleet]# kubectl apply -f log-demo.yaml 
deployment.apps/log-demo created
[root@tiaoban fleet]# kubectl get pod -o wide
NAME                        READY   STATUS    RESTARTS       AGE     IP             NODE    NOMINATED NODE   READINESS GATES
log-demo-76c57cf9dc-9znrd   1/1     Running   0              2m45s   10.244.3.124   work3   <none>           <none>
log-demo-76c57cf9dc-lkvrq   1/1     Running   0              2m45s   10.244.4.158   work2   <none>           <none>

配置代理采集日志

創(chuàng)建集成策略

日志路徑填寫(xiě)掛載到Elastic agent的日志路徑,即/var/log/logDemo/info.log,代理策略選擇現(xiàn)有的Elastic Agent on ECK policy。

圖片圖片

自定義ingest處理

在先前的自定義日志采集(fleet方式)中已有詳細(xì)講解,具體內(nèi)容可參考文檔https://www.cuiliangblog.cn/detail/article/62,此處不再贅述。

多應(yīng)用采集思路

通常情況下我們需要采集多個(gè)自定義應(yīng)用的日志內(nèi)容,我們只需要保證應(yīng)用日志目錄均掛載至宿主機(jī)/var/log目錄下,然后配置fleet代理策略,指定對(duì)應(yīng)的日志路徑和名稱以及ingest pipeline即可。

圖片圖片

如下所示,我們需要采集myapp和springboot兩個(gè)應(yīng)用的日志,只需要添加多條Custom logs集成策略即可。

圖片圖片

博客地址:https://www.cuiliangblog.cn/

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

2023-10-16 07:39:02

ELKpod日志

2023-09-05 07:40:37

PythonSDKAPI

2022-11-23 21:51:42

大數(shù)據(jù)

2017-01-10 16:04:02

容器MySQL實(shí)踐

2022-06-03 09:21:47

Svelte前端攜程

2023-07-12 16:07:50

鏈路數(shù)據(jù)湖技術(shù)

2021-03-12 07:47:44

KubernetesRedis-clustRedis

2023-12-08 07:59:04

2021-07-19 09:18:07

KubernetesELK Stackk8s

2021-07-20 08:32:16

Kubernetes日志平臺(tái)

2023-10-16 16:00:27

Redis限流

2022-07-08 09:26:45

Flink快手計(jì)算

2022-03-08 08:21:21

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

2022-09-19 08:35:28

Kafka節(jié)點(diǎn)故障

2017-05-03 14:00:00

LinuxCentOSElastic Sta

2022-04-29 09:04:35

日志平臺(tái)開(kāi)發(fā)

2024-12-09 08:27:02

2018-10-17 10:49:49

Kubernetes存儲(chǔ)處理

2023-12-26 16:33:57

k8s私有化云服務(wù)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产精品久久久久久久白浊 | 尤物视频在线免费观看 | 久久久区 | 中文字幕一区二区三区精彩视频 | 中日韩av | 欧美高清成人 | 国产欧美精品一区二区三区 | 中文字幕一区二区三区精彩视频 | 日韩精品一区二区三区在线观看 | 91传媒在线观看 | 国产高清在线观看 | 一区二区视频 | 99精品在线 | 一区二区三区中文字幕 | 午夜99| 欧美涩涩网 | 91福利在线观看 | av黄色在线 | 久久y| 懂色中文一区二区在线播放 | 欧美日韩不卡在线 | 国产三区精品 | 黄色大片视频 | 午夜免费视频 | 久久久久久久91 | 久久亚洲精品国产精品紫薇 | 免费a级毛片在线播放 | 九九综合 | 伊人久久国产 | 国产伦一区二区三区四区 | 九九热在线免费观看 | 久久精品国产一区二区电影 | 国产精品免费小视频 | 7777在线视频免费播放 | 51ⅴ精品国产91久久久久久 | 亚洲国产精品久久久久 | 丝袜美腿一区二区三区 | 7777在线视频免费播放 | 亚洲精品一区二区三区中文字幕 | 理论片午午伦夜理片影院 | 欧美日韩免费 |