elk搭建實(shí)戰(zhàn)
1 安裝elasticsearch
1.1安裝elasticsearch
ES中文文檔地址:https://es.xiaoleilu.com
ES下載地址:https://www.elastic.co/downloads/elasticsearch
解壓:tar -zxvf elasticsearch-5.6.2.tar.gz
cd elasticsearch-5.6.2/ ? ?
運(yùn)行
./bin/elasticsearch
./bin/elasticsearch -d????????? #后臺(tái)運(yùn)行
tail -f logs/elasticsearch.log?????????? #查看日志
注意:
elasticsearch5.0啟動(dòng)失敗故硅,出現(xiàn)如下提示:
1、Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
由于elasticsearch5.0默認(rèn)分配jvm空間大小為2g画株,修改jvm空間分配
#?vim?config/jvm.options
-Xms2g
-Xmx2g
修改為
-Xms512m
-Xmx512m
驗(yàn)證:elasticsearch --version
注:ES有執(zhí)行腳本的能力菌瘪,因安全因素舰罚,不能在root用戶下運(yùn)行特恬,強(qiáng)行運(yùn)行會(huì)報(bào)如下錯(cuò)誤:
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
解決方案:
groupadd es????????? #增加es組
useradd es -g es -p es123456 ? ? ? ? ?#增加es用戶并附加到es組
chown -R es:es elasticsearch-5.6.2 ? #給目錄權(quán)限
su es????????? #使用es用戶
./bin/elasticsearch -d ???????? #后臺(tái)運(yùn)行es
外網(wǎng)訪問
vi conf/elasticsearch.yml
修改network.host: 0.0.0.0
再次啟動(dòng)linux可能出現(xiàn)如下類似錯(cuò)誤
bootstrap checks failed
max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
解決方案
1悠砚、vi /etc/sysctl.conf
設(shè)置fs.file-max=655350
保存之后sysctl -p使設(shè)置生效
2士嚎、vi /etc/security/limits.conf 新增
* soft nofile 655350
* hard nofile 655350
3凹嘲、重新使用SSH登錄师倔,再次啟動(dòng)elasticsearch即可。
外網(wǎng)訪問:serverip:9200/
2周蹭、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
3趋艘、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
如果不存在則添加
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
默認(rèn)端口:9200
配置elasticsearch:
打開config/elasticsearch.yml
修改以下配置:
path.data: /Users/chenshunyang/tools/elasticsearch/data
path.logs: /Users/chenshunyang/tools/elasticsearch/logs
cluster.name: elktest //更改默認(rèn)的名稱為我們想要的名稱
node.name: node-elktest? //更改節(jié)點(diǎn)默認(rèn)的名稱
network.host: localhost
1.2 安裝插件:elasticsearch-head
elasticsearch 2.x 版本
elasticsearch 2.x版本中凶朗,直接使用/bin/plugin install mobz/elasticsearch-head安裝即可
驗(yàn)證:通過訪問http://localhost:9200/_plugin/head/
elasticsearch 5.1 版本
安裝:elasticsearch 5.1中瓷胧,elasticsearch-head插件不能放在elasticsearch的 plugins、modules 目錄下棚愤,不能使用 elasticsearch-plugin install搓萧,直接啟動(dòng)elasticsearch即可
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
npm install grunt
配置:修改elasticsearch/config/elasticsearch.yml
添加
http.cors.enabled: true
http.cors.allow-origin: "*"
打開elasticsearch-head-master/Gruntfile.js,找到下面connect屬性宛畦,新增hostname: ‘0.0.0.0’:
connect: {
server: {
options: {
hostname: '0.0.0.0',
port: 9100,
base: '.',
keepalive: true
}
}
}
啟動(dòng)插件:
elasticsearch-head/ && ./node_modules/grunt/bin/grunt server
查看
2 安裝kibana
下載:從https://www.elastic.co/downloads/kibana下載對(duì)應(yīng)操作系統(tǒng)版本的kibana
解壓: tar -xzvf kibana-5.2.0-darwin-x86_64.tar.gz
配置kibana:進(jìn)入kibana/config
打開kibana.yml瘸洛,設(shè)置elasticsearch.url? ? 為es實(shí)例的地址
eg:elasticsearch.url: "http://localhost:9200"
啟動(dòng):./bin/kibana.sh
默認(rèn)端口:5601
3 安裝logstash
下載:從https://www.elastic.co/downloads/logstash下載對(duì)應(yīng)操作系統(tǒng)版本的logstash
解壓:tar -zxvf logstash-5.2.0.tar.gz
啟動(dòng):./bin/logstash -f /home/push/logstash/conf/logstash.conf (logstash.conf為logstash的配置文件)
驗(yàn)證:logstah --version
配置logstash:
生成一個(gè)logstash.conf文件,配置示例內(nèi)容如下
input {
kafka {
zk_connect => "192.168.248.230:2181,192.168.248.175:2181,192.168.249.238:2181/kafka"
group_id => "sms-service3"
topic_id => "sms-service"
codec => "json"
reset_beginning => false
consumer_threads => 5
decorate_events => true
auto_offset_reset => "smallest"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-smsservice-%{+YYYY.MM.dd}"
document_type => "sms-service"
workers => 1
flush_size => 20000
idle_flush_time => 10
template_overwrite => true
}
}
關(guān)鍵配置詞語解釋:
Input 解釋
作為 Consumer 端,插件使用的是 High-level-consumer API次和,請(qǐng)結(jié)合上述 kafka 基本概念進(jìn)行設(shè)置:
group_id
消費(fèi)者分組反肋,可以通過組 ID 去指定,不同的組之間消費(fèi)是相互不受影響的踏施,相互隔離石蔗。
topic_id
指定消費(fèi)話題,也是必填項(xiàng)目畅形,指定消費(fèi)某個(gè) topic 养距,這個(gè)其實(shí)就是訂閱某個(gè)主題,然后去消費(fèi)束亏。
reset_beginning
logstash 啟動(dòng)后從什么位置開始讀取數(shù)據(jù)铃在,默認(rèn)是結(jié)束位置,也就是說 logstash 進(jìn)程會(huì)以從上次讀取結(jié)束時(shí)的偏移量開始繼續(xù)讀取,如果之前沒有消費(fèi)過定铜,那么就開始從頭讀取.如果你是要導(dǎo)入原有數(shù)據(jù)阳液,把這個(gè)設(shè)定改成 "true", logstash 進(jìn)程就從頭開始讀取.有點(diǎn)類似 cat 揣炕,但是讀到最后一行不會(huì)終止帘皿,而是變成 tail -F ,繼續(xù)監(jiān)聽相應(yīng)數(shù)據(jù)畸陡。
decorate_events
在輸出消息的時(shí)候會(huì)輸出自身的信息包括:消費(fèi)消息的大小鹰溜, topic 來源以及 consumer 的 group 信息。
rebalance_max_retries
當(dāng)有新的 consumer(logstash) 加入到同一 group 時(shí)丁恭,將會(huì) reblance 曹动,此后將會(huì)有 partitions 的消費(fèi)端遷移到新的 consumer 上,如果一個(gè) consumer 獲得了某個(gè) partition 的消費(fèi)權(quán)限牲览,那么它將會(huì)向 zookeeper 注冊(cè)墓陈, Partition Owner registry 節(jié)點(diǎn)信息,但是有可能此時(shí)舊的 consumer 尚沒有釋放此節(jié)點(diǎn)第献,此值用于控制贡必,注冊(cè)節(jié)點(diǎn)的重試次數(shù)。
consumer_timeout_ms
指定時(shí)間內(nèi)沒有消息到達(dá)就拋出異常庸毫,一般不需要改仔拟。
以上是相對(duì)重要參數(shù)的使用示例,更多參數(shù)可以選項(xiàng)可以跟據(jù)https://github.com/joekiller/logstash-kafka/blob/master/README.md查看 input 默認(rèn)參數(shù)飒赃。
output解釋:
Logstash 會(huì)努力攢到 20000 條數(shù)據(jù)一次性發(fā)送出去利花,但是如果 10 秒鐘內(nèi)也沒攢夠 20000 條,Logstash 還是會(huì)以當(dāng)前攢到的數(shù)據(jù)量發(fā)一次盒揉。
作者:shunyang
鏈接:http://www.reibang.com/p/6b7f0488ddff
來源:簡書
著作權(quán)歸作者所有晋被。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處刚盈。