Fluentd+Elasticsearch+kibana 日誌收集部署實戰

2022-01-30 K8S技術社區

K8S技術社區正式上線啦!後臺留言個人微信號加入K8S技術群,找到志同道合的小夥伴!

對於企業來說,日誌的重要性不言而喻,日誌收集分析展示平臺的選擇,這裡給出幾點選擇ELK的理由。ELK是一套非常成熟的系統,她本身的構架非常適合Kubernetes集群,這裡官網當中也是選用的 Elasticsearch作為Sample的,GitHub上下載的kubernetes二進位包中本身就有這個.yaml文件,所以使用ELK作為收集日誌的理由相當充分。 

對於任何基礎設施或後端服務系統,日誌都是極其重要的。對於受Google內部容器管理系統Borg啟發而催生出的Kubernetes項目來說,自然少不了對Logging的支持。在「 Logging Overview 「中,官方概要介紹了Kubernetes上的幾個層次的Logging方案,並給出Cluster-level logging的參考架構: 

Kubernetes還給出了參考實現: 

– Logging Backend: Elastic Search stack(包括: Kibana ) 

– Logging-agent: fluentd 

介紹

1. Fluentd是一個開源收集事件和日誌系統,用與各node節點日誌數據的收集、處理等等。

2. ElasticSearch是一個開源的,基於Lucene的搜索伺服器。它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口。

3. Kibana是一個開源的用於數據可視化的web UI工具,可使用它對日誌進行高效的搜索、可視化、分析等各種操作。

流程

每個node節點上面的fluentd監控並收集該節點上面的系統日誌,並將處理過後的日誌信息發送給ElasticSearch,Elasticsearch匯總各個node節點的日誌信息,最後結合Kibana 實現web UI界面的數據展示。

安裝實現

1.確保K8S集群正常工作(當然這是必須的....)

2.fluentd.yaml文件編寫,這裡要實現每個節點都能有fluentd跑起來,只需要將kind設置為DaemonSet即可。

apiVersion: extensions/v1beta1

kind: DaemonSet

metadata:

  name: fluentd-elasticsearch

  namespace: kube-system

  labels:

    k8s-app: fluentd-logging

spec:

  template:

    metadata:

      labels:

        name: fluentd-elasticsearch

    spec:

      containers:

      - name: fluentd-elasticsearch

        image: gcr.io/google-containers/fluentd-elasticsearch:1.20

        resources:

          limits:

            memory: 200Mi

          requests:

            cpu: 100m

            memory: 200Mi

        volumeMounts:

        - name: varlog

          mountPath: /var/log

        - name: varlibdockercontainers

          mountPath: /var/lib/docker/containers

          readOnly: true

      terminationGracePeriodSeconds: 30

      volumes:

      - name: varlog

        hostPath:

          path: /var/log

      - name: varlibdockercontainers

        hostPath:

          path: /var/lib/docker/containers

3.elasticsearch-rc.yaml&elasticsearch-svc.yaml

apiVersion: v1

kind: ReplicationController

metadata:

  name: elasticsearch-logging-v1

  namespace: kube-system

  labels:

    k8s-app: elasticsearch-logging

    version: v1

    kubernetes.io/cluster-service: "true"

spec:

  replicas: 2

  selector:

    k8s-app: elasticsearch-logging

    version: v1

  template:

    metadata:

      labels:

        k8s-app: elasticsearch-logging

        version: v1

        kubernetes.io/cluster-service: "true"

    spec:

      containers:

      - image: gcr.io/google-containers/elasticsearch:v2.4.1

        name: elasticsearch-logging

        resources:

          # need more cpu upon initialization, therefore burstable class

          limits:

            cpu: 1000m

          requests:

            cpu: 100m

        ports:

        - containerPort: 9200

          name: db

          protocol: TCP

        - containerPort: 9300

          name: transport

          protocol: TCP

        volumeMounts:

        - name: es-persistent-storage

          mountPath: /data

      volumes:

      - name: es-persistent-storage

        emptyDir: {}

apiVersion: v1

kind: Service

metadata:

  name: elasticsearch-logging

  namespace: kube-system

  labels:

    k8s-app: elasticsearch-logging

    kubernetes.io/cluster-service: "true"

    kubernetes.io/name: "Elasticsearch"

spec:

  ports:

  - port: 9200

    protocol: TCP

    targetPort: db

  selector:

    k8s-app: elasticsearch-logging

4.kibana-rc.yaml&kibana-svc.yaml

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

  name: kibana-logging

  namespace: kube-system

  labels:

    k8s-app: kibana-logging

    kubernetes.io/cluster-service: "true"

