ELK是ElasticSearch、Logstash、Kibana的簡稱,通常用於日誌系統,從日誌收集,日誌轉儲,日誌展現等入手,用以提供簡潔高效的日誌處理機制。html
鑑於沒有額外的機器,這裏就用docker來簡單模擬下一個簡單ELK系統的部署和使用。git
新建elasticsearch目錄,並再其下新建文件config/elasticsearch.yml,文件內容以下:github
network.host: 0.0.0.0 xpack: ml.enabled: false monitoring.enabled: false security.enabled: false watcher.enabled: false
在ubuntu 主機配置vm.max_map_count參數(永久生效):docker
vi /etc/sysctl.conf #修改vm.max_map_count = 262144 sysctl -p
(一次生效):sysctl -w vm.max_map_count=262144ubuntu
2.在elasticsearch 文件夾下執行ruby
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.3 docker run --rm -it -p 9200:9200 -p 9300:9300 -v "$PWD"/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml docker.elastic.co/elasticsearch/elasticsearch:6.4.3
同時其餘配置文件也能夠寫在config文件下,同時映射進容器中;至此elasticsearch安裝完成。app
新建logstash文件夾,並在其下新建config、pipeline兩個文件夾elasticsearch
其中config文件夾下有文件logstash.yml、pipelines.yml。內容分別爲:ide
logstash.yml:ui
config: reload: automatic: true interval: 3s xpack: management.enabled: false monitoring.enabled: false
pipelines.yml:
- pipeline.id: test path.config: "/usr/share/logstash/pipeline/logstash-test.conf"
而後pipeline文件夾下有文件logstash-test.conf,內容爲(192.168.100.3 是我ubuntu的主機ip):
input { file { path => ["/usr/share/logstash/pipeline/logs/test.log"] start_position => "beginning" } } filter { mutate { gsub => ["message", "\r", ""] } dissect { mapping => {"message" => "%{date} %{+date} [%{task} %{+task}] [%{type}] %{class} - %{info}"} } } output { elasticsearch { hosts => ["192.168.100.3:9200"] } stdout { codec => rubydebug } }
最後在logstash文件夾下運行命令:
docker pull docker.elastic.co/logstash/logstash:6.4.3 docker run --rm -it -v "$PWD"/pipeline/:/usr/share/logstash/pipeline/ -v "$PWD"/config/:/usr/share/logstash/config/ docker.elastic.co/logstash/logstash:6.4.3
在輸入中:輸入的日誌文件使用/usr/share/logstash/pipeline/logs/test.log,只需將日誌文件放入pipeline/logs/下,或者手動映射進容器便可。另外輸入文件路徑支持模糊匹配。
在過濾器中定義了去掉消息中的換號符號,以及定義了消息格式。這裏的消息格式自定義方法參閱:https://www.elastic.co/guide/en/logstash/6.4/filter-plugins.htm
安裝kibana
新建kibana文件夾,並在其下新建config/kibana.yml文件,內容以下:
server.host: "0.0.0.0" elasticsearch.url: http://192.168.100.3:9200 xpack: apm.ui.enabled: false graph.enabled: false ml.enabled: false monitoring.enabled: false reporting.enabled: false security.enabled: false grokdebugger.enabled: false searchprofiler.enabled: false
最後在kibana文件夾下運行命令:
docker pull docker.elastic.co/kibana/kibana:6.4.3 docker run --rm -it -p 5601:5601 -v "$PWD"/config/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:6.4.3
運行結果:
固然安裝也能夠用 caas/docker-elk 一鍵搞定
參考文章 :
http://www.javashuo.com/article/p-mxdlnjtp-gt.html
https://www.jianshu.com/p/b81e1b7c0efb