ELK
ELK簡介:
ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日志收集處理工具(Agent),Filebeat占用資源少,適合于在各個服務器上搜集日志后傳輸給Logstash,官方也推薦此工具。
Elasticsearch是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash 主要是用來日志的搜集、分析、過濾日志的工具,支持大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日志的主機上,server端負責將收到的各節點日志進行過濾、修改等操作在一并發往elasticsearch上去。
Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日志。
一、安裝Logstash
1)在安裝Logstash之前,確保已經安裝了Java的運行環境
2)在官網(https://www.elastic.co/)下載:
Logstash-2.3.4(https://download.elastic.co/logstash/logstash/logstash-2.3.4.tar.gz)
3)下載完成之后,解壓(無須編譯),并復制到local目錄下,這個是我正式部署的目錄:/usr/local/logstash-2.3.4
tar xf logstash-2.3.4.tar.gz -C /usr/local/
4)測試運行
[root@localhost?download]#?/usr/local/logstash-2.3.4/bin/logstash?-e?'input?{?stdin?{?}?}?output?{?stdout?{}?}'??
Settings:?Default?pipeline?workers:?1??
Pipeline?main?started??
c++??
2016-08-18T09:39:26.267Z?localhost.localdomain?c++??
? ? ? ? 我們可以看到,我們輸入什么內容logstash按照某種格式輸出,其中-e參數參數允許Logstash直接通過命令行接受設置。這點尤其快速的幫助我們反復的測試配置是否正確而不用寫配置文件。使用CTRL-C命令可以退出之前運行的Logstash。
? ? ? ? 使用-e參數在命令行中指定配置是很常用的方式,不過如果需要配置更多設置則需要很長的內容。這種情況,我們首先創建一個簡單的配置文件,并且指定logstash使用這個配置文件。 例如:在 logstash 安裝目錄下創建一個“基本配置”測試文件 logstash-test.conf, 文件內容如下:
#?mkdir -p /usr/local/logstash-2.3.4/conf
#vim?/usr/local/logstash-2.3.4/conf/logstash-simple.conf??
input?{?stdin?{?}?}??
output?{??
??stdout?{?codec=>?rubydebug?}??
}??
? ? ? ? Logstash 使用 input 和 output 定義收集日志時的輸入和輸出的相關配置,本例中 input 定義了一個叫 "stdin" 的 input , output 定義一個叫 "stdout" 的 output 。無論我們輸入什么字符, Logstash 都會按照某種格式來返回我們輸入的字符,其中 output 被定義為 "stdout" 并使用了 codec 參數來指定 logstash 輸出格式。
#/usr/local/logstash-2.3.4/bin/logstash?-f?/usr/local/logstash-2.3.4/conf/logstash-simple.conf??
{??
???????"message"?=>?"C++",??
????? "@version"?=>?"1",??
??"@timestamp"?=>?"2016-08-18T10:05:47.352Z",??
???????"host"?=>?"localhost.localdomain"??
}??
5)長期運行Logstash
#nohup?/usr/local/logstash-2.3.4/bin/logstash?-f?/usr/local/logstash-2.3.4/conf/logstash-simple.conf?&?>?/dev/null?2>&1??
?
二、安裝Elasticsearch
1)下載,并解壓(無須編譯),Elasticsearch2.3.5(https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.5/elasticsearch-2.3.5.tar.gz)
tar xf elasticsearch-2.3.5.tar.gz -C /usr/local/
? ? ? 復制到local目錄下,正式物理目錄:/usr/local/elasticsearch-2.3.5
2)啟動Elasticsearch
注意,我使用root權限來運行,但是Java拋出了Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root,
因此必須使用普通帳號運行。
#/usr/local/elasticsearch-2.3.5/bin/elasticsearch??
如果需要后臺執行,執行以下命令:
#nohup?/usr/local/elasticsearch-2.3.5/bin/elasticsearch?&?>?/dev/null?2>&1??
檢查是否成功運行:
[lizhibin@localhost?local]$?netstat?-nat?|?grep?9200??
tcp6???????0??????0?127.0.0.1:9200??????????:::*????????????????????LISTEN??
?
3)配置logstash,并將結果輸出到elasticsearch
修改logstash 的配置文件:
#vim /usr/local/logstash-2.3.4/conf/logstash-simple.conf
input?{?stdin?{?}?}??
output?{??
elasticsearch?{hosts?=>?"localhost"?}??
stdout?{?codec=>?rubydebug?}??
}??
?執行logstash:/usr/local/logstash-2.3.4/bin/logstash -f /usr/local/logstash-2.3.4/conf/logstash-simple.conf
并測試輸入日志記錄
使用curl命令發送請求elasticsearch是否接受到了數據:
[root@localhost?conf]#?curl?'http://localhost:9200/_search?pretty'??
{??
??"took"?:?47,??
??"timed_out"?:?false,??
?"_shards"?:?{??
????"total"?:?5,??
????"successful"?:?5,??
????"failed"?:?0??
??},??
??"hits"?:?{??
????"total"?:?4,??
????"max_score"?:?1.0,??
????"hits"?:?[?{??
??????"_index"?:?"logstash-2016.08.19",??
??????"_type"?:?"logs",??
??????"_id"?:?"AVah8wW7qomkeCHVJDgC",??
??????"_score"?:?1.0,??
??????"_source"?:?{??
????????"message"?:?"C++",??
???????"@version"?:?"1",??
????????"@timestamp"?:?"2016-08-19T08:37:46.727Z",??
????????"host"?:?"localhost.localdomain"??
??????}??
????},?{??
??????"_index"?:?"logstash-2016.08.19",??
?
三、安裝Kibana
1)下載,解壓(無須編譯)
? ? ? 下載(Kibana-4.5.4):https://download.elastic.co/kibana/kibana/kibana-4.5.4-linux-x64.tar.gz
? ? ? 正式物理目錄:/usr/local/kibana-4.5.4-linux-x64
tar xf kibana-4.5.4-linux-x64.tar.gz -C /usr/local/
2)啟動kibana
#nohup?/usr/local/kibana-4.5.4-linux-x64/bin/kibana?&?>?/dev/null?2>&1??-=['
?
3)使用Kibana
使用 http://kibanaServerIP : 5601 訪問 Kibana ,登錄后,首先,配置一個索引,默認, Kibana 的數據被指向 Elasticsearch ,使用默認的 logstash-* 的索引名稱,并且是基于時間的,點擊“ Create ”即可。
點擊“ Discover ”,可以搜索和瀏覽 Elasticsearch 中的數據,默認搜索的是最近 15分鐘的數據。可以自定義選擇時間。
?
?
在CentOS 6.5 上運行Elasticsearch 2.3,異常如下:
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)Refer to the log for complete error details.
?
異常描述為不能以root權限運行Elasticsearch.解決辦法是運行時加上參數:
bin/elasticsearch -Des.insecure.allow.root=true
或者修改bin/elasticsearch,加上ES_JAVA_OPTS屬性:
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
保存之后重啟Elasticsearch。
總結
- 上一篇: 小型计算机房建设标准,依据国家计算机房建
- 下一篇: JWT HandBook —— 官方使用