spec:

  replicas: 1

  selector:

    matchLabels:

      k8s-app: kibana-logging

  template:

    metadata:

      labels:

        k8s-app: kibana-logging

    spec:

      containers:

      - name: kibana-logging

        image: gcr.io/google-containers/kibana:v4.6.1

        resources:

          # keep request = limit to keep this container in guaranteed class

          limits:

            cpu: 100m

          requests:

            cpu: 100m

        env:

          - name: "ELASTICSEARCH_URL"

            value: "http://elasticsearch-logging:9200"

          - name: "KIBANA_BASE_URL"

            value: "/api/v1/proxy/namespaces/kube-system/services/kibana-logging"

        ports:

        - containerPort: 5601

          name: ui

          protocol: TCP

apiVersion: v1

kind: Service

metadata:

  name: kibana-logging

  namespace: kube-system

  labels:

    k8s-app: kibana-logging

    kubernetes.io/cluster-service: "true"

    kubernetes.io/name: "Kibana"

spec:

  ports:

  - port: 5601

    protocol: TCP

    targetPort: ui

  selector:

    k8s-app: kibana-logging

5.kubectl create -f ****** ,這裡可自由發揮。



本文轉自:

http://www.cnblogs.com/zhangjiayong/p/6203025.html

2017年7月24日~25日,2017 OpenStack Days China官方盛典即將在北京國家會議中心盛大召開。在K8S技術社區近日的評論點讚贏取免費門票(原價600¥)活動中,以下點讚前10名的朋友贏得免費門票1張!

恭喜10位!

請以上獲獎的朋友通過微信群或公眾號後臺 聯繫取票!

K8S技術社區,CNCF(Cloud Native Computing Foundation)官方授權Meetup承辦組織,打造一流的Kubernetes技術乾貨分享平臺。

