一、 ELK闡述
ELK是Elasticsearch褒纲、Logstash、Kibana的簡稱钥飞,這三者是核心套件莺掠,但并非全部。
Elasticsearch是實時全文搜索和分析引擎读宙,提供搜集彻秆、分析、存儲數(shù)據(jù)三大功能结闸;是一套開放REST和JAVA API等結(jié)構(gòu)提供高效搜索功能唇兑,可擴展的分布式系統(tǒng)。它構(gòu)建于Apache Lucene搜索引擎庫之上桦锄。
Logstash是一個用來搜集扎附、分析、過濾日志的工具结耀。它支持幾乎任何類型的日志留夜,包括系統(tǒng)日志、錯誤日志和自定義應(yīng)用程序日志图甜。它可以從許多來源接收日志碍粥,這些來源包括 syslog、消息傳遞(例如 RabbitMQ)和JMX黑毅,它能夠以多種方式輸出數(shù)據(jù)即纲,包括電子郵件、websockets和Elasticsearch博肋。
Kibana是一個基于Web的圖形界面低斋,用于搜索、分析和可視化存儲在 Elasticsearch指標中的日志數(shù)據(jù)匪凡。它利用Elasticsearch的REST接口來檢索數(shù)據(jù)膊畴,不僅允許用戶創(chuàng)建他們自己的數(shù)據(jù)的定制儀表板視圖,還允許他們以特殊的方式查詢和過濾數(shù)據(jù)
二病游、 Elasticearch環(huán)境搭建
2.1 Elasticearch的安裝
2.2.1 單機版安裝
??下載后解壓進入到bin目錄下唇跨,雙擊elasticsearch.bat稠通,即可啟動。在瀏覽器輸入http://localhost:9200/ 是否安裝成功买猖,如下圖所示:
2.2.2 集群安裝
? Elasticsearch集群的安裝非常的簡單改橘,只需要作一些簡單的配置,修改配置文件 config/elasticsearch.yml玉控。
? 本節(jié)將采用兩臺節(jié)點來配置集群飞主,一臺是Windows操作系統(tǒng),另外一臺是Linux操作系統(tǒng)高诺,將Windows操作系統(tǒng)下的Elasticsearch節(jié)點作為主節(jié)點碌识。兩臺服務(wù)器的IP地址如下:
操作系統(tǒng) | IP | 節(jié)點類型 |
---|---|---|
Windows操作系統(tǒng) | 192.168.43.240 | 主節(jié)點(master) |
Linux操作系統(tǒng) | 192.168.223.139 | 從節(jié)點(Slave) |
<font color="red">主節(jié)點</font>
- 修改C:\Windows\System32\drivers\etc\hosts文件,加入如下內(nèi)容
192.168.43.240 master
- 修改Elasticsearch的config目錄下的elasticsearch.yml文件虱而,內(nèi)容如下:
# 集群的名字
cluster.name: my-application
# 節(jié)點的名稱
node.name: master
# 數(shù)據(jù)存放的位置
path.data: D:/elasticsearch-datas/to/data
# 日志存放的位置
path.logs: D:/elasticsearch-datas/to/logs
# 節(jié)點綁定的IP
network.host: 192.168.43.240
# 設(shè)置端口號
http.port: 9200
# 集群中所有的節(jié)點的ip地址
discovery.seed_hosts: ["192.168.43.240", "192.168.223.139"]
# 初始狀態(tài)下集群中主節(jié)點的 node.name
cluster.initial_master_nodes: ["master"]
- 啟動elasticsearch
<font color="red">從節(jié)點</font>
- 創(chuàng)建elasticsearch用戶筏餐,執(zhí)行如下命令
useradd -m -s /bin/bash elasticsearch
- 給elasticsearch的主目錄權(quán)限授予新創(chuàng)建的 elasticsearch 用戶
chown -R elasticsearch /elasticsearch/
- 在 /etc/sysctl.conf 文件中加入如下內(nèi)容
vm.max_map_count=262144 #加大虛擬內(nèi)存空間,然后重啟服務(wù)器
- 在/etc/hosts目錄下加入如下內(nèi)容
192.168.43.240 master
- 修改Elasticsearch的config目錄下的elasticsearch.yml文件牡拇,內(nèi)容如下:
# 集群的名字
cluster.name: my-application
# 節(jié)點的名稱
node.name: slave1
# 數(shù)據(jù)存放的位置
path.data: /elasticsearch-datas/to/data
# 日志存放的位置
path.logs: /elasticsearch-datas/to/logs
# 節(jié)點綁定的IP
network.host: 192.168.223.139
# 設(shè)置端口號
http.port: 9200
# 集群中所有的節(jié)點的ip地址
discovery.seed_hosts: ["192.168.43.240", "192.168.223.139"]
# 初始狀態(tài)下集群中主節(jié)點的 node.name
cluster.initial_master_nodes: ["master"]
- 切換到elasticsearch用戶魁瞪,進入到elasticsearch的家目錄下,執(zhí)行如下命令
su - elasticsearch #切換用戶
bin/elasticsearch #啟動elasticsearch
<font color="red">集群監(jiān)控</font>
下載地址:https://github.com/lmenezes/cerebro/releases
直接雙擊cerebro家目錄下的bin目錄下的 cerebro.bat 即可啟動惠呼,在瀏覽器地址欄訪問:localhost:9000
在Node address輸入:http://192.168.43.240:9200导俘,然后點擊 Connect 按鈕
2.2 Kibana的安裝
??Kibana是世界上最受歡迎的開源日志分析平臺ELK Stack中的“K” ,它為用戶提供了一個工具罢杉,用于在存儲于Elasticsearch集群中的日志數(shù)據(jù)進行檢索趟畏,可視化和構(gòu)建儀表板贡歧。
??Kibana的核心功能是數(shù)據(jù)查詢和分析滩租。使用各種方法,用戶可以搜索Elasticsearch中索引的數(shù)據(jù)利朵,以查找其數(shù)據(jù)中的特定事件或字符串律想,以進行根本原因分析和診斷∩艿埽基于這些查詢技即,用戶可以使用Kibana的可視化功能,允許用戶使用圖表樟遣,表格而叼,地理圖和其他類型的可視化以各種不同的方式可視化數(shù)據(jù)。
A. 下載后進入到家目錄下的bin目錄中豹悬,首先修改config目錄下的kibana.yml文件葵陵,修改如下內(nèi)容:
elasticsearch.hosts: ["http://192.168.43.240:9200", "http://192.168.223.139:9200"]
B. 進入bin目錄下,雙擊 kibana.bat文件瞻佛,在瀏覽器地址欄訪問:http://localhost:5601
2.3 Logstash的安裝
??Logstash是一個開源的服務(wù)器端數(shù)據(jù)處理管道脱篙,可以同時從多個數(shù)據(jù)源獲取數(shù)據(jù)娇钱,并對其進行轉(zhuǎn)換,然后將其發(fā)送到你最喜歡的“存儲”绊困。創(chuàng)建于2009年文搂,于2013年被elasticsearch收購。
Logstash的下載地址:https://www.elastic.co/cn/downloads/logstash
A. 下載測試數(shù)據(jù)集秤朗,下載地址:http://files.grouplens.org/datasets/movielens/煤蹭,在該網(wǎng)頁中下載ml-latest.zip
下載后解壓目錄,將movies.csv文件拷貝到指定的目錄下川梅,例如:D:/logstash-datas/ 目錄疯兼。
B. 進入到Logstash的解壓目錄,進入到config目錄下贫途,新建logstash.conf吧彪,文件內(nèi)容如下:
input {
file {
path => "D:/logstash-datas/movies.csv"
start_position => "beginning"
sincedb_path => "D:/logstash-datas/db_path.log"
}
}
filter {
csv {
separator => ","
columns => ["id","content","genre"]
}
mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
}
mutate {
split => ["content", "("]
add_field => { "title" => "%{[content][0]}"}
add_field => { "year" => "%{[content][1]}"}
}
mutate {
convert => {
"year" => "integer"
}
strip => ["title"]
remove_field => ["path", "host","@timestamp","message","content"]
}
}
output {
elasticsearch {
hosts => "http://192.168.31.173:9200"
index => "movies"
document_id => "%{id}"
}
stdout {}
}
C. 在命令行進入到logstash的bin目錄下,輸入如下命令啟動Logstash:
logstash.bat -f D:\logstash-datas\config\logstash.conf
<font color="red">特別強調(diào):路徑中絕對不能有中文丢早。</font>
D. 在Kibana的Dev Tools中執(zhí)行 GET _cat/indices姨裸, 即可查看到movies數(shù)據(jù)集: