ELK是Elasticsearch、Logstash、Kibana的簡稱 Elasticsearch是實時全文搜索和分析引擎 Logstash是一個用來蒐集、分析、過濾日誌的工具 Kibana是一個基於Web的圖形界面,用於搜索、分析和可視化存儲在 Elasticsearch指標中的日誌數據
提升安全性 集中存放日誌 缺陷:對日誌的分析困難
收集數據:LogstashAgent 創建索引:ElasticSearchCluster 數據可視化:KilbanaServer
1.將日誌進行集中化管理 2.將日誌格式化( Logstash )並輸出到Elasticsearch 3.對格式化後的數據進行索引和存儲( Elasticsearch ) 4.前端數據的展現( Kibana )
Elasticsearch的概述前端
提供了一個分佈式多用戶能力的全文搜索引擎
Elasticsearch的概念java
接近實時 集羣 節點 索引:索引(庫)-->類型(表)-->文檔(記錄) 分片和副本
Logstash介紹node
一款強大的數據處理工具,能夠實現數據傳輸、格式處理、格式化輸出 數據輸入、數據加工(如過濾,改寫等)以及數據輸出
LogStash主要組件linux
Shipper Indexer Broker Search and Storage Web Interface
Kibana介紹c++
一個針對Elasticsearch的開源分析及可視化平臺 搜索、查看存儲在Elasticsearch索引中的數據 經過各類圖表進行高級數據分析及展現
Kibana主要功能數據庫
Elasticsearch無縫之集成 整合數據,複雜數據分析 讓更多團隊成員受益 接口靈活,分享更容易 配置簡單,可視化多數據源 簡單數據導出
配置ELK日誌分析羣集 使用Logstash收集日誌 使用Kibana查看分析日誌
所有關閉防火牆 Node一、Node2節點內存分配4G,Apache節點分配1G內存 經過VMware虛擬網絡Vmnet8鏈接
主機名稱 | IP地址 | 主要軟件 |
---|---|---|
Node1服務器 | 192.168.142.152 | Elasticsearch、Kibana |
Node2服務器 | 192.168.142.153 | Elasticsearch |
Apache服務器 | 192.168.142.155 | Logstash |
1.關閉防火牆及安全功能apache
systemctl stop firewalld.service setenforce 0
2.修改主機名配置文件npm
vim /etc/hosts 192.168.142.152 node1 192.168.142.153 node2
3.遠程掛載資源包bootstrap
mount.cifs //192.168.142.1/elk /mnt
4.安裝軟件包vim
cd /mnt rpm -ivh elasticsearch-5.5.0.rpm
5.加載系統服務
systemctl daemon-reload
6.開機自啓動服務
systemctl enable elasticsearch.service
7.備份配置文件
cd /etc/elasticsearch/ cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
8.修改elasticsearch主配置文件
vim /etc/elasticsearch/elasticsearch.yml #第17行,取消註釋並修改集羣名稱 cluster.name: my-elk-cluster #第23行,取消註釋修改節點名字 node.name: node1 #第33行,取消註釋修改數據存放路徑 path.data: /data/elk_data #第37行,取消註釋修改日誌存放路徑 path.logs: /var/log/elasticsearch/ #第43行,取消註釋並修改,取消在不啓動時鎖定內存 bootstrap.memory_lock: false #第55行,取消註釋並修改地址,放入全部的地址(0.0.0.0表明全部地址) network.host: 0.0.0.0 #第59行,取消註釋,放開服務端口 http.port: 9200 #第68行,取消註釋修改節點名稱 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
9.建立數據庫存放路徑
mkdir -p /data/elk_data
10.受權數據庫存放路徑
chown elasticsearch:elasticsearch /data/elk_data/
11.開啓elasticsearch服務
systemctl start elasticsearch.service
12.查看端口服務狀態
netstat -ntap | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 96970/java
13.安裝編譯環境
yum install gcc gcc-c++ make -y
14.解壓node節點軟件包
cd /mnt tar zxvf node-v8.2.1.tar.gz -C /opt
15.配置node
cd /opt/node-v8.2.1/ ./configure
16.編譯安裝
make && make install
1.解壓phantomjs軟件包
cd /mnt tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
2.切換目錄查看phantomjs命令
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64//bin ls phantomjs
3.複製目錄到系統目錄
cp phantomjs /usr/local/bin/
1.解壓elasticsearch-head軟件包
cd /mnt tar zxvf elasticsearch-head.tar.gz -C /usr/local/src
2.安裝elasticsearch-head數據可視化工具
cd /usr/local/src/elasticsearch-head/
npm install
3.修改elasticsearch主配置文件
vim /etc/elasticsearch/elasticsearch.yml #末行添加如下內容 http.cors.enabled: true http.cors.allow-origin: "*"
4.開啓elasticsearch服務
systemctl restart elasticsearch.service
5.啓動後臺運行
npm run start &
6.查看服務端口狀態
netstat -ntap | grep 9100 tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 50105/grunt [root@node1 elasticsearch-head]# netstat -ntap | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 96970/java
回到概覽便可看到建立好的索引!
#安裝Apache服務 yum install -y httpd #遠程掛載資源包 mount.cifs //192.168.142.1/elk /mnt #切換到掛載點 cd /mnt #安裝logstash rpm -ivh logstash-5.5.1.rpm #開機自啓動logstash服務 systemctl enable logstash.service #啓動logstash服務 systemctl start logstash.service #創建命令軟連接到系統 ln -s /usr/share/logstash/bin/logstash /usr/local/bin #切換日誌目錄 cd /var/log #授予他人讀取權限 chmod o+r messages #查看權限 ll #切入logstash配置目錄 cd /etc/logstash/conf.d/ #編輯文件 vim system.conf #寫入如下內容,用以收集系統日誌 input { file{ path => "/var/log/messages" type => "system" start_position => "beginning" } } output { elasticsearch { #地址指向node1節點 hosts => ["192.168.142.152:9200"] index => "system-%{+YYYY.MM.dd}" } } #重啓服務 systemctl restart logstash.service
#切入掛載點 cd /mnt #安裝kibana rpm -ivh kibana-5.5.1-x86_64.rpm #切入kibana目錄 cd /etc/kibana/ #備份kibana.yml文件 cp kibana.yml kibana.yml.bak #修改kibana.yml文件 vim kibana.yml #取消第2行的註釋,放開5601端口 server.port: 5601 #取消第7行的註釋並修改地址,放入全部的地址(0.0.0.0表明全部地址) server.host: "0.0.0.0" #取消第21行的註釋並指向node1節點的url elasticsearch.url: "http://192.168.142.152:9200" #取消第30行註釋,放開kibana首頁 kibana.index: ".kibana" #啓動kibana服務 systemctl start kibana.service
#編輯Apache日誌配置文件 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.142.152:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.142.152:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } } #重啓服務,稍等片刻! logstash -f apache_log.conf