日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为你讲解ELK的组成与部署

發(fā)布時(shí)間:2024/2/28 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为你讲解ELK的组成与部署 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為你講解ELK的組成與部署

  • 一、ELK日志分析系統(tǒng)
    • 1、ELK的三大組成
    • 2、ELK日志處理步驟
  • 二、Elasticsearch的核心
    • 1、接近實(shí)時(shí)(NRT)
    • 2、集群(cluster)
    • 3、節(jié)點(diǎn)(node)
    • 4、索引(index)
    • 5、類型(type)
    • 6、文檔(document)
    • 7、分片和副本(shards & replicas)
    • 8、相關(guān)概念在關(guān)系型數(shù)據(jù)庫和ElasticSearch中的對應(yīng)關(guān)系
  • 三、Logstash
    • 1、Logstash簡介
    • 2、Logstash主機(jī)分類
  • 四、Kibana
  • 五、部署ELK
    • 1、配置基礎(chǔ)環(huán)境
    • 2、部署Elasticsearch(node1和node2)
    • 3、安裝elasticsearch-head(node1和node2)
    • 4、安裝 logstash(192.168.184.30)
    • 5、安裝kibana(node1)
    • 6、對接httpd日志文件(訪問、錯(cuò)誤)
  • 總結(jié)
    • ELK處理過程

一、ELK日志分析系統(tǒng)

1、ELK的三大組成

  • E:Elasticsearch
    • 是一個(gè)開源分布式搜索引擎,特點(diǎn)有:分布式、零配置、自動發(fā)現(xiàn)
    • 索引自動分片、索引副本機(jī)制,restful風(fēng)格接口,多數(shù)據(jù),自動搜索負(fù)載等
    • 通常作為具有復(fù)雜搜索場景情況下的核心發(fā)動機(jī)
  • L:Logstash
    • 是一個(gè)完全開源的工具,它可以對日志進(jìn)行收集、過濾,并將其存儲,供以后使用
  • K:Kibana
    • 是一個(gè)開源免費(fèi)的工具,kibana可以為Logstash和Elasticsearch提供友好的日志分析web頁面

2、ELK日志處理步驟

  • 【1】將日志進(jìn)行集中化管理(Beats)
    • 管理包含四種工具:
      • Packetbeat(搜集網(wǎng)絡(luò)流量數(shù)據(jù))
      • Topbeat(搜集系統(tǒng)、進(jìn)程和文件系統(tǒng)級別的CPU和內(nèi)存使用情況等數(shù)據(jù))
      • Filebeat(搜集文件數(shù)據(jù))
      • Winlogbeat(搜集Windows事件日志數(shù)據(jù))
  • 【2】將日志格式化(Logstash)并輸出到Elasticsearch
  • 【3】對格式化后的數(shù)據(jù)進(jìn)行索引和存儲(Elasticsearch)
  • 【4】前端數(shù)據(jù)的展示(Kibana)

二、Elasticsearch的核心

1、接近實(shí)時(shí)(NRT)

  • Elasticsearch是一個(gè)接近實(shí)時(shí)的搜索平臺,這意味著,從索引一個(gè)文檔直到這個(gè)文檔能夠被搜索到有一個(gè)輕微的延遲(通常是1秒)

2、集群(cluster)

  • 一個(gè)集群就是由一個(gè)或者多個(gè)節(jié)點(diǎn)組織在一起,它們共同持有你整個(gè)的數(shù)據(jù),并一起提供索引和搜索功能。
  • 其中一個(gè)為主節(jié)點(diǎn),這個(gè)主節(jié)點(diǎn)是可以通過選舉產(chǎn)生的,并提供跨節(jié)點(diǎn)的聯(lián)合索引和搜索功能。
  • 集群有一個(gè)唯一性標(biāo)示的名字,默認(rèn)是Elasticsearch,集群的名字很重要,每個(gè)節(jié)點(diǎn)是基于集群名字加入到集群中的。因此,確保在不同的環(huán)境中使用不同的集群名字。
  • 一個(gè)集群可以只有一個(gè)節(jié)點(diǎn),建議在配置Elasticsearch時(shí),配置成集群模式。
  • Elasticsearch具有集群機(jī)制,節(jié)點(diǎn)通過集群名稱加入到集群中,同時(shí)在集群中的節(jié)點(diǎn)會有一個(gè)自己唯一的身份標(biāo)識(自己的名稱)

