JavaShuo
  • 欄目
  • 標籤

Elasticsearch+Logstash+Kibana搭建分佈式日誌平臺

時間  2020-06-04
標籤 elasticsearch+logstash+kibana elasticsearch logstash kibana 搭建 分佈式 日誌 平臺 欄目 日誌分析 简体版
原文   原文鏈接

1、前言

編譯安裝html

一、ELK簡介

下載相關安裝包地址:https://www.elastic.co/cn/downloadsjava

ELK是Elasticsearch+Logstash+Kibana的簡稱node

  • ElasticSearch是一個基於Lucene的分佈式全文搜索引擎,提供 RESTful API進行數據讀寫linux

  • Logstash是一個收集,處理和轉發事件和日誌消息的工具nginx

  • Kibana是Elasticsearch的開源數據可視化插件,爲查看存儲在ElasticSearch提供了友好的Web界面,並提供了條形圖,線條和散點圖,餅圖和地圖等分析工具

總的來講,ElasticSearch負責存儲數據,Logstash負責收集日誌,並將日誌格式化後寫入ElasticSearch,Kibana提供可視化訪問ElasticSearch數據的功能。redis

二、ELK工做流

ELK工做流

應用將日誌按照約定的Key寫入Redis,Logstash從Redis中讀取日誌信息寫入ElasticSearch集羣。Kibana讀取ElasticSearch中的日誌,並在Web頁面中以表格/圖表的形式展現。shell

2、準備工做

一、服務器&軟件環境說明

  • 服務器

一共準備3臺CentOS7 Serverapache

服務器名 IP 說明
es1 192.168.1.31 部署ElasticSearch主節點
es2 192.168.1.32 部署ElasticSearch從節點
elk 192.168.1.21 部署Logstash + Kibana + Redis

這裏爲了節省,只部署2臺Elasticsearch,並將Logstash + Kibana + Redis部署在了一臺機器上。
若是在生產環境部署,能夠按照本身的需求調整。json

  • 軟件環境
項 說明
Linux Server CentOS 7
Elasticsearch 7.0.1
Logstash 7.0.1
Kibana 7.0.1
Redis 4.0
JDK 1.8

二、ELK環境準備

因爲Elasticsearch、Logstash、Kibana均不能以root帳號運行。
可是Linux對非root帳號可併發操做的文件、線程都有限制。
因此,部署ELK相關的機器都要調整:segmentfault

  • 修改文件限制
# 修改系統文件 vi /etc/security/limits.conf #增長的內容 * soft nofile 65536 * hard nofile 65536 * soft nproc 2048 * hard nproc 4096 
  • 調整進程數
#修改系統文件 vi /etc/security/limits.d/20-nproc.conf #調整成如下配置 * soft nproc 4096 root soft nproc unlimited 
  • 調整虛擬內存&最大併發鏈接
#修改系統文件 vi /etc/sysctl.conf #增長的內容 vm.max_map_count=655360 fs.file-max=655360 

以上操做重啓系統後生效

reboot 
  • JDK8安裝

CentO安裝JDK8:https://ken.io/note/centos-java-setup

  • 建立ELK專用用戶
useradd elk
su elk
  • 建立ELK相關目錄並賦權
#建立ELK 數據目錄 mkdir /home/elsearch/data #建立ELK 日誌目錄 mkdir /home/elsearch/logs #更改目錄Owner chown -R elk:elk /home/elsearch/data
chown -R elk:elk /home/elsearch/logs
  • 下載ELK包並解壓
    https://www.elastic.co/downloads
#打開文件夾 cd /home/download #下載 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1.tar.gz wget https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz wget wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.1-linux-x86_64.tar.gz #解壓 tar -zvxf elasticsearch-7.0.1.tar.gz tar -zvxf logstash-7.0.1.tar.gz tar -zvxf kibana-7.0.1-linux-x86_64.tar.gz 

3、Elasticsearch 部署

本次一共要部署兩個Elasticsearch節點,全部文中沒有指定機器的操做都表示每一個Elasticsearch機器都要執行該操做

一、準備工做

  • 移動Elasticsearch到統一目錄
#移動目錄 mv /home/download/elasticsearch-7.0.1 /usr/elk #賦權 chown -R elk:elk /usr/elk/elasticsearch-7.0.1/ 
  • 開放端口
#增長端口 firewall-cmd --add-port=9200/tcp --permanent firewall-cmd --add-port=9300/tcp --permanent #從新加載防火牆規則 firewall-cmd --reload 
 
  
 

二、Elasticsearch節點配置

  • 修改配置
