ELK日誌分析系統概述
ELK是Elasticsearch、Logstash、Kibana的簡稱
Elasticsearch是實時全文搜索和分析引擎
Logstash是一個用來蒐集、分析、過濾日誌的工具
Kibana是一個基於Web的圖形界面,用於搜索、分析和可視化存儲在 Elasticsearch指標中的日誌數據
日誌服務器
提高安全性
集中存放日誌
缺陷:對日誌的分析困難
ELK日誌分析系統
收集數據:LogstashAgent
建立索引:ElasticSearchCluster
數據可視化:KilbanaServer
日誌處理步驟
1.將日誌進行集中化管理
2.將日誌格式化( Logstash )並輸出到Elasticsearch
3.對格式化後的數據進行索引和存儲( Elasticsearch )
4.前端數據的展示( Kibana )
Elasticsearch介紹
Elasticsearch的概述
提供了一個分佈式多用戶能力的全文搜索引擎
Elasticsearch的概念
接近實時
集羣
節點
索引:索引(庫)-->類型(表)-->文檔(記錄)
分片和副本
Logstash介紹
一款強大的數據處理工具,可以實現數據傳輸、格式處理、格式化輸出
數據輸入、數據加工(如過濾,改寫等)以及數據輸出
LogStash主要組件
Shipper
Indexer
Broker
Search and Storage
Web Interface
Kibana介紹
一個針對Elasticsearch的開源分析及可視化平臺
搜索、查看存儲在Elasticsearch索引中的數據
通過各種圖表進行高級數據分析及展示
Kibana主要功能
Elasticsearch無縫之集成
整合數據,複雜數據分析
讓更多團隊成員受益
接口靈活,分享更容易
配置簡單,可視化多數據源
簡單數據導出
部署ELK日誌分析系統
需求描述
配置ELK日誌分析羣集
使用Logstash收集日誌
使用Kibana查看分析日誌
安裝環境
全部關閉防火牆
Node1、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 |
第一步:配置ES節點1服務器
1.關閉防火牆及安全功能
systemctl stop firewalld.service
setenforce 0
2.修改主機名配置文件
vim /etc/hosts
192.168.142.152 node1
192.168.142.153 node2
3.遠程掛載資源包
mount.cifs //192.168.142.1/elk /mnt
4.安裝軟件包
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
第二步:安裝phantomjs前端框架
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/
第三步:安裝elasticsearch-head數據可視化工具
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
第四步:ES節點2服務器 與節點1的配置一樣,重複執行上述操作即可!!!
第五步:使用瀏覽器輸入192.168.142.152:9100網址,並連接另一節點的地址,檢查羣集健康狀態
第六步:創建索引
回到概覽即可看到創建好的索引!
第七步:配置Apache服務器,安裝 logstash 蒐集日誌蒐集
#安裝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
第八步:查看收集到的日誌信息
第九步:回到node1節點安裝kibana
#切入掛載點
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
第十步:測試kibana展現日誌數據,使用瀏覽器訪問192.168.142.152:5601
第十一步:對接Apache主機的所有Apache日誌文件(在Apache服務器上操作)
#編輯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