3、節(jié)點(diǎn)(node)

  • 節(jié)點(diǎn)就是一臺單一的服務(wù)器,是集群的一部分,存儲數(shù)據(jù)并參與集群的索引和搜索功能。像集群一樣,節(jié)點(diǎn)也是通過名字來標(biāo)識,默認(rèn)是在節(jié)點(diǎn)啟動時(shí)隨機(jī)分配的字符名。也可自己定義,名字很重要,在集群中用于識別服務(wù)器對應(yīng)的節(jié)點(diǎn)
  • 節(jié)點(diǎn)可以通過指定集群名字來加入到集群中。默認(rèn)情況下,每個(gè)節(jié)點(diǎn)被設(shè)置成加入到Elasticsearch集群。如果啟動了多個(gè)節(jié)點(diǎn),假設(shè)能自動發(fā)現(xiàn)對方,他們將會自動組建一個(gè)名為Elasticsearch的集群。

4、索引(index)

  • 一個(gè)索引就是一個(gè)擁有幾分相似特征的文檔的集合。
  • 一個(gè)索引由一個(gè)名字來標(biāo)識(必須全部是小寫字母),并且當(dāng)我們要對對應(yīng)于這個(gè)索引中的文檔進(jìn)行索引、搜索、更新和刪除的時(shí)候。都要使用到這個(gè)名字。在一個(gè)集群中,可以定義任意多的索引。

5、類型(type)

  • 在一個(gè)索引中,你可以定義一種或多種類型。一個(gè)類型是你的索引的一個(gè)邏輯上的分類/分區(qū),其語義完全由你來定。
  • 通常會為具有一組共同字段的文檔定義一個(gè)類型。

6、文檔(document)

  • 一個(gè)文檔是一個(gè)可被索引的基礎(chǔ)信息單元
  • 在一個(gè)index/type里面,只要你想,你可以存儲任意多的文檔。注意,雖然一個(gè)文檔在物理上位于一個(gè)索引中,實(shí)際上一個(gè)文檔必須在一個(gè)索引內(nèi)被索引和分配一個(gè)類型

7、分片和副本(shards & replicas)

  • 實(shí)際情況下,索引存儲的數(shù)據(jù)可能超過單個(gè)節(jié)點(diǎn)的硬件限制。為了解決這個(gè)問題,Elasticsearch提供將索引分成多個(gè)分片的功能。當(dāng)在創(chuàng)建索引時(shí),可以定義想要的分片數(shù)量。每一個(gè)分片就是一個(gè)全功能的獨(dú)立的索引,可以位于集群中任何節(jié)點(diǎn)上。
    • 分片的主要原因:
      • 水平分割擴(kuò)展,增大存儲量
      • 分布式并跨越分片操作,提高性能和吞吐量
  • 分布式分片機(jī)制和搜索請求的文檔如何火鬃完全是由Elasticsearch控制的,這些對用戶是完全透明的。
  • 為了健壯性,建議有一個(gè)故障切換機(jī)制,為此,Elasticsearch讓我們將索引分片復(fù)制一份或多份,稱之為分片副本
    • 分片副本的原因:
      • 高可用性,以應(yīng)對分片或者節(jié)點(diǎn)故障。處于這個(gè)原因,分片副本要在不同的節(jié)點(diǎn)上
      • 增大吞吐量,搜索可以并行在所有副本上執(zhí)行
  • 總之,每個(gè)索引可以被分成多個(gè)分片。一個(gè)索引可以被復(fù)制0次或者多次。一旦復(fù)制了,每個(gè)索引就有了主分片 (作為復(fù)制源的原來的分片)和復(fù)制分片(主分片的拷貝)之別。分片和副本的數(shù)量可以在索引創(chuàng)建的時(shí)候指定。在索引創(chuàng)建之后,你可以在指定任何時(shí)候動態(tài)的改變副本的數(shù)量,但是你事后不能改變分片的數(shù)量。
  • 默認(rèn)情況下,Elasticsearch中的每個(gè)索引被分片5個(gè)主分片和1個(gè)副本,這意味著,如果你的集群中至少有兩個(gè)節(jié)點(diǎn),你的索引將會有5個(gè)主分片和另外的5個(gè)副本分片(一個(gè)完全拷貝),這樣的話每個(gè)索引總共有10個(gè)分片。