相關焦點

  • 輕量日誌收集系統-EFK
    ELK中各個服務的作用:Elasticsearch:用於存儲收集到的日誌信息Fluentd:用於收集日誌;SpringBoot應用整合了Logstash以後會把日誌發送給Fluentd,Fluentd再把日誌轉發給ElasticsearchKibana:通過Web端的可視化界面來查看日誌。
  • 性能優越的輕量級日誌收集工具,微軟、亞馬遜都在用!
    Fluentd 簡介 Fluentd是一款開源的日誌收集功能,致力於為用戶搭建統一的日誌收集層,和Elasticsearch、Kibana一起使用可以搭建EFK日誌收集系統。什麼是統一的日誌收集層呢?看下下面這張圖就清楚了!來自Fluentd官網安裝 在《你居然還去伺服器上撈日誌,搭個日誌收集系統難道不香麼!》
  • Elasticsearch + Kibana 集群環境搭建
    本文主要介紹 elasticsearch 集群以及 kibana 的環境搭建。ElasticsearchElasticsearch 可以理解為一個支持模糊查詢的資料庫,用來存儲日誌。下載 Elasticsearchwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gztar -xzvf elasticsearch-6.2.3.tar.gz修改配置文件修改 config/elasticsearch.yml
  • Kubernetes實戰之部署ELK Stack收集平臺日誌
    3 ELK Stack日誌方案4 容器中的日誌怎麼收集5 K8S平臺中應用日誌收集準備環境一套正常運行的k8s集群,kubeadm安裝部署或者二進位部署即可ip地址角色備註192.168.73.136nfs192.168.73.138k8s-master192.168.73.139k8s-node01192.168.73.140k8s-node02
  • 一文徹底搞定EFK搭建K8s日誌收集系統
    ,Kubernetes 中比較流行的日誌收集解決方案是 Elasticsearch、Fluentd 和 Kibana(EFK)技術棧,也是官方現在比較推薦的一種方案。Elasticsearch 通常與 Kibana 一起部署,Kibana 是 Elasticsearch 的一個功能強大的數據可視化 Dashboard,Kibana 允許你通過 web 界面來瀏覽 Elasticsearch 日誌數據。
  • 監控 Elasticsearch 及 Kibana
    Elasticsearch,Kibana,Logstash 和 Beats 的數據直接收集並運送到你的監視集群,而不是通過生產集群進行路由。通過引入 Metricbeat 作為收集和運輸監視數據的代理,不再需要通過生產集群路由監視數據。現在可以由獨立的輕量級監視代理程序收集監視數據,並將其直接發送到監視集群。在下面的練習中,我們將使用如下的架構:在上面的配置中,我使用了兩個集群:生產集群及監視集群。我們必須部署 Metricbeat 到生產集群中,並把數據傳入到監視集群中。
  • 基於EFK實現對k8s集群日誌的採集
    概述和組件說明對於Kubernetes的日誌採收集,目前官方現在比較推薦的日誌收集解決方案是 Elasticsearch、Fluentd 和 Kibana(EFK)技術棧。Elasticsearch 是一個實時的、分布式的可擴展的搜尋引擎,允許進行全文、結構化搜索,它通常用於索引和搜索大量日誌數據,也可用於搜索許多不同類型的文檔。
  • EFK收集docker 20.10的日誌
    在去年的時候做過一個測試,把docker19.03的log-driver類型設置為fluentd後,docker19.03的日誌會通過
  • Elasticsearch(三):實戰
    的核心概念進行比較詳細的介紹,但是在實際生產中我們如何使用elasticsearch呢?本篇文章我們先介紹一些elasticsearch常見的使用方法,然後通過一個實際的例子來加深對elasticsearch使用的理解。這個實際例子是網站上收集的用戶點擊菜單的行為日誌數據存儲在elasticsearch上,並可以通過工具可以通過一些圖表來分析用戶的行為。總體的目標:滿足多個維度圖表的查看,索引可以定期歸檔或者存儲不用人工幹預。
  • ELK(Elasticsearch + Logstash + Kibana) 日誌分析平臺
    elasticsearch_url: "http://localhost:9200" # preserve_elasticsearch_host true will send the hostname specified in `elasticsearch`.
  • 記錄一下Elasticsearch+Filebeat+Kibana搭建過程(單節點)
    ,這種方式會有以下弊端:效率太慢,需要不停的連接伺服器日誌文件本身對條件篩選並不友好需要查看日誌的人員對linux系統有些許熟悉如果涉及分布式服務系統,需要同時查看多個服務的日誌才能找到對應一條請求的整體日誌日誌無法做整體的統計日誌收集系統介紹(Elasticsearch+Filebeat+Kibana
  • 收集kubernetes控制臺日誌及元數據(fluent-bit+es+kibana搭建)
    yaml目錄:kubernetes/tree/master/cluster/addons/fluentd-elasticsearch> 修改kibana-deployment.yaml的配置信息env:  - name: ELASTICSEARCH_URL    value: http://10.151.33.87:30565    #  - name
  • Elasticsearch&Kibana從6.0升級到7.9的踩坑全過程
    ,加上工欲善其事必先利其器的古訓,喜新厭舊的人之常情終於戰勝了懶惰保守的觀望思維,於是近期將elasticsearch&kibana升級提上日程。由於我們公司是elasticsearch&kibana的重度用戶,而且絕大多數有價值的數據都存在elasticsearch中,所以就先在一個單機版本的elasticsearch上進行試驗填坑,成功後再複製到集群上,這也就是本文的來源。
  • ​打開ElasticSearch、kibana、logstash的正確方式
    作者:玩世不恭的Coder時間:2020-03-08說明:原創不易,本文為原創文章,未經允許不可轉載,轉載前請聯繫作者打開ElasticSearch、kibana、logstash的正確方式前言一、ELK系統的搭建Elasticsearch的安裝安裝kibana安裝logstash二、基於Logstash對Elasticsearch索引庫中數據的導入和導出使用
  • ELK教程1:ElasticSearch集群的部署
    做積極的人,而不是積極廢人在分布式系統中,應用數量眾多,應用調用鏈複雜,常常使用ELK作為日誌收集、分析和展示的組件。
  • Elastic App Search初體驗
    開發人員通過AppSearch提供的Api降數據提交給AppSearch,AppSearch富化數據並索引到Elasticsearch,客戶可以在網站或App等各種端進行數據的檢索;了解了AppSearch之後,接下來我們進行實戰演練。
  • elasticsearch和kibana的保姆級安裝教程
    目錄導航為什麼使用docker容器部署這些應用elasticsearch安裝安裝kibana安裝ik分詞器插件安裝elasticsearch-head插件參考文獻>為什麼使用docker容器部署這些應用什麼是dockerdocker是一種容器技術,可對軟體運行環境進行封裝,docker容器和虛擬機模型類似,區別在於容器的運行不會獨佔作業系統,適應了雲計算時代按需配置資源的模式。
  • 【小白必看】用logstash將日誌保存到elasticsearch中
    使用logstash,可以將程序運行日誌,索引到elasticsearch中,然後使用kibana,可以方便查看日誌。
  • 容器部署日誌分析平臺ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
    ELK日誌分析平臺  ELK日誌分析系統是Logstash、Elastcsearch、Kibana開源軟體的集合,對外是作為一個日誌管理系統的開源方案,它可以從任何來源、任何格式進行日誌搜索、分析與可視化展示。1.ELK日誌分析系統組成  elasticsearch (es) :通過搭建群集;存儲日誌數據,索引日誌數據。
  • ElasticSearch性感體驗
    Logstash主要是用來日誌的搜集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往Elasticsearch上去。Filebeat是本地文件的日誌數據採集器。