ELK日誌分析系統——(實戰!)

簡介

日誌服務器

提升安全性
集中存放日誌
缺陷:對日誌的分析困難

ELK日誌分析系統——(實戰!)

ELK日誌分析系統

Elasticsearch:存儲,索引池   
Logstash:日誌收集器
Kibana:數據可視化

日誌處理步驟

1,將日誌進行集中化管理
2,將日誌格式化(Logstash)並輸出到Elasticsearch
3,對格式化後的數據進行索引和存儲(Elasticsearch)
4,前端數據的展現(Kibana)

Elasticsearch的概述

提供了一個分佈式多用戶能力的全文搜索引擎

Elasticsearch的概念

接近實時
 集羣
 節點
 索引:索引(庫)-->類型(表)-->文檔(記錄)
 分片和副本

Logstash介紹

一款強大的數據處理工具,能夠實現數據傳輸、格式處理、格式化輸出
 數據輸入、數據加工(如過濾,改寫等)以及數據輸出

LogStash主要組件

Shipper
 Indexer
 Broker
 Search and Storage
 Web Interface

Kibana介紹

一個針對Elasticsearch的開源分析及可視化平臺
 搜索、查看存儲在Elasticsearch索引中的數據
 經過各類圖表進行高級數據分析及展現

Kibana主要功能

Elasticsearch無縫之集成
 整合數據,複雜數據分析
 讓更多團隊成員受益
 接口靈活,分享更容易
 配置簡單,可視化多數據源
 簡單數據導出

實驗拓撲

ELK日誌分析系統——(實戰!)

實驗環境

Apache服務器 192.168.13.128 (Logstash)
Node1服務器 192.168.13.129 (Elasticsearch,Kibana)
Node2服務器 192.168.13.130 (Elasticsearch)

1,在node1,node2上安裝elasticsearch

[root@node1 ~]# vim /etc/hosts  ##配置解析名
192.168.13.129 node1
192.168.13.130 node2
[root@node1 ~]# java -version  ##查看是否支持Java
[root@node1 ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/
Password for root@//192.168.100.3/LNMP-C7:  
[root@node1 mnt]# cd /mnt/elk/
[root@node1 elk]# rpm -ivh elasticsearch-5.5.0.rpm   ##安裝
[root@node1 elk]# systemctl daemon-reload  ##重載守護進程
[root@node1 elk]# systemctl enable elasticsearch.service   ##開機自啓
[root@node1 elk]# cd /etc/elasticsearch/
[root@node1 elasticsearch]# cp elasticsearch.yml elasticsearch.yml.bak  ##備份
[root@node1 elasticsearch]# vim elasticsearch.yml  ##修改配置文件
cluster.name: my-elk-cluster  ##集羣名
node.name: node1    ##節點名,第二個節點爲node2
path.data: /data/elk_data   ##數據存放位置
path.logs: /var/log/elasticsearch/  ##日誌存放位置
bootstrap.memory_lock: false  ##不在啓動時鎖定內存
network.host: 0.0.0.0   ##提供服務綁定的IP地址,爲全部地址
http.port: 9200  ##端口號爲9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  ##集羣發現經過單播實現
[root@node1 elasticsearch]# mkdir -p /data/elk_data   ##建立數據存放點
[root@node1 elasticsearch]# chown elasticsearch.elasticsearch /data/elk_data/  ##給權限
[root@node1 elasticsearch]# systemctl start elasticsearch.service   ##開啓服務
[root@node1 elasticsearch]# netstat -ntap | grep 9200  ##查看開啓狀況
tcp6     0    0 :::9200        :::*          LISTEN      2166/java

ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)

2,在瀏覽器上檢查健康和狀態

ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)

3,在node1,node2上安裝node組件依賴包

[root@node1 elasticsearch]# yum install gcc gcc-c++ make -y  ##安裝編譯工具
[root@node1 elasticsearch]# cd /mnt/elk/
[root@node1 elk]# tar zxvf node-v8.2.1.tar.gz -C /opt/  ##解壓插件
[root@node1 elk]# cd /opt/node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure   ##配置
[root@node1 node-v8.2.1]# make && make install   ##編譯安裝

4,在node1,node2上安裝phantomjs前端框架

[root@node1 elk]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
##解壓到/usr/local/src下
[root@node1 elk]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/
[root@node1 bin]# cp phantomjs /usr/local/bin/   ##編譯系統識別

5,在node1,node2上安裝elasticsearch-head數據可視化

[root@node1 bin]# cd /mnt/elk/
[root@node1 elk]# tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/  ##解壓
[root@node1 elk]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm install  ##安裝

6,修改配置文件