#打開目錄 cd /usr/elk/elasticsearch-7.0.1 #修改配置 vi config/elasticsearch.yml 
  • 主節點配置(192.168.1.31)
cluster.name: es 
node.name: es1
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.1.31
http.port: 9200
transport.tcp.port: 9300
node.master: true node.data: true discovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"] discovery.zen.minimum_master_nodes: 1 
  • 從節點配置(192.168.1.32)
cluster.name: es 
node.name: es2
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.1.32
http.port: 9200
transport.tcp.port: 9300
node.master: false node.data: true discovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"] discovery.zen.minimum_master_nodes: 1 
  • 配置項說明
項 說明
cluster.name 集羣名
node.name 節點名
path.data 數據保存目錄
path.logs 日誌保存目錄
network.host 節點host/ip
http.port HTTP訪問端口
transport.tcp.port TCP傳輸端口
node.master 是否容許做爲主節點
node.data 是否保存數據
discovery.zen.ping.unicast.hosts 集羣中的主節點的初始列表,當節點(主節點或者數據節點)啓動時使用這個列表進行探測
discovery.zen.minimum_master_nodes 主節點個數

三、Elasticsearch啓動&健康檢查

  • 啓動
#進入elasticsearch根目錄 cd /usr/elk/elasticsearch-7.0.1 #啓動 ./bin/elasticsearch 
  • 查看健康狀態
curl http://192.168.1.31:9200/_cluster/health

若是返回status=green表示正常

