ELK工作流程圖
環境準備
安裝Logstash依賴包JDK
Logstash的運行依賴於Java運行環境, Logstash 1.5以上不低於java 7推薦使用最新版本的Java。由於只是運行Java程序,而不是開發,下載JRE即可。
yum 安裝
[root@reboot ~]#yum install java-1.8.0-openjdk -y
設置yum安裝的java_home(可以不執行)
[root@reboot ~]# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-1.b14.el6.x86_64
源碼安裝
JDK的安裝方式比較簡單,只需將下載回來的程序包解壓到相應的目錄即可。 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下載頁面,因爲需要證書,Linux無法下載,建議window下載,然後上傳
[root@reboot ~]#mkdir /usr/local/java [root@reboot ~]#tar -zxf jdk-8u45-linux-x64.tar.gz -C /usr/local/java/ #設置JDK的環境變量(/etc/profile)添加如下: export JAVA_HOME=/usr/local/java/jdk1.8.0_45 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH #檢查jdk是否安裝成功 [root@reboot ~]#java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02,mixed mode)
安裝logstash
安裝logstash
只需將它解壓的對應目錄即可,例如:/usr/local下: https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz https://artifacts.elastic.co/downloads/logstash/logstash-5.6.11.tar.gz
[root@reboot ~]# tar -zxf logstash-5.6.11.tar.gz -C /usr/local/
安裝完成後運行如下命令測試:
[root@reboot ~]# /usr/local/logstash-5.6.11/bin/logstash -e 'input { stdin { } } output { stdout {} }' Logstash startup completed Hello World! #輸入一個hello world。 2018-09-01T14:48:35.902Z dev-online hello world #處理了輸出的內容,格式:時間 主機名 輸入的信息 codec =>rubydebug 格式化輸出 [root@reboot ~]# ./bin/logstash -e 'input { stdin{} } output { stdout { codec=>rubydebug} }' Logstash startup completed hello world { "message" => "hello world", "@version" => "1", # logstash採用的是UTC時間,即0時區,所以輸出的結果,比北京時間少8小時 "@timestamp" => "2018-09-01T06:48:47.348Z", "host" => "dev-online" }
安裝Elasticsearch
(https://www.elastic.co/ 官網) https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.11.tar.gz https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz 下載Elasticsearch後,解壓到對應的目錄就完成Elasticsearch的安裝。
[root@reboot ~]# tar -zxf elasticsearch-5.6.11.tar.gz -C /usr/local/
ES的配置文件
[root@reboot ~]#cat /usr/local/elasticsearch-5.6.11/config/elasticsearch.yml cluster.name: my-application #集羣名 node.name: node-1 #節點名 path.data:/data/db # 默認存放安裝路徑下的data目錄 network.host:10.1.19.18 # 默認是0.0.0.0:9200 discovery.zen.ping.unicast.hosts: ["127.0.0.1", "10.1.19.18"] #集羣單播發現 discovery.zen.minimum_master_nodes: 1
啓動Elasticsearch
[root@reboot ~]# useradd es # 2.*版本之後不允許root啓動 [es@reboot ~]$ /usr/local/elasticsearch-5.6.11/bin/elasticsearch -d # 後臺運行 [es@reboot ~]$ /usr/local/elasticsearch-5.6.11/bin/elasticsearch-plugin install x-pack # 插件安裝 # 確認elasticsearch的9200端口已監聽,說明elasticsearch已成功運行 [es@reboot ~]$netstat -anp |grep :9200 tcp 0 0 :::9200 :::* LISTEN 3362/java [es@reboot ~]$ curl http://ip:9200 # 返回json結果
常見報錯
https://www.cnblogs.com/xxoome/p/6663993.html
內存不足
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12) 由於elasticsearch5.0默認分配jvm空間大小爲2g,修改jvm空間分配 # vim config/jvm.options -Xms2g -Xmx2g 修改爲 -Xms512m -Xmx512m
線程數不夠
max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048] 修改 /etc/security/limits.d/90-nproc.conf * soft nproc 1024 改爲 * soft nproc 2048
max_map_count不足
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 修改/etc/sysctl.conf配置文件, cat /etc/sysctl.conf | grep vm.max_map_count vm.max_map_count=262144 sysctl -p
最大打開文件數不足
max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536] vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
阿里雲服務器問題
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk 解決方法:在es配置中加入下面命令即可 bootstrap.system_call_filter: false
Kibana
安裝
下載kibana後,解壓到對應的目錄就完成kibana的安裝 https://artifacts.elastic.co/downloads/kibana/kibana-5.6.11-linux-x86_64.tar.gz https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
[root@reboot ~]# tar -zxf kibana-5.6.11-linux-x64.tar.gz -C /usr/local/
簡單配置
vim config/kibana.yml port:5601 #對外訪問端口 host:"0.0.0.0" #對外訪問ip elasticsearch.url: "http://localhost:9200" #數據源ES地址
啓動kibana
[root@reboot ~]# /usr/local/kibana-5.6.11-linux-x64/bin/kibana
訪問測試
http://kibanaServerIP:5601
訪問Kibana,首先,配置一個索引,默認,Kibana的數據被指向Elasticsearch,使用默認的logstash-*的索引名稱,並且是基於時間的,點擊“Create”即可。
小栗子
在logstash安裝目錄下創建一個logstash-es-simple.conf文件,用於測試logstash使用elasticsearch作爲後端存儲的例子,該文件中定義了stdout和elasticsearch同時輸出,這樣的“多重輸出”即保證輸出結果顯示到屏幕上,同時也輸出到elastisearch中。
實際應用
配置logstash作爲Indexer 將logstash配置爲索引器,並將logstash的日誌打印輸出到屏幕,本範例主要是索引本地系統日誌。
[root@reboot ~]#cat /usr/local/logstash-5.6.11/logstash-indexer.conf input { file { type =>"syslog" path => ["/var/log/messages", "/var/log/syslog" ] } } output { stdout { codec=> rubydebug } }
[root@reboot ~]#/usr/local/logstash-5.6.11/bin/logstash -f logstash-indexer.conf
使用echo命令模擬寫入日誌,命令執行後看到如下圖的信息
[root@reboot ~]# echo "`date` 你好" >>/var/log/messages
就可以在logstash終端看到進來的日誌了
學習的文章 https://www.elastic.co/guide/index.html 官方文檔 http://kibana.logstash.es/content/ elk中文指南 http://www.ttlsa.com/elk/ 運維生存時間 elk 系列 http://www.wklken.me/posts/2015/04/26/elk-for-nginx-log.html 非常棒 博主有才華 http://ckl893.blog.51cto.com/8827818/1772287 簡單版的elk實現nginx日誌分析 http://www.ywnds.com/?p=9776 5.4.1版本 運維那點事 文章真棒 https://www.cnblogs.com/jiu0821/p/7695149.html 5.6.3比較新多版本了 http://blog.51cto.com/13527416/2049173 滬江網搜索平臺的實踐 http://blog.51cto.com/zero01/2079879 6.0版本 http://blog.51cto.com/13676067/2154285 涉及到調優