一失晴、概念
ELK 是什么
? ? 1恨樟、ELK 是 Elasticsearch、Logstash幽纷、Kibana 的首字母組合式塌,這三者是核心套件,但并非全部友浸。
? ? ? ? ? ? ? ? 1)峰尝、Elasticsearch?是實(shí)時(shí)全文搜索和分析引擎,提供搜集尾菇、分析境析、存儲(chǔ)數(shù)據(jù)三大功能囚枪;是一套開放REST和JAVA API等結(jié)構(gòu)提供高效搜索功能派诬,可擴(kuò)展的分布式系統(tǒng)。它構(gòu)建于Apache Lucene搜索引擎庫(kù)之上链沼。
? ? ? ? ? ? ? ? 2)默赂、Logstash?是一個(gè)用來搜集、分析括勺、過濾日志的工具缆八。它支持幾乎任何類型的日志,包括系統(tǒng)日志疾捍、錯(cuò)誤日志和自定義應(yīng)用程序日志奈辰。它可以從許多來源接收日志,這些來源包括 syslog乱豆、消息傳遞(例如 RabbitMQ)和JMX奖恰,它能夠以多種方式輸出數(shù)據(jù),包括電子郵件宛裕、websockets和Elasticsearch瑟啃。
????????????????3)、Kibana?是一個(gè)基于Web的圖形界面揩尸,用于搜索蛹屿、分析和可視化存儲(chǔ)在 Elasticsearch指標(biāo)中的日志數(shù)據(jù)。它利用Elasticsearch的REST接口來檢索數(shù)據(jù)岩榆,不僅允許用戶創(chuàng)建他們自己的數(shù)據(jù)的定制儀表板視圖错负,還允許他們以特殊的方式查詢和過濾數(shù)據(jù)
說明:以上是 ELK 技術(shù)棧的一個(gè)架構(gòu)圖坟瓢。從圖中可以清楚的看到數(shù)據(jù)流向。
Beats:是單一用途的數(shù)據(jù)傳輸平臺(tái)犹撒,它可以將多臺(tái)機(jī)器的數(shù)據(jù)發(fā)送到 Logstash 或 Elasticsearch载绿。但 Beats 并不是不可或缺的一環(huán),所以本文中暫不介紹油航。
Logstash: 是一個(gè)動(dòng)態(tài)數(shù)據(jù)收集管道崭庸。支持以 TCP/UDP/HTTP 多種方式收集數(shù)據(jù)(也可以接受 Beats 傳輸來的數(shù)據(jù)),并對(duì)數(shù)據(jù)做進(jìn)一步豐富或提取字段處理谊囚。
Elasticsearch: 是一個(gè)基于 JSON 的分布式的搜索和分析引擎怕享。作為 ELK 的核心,它集中存儲(chǔ)數(shù)據(jù)镰踏。
Kibana:是 ELK 的用戶界面函筋。它將收集的數(shù)據(jù)進(jìn)行可視化展示(各種報(bào)表、圖形化數(shù)據(jù))奠伪,并提供配置跌帐、管理 ELK 的界面。
二绊率、安裝?(?使用 Cakebrew 安裝)
1谨敛、使用?Cakebrew? 安裝?Logstash、Elasticsearch滤否、Kibana
注:Cakebrew 中可能無法下載?Kibana(本文中Cakebrew無法安裝Kibana)
2脸狸、Kibana 安裝到官網(wǎng)中下載(https://www.elastic.co/downloads/past-releases)
注:?Logstash、ElasticSearch藐俺、Kibana 版本需要一致不然無法集成
三炊甲、配置 ( 使用 Cakebrew 安裝)
1、簡(jiǎn)單配置?Elasticsearch
? ? ? ? 1)欲芹、在 /usr/local/etc/elasticsearch/elasticsearch.yml? 文件中加入下列配置:
????????????????# 為集群使用描述性名稱:?
????????????????cluster.name: xxxxxx
? ? ? ? ? ? ? ??# 存儲(chǔ)數(shù)據(jù)的目錄路徑(用逗號(hào)分隔多個(gè)位置):
????????????????path.data: /usr/local/xx/xx/xxx/
????????????????# 日志文件路徑:
????????????????path.logs: /usr/local/xx/xx/xxx/
????????????????# 為HTTP設(shè)置自定義端口:
????????????????http.port: 9600
2卿啡、簡(jiǎn)單配置?Logstash
? ? ? ? 1)、添加一個(gè)?logstash.conf?文件 或者使用文件下的?config/logstash-sample.conf? ?指定要使用的插件以及每個(gè)插件的設(shè)置菱父。舉個(gè)簡(jiǎn)單的例子:
? ? ? ??input { beats { port => 5044 }}
????????filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}"} }
????????geoip { source => "clientip" } }
????????output {
????????????elasticsearch {
????????????????????hosts => ["http://127.0.0.1:9600"]
???????????????????? index => "logstash-%{type}-%{+YYYY.MM.dd}"
????????????}
???????????????????? stdout { codec => rubydebug }
? ? ? ? }? ? ? ? ? ?
? ? ? ? 2)颈娜、在?config/pipelines.yml 文件中添加 如下配置
????????????????- pipeline.id: myconfig??
????????????????path.config: "xxxxxxxxx/config/logstash-sample.conf
3、簡(jiǎn)單配置?Kibana
? ? 1)滞伟、把下載下來的?Kibana 解壓出來 找到?config/kibana.yml 文件添加如下
????????????????# 監(jiān)聽端口?
????????????????server.port: 5601?
????????????????# 指定后端服務(wù)器?
????????????????server.host: "localhost"?
????????????????# 指定elasticsearch實(shí)例地址? ??
????????????????elasticsearch.url: "http://127.0.0.1:9600"?
大功告成揭鳞,此后分別啟動(dòng)?Logstash ---?Elasticsearch -- Kibana 即可