ELK安裝
ELK解決方案:elasticSearch + LogStash + Kibana = ELK Stack
ElasticSearch官網:elastic.co
ElasticSearch:是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。
準備:
安裝es以前須要安裝jdk,2.3.5版本,jdk要求在1.8以上java
jdk安裝:wget http://download.java.net/java/jdk8u162/archive/b03/binaries/jdk-8u162-ea-bin-b03-linux-x64-24_oct_2017.tar.gz 解壓:tar -zxvf jdk-8u162-ea-bin-b03-linux-x64-24_oct_2017.tar.gz -C /usr/local/ 配置環境變量:vim /etc/profile
添加以下內容:
export JAVA_HOME=/usr/local/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH 刷新配置:source /etc/profile
安裝es:
打開網址:https://www.elastic.co/downloads/past-releaseslinux
下載:nginx
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.5/elasticsearch-2.3.5.tar.gzweb
解壓:數據庫
tar -zxvf elasticsearch-2.3.5.tar.gz -C /usr/local/vim
啓動以前須要修改配置: vim elasticsearch.yml瀏覽器
建立對應的數據和日誌目錄:服務器
#建立一個data目錄,用於存放data數據和logs日誌:
mkdir /data/es/data mkdir /data/es/logs
或者
mkdir -vp /data/es/{data,logs}
查看目錄結構:
【在多臺機器上執行下面的命令】
restful
cat /etc/passwd|grep 用戶名,用於查找某個用戶markdown
cat /etc/group|grep 組名,用於查找某個用戶組
groups 查看當前登陸用戶的組內成員
groups hadoop01 查看hadoop01用戶所在的組,以及組內成員
whoami 查看當前登陸用戶名
#es啓動時須要使用非root用戶,全部建立一個hadoop01用戶: useradd hadoop01 #爲hadoop01用戶添加密碼:
passwd hadoop01 #給相應的目錄添加權限 chown -R hadoop01:hadoop01/{hadoop01,data}
說明:新建立的用戶會在/home下建立一個用戶目錄hadoop01
usermod --help 修改用戶這個命令的相關參數
userdel hadoop01 刪除用戶hadoop01
rm -rf hadoop01 刪除用戶所在目hadoop01
上面的幾個命令只有root帳號纔可使用,若是你不知道本身的系統上面的命令在什麼位置可使用以下命令查找其路徑:
locate useradd
啓動es:./elasticseatch -d
-d 是後臺運行
瀏覽器測試訪問:http://192.168.200.101:9200/
查看日誌:cd /usr/local/elasticsearch-2.3.5/logs
執行 less my-cluster.log(集羣名稱.log)
啓動程序報錯:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006fff80000, 2863661056, 0) failed; error=’Cannot allocate memory’ (errno=12) #There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (malloc) failed to allocate 2863661056 bytes for committing reserved memory. # An error report file #with more information is saved as: # /home/raini/IdeaProjects/spark_mllib/hs_err_pid19206.log
內存不足: 減小啓動程序所需內存,或加大內存,如關閉一些程序。
ELK收集nginx日誌並用高德地圖展現出IP
http://blog.51cto.com/liqingbiao/1940469
如何和es進行交互:
restful API:linux的curl工具
開發語言的API:java、JavaScrip、.NET、PHP、Python、Ruby
安裝CURL工具
curl 的官網下載地址:http://curl.haxx.se/download/
1.下載:wget https://curl.haxx.se/download/curl-7.57.0.tar.gz
2.解壓:tar -xzvf curl-7.57.0.tar.gz
3.安裝:
cd curl-7.57.0 ./configure make make install
4.完成 測試:curl -i -XGET 'http://www.baidu.com'
-i參數 表示爲攜帶請求頭信息
-XGET 參數 表示爲get請求方式
curl方式和es進行交互:
查詢:
curl -i -XGET 'http://192.168.200.101:9200/_count?pretty' -d ' { "query":{ "match_all":{} } }' 解釋: -i:顯示請求頭 -XGET:請求方式 http://192.168.200.101:9200:IP+端口 _count:查詢的內容 pretty:輸出的樣式
安裝es交互插件head:
在bin目錄下執行 ./plugin install mobz/elasticsearch-head
./plugin install file:///home/bigdata/elasticsearch-head-master.zip
測試訪問:http://192.168.200.101:9200/_plugin/head/
安裝es監控插件kopf:
./plugin install lmenezes/elasticsearch-kopf
測試訪問:http://192.168.200.101:9200/_plugin/kopf/
RESTful接口URL的格式:
http://localhost:9200/<index>/<type>/[<id>]
其中index、type是必須提供的。
id是可選的,不提供es會自動生成。
index、type將信息進行分層,利於管理。
index能夠理解爲數據庫;type理解爲數據表;id至關於數據庫表中記錄的主鍵,是惟一的。
偶數就會形成腦裂
防止腦裂的配置:
-
Logstash:數據收集引擎。它支持動態的從各類數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操做,而後存儲到用戶指定的位置;
-
Kibana:數據分析和可視化平臺。一般與 Elasticsearch 配合使用,對其中數據進行搜索、分析和以統計圖表的方式展現;
-
Filebeat:ELK 協議棧的新成員,一個輕量級開源日誌文件數據蒐集器,基於 Logstash-Forwarder 源代碼開發,是對它的替代。在須要採集日誌數據的 server 上安裝 Filebeat,並指定日誌目錄或日誌文件後,Filebeat就能讀取數據,迅速發送到 Logstash 進行解析,亦或直接發送到 Elasticsearch 進行集中式存儲和分析。