快速搭建ELK日志分析系統


   什么是ELK?
   通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,ELK是elastic公司研發的一套完整的日志收集、分析和展示的企業級解決方案,在這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:
  處理方式靈活:elasticsearch是實時全文索引,具有強大的搜索功能
  配置相對簡單:elasticsearch的API全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單
  
   什么是Elasticsearch:
  是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分布式可實現高可用、提供API接口,可以處理大規模日志數據,比如Nginx、Tomcat、系統日志等功能。
  Elasticsearch使用Java語言開發,是建立在全文搜索引擎ApacheLucene基礎之上的搜索引擎,https://lucene.apache.org/。
  Elasticsearch的特點:
  實時搜索、實時分析
  分布式架構、實時文件存儲
  文檔導向,所有對象都是文檔
  高可用,易擴展,支持集群,分片與復制
  接口友好,支持json
 
  什么是LogstashLogstash
  是一個具有實時傳輸能力的數據收集引擎,其可以通過插件實現日志收集和轉發,支持日志過濾,支持普通log、自定義json格式的日志解析,最終把經過處理的日志發送給elasticsearch。
   
 
  什么是kibana:
  Kibana為elasticsearch提供一個查看數據的web界面,其主要是通過elasticsearch的API接口進行數據查找,並進行前端數據可視化的展現,另外還可以針對特定格式的數據生成相應的表格、柱狀圖、餅圖等。
 
  
   為什么使用ELK?
  ELK組件在海量日志系統的運維中,可用於解決以下主要問題:
      -分布式日志數據統一收集,實現集中式查詢和管理
       -故障排查-安全信息和事件管理-報表功能
  ELK的好處:ELK組件在大數據運維系統中,主要可解決的問題如下:
    -日志查詢,問題排查,故障恢復,故障自愈
    -應用日志分析,錯誤報警
    -性能分析,用戶行為分析
 
一:elasticsearch集群部署:
  1.1:環境初始化:
      最小化安裝Centos 7.x/Ubuntu x86_64操作系統的虛擬機,vcpu 2,內存4G或更多,操作系統盤50G,主機名設置規則為linux-fairies1.exmaple.com,其中host1和host2為elasticsearch服務器,為保證效果特額外添加一塊單獨的數據磁盤大小為100G並格式化掛載到/data的目錄下,我的虛擬機配置信息如下
  
   有三台服務器同時安裝elasticsearch服務並搭建集群,三台服務器的IP分別為:192.168.37.16/192.168.37.17/192.168.37.18
1.1.1:主機名和磁盤掛載,
    三台主機的主機名分別設置為
      192.168.37.16    linux-fairies1
      192.168.37.17    linux-fairies2
      192.168.37.18    linux-fairies3
    在三台主機上分別設置主機名並重啟,見下圖
   
      
     在三台機器上分別格式化硬盤,具體做法見下圖
    
     查看硬盤的ID信息,使用命令blkid ,具體見下圖
  
     其中上圖/dev/sdb是我們自己手動添加的硬盤
  打開文件,掛載,
  
vim /etc/fstab

  在文件中添加掛載內容,見下圖,

  

   假如你掛載的文件不存在,就要先創建文件,如下圖創建文件夾
    
執行命令,使掛載生效,見下圖
  
root@linux-fairies1:~# mount -a

  

  
驗證掛載信息,見下圖
  
root@linux-fairies1:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           392M   13M  380M   4% /run
/dev/sda1        30G  3.3G   25G  12% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           392M     0  392M   0% /run/user/0
/dev/sdb        100G  135M  100G   1% /data

  

看到上圖,說明掛載成功,同時在另外兩台電腦上執行相同的命令完成掛載

1.2:安裝elasticsearch,我這次系統使用的是Ubuntu1804,elasticsearch為帶JDK的7.6.1版本

  上傳deb包,包名如下圖

    

1.3:開始安裝:具體見下圖
  
root@linux-fairies1:/usr/local/src# dpkg -i   elasticsearch-7.6.1-amd64.deb

  

   通過上圖可知,軟件安裝完成
1.4:修改配置文件,具體修改的內容如下圖
  
root@linux-fairies1:/usr/local/src# cat /etc/elasticsearch/elasticsearch.yml

    

 

    三台機器都需要需改配置文件的,其中節點(node.name)的名稱必須唯一
    配置文件解析如下:
    
cluster.name: ELK-Cluster #ELK的集群名稱,名稱相同即屬於是同一個集群
node.name: elk-node1 #當前節點在集群內的節點名稱
path.data: /elk/data#ES數據保存目錄
path.logs: /elk/logs#ES日志保存目
bootstrap.memory_lock:  true#服務啟動的時候鎖定足夠的內存,防止數據寫入swapnetwork.host: 0.0.0.0#監聽IP
http.port: 9200#監聽端口

#集群中node節點發現列表
discovery.seed_hosts: ["192.168.37.16","192.168.37.17","192.168.37.18"]

#集群初始化那些節點可以被選舉為
mastercluster.initial_master_nodes: ["192.168.37.16","192.168.37.17","192.168.37.18"]

#2.x 5.x 6.x 配置節點發現列表
discovery.zen.ping.unicast.hosts: ["192.168.15.11", "192.168.15.12"]
#一個集群中的N個節點啟動后,才允許進行數據恢復處理,默認是1
gateway.recover_after_nodes: 2

#設置是否可以通過正則或者_all刪除或者關閉索引庫,默認true表示必須需要顯式指定索引庫名稱,生產環境建議設置為true,刪除索引庫的時候必須指定,否則可能會誤刪索引庫中的索引庫。
action.destructive_requires_name: true

  

  
 
1.5:啟動程序,可以直接執行 systemctl restart elasticsearch 啟動程序的,見下圖
  
  
   通過上圖可知,程序啟動失敗
1.6:檢查排查,檢查排錯主要是通過查看日志的,查看日志及相關信息見下圖
    下圖為系統日志
  
     下圖為服務啟動的腳本
  
      下圖為,服務啟動的賬戶信息
  
 
     通過以上圖片分析可知,主要是/data目錄沒有權限及服務使用root啟動的,
  修改權限見如下
  
  
1.7:重新啟動服務並驗證,具體明細見下圖
  
     根據上圖可知,服務起開了  
  打開瀏覽器驗證,見下圖
    
    由上圖可知,elasticsearch集群服務創建成功
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM