国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ELK 日志系統(tǒng)收集K8s中日志

這篇具有很好參考價(jià)值的文章主要介紹了ELK 日志系統(tǒng)收集K8s中日志。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

容器特性給日志采集帶來的困難

? K8s彈性伸縮性:導(dǎo)致不能預(yù)先確定采集的目標(biāo)
? 容器隔離性:容器的文件系統(tǒng)與宿主機(jī)是隔離,導(dǎo)致日志采集器讀取日志文件受阻。

日志按體現(xiàn)方式分類

應(yīng)用程序日志記錄體現(xiàn)方式分為兩類:
? 標(biāo)準(zhǔn)輸出:輸出到控制臺,使用kubectl logs可以看到。
例如 nginx日志是將訪問日志輸出到標(biāo)準(zhǔn)輸出,可以用kubectl log 查看
elk收集k8s日志,kubernetes,elk

kubectl  logs ==>> apiserver ==>> kubecet ==>> docker api ==>><container-id>-json.log  

elk收集k8s日志,kubernetes,elk

? 日志文件:寫到容器的文件系統(tǒng)的文件。

Kubernetes應(yīng)用日志收集

針對標(biāo)準(zhǔn)輸出:以DaemonSet方式在每個(gè)Node上部署一個(gè)日志收集程序,采集
/var/lib/docker/containers/目錄下所有容器日志。

針對容器中日志文件:在Pod中增加一個(gè)容器運(yùn)行日志采集器,使用emptyDir共享日志目錄讓日志采集器讀取到日志文件。

elk收集k8s日志,kubernetes,elk

ELK 日志系統(tǒng)

ELK 是三個(gè)開源軟件的縮寫,提供一套完整的企業(yè)級日志平臺解決方案。
分別是:
? Elasticsearch:搜索、分析和存儲數(shù)據(jù)
? Logstash :采集日志、格式化、過濾,最后將數(shù)據(jù)
推送到Elasticsearch存儲
? Kibana:數(shù)據(jù)可視化
? Beats :集合了多種單一用途數(shù)據(jù)采集器,用于實(shí)現(xiàn)從邊緣機(jī)器向 Logstash 和 Elasticsearch 發(fā)送數(shù)
據(jù)。里面應(yīng)用最多的是Filebeat,是一個(gè)輕量級日志采集器。

輕量級日志:graylog、grafana loki
elk收集k8s日志,kubernetes,elk
搭建日志系統(tǒng):
? elasticsearch.yaml # ES數(shù)據(jù)庫
? kibana.yaml # 可視化展示
日志收集:
? filebeat-kubernetes.yaml # 采集所有容器標(biāo)準(zhǔn)輸出
? app-log-stdout.yaml # 標(biāo)準(zhǔn)輸出測試應(yīng)用
? app-log-logfile.yaml # 日志文件測試應(yīng)用

針對標(biāo)準(zhǔn)輸出:在每個(gè)節(jié)以deamsent方式部署filebeat,采集節(jié)點(diǎn)上所有的日志文件,目錄為/var/lib/docker/containers//容器id/xxxx-json.log

kubectl apply -f elasticsearch.yaml 
kubectl apply -f kibana.yaml 
kubectl apply -f filebeat-kubernetes.ya
 #elasticsearch.yaml
 apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
  namespace: ops
  labels:
    k8s-app: elasticsearch
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: elasticsearch
  template:
    metadata:
      labels:
        k8s-app: elasticsearch
    spec:
      containers:
      - image: elasticsearch:7.9.2
        name: elasticsearch
        resources:
          limits:
            cpu: 2
            memory: 3Gi
          requests:
            cpu: 0.5
            memory: 500Mi
        env:
          - name: "discovery.type"
            value: "single-node"
          - name: ES_JAVA_OPTS
            value: "-Xms512m -Xmx2g"
        ports:
        - containerPort: 9200
          name: db
          protocol: TCP
        volumeMounts:
        - name: elasticsearch-data
          mountPath: /usr/share/elasticsearch/data
      volumes:
      - name: elasticsearch-data
        persistentVolumeClaim:
          claimName: es-pvc

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: es-pvc
  namespace: ops
