ELK日誌分析系統詳解
ELK日誌分析系統詳解
一、ELK日誌分析系統簡介
ELK 是elastic公司提供的一套完整的日誌收集以及展示的解決方案。是三個開源軟體的縮寫,分別表示:Elasticsearch , Logstash, Kibana ,
它們都是開源軟體。
Elasticsearch 是個開源分散式搜尋引擎,提供蒐集、分析、儲存資料三大功能。它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。
Logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支援大量的資料獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以幫助彙總、分析和搜尋重要資料日誌。
日誌伺服器
- 提高安全性
- 集中存放日誌
- 缺陷:對日誌的分析困難
日誌分析系統
- Elasticsearch
- Logstash
- Kibana
日誌處理步驟
- 1.將日誌進行集中化管理
- 2.將日誌格式化(Logstash)並輸出到Elasticsearch
- 3.對格式化後的資料進行索引和儲存(Elasticsearch)
- 4.前端資料的展示(Kibana)
二、Elasticsearch介紹
Elasticsearch概述
- 提供了一個分散式多使用者能力的全文搜尋引擎
Elasticsearch核心概念
- 接近實時
- 叢集
- 節點
- 索引
- 分片和副本
三、Logstash介紹
Logstash介紹
- 一款強大的資料處理工具
- 可實現資料傳輸、格式處理、格式化輸出
- 資料輸入、資料加工(如過濾,改寫等)以及資料輸出
LogStash主要元件
- Shipper:日誌收集者,負責監控本地日誌檔案的變化,及時把日誌檔案的最新內容收集起來。通常,遠端代理端(agent)只需要執行這個元件即可
- Indexer:日誌儲存者,負責接收日誌並寫入到本地檔案
- Broker:日誌hub,負責連線多個shipper和多個indexer
- Search and Storage:允許對事件進行搜尋和儲存
- Web Interface:基於web的展示介面
四、Kibana介紹
Kibana介紹
- 一個針對Elasticsearch的開源分析及視覺化平臺
- 搜尋、檢視儲存在Elasticsearch索引中的資料
- 通過各種圖表進行高階資料分析及展示
Kibana主要功能
- Elasticsearch無縫之整合
- 整合資料,複雜資料分析
- 讓更多團隊成員受益
- 介面靈活,分享更容易
- 配置簡單,視覺化多資料來源
- 簡單資料匯出
五、部署ELK日誌分析系統
案例拓撲:
需求描述:
- 配置ELK日誌分析群集
- 使用Logstash收集日誌
- 使用Kibana檢視分析日誌
部署Elasticsearch(同時在elc-1、elk-2部署)
安裝金鑰及elasticsearch源
[root@elk-1 ~]# vi /etc/hosts
//新增
192.168.254.10 elk-1
192.168.254.11 elk-2
[root@elk-1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@elk-1 ~]# cd /etc/yum.repos.d/
[root@elk-1 yum.repos.d]# vi elasticsearch.repo
//新增
[elasticsearch-2.x]
name=elasticsearch
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
[root@elk-1 ~]# yum list //檢視yum清單
[root@elk-1 ~]# yum -y install elasticsearch java //安裝elasticsearch java
[root@elk-1 ~]# java -version //檢視java版本資訊
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
修改配置檔案
[root@elk-1 ~]# vi /etc/elasticsearch/elasticsearch.yml
cluster.name: elastic //17行 叢集名稱
node.name:node1 //23行 節點名稱
path.data: /data/es-data //33行 工作目錄
path.logs: /var/log/elasticsearch/ //37行 日誌目錄
bootstrap.memory_lock: true //防止交換swap分割槽
http.port: 9200 //開啟埠
建立目錄及開啟服務
[root@elk-1 ~]# mkdir -p /data/es-data
[root@elk-1 ~]# chown -R elasticsearch:elasticsearch /data/es-data
[root@elk-1 ~]# systemctl start elasticsearch
[root@elk-1 ~]# netstat -anpt | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 13919/java
tcp6 0 0 192.168.254.10:9200 192.168.254.10:56960 ESTABLISHED 13919/java
網頁測試
//建立索引
[root@elk-1 ~]# curl -i -XGET 'http://192.168.254.10:9200/_count?pretty' -d '{
"query": {
"match_all": {}
}
}'
//輸出內容
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 95
{
"count" : 3,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
}
}
安裝Elasticsearch外掛
[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
測試
http://192.168.254.10:9200/_plugin/head/
elasticsearch叢集部署
[root@elk-1 ~]# vi /etc/elasticsearch/elasticsearch.yml
discovery.zen.ping.unicast.hosts: ["192.168.254.10", "192.168.254.11"] //新增elk-1、elk-2 IP
重啟服務
[root@elk-1 ~]# systemctl restart elasticsearch.service
測試
http://192.168.254.10:9200/_plugin/head/
檢視日誌
[root@elc-1 ~]# less /var/log/elasticsearch/elastic.log
發現無法分配記憶體
修改配置檔案
[root@elc-1 ~]# vi /etc/security/limits.conf
// Shift+g跳到最後一行 o 新增
elasticsearch soft memlock unlimited # memlock引數指定使用者可以鎖定其地址空間的記憶體量
elasticsearch hard memlock unlimited
[root@elk-1 ~]# systemctl restart elasticsearch.service
安裝監控元件
[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
測試
Logstash部署 (在apache上)
安裝httpd並開啟服務
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# netstat - anpt | grep httpdtcp6 0 0 :::80 :::* LISTEN 57520/httpd
[root@apache html]# echo '<h1>ky06</h1>' > /var/www/html/index.html
[root@apache html]# curl http://192.168.254.12<h1>ky06</h1>
[root@apache ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@apache ~]# vi /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
[root@apache ~]# yum -y install logstash java
[root@apache ~]# ln -s /opt/logstash/bin/logstash /usr/local/bin/
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }'
www.baidu.coSettings: Default filter workers: 2
Logstash startup completed
www.baidu.com # 輸入
2020-11-24T11:17:51.412Z apache www.baidu.cowww.baidu.com
www.hao123.com # 輸入
2020-11-24T11:18:20.206Z apache www.hao123.com
logstash命令選項解釋:
-f:指定logstash的配置檔案,根據配置檔案配置logstash
-e:後面跟著字串,該字串可以被當做logstash的配置(如果是“ ”,則預設使用stdin做輸入,stdout為輸出)
-t:測試配置檔案是否正確,然後退出
#輸入採用標準輸入,輸出採用標準輸出
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }'
www.baidu.com # 輸入
Settings: Default filter workers: 2
Logstash startup completed
{
"message" => "www.baidu.com",
"@version" => "1",
"@timestamp" => "2020-11-24T11:28:53.599Z",
"host" => "apache"
}
[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.254.10:9200"] } }'
Settings: Default filter workers: 2
Logstash startup completed
ghw111
abc222
333ddd
檢視索引資訊
[root@apache ~]# chmod o+r /var/log/messages # 增加可讀的許可權
[root@apache ~]# vi /etc/logstash/conf.d/system.conf
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.254.10:9200"]
index => "system-%{+YYY.MM.dd}"
}
}
[root@elk-1 ~]# tar zxf kibana-4.3.1-linux-x64.tar.gz
[root@elk-1 ~]# vim kibana-4.3.1-linux-x64/config/kibana.yml
//2行
server.port: 5601
//5行
server.host: "0.0.0.0"
//12行 ES地址
elasticsearch.url: "http://192.168.254.10:9200"
//20行
kibana.index: ".kibana"
yum install screen -y
[root@elk-1 ~]# kibana-4.3.1-linux-x64/bin/kibana ###啟動監聽
相關文章
- ELK日誌分析系統
- ELK-日誌分析系統
- ELK日誌分析系統 超詳細!!理論+實操講解!!
- ELK+FileBeat日誌分析系統
- ELK 日誌分析系統 ----------- 部署ElasticSearch群集Elasticsearch
- 企業級日誌分析系統——ELK
- 最新Centos7.6 部署ELK日誌分析系統CentOS
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- ELK日誌系統之通用應用程式日誌接入方案
- ELK+kafka+Winlogbeat/FileBeat搭建統一日誌收集分析管理系統Kafka
- ELK日誌系統之使用Rsyslog快速方便的收集Nginx日誌Nginx
- 基於AWS-ELK部署系統日誌告警系統
- ELK日誌
- ELK構建MySQL慢日誌收集平臺詳解MySql
- Kafka與ELK實現一個日誌系統Kafka
- Windows系統搭建ELK日誌收集伺服器Windows伺服器
- 開源元件ELK日誌系統配置與管理元件
- 日誌分析平臺ELK之日誌收集器logstash
- 日誌分析平臺ELK之日誌收集器filebeat
- Linux系統檢視log日誌命令詳解!Linux
- 【ELK】elastalert 日誌告警AST
- go-kit 微服務 日誌分析管理 (ELK + Filebeat)Go微服務
- 微服務下,使用ELK做日誌收集及分析微服務
- 使用Docker快速部署ELK分析Nginx日誌實踐DockerNginx
- 詳解Oracle AWR執行日誌分析工具Oracle
- Linux-ELK日誌收集Linux
- SpringBoot使用ELK日誌收集Spring Boot
- ELK一個優秀的日誌收集、搜尋、分析的解決方案
- 使用 ELK 搭建日記系統
- ElasticSearch實戰系列九: ELK日誌系統介紹和安裝Elasticsearch
- Docker安裝ELK並實現JSON格式日誌分析DockerJSON
- ELK實時分析之php的laravel專案日誌PHPLaravel
- Linux檔案系統與日誌分析Linux
- Elasticsearch+Kibana日誌分析系統搭建Elasticsearch
- linux檔案系統和日誌分析Linux
- 解決ELK日誌被截斷的問題
- 日誌分析平臺ELK之日誌收集器logstash常用外掛配置
- ELK日誌告警elastalert2AST