8、相關(guān)概念在關(guān)系型數(shù)據(jù)庫和ElasticSearch中的對應(yīng)關(guān)系

關(guān)系型數(shù)據(jù)庫Elasticsearch
數(shù)據(jù)庫Database索引Index,支持全文檢索
表Table類型Type
數(shù)據(jù)行Row文檔Document,但不需要固定結(jié)構(gòu),不同文檔可以具有不同字段集合
數(shù)據(jù)列Column字段Field
模式Schema映像Mapping

三、Logstash

1、Logstash簡介

  • Logstash由JRuby語言編寫,基于消息(message-based)的簡單架構(gòu),并運(yùn)行在java虛擬機(jī)(JVM)上。不同于分離的代理端(agent)或主機(jī)端(server),Logstash可配置單一的代理端與其他開源軟件結(jié)合,以實(shí)現(xiàn)不同的功能
  • 常用插件:
    • input:收集源數(shù)據(jù)(訪問日志、錯(cuò)誤日志等)
    • Filter Plugin:用于過濾日志和格式處理
    • Output:輸出日志
  • 主要組件:
    • Shipper(日志收集):負(fù)責(zé)監(jiān)控本地日志文件的變化,及時(shí)把日志文件的最新內(nèi)容收集起來。通常,遠(yuǎn)程代理端(agent)只需要運(yùn)行這個(gè)組件即可
    • Indexer(日志存儲):負(fù)責(zé)接收日志并寫入到本地文件
    • Broker(日志Hub):負(fù)責(zé)連接多個(gè)Shipper和多個(gè)Indexer
    • Search and Storage:允許對事件進(jìn)行搜索和存儲
    • Web Interface:基于Web的展示界面

2、Logstash主機(jī)分類

  • 【1】代理主機(jī)(agent host):作為事件的傳遞者(Shipper),將各種日志數(shù)據(jù)發(fā)送至中心主機(jī),只需運(yùn)行Logstash代理程序
  • 【2】中心主機(jī)(central host):可運(yùn)行包括中間轉(zhuǎn)發(fā)器(Broker)、索引器(Indexer)、搜索和存儲器(Search and Storage)、Web界面端(Web Interface)在內(nèi)的各個(gè)組件,以實(shí)現(xiàn)對日志數(shù)據(jù)的接收、處理和存儲

四、Kibana

  • Kibana 是用于在 Elasticsearch 中可視化數(shù)據(jù)的強(qiáng)大工具,可通過基于瀏覽器的界面輕松搜索,可視化和探索大量數(shù)據(jù)。
  • 主要功能:
    • Kibana主要功能:
      • Elasticsearch無縫之集成。
        • Kibana架構(gòu)為Elasticsearch定制,可以將任何結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)加入Elasticsearch索引。Kibana還充分利用了Elasticsearch強(qiáng)大的搜索和分析功能。
      • 整合數(shù)據(jù)。
        • Kibana能夠更好地處理海量數(shù)據(jù),并據(jù)此創(chuàng)建柱形圖、折線圖、散點(diǎn)圖、直方圖、餅圖和地圖。
      • 復(fù)雜數(shù)據(jù)分析。
        • Kibana提升了Elasticsearch分析能力,能夠更加智能地分析數(shù)據(jù),執(zhí)行數(shù)學(xué)轉(zhuǎn)換并且根據(jù)要求對數(shù)據(jù)切割分塊。
      • 讓更多團(tuán)隊(duì)成員收益。
        • 強(qiáng)大的數(shù)據(jù)庫可視化接口讓各業(yè)務(wù)崗位都能夠從數(shù)據(jù)集合受益。
      • 接口靈活,分享更容易。
        • 使用Kibana可以更加方便地創(chuàng)建、保存、分享數(shù)據(jù),并將可視化數(shù)據(jù)快速交流。
      • 配置簡單。
        • Kibana的配置和啟用非常簡單,用戶體驗(yàn)非常友好。Kibana自帶Web服務(wù)器,可以快速啟動運(yùn)行。
      • 可視化多數(shù)據(jù)源。
        • Kibana可以非常方便地把來自Logstash、ES-Hadoop、Beats或第三方技術(shù)的數(shù)據(jù)整合到Elasticsearch,支持的第三方技術(shù)包括Apache flume、 Fluentd 等。
      • 簡單數(shù)據(jù)導(dǎo)出。
        • Kibana可以方便地導(dǎo)出感興趣的數(shù)據(jù),與其它數(shù)據(jù)集合并融合后快速建模分析,發(fā)現(xiàn)新結(jié)果。

五、部署ELK

主機(jī)IP地址安裝包 / 軟件 / 工具
node1192.168.184.10Elasticsearch 、 kibana
node2192.168.184.20Elasticsearch
http192.168.184.30httpd / Logstash
Windows192.168.184.188——

1、配置基礎(chǔ)環(huán)境

systemctl stop firewalld.service setenforce 0#配置java環(huán)境(三臺都要) java -versioncd /opt/elk cp jdk-8u91-linux-x64.tar.gz /usr/local/ cd /usr/local/ tar zxvf jdk-8u91-linux-x64.tar.gzcd /usr/local/ && mv jdk1.8.0_91 jdkvim /etc/profile export JAVA_HOME=/usr/local/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile#node1改名(192.168.184.10) hostnamectl set-hostname node1 su -#node2改名(192.168.184.20) hostnamectl set-hostname node2 su -#http改名(192.168.184.30) hostnamectl set-hostname http su -#配置域名解析 echo '192.168.184.10 node1' >> /etc/hosts echo '192.168.184.20 node2' >> /etc/hosts


2、部署Elasticsearch(node1和node2)

#安裝elasticsearch包 cd /opt/elk cp elasticsearch-5.5.0.rpm /opt cd ../ rpm -ivh elasticsearch-5.5.0.rpm #加載系統(tǒng)服務(wù) systemctl daemon-reload systemctl enable elasticsearch.service #更改主配置文件 cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bakvim /etc/elasticsearch/elasticsearch.yml #17行(修改集群名字) cluster.name: my-elk-cluster #23行(修改節(jié)點(diǎn)名字) node.name: node1 #33行;(修改數(shù)據(jù)存放路徑) path.data: /data/elk_data #37行(修改日志存放路徑) path.logs: /var/log/elasticsearch #43行(不在啟動的時(shí)候鎖定內(nèi)存) bootstrap.memory_lock: false #55行 network.host: 0.0.0.0 #59行(偵聽端口為9200) http.port: 9200 #68行(指定要發(fā)現(xiàn)的節(jié)點(diǎn) node1、node2) discovery.zen.ping.unicast.hosts: ["node1", "node2"]grep -v "^#" /etc/elasticsearch/elasticsearch.yml#創(chuàng)建數(shù)據(jù)存放路徑并授權(quán) mkdir -p /data/elk_data chown elasticsearch:elasticsearch /data/elk_data/#啟動elasticsearch是否開啟成功 systemctl start elasticsearch netstat -antp |grep 9200#查看節(jié)點(diǎn)信息和集群健康狀態(tài)(使用windos瀏覽器) http://192.168.184.10:9200 http://192.168.184.20:9200 http://192.168.184.10:9200/_cluster/health?pretty http://192.168.184.20:9200/_cluster/health?pretty

3、安裝elasticsearch-head(node1和node2)