spec:
  storageClassName: "managed-nfs-storage"
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

---

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  namespace: ops
spec:
  ports:
  - port: 9200
    protocol: TCP
    targetPort: 9200
  selector:
    k8s-app: elasticsearch

#kibana.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
  namespace: ops
  labels:
    k8s-app: kibana
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: kibana
  template:
    metadata:
      labels:
        k8s-app: kibana
    spec:
      containers:
      - name: kibana
        image: kibana:7.9.2
        resources:
          limits:
            cpu: 2
            memory: 2Gi
          requests:
            cpu: 0.5
            memory: 500Mi
        env:
          - name: ELASTICSEARCH_HOSTS
            value: http://10.244.169.139:9200
          - name: I18N_LOCALE
            value: zh-CN
        ports:
        - containerPort: 5601
          name: ui
          protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: kibana
  namespace: ops
spec:
  type: NodePort
  ports:
  - port: 5601
    protocol: TCP
    targetPort: ui
    nodePort: 30601
  selector:
    k8s-app: kibana


#filebeat-kubernetes.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-config
  namespace: ops
  labels:
    k8s-app: filebeat
data:
  filebeat.yml: |-
    filebeat.config:
      inputs:
        # Mounted `filebeat-inputs` configmap:
        path: ${path.config}/inputs.d/*.yml
        # Reload inputs configs as they change:
        reload.enabled: false
      modules:
        path: ${path.config}/modules.d/*.yml
        # Reload module configs as they change:
        reload.enabled: false

    output.elasticsearch:
      hosts: ['elasticsearch.ops:9200']
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-inputs
  namespace: ops
  labels:
    k8s-app: filebeat
data:
  kubernetes.yml: |-
    - type: docker
      containers.ids:
      - "*"
      processors:
        - add_kubernetes_metadata:
            in_cluster: true
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: ops
  labels:
    k8s-app: filebeat
spec:
  selector:
    matchLabels:
      k8s-app: filebeat
  template:
    metadata:
      labels:
        k8s-app: filebeat
    spec:
      serviceAccountName: filebeat
      terminationGracePeriodSeconds: 30
      containers:
      - name: filebeat
        image: elastic/filebeat:7.9.2
        args: [
          "-c", "/etc/filebeat.yml",
          "-e",
        ]
        securityContext:
          runAsUser: 0
          # If using Red Hat OpenShift uncomment this:
          #privileged: true
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 100Mi
        volumeMounts:
        - name: config
          mountPath: /etc/filebeat.yml
          readOnly: true
          subPath: filebeat.yml
        - name: inputs
          mountPath: /usr/share/filebeat/inputs.d
          readOnly: true
        - name: data
          mountPath: /usr/share/filebeat/data
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      volumes:
      - name: config
        configMap:
          defaultMode: 0600
          name: filebeat-config
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers
      - name: inputs
        configMap:
          defaultMode: 0600
          name: filebeat-inputs
      # data folder stores a registry of read status for all files, so we don't send everything again on a Filebeat pod restart
      - name: data
        hostPath:
          path: /var/lib/filebeat-data
          type: DirectoryOrCreate
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: filebeat
subjects:
- kind: ServiceAccount
  name: filebeat
  namespace: ops
roleRef:
  kind: ClusterRole
  name: filebeat
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: filebeat
  labels:
    k8s-app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API group
  resources:
  - namespaces
  - pods
  verbs:
  - get
  - watch
  - list
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: filebeat
  namespace: ops
  labels:
    k8s-app: filebeat

可視化展示日志:

  1. 查看索引(日志記錄集合):Management -> Stack Management -> 索引管理
  2. 將索引關(guān)聯(lián)到Kibana:索引模式 -> 創(chuàng)建 -> 匹配模式 -> 選擇時(shí)間戳
  3. 在Discover選擇索引模式查看日志

將索引關(guān)聯(lián)到Kibanaelk收集k8s日志,kubernetes,elkelk收集k8s日志,kubernetes,elk
Discover選擇索引模式查看日志
elk收集k8s日志,kubernetes,elkelk收集k8s日志,kubernetes,elk
按條件查詢
elk收集k8s日志,kubernetes,elk

二、針對容器中日志文件

#app-log-logfile.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-log-logfile
spec:
  replicas: 3
  selector:
    matchLabels:
      project: microservice
      app: nginx-logfile
  template:
    metadata:
      labels:
        project: microservice
        app: nginx-logfile
    spec:
      containers:
      # 應(yīng)用容器
      - name: nginx
        image: lizhenliang/nginx-php
        # 將數(shù)據(jù)卷掛載到日志目錄
        volumeMounts:
        - name: nginx-logs
          mountPath: /usr/local/nginx/logs
      # 日志采集器容器
      - name: filebeat
        image: elastic/filebeat:7.9.2
        args: [
          "-c", "/etc/filebeat.yml",
          "-e",
        ]
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            memory: 500Mi
        securityContext:
          runAsUser: 0
        volumeMounts:
        # 掛載filebeat配置文件
        - name: filebeat-config
          mountPath: /etc/filebeat.yml
          subPath: filebeat.yml
        # 將數(shù)據(jù)卷掛載到日志目錄
        - name: nginx-logs
          mountPath: /usr/local/nginx/logs
      # 數(shù)據(jù)卷共享日志目錄
      volumes:
      - name: nginx-logs
        emptyDir: {}
      - name: filebeat-config
        configMap:
          name: filebeat-nginx-config
---
apiVersion: v1
kind: Service
metadata:
  name: app-log-logfile
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    project: microservice
    app: nginx-logfile
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-nginx-config

data:
  # 配置文件保存在ConfigMap
  filebeat.yml: |-
    filebeat.inputs:
      - type: log
        paths:
          - /usr/local/nginx/logs/access.log
        # tags: ["access"]
        fields_under_root: true
        fields:
          project: microservice #項(xiàng)目名稱
          app: nginx            #pod名稱

    setup.ilm.enabled: false
    setup.template.name: "nginx-access"
    setup.template.pattern: "nginx-access-*"

    output.elasticsearch:
      hosts: ['elasticsearch.ops:9200']
      index: "nginx-access-%{+yyyy.MM.dd}" #索引名稱
kubectl apply -f app-log-logfile.yaml 

elk收集k8s日志,kubernetes,elk
kibana建立索引,查看日志
elk收集k8s日志,kubernetes,elk
elk收集k8s日志,kubernetes,elk

elk收集k8s日志,kubernetes,elk文章來源地址http://www.zghlxwxcb.cn/news/detail-699897.html

到了這里,關(guān)于ELK 日志系統(tǒng)收集K8s中日志的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • K8s部署輕量級日志收集系統(tǒng)EFK(elasticsearch + filebeat + kibana)

    目錄 K8s部署EFK(elasticsear + filebeat + kibana)日志收集 一.準(zhǔn)備鏡像 二.搭建Elasticsearch + kibana 1.在可執(zhí)行kubectl命令的服務(wù)器準(zhǔn)備安裝的yml文件 2.在elasticsearch-kibana目錄下創(chuàng)建配置文件elasticsearch.yml 3.創(chuàng)建kibana配置文件kibana.yml 4.在k8s中創(chuàng)建elasticsearch和kibana的配置文件configmap 5.檢查

    2024年02月08日
    瀏覽(37)
  • k8s容器日志收集方案

    k8s容器日志收集方案

    ? ? log-pilot安裝 ? ? ? ? ? ?

    2024年02月16日
    瀏覽(27)
  • k8s日志收集方案及實(shí)戰(zhàn)

    k8s日志收集方案及實(shí)戰(zhàn)

    k8s 日志收集方案 三種收集方案的優(yōu)缺點(diǎn): 日志收集環(huán)境: k8s日志收集架構(gòu) k8s日志收集所用到的安裝包及軟件: 1、elasticsearch安裝配置 1.1 es安裝 1.2 es配置 1.3 啟動(dòng)es 2、kibana安裝配置 2.1 kibana安裝 2.2 kibana配置 2.3 啟動(dòng)kibana 3、zookeeper安裝配置 3.1 zookeeper安裝 下載安裝包,下載

    2024年02月04日
    瀏覽(19)
  • K8s 日志收集-Day 07

    K8s 日志收集-Day 07

    官方文檔:https://kubernetes.io/zh/docs/concepts/cluster-administration/logging/ (1)node節(jié)點(diǎn)收集 基于daemonset部署日志收集進(jìn)程,實(shí)現(xiàn)json-file類型(標(biāo)準(zhǔn)輸出/dev/stdout、錯(cuò)誤輸出/dev/stderr)日志收集; 該方式的優(yōu)點(diǎn):日志收集架構(gòu)簡單,易部署、易維護(hù)。 該方式的缺點(diǎn):node節(jié)點(diǎn)產(chǎn)生的日志、

    2024年03月26日
    瀏覽(25)
  • K8S:容器日志收集與管理

    K8S:容器日志收集與管理

    Kubernetes 里面對容器日志的處理方式,都叫作 cluster-level-logging,即:這個(gè)日志處理系統(tǒng),與容器、Pod 以及 Node 的生命周期都是完全無關(guān)的。這種設(shè)計(jì)當(dāng)然是為了保證,無論是容器掛了、Pod 被刪除,甚至節(jié)點(diǎn)宕機(jī)的時(shí)候,應(yīng)用的日志依然可以被正常獲取到。 而對于一個(gè)容器來

    2024年02月15日
    瀏覽(25)
  • EFK簡單部署收集K8S日志

    EFK簡單部署收集K8S日志

    安裝ES kibana K8S部署

    2024年04月27日
    瀏覽(25)
  • k8s部署 elk(Elasticsearch,Kibana,Logstash,Redis,Filebea)

    目錄 一、nfs存儲 二、部署鏡像,制作tag 三、?filebeat收集數(shù)據(jù) ?四、logstash過濾數(shù)據(jù) 五、elasticsearch存儲數(shù)據(jù)+nfs做存儲(自動(dòng)注冊pv詳見前文) 六、kibana展示數(shù)據(jù) 七、驗(yàn)證安裝 參考鏈接:k8s 配置hadoop集群,nfs作為存儲_瘋飆的蝸牛的博客-CSDN博客

    2024年02月11日
    瀏覽(21)
  • K8S部署EFK(fluentd)收集日志

    首先部署es和kinban es部署 創(chuàng)建es-svc es-statefulset.yaml 開啟es跨域訪問 部署kinban 創(chuàng)建kibana的configmap kinban開啟中文 創(chuàng)建kibana 部署fluentd 創(chuàng)建fluentd-configmap 只收集pod label 標(biāo)記為 logging=true 的日志 注意掛載的日志目錄出現(xiàn)unreadable 說明日志軟連接有問題,無法讀取日志 部署fluentd-dae

    2024年02月16日
    瀏覽(26)
  • 收集K8S容器的標(biāo)準(zhǔn)輸出日志實(shí)踐

    參考文章 k8s日志文件說明 一般情況下,容器中的日志在輸出到標(biāo)準(zhǔn)輸出 (stdout) 時(shí),會(huì)以? *-json.log ? 的命名方式保存在 /var/lib/docker/containers 目錄中。 這里能看到,有這么個(gè)文件:? /data/docker/containers/container id/*-json.log ,然后k8s默認(rèn)會(huì)在? /var/log/containers ? 和? /var/log/pods 目

    2024年02月11日
    瀏覽(23)
  • k8s日志收集組件 Grafana loki --- 理論篇

    k8s日志收集組件 Grafana loki --- 理論篇

    當(dāng)我們在k8s上運(yùn)行程序時(shí),習(xí)慣的會(huì)使用ELK來收集和查詢程序運(yùn)行日志。今天我們介紹一款新的專為日志收集而生的神器:Grafana loki。Grafana Loki 是一組組件,可以組合成一個(gè)功能齊全的日志堆棧。 與其他日志記錄系統(tǒng)不同,Loki 僅構(gòu)建索引有關(guān)日志的元數(shù)據(jù):標(biāo)簽(就像 P

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包