1. 程式人生 > >一步一步搭建ELK日誌處理叢集(自己做過測試)

一步一步搭建ELK日誌處理叢集(自己做過測試)

下面的linux版本用的是centos 7的,用centos 6.5有可能出現問題。

ELK叢集搭建手冊

一、   環境準備:

三臺Linux伺服器,ip地址分別為:

192.168.25.30

192.168.25.31

192.168.25.32

角色劃分:

3臺機器全部安裝jdk1.8,因為elasticsearch是java開發的

3臺全部安裝elasticsearch (後續都簡稱為es)

192.168.25.30作為主節點

192.168.25.31以及192.168.25.32作為資料節點

主節點上需要安裝kibana

在192.168.25.31上安裝 logstash

在192.168.25.32上安裝filebeat

ELK版本資訊:

Elasticsearch-6.4.2

logstash-6.4.2

kibana-6.4.2

filebeat-6.4.2

配置三臺機器的hosts檔案內容如下:

$ vim /etc/hosts

192.168.25.30 data-node-0

192.168.25.31 data-node-1

192.168.25.32 data-node-2

然後三臺機器都得關閉防火牆或清空防火牆規則。

二、   安裝java環境

安裝包版本:jdk-8u25-linux-x64.tar.gz

#tar -zxvf jdk-8u25-linux-x64.tar.gz

#cd jdk1.8.0_25/

#mkdir –p /app/jdk

#cp -r ../jdk1.8.0_25 /app/jdk

#vim /etc/profile

在最後插入如下幾行:

export JAVA_HOME=/app/jdk/jdk1.8.0_25

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar

檢查安裝情況:

# source /etc/profile

# java –version

java version "1.8.0_25"

Java(TM) SE Runtime Environment (build 1.8.0_25-b17)

Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

#javac

Usage: javac <options> <source files>

where possible options include:

  -g                         Generate all debugging info

  -g:none                    Generate no debugging info

  -g:{lines,vars,source}     Generate only some debugging info

  -nowarn                    Generate no warnings

  -verbose                   Output messages about what the compiler is doing

  -deprecation               Output source locations where deprecated APIs are used

  -classpath <path>          Specify where to find user class files and annotation processors

  -cp <path>                 Specify where to find user class files and annotation processors

  -sourcepath <path>         Specify where to find input source files

  -bootclasspath <path>      Override location of bootstrap class files

  -extdirs <dirs>            Override location of installed extensions

  -endorseddirs <dirs>       Override location of endorsed standards path

  -proc:{none,only}          Control whether annotation processing and/or compilation is done.

  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process

  -processorpath <path>      Specify where to find annotation processors

  -parameters                Generate metadata for reflection on method parameters

  -d <directory>             Specify where to place generated class files

  -s <directory>             Specify where to place generated source files

  -h <directory>             Specify where to place generated native header files

  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files

  -encoding <encoding>       Specify character encoding used by source files

  -source <release>          Provide source compatibility with specified release

  -target <release>          Generate class files for specific VM version

  -profile <profile>         Check that API used is available in the specified profile

  -version                   Version information

  -help                      Print a synopsis of standard options

  -Akey[=value]              Options to pass to annotation processors

  -X                         Print a synopsis of nonstandard options

  -J<flag>                   Pass <flag> directly to the runtime system

  -Werror                    Terminate compilation if warnings occur

  @<filename>                Read options and filenames from file

安裝java成功

三、   安裝Elasticsearch(簡稱ES)

安裝ES:

下載安裝包elasticsearch-6.4.2.rpm

#cd /app

#rpm -ivh elasticsearch-6.4.2.rpm

warning: elasticsearch-6.4.2.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY

Preparing...                          ################################# [100%]

Creating elasticsearch group... OK

Creating elasticsearch user... OK

Updating / installing...

   1:elasticsearch-0:6.4.2-1          ################################# [100%]

### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd

 sudo systemctl daemon-reload

 sudo systemctl enable elasticsearch.service

### You can start elasticsearch service by executing

 sudo systemctl start elasticsearch.service

Created elasticsearch keystore in /etc/elasticsearch

配置ES:

elasticsearch配置檔案在/etc/elasticsearch/下和/etc/sysconfig/elasticsearch這個檔案,其中elasticsearch.yml 檔案用於配置叢集節點等相關資訊的,elasticsearch 檔案則是配置服務本身相關的配置,例如某個配置檔案的路徑以及java的一些路徑配置什麼的。

