1. 程式人生 > >EFK日誌蒐集demo

EFK日誌蒐集demo

以前的一些東西整理下。

E:Elasticsearch
F:Flume
K:Kafka
Flume是一個分散式的日誌聚合收集工具,可以從多個且不同型別的日誌源頭收集日誌。Flume的模型如下:
Source代表資料的源頭,channel暫存資料,sink為資料的流向。如下:
這裡寫圖片描述
多個flume代理的情況下,資料可以匯聚到同一個地方,如下:
這裡寫圖片描述
資料量多的時候,可能終端的資料處理壓力比較大,為了平衡資料生產的速度和處理速度,最好在資料生產和資料處理之間增加一個緩衝,為此使用Kafka。
Apache Kafka是一種分散式釋出-訂閱訊息系統。
Kafka的設計初衷是希望作為一個統一的資訊收集平臺,能夠實時的收集反饋資訊,並需要能夠支撐較大的資料量,且具備良好的容錯能力。
Kafka是一個典型的生產者消費者模型,生產者消費者模型的主要功能就是提供緩衝,平衡資料生產和使用的速率。
Kafka的模型如下:
這裡寫圖片描述


所以Flume負責收集資料,Kafka作為緩衝,消費者從kafka中取資料。就像是多個水管同時向池子中注水,水管從哪取水可以自己決定;同時也有多個水管從池子裡取水,水要流向哪裡也可以自己決定。
這裡寫圖片描述
Elasticsearch是一個基於Lucene的搜尋伺服器,提供了分散式的全文搜尋引擎,傳統的資料庫如果資料在PB(1024TB)級別的,搜尋會非常慢,而Elasticsearch支援PB級別的搜尋。
Elasticsearch的幾個概念:
Cluster:叢集,一個叢集下有多個節點。
Node:相同的叢集名的節點是一個叢集。
Index:Elasticsearch用來儲存資料的邏輯區域。
Document:文件,資料實體。
Document Type:文件的型別。
所以可以為了搜尋的方便,可以把kafka的資料存入Elasticsearch。
模型如下:
這裡寫圖片描述

現在建立一個簡單的日誌收集搜尋的demo:
jdk要求版本:1.7
①先簡單的捕獲異常並記錄,規範異常的記錄格式如下:記錄異常的各種資訊。因為elasticsearch的文件都採用json的格式,所以異常規範了扔到Elasticsearch裡。

