文章目錄
- 一、ELK日志分析系統簡介
- 1.1、ELK日志分析系統組成
- 1.2、日志處理步驟
- 二、3款軟體各自概念
- 2.1、Elasticsearch介紹
- 2.2、Logstash介紹
- 2.3、Kibana介紹
- 三、ELK日志分析系統部署
- 3.1、實驗環境及準備
- 3.2、實驗步驟
- 3.2.1、elk-1和elk-2中部署Elasticsearch
- 3.2.2、apache主機中安裝logstash并做日志搜集
- 3.2.3、在node1主機安裝kibana
一、ELK日志分析系統簡介
ELK日志分析系統是Logstash、Elasticsearch、Kibana開源軟體的集合,對外是作為一個日志管理系統的開源方案,它可以從任何來源、任何格式進行日志搜索、分析與可視化展示
1.1、ELK日志分析系統組成
elasticsearch(es):通過搭建群集;存盤日志資料,索引日志資料
logstash :收集日志,收集到了后給es存盤
kibana :視圖形式展現日志資訊,更加人性化
1.2、日志處理步驟
1.將日志進行集中化管理
2.將日志格式化(Logstash)并輸出到Elasticsearch
3.對格式化后的資料進行索引和存盤(Elasticsearch)
4.前端資料的展示(Kibana)