{
  "cluster_name": "esc", "status": "green", "timed_out": false, "number_of_nodes": 2, "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 } 

4、Logstash 部署

一、準備工做

  • 部署Redis

Redis4 安裝與配置:https://ken.io/note/centos7-redis4-setup
因爲本次核心是ELK搭建,因此ken.io偷懶,Redis沒有部署集羣,採用的單節點。

  • 移動Logstash到統一目錄
#移動目錄 mv /home/download/logstash-6.0.0 /usr/elk #賦權 chown -R elk:elk /usr/elk/logstash-6.0.0/ 
  • 切換帳號
#帳號切換到 elk su - elk 
  • 數據&日誌目錄
#建立Logstash主目錄 mkdir /elk/logstash #建立Logstash數據目錄 mkdir /elk/logstash/data #建立Logstash日誌目錄 mkdir /elk/logstash/logs 

二、Logstash配置

  • 配置數據&日誌目錄
#打開目錄 cd /usr/elk/logstash-6.0.0 #修改配置 vi config/logstash.yml #增長如下內容 path.data: /elk/logstash/data path.logs: /elk/logstash/logs 
  • 配置Redis&Elasticsearch
vi config/input-output.conf

#配置內容 input { redis { data_type => "list" key => "logstash" host => "192.168.1.21" port => 6379 threads => 5 codec => "json" } } filter { } output { elasticsearch { hosts => ["192.168.1.31:9200","192.168.1.32:9200"] index => "logstash-%{type}-%{+YYYY.MM.dd}" document_type => "%{type}" } stdout { } } 

該配置就是從redis中讀取數據,而後寫入指定的elasticsearch

Redis核心配置項說明:

配置項 說明
data_type => 「list」 數據類型爲list
key => 「logstash」 緩存key爲:logstash
codec => 「json」 數據格式爲:json
  • root用戶啓動
#進入Logstash根目錄 cd /usr/elk/logstash-6.0.0 #啓動 ./bin/logstash -f config/input-output.conf 

啓動成功後,在啓動輸出的最後一行會看到以下信息:

[INFO ][logstash.pipeline ] Pipeline started {"pipeline.id"=>"main"} [INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>["main"]} 

5、Kibana 部署

一、準備工做

  • 移動Kibana到統一目錄
#移動目錄 mv /home/download/kibana-6.0.0-linux-x86_64 /usr/elk/kibana-7.0.1 #賦權 chown -R elk:elk /usr/elk/kibana-7.0.1/ 
  • 開放端口
#增長端口 firewall-cmd --add-port=5601/tcp --permanent #從新加載防火牆規則 firewall-cmd --reload 
  • 切換帳號
#帳號切換到 elk su - elk 

三、Kibana配置與訪問測試

  • 修改配置
#進入kibana-6.0.0根目錄 cd /usr/elk/kibana-7.0.1 #修改配置 vi config/kibana.yml #增長如下內容 server.port: 5601 server.host: "192.168.1.21" elasticsearch.hosts: '["http://192.168.1.31:9200"]' 
  • 啓動
#進入kibana-7.0.1根目錄 cd /usr/elk/kibana-7.0.1 #啓動 ./bin/kibana 
  • 訪問

瀏覽器訪問: 192.168.1.21:5601

Unable to fetch mapping. Do you have indices matching the pattern

警告提示:No default index pattern. You must select or create one to continue.
錯誤提示:Unable to fetch mapping. do you have indices matching the pattern?
不用擔憂,這是由於尚未寫入日誌

6、測試

一、日誌寫入

日曆寫入的話,寫入到logstash監聽的redis便可。
數據類型以前在/usr/elk/logstash-7.0.1/config/input-uput.conf中有配置

  • redis命令方式
#啓動redis客戶端 #執行如下命令 lpush logstash '{"host":"127.0.0.1","type":"logtest","message":"hello"}' 
  • Java代碼批量寫入(引入Jedis)
Jedis jedis = new Jedis("192.168.1.21", 6379); for (int i = 0; i < 1000; i++) { jedis.lpush("logstash", "{\"host\":\"127.0.0.1\",\"type\":\"logtest\",\"message\":\"" + i + "\"}"); } 

二、Kibana使用

瀏覽器訪問:192.168.1.21:5601

此時會提示: Configure an index pattern
Configure an index pattern
直接點擊create便可

瀏覽器訪問:192.168.1.21:5601/app/kibana#/discover 便可查看日誌

ELK Kibana Query

大功告成!

7、備註

一、Kibana使用教程

  • http://www.javashuo.com/article/p-ogjmtkhn-cs.html

二、 ELK開機啓動

ELK開機啓動,須要學習下如下知識

  • nohup命令使用:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html
  • 自定義系統服務,能夠參考Redis的開機啓動:https://ken.io/note/centos7-redis4-setup
相關文章
  • 1. ELK日誌分佈式日誌平臺搭建
  • 2. ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分佈式日誌平臺
  • 3. Elasticsearch+Logstash+Kibana搭建分佈式日誌平臺
  • 4. 分佈式平臺搭建
  • 5. 搭建 ELK 日誌平臺
  • 6. ELK日誌平臺搭建
  • 7. 搭建ELK日誌分析平臺
  • 8. 搭建日誌分析平臺(ELK)
  • 9. ELK日誌分析平臺的搭建
  • 10. ELK 日誌分析平臺搭建
  • 更多相關文章...
  • • ionic 平臺 - ionic 教程
  • • Web Services 平臺元素 - Web Services 教程
  • • 再有人問你分佈式事務,把這篇扔給他
  • • 常用的分佈式事務解決方案
相關標籤/搜索
    gitlab平臺的搭建 搭建 分佈式 分佈式鎖 分佈式RPC 日誌 平臺 建平 臺式 分佈 日誌分析 系統架構 網站建設指南 NoSQL教程 Thymeleaf 教程 建議 設計模式 委託模式
0
分享到微博 分享到微信 分享到QQ
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
  • 1. 如何將PPT某一頁幻燈片導出爲高清圖片
  • 2. Intellij IDEA中使用Debug調試
  • 3. build項目打包
  • 4. IDEA集成MAVEN項目極簡化打包部署
  • 5. eclipse如何導出java工程依賴的所有maven管理jar包(簡單明瞭)
  • 6. 新建的Spring項目無法添加class,依賴下載失敗解決:Maven環境配置
  • 7. 記在使用vue-cli中使用axios的心得
  • 8. 分享提高自己作品UI設計形式感的幾個小技巧!
  • 9. 造成 nginx 403 forbidden 的幾種原因
  • 10. AOP概述(什麼是AOP?)——Spring AOP(一)
本站公眾號
   歡迎關注本站公眾號,獲取更多信息
相關文章
  • 1. ELK日誌分佈式日誌平臺搭建
  • 2. ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分佈式日誌平臺
  • 3. Elasticsearch+Logstash+Kibana搭建分佈式日誌平臺
  • 4. 分佈式平臺搭建
  • 5. 搭建 ELK 日誌平臺
  • 6. ELK日誌平臺搭建
  • 7. 搭建ELK日誌分析平臺
  • 8. 搭建日誌分析平臺(ELK)
  • 9. ELK日誌分析平臺的搭建
  • 10. ELK 日誌分析平臺搭建
>>更多相關文章<<
聯繫我們 最近搜索 最新文章 沪ICP备13005482号-10 MyBatis教程 SQL 教程 MySQL教程 Java 教程 Thymeleaf 教程 Hibernate教程 Spring教程 Redis教程