{
          "localizedMessage": "分頁查詢Activity物件",
          "cause": "java.lang.NullPointerException",
          "mac": "",
          "type": "java.lang.RuntimeException",
          "extendedStackTrace
": [ { "author": "風中追風", "file": "ActivityManagerAction.java", "traceSeat": 1, "line": 202, "class": "com.cairh.xpe.coupons.backend.action.ActivityManagerAction", "method": "getActivityList" } ], "ip": "127.0.0.1", "message": "分頁查詢Activity物件", "time": "2017-10-19 09:25:07", "questParams": { "page": [ "1" ], "rtQryPage": [ "1" ], "activity_type": [ "2" ] }, "serverPort": 80, "thread": "http-apr-8080-exec-10", "remotePort": 55192, "URL": "http://hcsisap.xpe.com/xpe-products-coupons-backend/coupons/getActivityList.json", "timemillis": 1508376307761, "URI": "/xpe-products-coupons-backend/coupons/getActivityList.json" }

②匯入sapling-component-logstandard專案,且在要使用異常記錄的專案的pom檔案新增依賴:
這裡寫圖片描述

<dependency>
            <groupId>com.btp</groupId>
            <artifactId>sapling-component-logstandard</artifactId>
            <version>0.0.1-SNAPSHOT</version>
</dependency>

③啟動Flume例項:
這裡寫圖片描述
在bin目錄下執行cmd:flume-ng.cmd agent -conf ../conf -conf-file ../conf/flumeToKafka.conf -name a1
flumeToKafka.conf為啟動一個flume代理的配置檔案,可以配置flume的source、channel和sink,a1為代理名稱。比如
這裡寫圖片描述
配置source:代表從44444埠獲取資料。
這裡寫圖片描述
配置sink,傳資料到kafka的名為test的topic下。
這裡寫圖片描述
配置channel:本地的flume資料快取。
啟動代理之後:
這裡寫圖片描述
檢查一下上面配置的44444埠是否開啟:telnet localhost 44444,如果不是報未開啟,則說明flume代理成功啟動。
④啟動zookeeper,因為kafka依賴zookeeper,所以先啟動zookeeper:
執行zookeeper-3.4.9\bin\zkServer.cmd
這裡寫圖片描述
⑤啟動kafka:
Kafka目錄下啟動:.\bin\windows\kafka-server-start.bat .\config\server.properties
這裡寫圖片描述
上面的flume的sink的9092埠配置在producer.properties。
啟動一個消費者:
消費者(Kafka目錄下啟動):.\bin\windows\kafka-console-consumer.bat –zookeeper localhost:2181 –topic test
消費topic為test的資料:
這裡寫圖片描述
然後記錄日誌:
這裡寫圖片描述
檢視kafka消費端視窗:已經有異常訊息了。
這裡寫圖片描述
⑥準備將訊息送到elasticsearch中:
在backend的web.xml增加

`
<servlet-name>action</servlet-name>
<servlet-class>com.btp.logstandard.autoTask.KafkaComsumer</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>

啟動elasticsearch:elasticsearch-2.1.0\bin\elasticsearch.bat
elasticsearch-2.1.0\config\elasticsearch.yml可以配置叢集名稱和節點名稱。
開啟網頁:輸入:http://localhost:9200/?pretty`
這裡寫圖片描述
說明啟動成功。

啟動kibana:kibana-4.3.0-windows\bin\kibana.bat
開啟網頁輸入:http://localhost:5601/app/sense
這裡寫圖片描述
表示啟動kinaba成功。
⑦啟動web.xml改變的專案:
這裡寫圖片描述
如果如下說明啟動成功,現在可以往elasticsearch中放資料了。
再次呼叫
這裡寫圖片描述
Kafka消費視窗可看到:
這裡寫圖片描述
Console下(預設存到myexceptions索引下,型別定義為exception):
這裡寫圖片描述
說明資料存到elasticsearch中成功。
現在是要kinaba進行查詢:GET /myexceptions/exception/_search
這裡寫圖片描述
這裡寫圖片描述
說明資料儲存成功。
也可以從elasticsearch中將資料查出來:
這裡寫圖片描述
注:桌面上建立一個資料夾如下:用來存放flume的資料和kafka的日誌,配置檔案可配:
這裡寫圖片描述

相關推薦

EFK日誌蒐集demo

以前的一些東西整理下。 E:Elasticsearch F:Flume K:Kafka Flume是一個分散式的日誌聚合收集工具,可以從多個且不同型別的日誌源頭收集日誌。Flume的模型如下: Source代表資料的源頭,channel暫存資料

Docker(三十二)k8s EFK日誌蒐集

兩個檔案 1,fluentd-ed-configmap.yaml kind: ConfigMap apiVersion: v1 metadata:   name: fluentd-es-config-v0.1.6   namespa

日誌蒐集系統從ELK到EFK

為什麼做日誌系統 首先,什麼是日誌? 日誌就是程式產生的,遵循一定格式(通常包含時間戳)的文字資料。 通常日誌由伺服器生成,輸出到不同的檔案中,一般會有系統日誌、 應用日誌、安全日誌。這些日誌分散地儲存在不同的機器上。 通常當系統發生故障時,工程師需要登入到各個伺服器上,使用 grep

CentOS7 安裝EFK(elasticsearch、fluent、kibana)進行Docker下日誌蒐集

Fluentd並非是專用於日誌檔案收集的,而是一個通用的資訊收集、整理、轉發的流式資料處理工具,日誌收集只是它十分典型的一個運用場景。重要的是,Fluentd的日誌收集功能對容器支援十分完備,遠遠勝於Logstash等傳統日誌收集工具。一方面得益於Fluentd社群開發

OpenShift-EFK日誌管理

1.準備工作 思路: 在OpenShift容器平臺上以daemonset方式部署Fluentd收集各節點中的日誌。更改其配置讓日誌輸出到外部Elasticsearch中,最終通過Kibana展示。 資料:      Fluentd官方配置文件:https://docs.fl

ELK6.5 Nginx 日誌蒐集-03 kibana 安裝

node1:elasticsearch、kibana、logstash node2:filebeat 1、如前文,下載 kibana 6.5.0 版 安裝 # rpm -ivh kibana-6.5.0-x86_64.rpm 進入配置檔案目錄,修改配置檔案 #&

ELK6.5 Nginx 日誌蒐集-02 elasticsearch 安裝

node1:elasticsearch、kibana、logstash node2:filebeat 1,下載 elasticsearch 6.5.0 版本 (吐槽一下,我們線上部署的時候是6.5.0,寫文件的時候已經是6.5.2了,官網更新速度實在是太快了。) 2,安裝 #&

ELK6.5 Nginx 日誌蒐集-04 logstash 安裝

node1:elasticsearch、kibana、logstash node2:filebeat 1、如前文,下載 logstash 6.5.0 版 安裝 # rpm -ivh logstash-6.5.0-x86_64.rpm 進入配置檔案目錄,修改配置檔案

ELK6.5 Nginx 日誌蒐集-05 filebeat 安裝

node1:elasticsearch、kibana、logstash node2:filebeat 1、如前文,下載 filebeat 6.5.0 版 在 node2 節點安裝 filebeat 的安裝,執行,是不需要 jdk 環境的 # rpm -ivh fi

基於Fluentd的EFK日誌收集方案

關於系統日誌收集處理方案,其實有很多種,因為之前使用ES比較多,所以也認為ELK是一個不錯的解決方案,ELK(Elasticsearch + Logstash + Kibana)來管理日誌。Logstash是一個具有實時渠道能力的資料收集引擎,但和fluentd相比,它在效能

EFK 日誌實踐

一、前言       一提到日誌收集方案,大家第一個想到的肯定是ELK(Elasticsearch、Logstash、Kibana ),但Logstash依賴於JVM不管是效能還是簡潔性,都不是日誌收集agent的首選。       個人感覺一個好的agent應

kubernetes叢集EFK日誌框架部署

目標:在現有Kubernetes叢集中搭建EFK日誌框架,實現叢集日誌的儲存與展示環境:Kubernetes叢集(kubeadm方式部署)步驟:Kubernetes日誌架構概述->Fluentd日誌收集容器部署->Elasticsearch日誌儲存容器部署->

kubernetes 1.14安裝部署EFK日誌收集系統

closed display yam tab configMap .gz class fluent border 簡單介紹: EFK 組合插件是k8s項目的一個日誌解決方案,它包括三個組件:Elasticsearch, Fluentd, Kibana。相對於ELK這樣的架

android日誌蒐集原理及方案比較

說明: 本文只討論Log日誌,而不是應用的埋點日誌。 Android 日誌架構 用一張圖來了解Android Log的架構: 這裡涉及到三個程序: APP程序: 呼叫Log的介面打日誌,最終通過soctket通訊傳送給Logd程序 Logd程序:有一個緩衝區用於儲存日誌(環形緩衝區,當滿時會沖掉舊的日誌)

Kubernetes 中 搭建 EFK 日誌搜尋中心

簡介   Elastic 官方已經發布了Elasticsearch Operator ,簡化了 elasticsearch 以及 kibana的部署與升級,結合 fluentd-kubernetes-daemonset,現在在kubernetes 部署 EFK 已經非常方便。  

Spark日誌分析項目Demo(9)--常規性能調優

array ack 不一定 集合類型 -s 如果 一次 puts cluster 一 分配更多資源 分配更多資源:性能調優的王道,就是增加和分配更多的資源,性能和速度上的提升,是顯而易見的;基本上,在一定範圍之內,增加資源與性能的提升,是成正比的;寫完了一個復雜的spark

vue日誌demo,增刪改查的練習

日誌組 sum 必須 創建 pre 方法 prev 文件夾 edit # 安裝### 1. 確定電腦已裝node和npm``` node -v ``` ``` npm -v```出現版本號則說明電腦已經安裝好node和npm### 2. 創建一個基於webpack的項目 `

EFK收集Kubernetes應用日誌

mark grace 修改 info mode 選項 進度 pri ng- 本節內容: EFK介紹 安裝配置EFK 配置efk-rbac.yaml文件 配置 es-controller.yaml 配置 es-service.yaml 配置 fluentd-es-ds.y

OpenShift實戰(六):OpenShift日誌監控EFK

con check comment fig .net release api pull kibana 1、鏡像下載 為了防止安裝過程中由於鏡像下載緩慢導致自動部署失敗,所以首先提前下載好EFK鏡像。 docker pull openshift/origin-logging

springboot+ELK+logback日誌分析系統demo

之前寫的有點亂,這篇整理了一下搭建了一個簡單的ELK日誌系統 借鑑此部落格完成:https://blog.csdn.net/qq_22211217/article/details/80764568   準備環境:   centos7系統   安裝jdk1.8   去官網下載ELK,ELK