yum -y install gcc gcc-c++ make cd /opt/elk tar xzvf node-v8.2.1.tar.gz -C /opt cd /opt/node-v8.2.1/ ./configure make -j3 && make installcd /opt/elk cp phantomjs-2.1.1-linux-x86_64.tar.bz2 /usr/local/src/ cp elasticsearch-head.tar.gz /usr/local/src/ cd /usr/local/src/ tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 cd phantomjs-2.1.1-linux-x86_64/bin cp phantomjs /usr/local/bincd /usr/local/src/ tar xzvf elasticsearch-head.tar.gz cd elasticsearch-head/ npm installvi /etc/elasticsearch/elasticsearch.yml ==末行插入== http.cors.enabled: true #開啟跨域訪問支持,默認(rèn)false http.cors.allow-origin: "*" #跨域訪問允許的域名地址systemctl restart elasticsearchcd /usr/local/src/elasticsearch-head/ npm run start & #切換到后臺運(yùn)行netstat -lnupt |grep 9100 netstat -lnupt |grep 9200#windows驗(yàn)證 http://192.168.184.10:9100 http://192.168.184.20:9100 群集為綠色#node1建立索引,類型為test curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"ljm","mesg":"If you want to succeed, depend on yourself"}'


4、安裝 logstash(192.168.184.30)

yum -y install httpd systemctl start httpdcd /opt/elk cp logstash-5.5.1.rpm ../ cd ../ rpm -ivh logstash-5.5.1.rpm systemctl start logstash.service systemctl enable logstash.service ln -s /usr/share/logstash/bin/logstash /usr/local/bin/#進(jìn)行功能測試 logstash -e 'input { stdin{} } output { stdout{} }' -------------- -f 通過這個(gè)選項(xiàng)可以指定logstash的配置文件,根據(jù)配置文件配置logstash -e 后面跟著字符串,該字符串可以被當(dāng)做logstash的配置 -t 測試配置文件是否正確,然后退出 --------------logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.184.10:9200"] } }' www.baidu.com#登錄windows查看 http://192.168.184.10:9100/ #192.168.184.30進(jìn)行對接配置 chmod o+r /var/log/messages ll /var/log/messagesvim /etc/logstash/conf.d/system.conf input {file{path => "/var/log/messages"type => "system"start_position => "beginning"}} output {elasticsearch {hosts => ["192.168.184.10:9200"]index => "system-%{+YYYY.MM.dd}"}}systemctl restart logstash.service



5、安裝kibana(node1)

cd /opt/elk cp kibana-5.5.1-x86_64.rpm /usr/local/src/cd /usr/local/src/ rpm -ivh kibana-5.5.1-x86_64.rpmcd /etc/kibana/ cp kibana.yml kibana.yml.bakvim kibana.yml 2/ server.port: 5601 #kibana打開的端口 7/ server.host: "0.0.0.0" #kibana偵聽的地址 21/ elasticsearch.url: "http://192.168.184.10:9200" #和elasticsearch建立聯(lián)系 30/ kibana.index: ".kibana" #在elasticsearch中添加.kibana索引systemctl start kibana.service systemctl enable kibana.service#windows訪問測試 192.168.184.10:5601



6、對接httpd日志文件(訪問、錯(cuò)誤)

cd /etc/logstash/conf.d/vim apache_log.conf input {file{path => "/etc/httpd/logs/access_log"type => "access"start_position => "beginning"}file{path => "/etc/httpd/logs/error_log"type => "error"start_position => "beginning"}} output {if [type] == "access" {elasticsearch {hosts => ["192.168.184.10:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["192.168.184.10:9200"]index => "apache_error-%{+YYYY.MM.dd}"}}}/usr/share/logstash/bin/logstash -f apache_log.conf



總結(jié)

ELK處理過程

【APPServer集群】----> 【Logstash Agent 采集器】—>【Elasticsearch Cluster】—>【Kibana Server】—>【Brewser】

  • 【1】后端服務(wù)器集群生成日志
  • 【2】Logstash對進(jìn)行收集、過濾、輸出等操作
  • 【3】處理完的日志交給ES集群進(jìn)行存儲
  • 【4】ES和前端的Kibana進(jìn)行對接
  • 【5】Kibana將日志進(jìn)行可視化處理,并展現(xiàn)給各個(gè)終端

總結(jié)

以上是生活随笔為你收集整理的为你讲解ELK的组成与部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。