1. 程式人生 > >ELKstack簡介及環境部署

ELKstack簡介及環境部署

平臺 v-on gin 索引器 out echo auto net openjdk

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 涉及到調優

ELKstack簡介及環境部署