# cd /etc/elasticsearch/

# ll

total 28

-rw-rw---- 1 root elasticsearch  207 Nov  5 11:48 elasticsearch.keystore

-rw-rw---- 1 root elasticsearch 2869 Sep 26 21:39 elasticsearch.yml

-rw-rw---- 1 root elasticsearch 3009 Sep 26 21:39 jvm.options

-rw-rw---- 1 root elasticsearch 6380 Sep 26 21:39 log4j2.properties

-rw-rw---- 1 root elasticsearch  473 Sep 26 21:39 role_mapping.yml

-rw-rw---- 1 root elasticsearch  197 Sep 26 21:39 roles.yml

-rw-rw---- 1 root elasticsearch    0 Sep 26 21:39 users

-rw-rw---- 1 root elasticsearch    0 Sep 26 21:39 users_roles

# ll /etc/sysconfig/elasticsearch

-rw-rw---- 1 root elasticsearch 1613 Sep 26 21:39 /etc/sysconfig/elasticsearch

在每個節點上建立資料data和logs目錄:

#mkdir -p /app/elk/elasticsearch/data

#mkdir -p /app/elk/elasticsearch/logs

#chown -R elasticsearch /app/elk/elasticsearch/

開始配置叢集節點,在主節點 192.168.25.30 上編輯配置檔案:

# vim /etc/elasticsearch/elasticsearch.yml

新增或修改以下內容(沒有的增加,存在的修改):

path.data: /app/elk/elasticsearch/data

path.logs: /app/elk/elasticsearch/logs

cluster.name: elk-test  # 叢集中的名稱

node.name: data-node-0  # 該節點名稱

node.master: true  # 意思是該節點是否可選舉為主節點

node.data: true   # 表示這不是資料節點

network.host: 0.0.0.0  # 監聽全部ip,在實際環境中應為一個安全的ip

http.port: 9200   # es服務的埠號

discovery.zen.ping.unicast.hosts: ["192.168.25.30", "192.168.25.31", "192.168.25.32"]   # 配置自動發現

然後在從節點192.168.25.31、32上編輯配置檔案,新增或修改如下內容:

path.data: /app/elk/elasticsearch/data

path.logs: /app/elk/elasticsearch/logs

cluster.name: elk-test  # 叢集中的名稱

node.name: data-node-?  # 該節點名稱,與前面配置hosts保持一致

node.master: true  # 意思是該節點是否可選舉為主節點

node.data: true   # 表示這不是資料節點

network.host: 0.0.0.0  # 監聽全部ip,在實際環境中應為一個安全的ip

http.port: 9200   # es服務的埠號

discovery.zen.ping.unicast.hosts: ["192.168.25.30", "192.168.25.31", "192.168.25.32"]   # 配置自動發現

修改 /etc/sysconfig/elasticsearch中的java路徑

# vim /etc/sysconfig/elasticsearch

JAVA_HOME=/app/jdk/jdk1.8.0_25

完成以上的配置之後,到主節點上,啟動es服務, 主節點啟動完成之後,再啟動其他節點的es服務:

# systemctl start elasticsearch.service

# systemctl status elasticsearch.service

● elasticsearch.service - Elasticsearch

   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)

   Active: active (running) since Mon 2018-11-05 14:30:56 CST; 2s ago

     Docs: http://www.elastic.co

 Main PID: 522372 (java)

   CGroup: /system.slice/elasticsearch.service

           ├─522372 /app/jdk/jdk1.8.0_25/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -...

           └─522574 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

Nov 05 14:30:56 cnsz22pl1030 systemd[1]: Started Elasticsearch.

Nov 05 14:30:56 cnsz22pl1030 systemd[1]: Starting Elasticsearch...

安裝成功

檢查安裝好的叢集健康狀態:

# curl '192.168.25.30:9200/_cluster/health?pretty'

{

  "cluster_name" : "master-node",

  "status" : "green",

  "timed_out" : false,

  "number_of_nodes" : 3,

  "number_of_data_nodes" : 2,

  "active_primary_shards" : 0,

  "active_shards" : 0,

  "relocating_shards" : 0,

  "initializing_shards" : 0,

  "unassigned_shards" : 0,

  "delayed_unassigned_shards" : 0,

  "number_of_pending_tasks" : 0,

  "number_of_in_flight_fetch" : 0,

  "task_max_waiting_in_queue_millis" : 0,

  "active_shards_percent_as_number" : 100.0

}

檢視叢集的詳細資訊:

# curl '192.168.25.30:9200/_cluster/state?pretty'

四、   安裝kibana

Kibana只需要在主節點192.168.25.30上安裝即可,由於kibana是使用node.js開發的,所以程序名稱為node。

下載RPM安裝包:kibana-6.4.2-x86_64.rpm

如果主機可以上外網,也可以執行以下命令:

# cd /app

# rpm -ivh kibana-6.4.2-x86_64.rpm

warning: kibana-6.4.2-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

   1:kibana-6.4.2-1                   ################################# [100%]

配置kibana

# vim /etc/kibana/kibana.yml

新增或修改如下項:

server.port: 5601  # 配置kibana的埠

server.host: 192.168.25.30  # 配置監聽ip

elasticsearch.url: "http://192.168.25.30:9200"  # 配置es伺服器的ip,如果是叢集則配置該叢集中主節點的ip

logging.dest: /var/log/kibana.log  # 配置kibana的日誌檔案路徑,不然預設是messages裡記錄日誌

由於我們配置了日誌路徑,所以需要建立日誌檔案:

# touch /var/log/kibana.log

# chmod 777 /var/log/kibana.log

啟動kibana服務,並檢查程序和監聽埠:

# systemctl start kibana

# systemctl status kibana

● kibana.service - Kibana

Loaded: loaded (/etc/systemd/system/kibana.service; disabled; vendor preset: disabled)

 Active: active (running) since Mon 2018-11-05 15:09:00 CST; 4s ago

 Main PID: 146989 (node)

 CGroup: /system.slice/kibana.service

           └─146989 /usr/share/kibana/bin/../node/bin/node --no-warnings /usr/share/kibana/bin/../src/cli -c /etc/kibana/kibana.yml

Nov 05 15:09:00 cnsz22pl1030 systemd[1]: Started Kibana.

Nov 05 15:09:00 cnsz22pl1030 systemd[1]: Starting Kibana...

# ps aux |grep kibana

kibana   146989 47.0  0.0 1349520 269736 ?      Ssl  15:09   0:29 /usr/share/kibana/bin/../node/bin/node --no-warnings /usr/share/kibana/bin/../src/cli -c /etc/kibana/kibana.yml

root     150923  0.0  0.0 112644   952 pts/1    R+   15:10   0:00 grep --color=auto kibana

#netstat -lntp |grep 5601

tcp        0      0 127.0.0.1:5601          0.0.0.0:*               LISTEN      146989/node

到此我們的kibana就安裝完成了,很簡單,接下來就是安裝logstash,不然kibana是沒法用的。

五、   安裝logstash

在192.168.25.31上安裝logstash,注意目前logstash不支援JDK1.9:

下載RPM安裝包logstash-6.4.2.rpm,下載地址如下:

如果主機支援外網,可直接執行以下命令下載:

# rpm -ivh logstash-6.4.2.rpm

warning: logstash-6.4.2.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

   1:logstash-1:6.4.2-1               ################################# [100%]

Using provided startup.options file: /etc/logstash/startup.options

Successfully created system startup script for Logstash

修改環境變數

# vim /etc/default/logstash

新增以下項:

JAVA_HOME=/app/jdk/jdk1.8.0_25

修改日誌儲存路徑:

#mkdir -p /app/elk/logstash/data

#mkdir -p /app/elk/logstash/logs

#chown -R logstash /app/elk/logstash/

修改配置檔案

# vim /etc/logstash/logstash.yml

將如下項的值修改為如下:

path.data: /app/elk/logstash/data

http.host: "192.168.25.31"

path.logs: /app/elk/logstash/logs

#

安裝完之後,先不要啟動服務,先配置logstash收集syslog日誌:

#vim /etc/logstash/conf.d/syslog.conf

加入如下內容:

input {  # 定義日誌源

  syslog {

    type => "system-syslog"  # 定義型別

    port => 10514    # 定義監聽埠

  }

}

  • output {  # 定義日誌輸出

  elasticsearch {

    hosts => ["192.168.25.30:9200","192.168.25.31:9200","192.168.25.32:9200"]  # 定義es伺服器的ip

    index => "system-syslog-%{+YYYY.MM.dd}" # 定義索引

  }

}

檢測配置檔案是否有錯:

# cd /usr/share/logstash/bin

# ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit

Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties

[2018-11-05T16:20:07,997][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified

Configuration OK

[2018-11-05T16:20:09,448][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

Configuration OK  # 為ok則代表配置檔案沒有問題

命令說明:

  • --path.settings 用於指定logstash的配置檔案所在的目錄
  • -f 指定需要被檢測的配置檔案的路徑
  • --config.test_and_exit 指定檢測完之後就退出,不然就會直接啟動了

配置logstash伺服器的ip以及配置的監聽埠:

# vim /etc/rsyslog.conf

#### RULES ####

*.* @@192.168.25.31:10514

重啟rsyslog,讓配置生效:

# systemctl restart rsyslog

啟動logstash並檢查服務狀態:

# systemctl start logstash

# systemctl status logstash

六、   安裝filebeats

在192.168.25.32上安裝filebeat。

下載RPM包filebeat-6.4.2-x86_64.rpm,下載地址:

如果安裝的主機可以直接上外網,也可以使用如下命令下載:

下載完成執行命令安裝

#rpm -ivh filebeat-6.4.2-x86_64.rpm

warning: filebeat-6.4.2-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

   1:filebeat-6.4.2-1                 ################################# [100%]

安裝完成後編輯配置檔案:

# vim /etc/filebeat/filebeat.yml

- type: log

# Change to true to enable this input configuration.

  enabled: true

#================== Kibana=====================================

setup.kibana:

  host: "192.168.25.30:5601"

#==================== Outputs =================================

# Configure what output to use when sending the data collected by the beat.

#-------------------------- Elasticsearch output ------------------------------

output.elasticsearch:

# Array of hosts to connect to.

  hosts: ["192.168.25.30:9200","192.168.25.31:9200","192.168.25.32:9200"]

以下配置可選,根據實際需要配置

#----------------------------- Logstash output --------------------------------

#output.logstash:

# The Logstash hosts

  #hosts: ["192.168.25.31:5044"]

啟動服務:

#systemctl start filebeat.service

檢視服務啟動狀態

#systemctl status filebeat.service

檢視elasticsearch

curl '192.168.25.30:9200/_cat/indices?v'

health status index                     uuid                   pri rep docs.count docs.deleted store.size pri.store.size

green  open   system-syslogs-2018.11.06 9-WQSrX7Su2FeORk5XM5-w   5   1        614            0    924.1kb        406.5kb

green  open   filebeat-6.4.2-2018.11.06 gYOcxCK8THaJ57AWAUbK3Q   3   1       8039            0      2.7mb          1.3mb

相關推薦

搭建ELK日誌處理叢集(自己測試)

下面的linux版本用的是centos 7的,用centos 6.5有可能出現問題。 ELK叢集搭建手冊 一、   環境準備: 三臺Linux伺服器,ip地址分別為: 192.168.25.30 192.168.25.31 192.168.25.32 角色劃

搭建ELK日誌分析系統()-Elasticsearch安裝

前言 搭建ELK系統有兩種方式 1、元件獨立安裝(更深入瞭解ELK系統的工作流程) 2、使用docker容器安裝(這種方式配置更簡單,快捷方便) 本系列文章使用元件獨立安裝的方式,如果你想使用docker容器安裝,請跳過本教程 環境需求 本教

Linux搭建ELK日誌收集系統:FIlebeat+Redis+Logstash+Elasticse

uri 對數 exp 取數 網速 docker useradd 通過 演示 Centos7部署ELK日誌收集系統 一、ELK概述: ELK是一組開源軟件的簡稱,其包括Elasticsearch、Logstash 和 Kibana。ELK最近幾年發展迅速,已經成為目前最流行的

搭建ELK日誌分析平臺(下)—— 搭建kibana和logstash伺服器

轉:http://blog.51cto.com/zero01/2082794 筆記內容:搭建ELK日誌分析平臺——搭建kibana和logstash伺服器筆記日期:2018-03-03 27.6 安裝kibana 27.7 安裝logstash 27.8 配置logstas

搭建ELK日誌分析平臺(上)—— ELK介紹及搭建 Elasticsearch 分散式叢集

轉:http://blog.51cto.com/zero01/2079879 筆記內容:搭建ELK日誌分析平臺(上)—— ELK介紹及搭建 Elasticsearch 分散式叢集筆記日期:2018-03-02 27.1 ELK介紹 27.2 ELK安裝準備工作 27.3 安

在Windows系統下搭建ELK日誌分析平臺

  2018年07月11日 22:29:45 民國周先生 閱讀數:35 再記錄一下elk的搭建,個人覺得挺麻煩的,建議還是在linux系統下搭建,效能會好一些,但我是在windows下搭建的,還是記錄一下吧,像我這種記性差的人還是得靠爛筆頭  

CentOS 7.x 搭建 ELK 日誌監控系統

一、ELK介紹      ELK簡介: ELK是三個開源軟體的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟體。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Fileb

在滴滴雲 DC2 雲伺服器上搭建 ELK 日誌採集系統

前段時間大學同學聚會,一個在讀的博士同學談到他們實驗室做實驗時,物理伺服器需要向老師申請且組內同學都共用那些機器。由於執行一些大資料和人工智慧的專案比較耗費資源,且對資源環境的隔離要求比較高,因而很多時候用機器還得排隊(畢竟學校經費和底層基礎設施沒有公司充裕),不是很方便。於是我就對他說到,

ubuntu16.04 快速搭建ELK日誌分析平臺

假如我們要在一臺伺服器上部署一個ssm應用,部署完,執行一段時間崩了。排查問題得時候,我們自然會想到檢視log4J日誌。可是,如果伺服器不止一個應用,而是好幾個呢,這當然可以檢視每個應用的log4J日誌。那如果不止一臺伺服器,而是好幾臺呢,難道還一個一個看?這顯

ELK日誌處理之使用logstash收集log4J日誌

介紹一下如何從Java工程中匯出log4J日誌到Logstash。 一、log4j基礎 不能免俗的官方介紹: Log4j 是一個使用 Java 語言編寫的,可靠、快速、靈活的日誌框架(API),使用 Apache Software License 授權。它被移植到 C

結合Docker快速搭建ELK日誌收集分析平臺

作者:馬哥Linux運維-Eason ELK Stack ELK (Elasticsearch + Logstash + Kibana),是一個開源的日誌收集平臺,用於收集各種客戶端日誌檔案在同一個平臺上面做資料分析。 Introduction Elasticsearch, 基於json分析搜尋引擎

ELK日誌處理之使用logstash收集log4J日誌 和log4j日誌properties配置

Log4j 主要由三部分組成: loggers:負責採集日誌資訊。 appenders:負責將日誌資訊釋出到不同地方。 layouts:負責以各種風格格式化日誌資訊。 建立maven工程,pom中匯入日誌依賴: <dependency> <

Windows下搭建ELK日誌分析平臺

ELK介紹 需求背景: 業務發展越來越龐大,伺服器越來越多 各種訪問日誌、應用日誌、錯誤日誌量越來越多,導致運維人員無法很好的去管理日誌 開發人員排查問題,需要到伺服器上查日誌,不方便 運營人員需要一些資料,需要我們運維到伺服器上分析日誌 為什麼要用到ELK: 一

Docker搭建ELK日誌監控

前言:Elasticsearch做日誌儲存、Logstash做日誌收集、Kibana介面展示 環境:MAC、Docker環境正常

【琴絃上、漫步】堅持把自己的每件事記錄下來,讓其變成種習慣。

姓名:李國冬 英文名:wintfru GitHub: 點選進入 Email:liguodongiot AT foxmail DOT com 學校:西南石油大學 學歷:本科 專注:Java、Hadoop、Elasticsearch、Spring等

搭建大資料處理叢集(Hadoop,Spark,Hbase)

搭建Hadoop叢集 配置每臺機器的 /etc/hosts保證每臺機器之間可以互訪。 120.94.158.190 master 120.94.158.191 secondMaster 1、建立hadoop使用者 先建立had

ELK日誌分析叢集部署筆記

ELK是什麼? E=ElasticSearch ,一款基於的Lucene的分散式搜尋引擎,我們熟悉的github,就是由ElastiSearch提供的搜尋,據傳已經有10TB+的資料量。 L=LogStash , 一款分散式日誌收集系統,支援多輸入源,並內建一些過濾操作,支

python 正確字串處理自己的坑)

不管是誰,只要處理過由使用者提交的調查資料,就能明白這種亂七八糟的資料是怎麼一回事。為了得到一組能用於分析工作的格式統一的字串,需要做很多事情:去除空白符、刪除各種標點符號、正確的大寫格式等。做法之一是使用內建的字串方法和正則表示式re模組: 一般寫法 states = [' Alabama ', 'Ge

一下搭建ELK叢集

ELK叢集搭建手冊 一、   環境準備: 三臺Linux伺服器,ip地址分別為: 192.168.25.30 192.168.25.31 192.168.25.32   角色劃分: 3臺機器全部安裝jdk1.8,因為elasticsearch是java開發的 3