二、3款軟體各自概念
2.1、Elasticsearch介紹
1、Elasticsearch的概述
提供了一個分布式多用戶能力的全文搜索引擎
2、Elasticsearch核心概念
(1)接近實時(NRT)
elasticsearch是一個接近實時的搜索平臺,這意味著,從索引一個檔案直到這個檔案能夠被搜索到有一個輕微的延遲(通常是1秒)
(2)集群(cluster)
一個集群就是由一個或多個節點組織在一起,它們共同持有你整個的資料,并一起提供索引和搜索功能,其中一個節點為主節點,這個主節點是可以通過選舉產生的,并提供跨節點的聯合索引和搜索的功能,集群有一個唯一性標示的名字,默認是elasticsearch,集群名字很重要,每個節點是基于集群名字加入到其集群中的,因此,確保在不同環境中使用不同的集群名字,
一個集群可以只有一個節點,強烈建議在配置elasticsearch時,配置成集群模式,
(3)節點(node)
節點就是一臺單一的服務器,是集群的一部分,存盤資料并參與集群的索引和搜索功能,像集群一樣,節點也是通過名字來標識,默認是在節點啟動時隨機分配的字符名,當然,你可以自己定義,該名字也很重要,在集群中用于識別服務器對應的節點,
節點可以通過指定集群名字來加入到集群中,默認情況,每個節點被設定成加入到elasticsearch集群,如果啟動了多個節點,假設能自動發現對方,他們將會自動組建一個名為elasticsearch的集群,
(4)索引(type)
在一個索引中,你可以定義一種或多種型別,一個型別是你的索引的一個邏輯上的分類/磁區,其語意完全由你來定,通常,會為具有一組共同欄位的檔案定義一個型別,比如說,我們假設你運營一個博客平臺并且將你所有的資料存盤到一個索引中,在這個索引中,你可以為用戶資料定義一個型別,為博客資料定義另一個型別,當然,也可以為評論資料定義另一個型別,
3、型別相對于關系型資料庫的表
索引(庫)–》型別(表)–》檔案(記錄)
(5)分片和副本(shards & replicas)
在實際情況下,索引存盤的資料可能超過單個節點的硬體限制,如一個10億檔案需1TB空間可能不適合存盤在單個節點的磁盤上,或者從單個節點搜索請求太慢了,為了解決這個問題,elasticsearch提供將索引分成多個分片的功能,當在創建索引時,可以定義想要分片的數量,每一個分片就是一個全功能的獨立的索引,可以位于集群中任何節點上,
每個索引可以被分成多個分片,一個索引也可以被復制0次(意思是沒有復制)或多次,一旦復制了,每個索引就有了主分片(作為復制源的原來的分片)和復制分片(主分片的拷貝)之別,分片和副本的數量可以在索引創建的時候指定,
在索引創建之后,你可以在任何時候動態地改變副本的數量,但是你事后不能改變分片的數量,
默認情況下,Elasticsearch中的每個索引被分片5個主分片和1個副本,這意味著,如果你的集群中至少有兩個節點,你的索引將會有5個主分片和另外5個副本分片(1個完全拷貝),這樣的話每個索引總共就有10個分片,
2.2、Logstash介紹
1、一款強大的資料處理工具
2、可實作資料傳輸、格式處理、格式化輸出
3、資料輸入(從業務輸入)、資料加工(如過濾、改寫等)以及資料輸出(輸出到Elasticsearch群集)
4、Logstash的主要組件
shipper:日志收集者,負責監控本地日志檔案的變化,及時把日志檔案的最新內容收集起來,通常,遠程代理端(agent)只需要運行這個組件即可
indexer:日志存盤者,負責接收日志并寫入到本地檔案
broker:日志hub,負責連接多個shipper和多個indexer
search and storage:允許對事件進行搜索和存盤
web interface:基于Web的展示界面
2.3、Kibana介紹
1、一個針對Elasticsearch的開源分析及可視化平臺
2、搜索、查看存盤在Elasticsearch索引中的資料
3、通過各種圖表進行高級資料分析及展示
4、主要功能
Elasticsearch無縫之集成
整合資料,復雜資料分析
讓更多團隊成員收益
介面靈活,分享更容易
配置簡單,可視化多資料源
簡單資料匯出
三、ELK日志分析系統部署
3.1、實驗環境及準備
| 主機名 | IP地址 | 主要軟體 |
|---|---|---|
| elk-1 | 192.168.73.40 | Elasticsearch、kibana |
| elk-2 | 192.168.73.50 | Elasticsearch |
| apache | 192.168.73.60 | httpd、logstash |
[root@localhost ~]# hostnamectl set-hostname elk-1
[root@localhost ~]# bash
[root@elk-1 ~]# vim /etc/hosts ###添加本地決議,識別集群主機名
192.168.73.40 elk-1
192.168.73.50 elk-2
3.2、實驗步驟
3.2.1、elk-1和elk-2中部署Elasticsearch
1、上傳密鑰,部署yum源,安裝elasticsearch及java(兩臺節點)
[root@elk-1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@elk-1 ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
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 install -y elasticsearch java
[root@elk-1 ~]# java -version ###查看java版本
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
2、修改elasticsearch主組態檔
[root@elk-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17行 集群名稱 ###兩個節點一致
cluster.name: abner
23行 節點名稱 ###兩個節點不同
node.name: elk-1
33行 作業目錄
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
43行 防止交換swap磁區
bootstrap.memory_lock: true
54行 監聽網路
network.host: 0.0.0.0
58行 埠
http.port: 9200
68行:discovery.zen.ping.unicast.hosts: ["elk-1", "elk-2"] #集群發現通過單播實作,單播的主機名為"elk-1", "elk-2"
3、創建作業目錄并更改屬主及屬組,開啟服務
[root@elk-1 ~]# mkdir -p /data/es-data
[root@elk-1 ~]# chown -R elasticsearch.elasticsearch /data/es-data
[root@elk-1 ~]# systemctl start elasticsearch.service
[root@elk-1 ~]# netstat -anpt | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 46814/java
4、測驗


5、兩種方法和ES進行互動
第一種 JAVA API
第二種 RESTful API (通過json格式互動)
[root@elk-1 ~]# curl -i -XGET 'http://192.168.73.40:9200/_count?pretty' -d '{
> "query": {
> "match_all": {}
> }
> }'
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 95
{
"count" : 0,
"_shards" : {
"total" : 0,
"successful" : 0,
"failed" : 0
}
}
6、兩個節點安裝elasticsearch-head插件(安裝插件可以更加人性化的管理集群)
[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
……省略內容
Installed head into /usr/share/elasticsearch/plugins/head ###安裝位置
7、測驗——輸入192.168.73.40:9200/_plugin/head/

8、復合查詢


9、洗掉

10、node-01和node-02日志提示不讓鎖記憶體
[root@elk-1 ~]# less /var/log/elasticsearch/abner.log
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
[root@elk-1 ~]# vim /etc/security/limits.conf ###末尾插入
[root@elk-1 ~]# systemctl stop elasticsearch.service
[root@elk-1 ~]# systemctl start elasticsearch.service
11、安裝監控組件
[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
……省略內容
Installed kopf into /usr/share/elasticsearch/plugins/kopf ###安裝路徑

3.2.2、apache主機中安裝logstash并做日志搜集
1、修改主機名
[root@localhost ~]# hostnamectl set-hostname apache
[root@localhost ~]# bash
2、安裝apache服務
[root@apache ~]# yum install -y httpd
[root@apache ~]# systemctl start httpd
3、安裝java環境,沒有自帶安裝使用yum -y install java安裝
[root@apache ~]# yum install -y java
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
軟體包 1:java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 已安裝并且是最新版本
無須任何處理
[root@apache ~]# java -version
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)
4、上傳密鑰,部署yum源,安裝logstash
[root@apache ~]# vi /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
[root@apache ~]# yum install -y logstash
[root@apache ~]# ln -s /opt/logstash/bin/* /usr/local/bin ###優化執行路徑
5、logstash(apache)與elasticsearch(node)功能是否正常,做對接測驗
logstash命令選項解釋:
-f:指定logstash的組態檔,根據組態檔配置logstash
-e:后面跟著字串,該字串可以被當做logstash的配置(如果是“ ”,則默認使用stdin做輸入,stdout為輸出)
-t:測驗組態檔是否正確,然后退出
#輸入采用標準輸入,輸出采用標準輸出
定義輸入和輸出流,類似管道
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }'
6、使用rubydebug顯示詳細輸出,codec為一種編解碼器
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec => rubydeb
7.使用logstash將資訊輸出給elasticsearch
[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.73.40:9200"] } }'
Settings: Default filter workers: 1
Logstash startup completed
abc123
tom456
123jerry
8.打開瀏覽器輸入http://192.168.73.40:9100/,查看索引資訊,顯示新的資料資訊說明輸出到elasticsearch成功

9.在apache主機中做對接配置
[root@apache ~]# chmod o+r /var/log/messages ###允許其他用戶訪問
[root@apache ~]# ll /var/log/messages
-rw----r--. 1 root root 439103 11月 18 15:20 /var/log/messages
[root@apache ~]# vim /etc/logstash/conf.d/system.conf
input { ###logstash輸入:從/var/log/messages輸入,型別為system,起始位
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output { ###logstash輸出:輸出給elasticsearch(以IP地址指定位置)
elasticsearch {
hosts => ["192.168.73.40:9200"]
index => "system-%{+YYY.MM.dd}"
}
}
[root@apache ~]# systemctl restart logstash
10.打開瀏覽器輸入http://192.168.73.40:9100/,查看索引資訊,顯示新的索引資訊代表logstash搜集到的日志資訊成功輸出給elasticsearch

3.2.3、在node1主機安裝kibana
1.在node1主機安裝kibana
[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.73.40:9200"
//20行
kibana.index: ".kibana"
yum install screen -y
[root@elk-1 ~]# kibana-4.3.1-linux-x64/bin/kibana ###啟動監聽
log [15:43:45.084] [info][status][plugin:kibana] Status changed from uninitialized to green - Ready
log [15:43:45.105] [info][status][plugin:elasticsearch] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [15:43:45.113] [info][status][plugin:kbn_vislib_vis_types] Status changed from uninitialized to green - Ready
log [15:43:45.119] [info][status][plugin:markdown_vis] Status changed from uninitialized to green - Ready
log [15:43:45.123] [info][status][plugin:metric_vis] Status changed from uninitialized to green - Ready
log [15:43:45.125] [info][status][plugin:spyModes] Status changed from uninitialized to green - Ready
log [15:43:45.132] [info][status][plugin:statusPage] Status changed from uninitialized to green - Ready
log [15:43:45.135] [info][status][plugin:table_vis] Status changed from uninitialized to green - Ready
log [15:43:45.136] [info][status][plugin:elasticsearch] Status changed from yellow to green - Kibana index ready
log [15:43:45.146] [info][listening] Server running at http://0.0.0.0:5601
2.瀏覽器中登錄http://192.168.73.40:5601,首次登錄提示創建一個索引名字:
填入system-*,即對接系統日志檔案名


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225554.html
標籤:其他
下一篇:軟體測驗之測驗方案