[root@node1 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
##末行加入
http.cors.enabled: true  ##開啓跨域訪問支持,默認爲false
http.cors.allow-origin: "*"    ##跨域訪問容許的域名地址
[root@node1 elasticsearch-head]# systemctl restart elasticsearch.service  ##重啓
[root@node1 elasticsearch-head]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start &   ##後臺運行數據可視化服務
[1] 82515
[root@node1 elasticsearch-head]# netstat -ntap | grep 9100
tcp        0      0 0.0.0.0:9100    0.0.0.0:*      LISTEN      82525/grunt  
[root@node1 elasticsearch-head]# netstat -ntap | grep 9200
tcp6       0    0 :::9200              :::*        LISTEN      82981/java

7,在瀏覽器上查看健康值狀態

ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)

8,在node1上建立索引

ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)

[root@node2 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
##建立索引信息

ELK日誌分析系統——(實戰!)

9,在Apache服務器上安裝logstash,多elasticsearch進行對接

[root@apache ~]# yum install httpd -y   ##安裝服務
[root@apache ~]# systemctl start httpd.service   ##啓動服務
[root@apache ~]# java -version
[root@apache ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/   ##掛載
Password for root@//192.168.100.3/LNMP-C7:
[root@apache ~]# cd /mnt/elk/
[root@apache elk]# rpm -ivh logstash-5.5.1.rpm   ##安裝logstash
[root@apache elk]# systemctl start logstash.service 
[root@apache elk]# systemctl enable logstash.service   ##自啓
[root@apache elk]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/  ##便於系統識別
[root@apache elk]# logstash -e 'input { stdin{} } output { stdout{} }'  ##標準輸入輸出
The stdin plugin is now waiting for input:
16:58:11.145 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com   ##輸入
2019-12-19T08:58:35.707Z apache www.baidu.com
www.sina.com.cn  ##輸入
2019-12-19T08:58:42.092Z apache www.sina.com.cn
[root@apache elk]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
##使用rubydebug顯示詳細輸出,codec爲一種編解碼器
The stdin plugin is now waiting for input:
17:03:08.226 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com   ##格式化的處理
{
        "@timestamp" => 2019-12-19T09:03:13.267Z,
            "@version" => "1",
                    "host" => "apache",
             "message" => "www.baidu.com"
}
[root@apache elk]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.13.129:9200"] } }'
##使用logstach將信息寫入elasticsearch中
The stdin plugin is now waiting for input:
17:06:46.846 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com     ##輸入信息
www.sina.com.cn

10,用瀏覽器查看信息

ELK日誌分析系統——(實戰!)

##在數據瀏覽中能夠查看信息

ELK日誌分析系統——(實戰!)

11,將系統日誌文件輸出到elasticsearch

[root@apache elk]# chmod o+r /var/log/messages   ##給其餘用戶讀權限
[root@apache elk]# vim /etc/logstash/conf.d/system.conf  ##建立文件
input {
                file{
                path => "/var/log/messages"   ##輸出目錄
                type => "system"
                start_position => "beginning"
                }
}
output {
                elasticsearch {
                #輸入地址指向node1節點
                hosts => ["192.168.13.129:9200"]
                index => "system-%{+YYYY.MM.dd}"
                }
}
[root@apache elk]# systemctl restart logstash.service  ##重啓服務
##也能夠用數據瀏覽查看詳細信息

ELK日誌分析系統——(實戰!)

12,在node1服務器上安裝kibana數據可視化

[root@node1 ~]# cd /mnt/elk/
[root@node1 elk]# rpm -ivh kibana-5.5.1-x86_64.rpm   ##安裝
[root@node1 elk]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak  ##備份
[root@node1 kibana]# vim kibana.yml   ##修改配置文件
server.port: 5601  ##端口號
server.host: "0.0.0.0"   ##監放任意網段
elasticsearch.url: "http://192.168.13.129:9200"  ##本機節點地址
kibana.index: ".kibana"   ##索引名稱
[root@node1 kibana]# systemctl start kibana.service   ##開啓服務
[root@node1 kibana]# systemctl enable kibana.service

13,瀏覽器訪問kibana

ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)

14,在apache服務器中對接apache日誌文件,進行統計

[root@apache elk]# vim /etc/logstash/conf.d/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.13.129:9200"]
                index => "apache_access-%{+YYYY.MM.dd}"
                }
        }   
                if [type] == "error" {
                elasticsearch {
                hosts => ["192.168.13.129:9200"]
                index => "apache_error-%{+YYYY.MM.dd}"
                }
        }
}
[root@apache elk]# logstash -f /etc/logstash/conf.d/apache_log.conf  
##根據配置文件配置logstach

15,訪問網頁信息,查看kibana統計狀況

ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)

##選擇management>Index Patterns>create index patterns
##建立apache兩個日誌的信息

ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)
ELK日誌分析系統——(實戰!)


謝謝閱讀!

相關文章
相關標籤/搜索