实战 Elastic Stack
实战 Elastic Stack - ELK 部署与配置[*]系统环境:CentOS Linux release 7.5.1804 (Core)
[*]服务器数量:8 台
http://i2.运维网.com/images/blog/201810/28/20f8445d4469fd222499d29c40297495.png
相关软件及版本
jdk-8u181-linux-x64.tar.gz
elasticsearch-6.3.2.tar.gz
zookeeper-3.4.12.tar.gz
kafka_2.10-0.10.0.1.tgz
filebeat-6.3.2-linux-x86_64.tar.gz
kibana-6.3.2-linux-x86_64.tar.gz
logstash-6.3.2.tar.gz
约定
所有安装包放置在/elk/app
所有软件安装在 /usr/local 的主目录下
JDK的安装
版本:jdk1.8.0_181
涉及的服务器 (c172 to c178)
这里以c172安装JDK为例
解压
tar zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/
添加全局环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
http://i2.运维网.com/images/blog/201810/28/6627eb7a5fbaf9595c489aaa1811b36b.png
变量生效
source /etc/profile
验证JAVA版本
java -version
http://i2.运维网.com/images/blog/201810/28/1f3b6e19fbf496c971cf8f6a328cb72f.png
同样的步骤完成c173到c178服务器JAVA的安装
ElasticSearch 的安装与配置
版本:elasticsearch-6.3.2
涉及的服务器 c176 到 c178 (三台)
这里以c176为例
解压
tar zxvf elasticsearch-6.3.2.tar.gz -C /usr/local/
重命名
mv elasticsearch-6.3.2 elasticsearch
创建独立的es用户,名称:elasticsearch, 并授权给 /usr/local/elasticsearch
useradd elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch
http://i2.运维网.com/images/blog/201810/28/c9cfbfd6917a7e5915da68ead71554c3.png
针对elasticsearch的系统调优
vim /etc/sysctl.conf
加入以下内容
fs.file-max=655360
vm.max_map_count=262144
http://i2.运维网.com/images/blog/201810/28/b154bff62b7ec67f5d832a773ccc787b.png
vim /etc/security/limits.conf
加入以下内容
* soft nproc 204800
* hard nproc 204800
* soft nofile 655360
* hard nofile 655360
* soft memlock unlimited
* hard memlock unlimited
http://i2.运维网.com/images/blog/201810/28/cc6c2c4a3db91dc72c1bdc8a5461d8e9.png
vim /etc/security/limits.d/20-nproc.conf
修改内容为
* soft nproc 40960
root soft nproc unlimited
http://i2.运维网.com/images/blog/201810/28/3ce5d62e7bd075d61d6a29d43a1e3900.png
执行下面命令来生效
sysctl -p
http://i2.运维网.com/images/blog/201810/28/007b240be74a30c13615bff3b86887d2.png
logout系统,再重新login,并执行 ulimit -a 查看调优的结果
ulimit -a
http://i2.运维网.com/images/blog/201810/28/bf809227281a9af29ad89e9df71e1ae1.png
JVM调优
vim /usr/local/elasticsearch/config/jvm.options
Xms 和Xmx的值,推荐设置为物理内存的一半。(这里都设置为1GB)
http://i2.运维网.com/images/blog/201810/28/ea99e31cfa785daf365f61898aec03b6.png
创建elasticsearch 的data存放目录
mkdir -p /data1/elasticsearch
mkdir -p /data2/elasticsearch
chown -R elasticsearch:elasticsearch /data1/elasticsearch
chown -R elasticsearch:elasticsearch /data2/elasticsearch
配置elasticsearch
vim /usr/local/elasticsearch/config/elasticsearch.yml
添加以下内容
cluster.name: es
node.name: c176
node.master: true
node.data: true
path.data: /data1/elasticsearch,/data2/elasticsearch
path.logs: /usr/local/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 192.168.199.176
http.port: 9200
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping_timeout: 3s
discovery.zen.ping.unicast.hosts: ["192.168.199.176:9300","192.168.199.177:9300","192.168.199.178:9300"]
http://i2.运维网.com/images/blog/201810/28/63696bd9bf4bb9fc5dd2dabe2e9a9c27.png
启动elasticsearch集群, # 注意:确保 /usr/local/elasticsearch 和 /data1/elastisearch 和 /data2/elasticsearch 的授权用户是elasticsearch 用户;启动 elasticsearch服务的时候,必须要切换到 elasticsearch 用户
su - elasticsearch
/usr/local/elasticsearch/bin/elasticsearch -d
验证elasticsearch服务启动正常
jps
http://i2.运维网.com/images/blog/201810/28/6af5ce9a071600ae3de40459447e45df.png
curl http://192.168.199.176:9200
有如下输出,表明该服务正常
http://i2.运维网.com/images/blog/201810/28/79af6ade2edef4f2c5d8d8378c443bdc.png
关于elasticsearch的日志文件
/usr/local/elasticsearch/logs/XXX.log (## XXX 代表 cluster.name 的名称)
如果服务不能正常启动,根据日志报错情况来分析,判断和解决。
对c177 和 c178 服务器做同样的 关于 elasticsearch 的安装,配置步骤
ZooKeeper的安装与配置
版本:zookeeper-3.4.12
涉及的服务器 (c172 to c174)
这里以c172安装配置 ZooKeeper 为例
解压, 重命名主目录
tar zxvf zookeeper-3.4.12.tar.gz -C /usr/local/
mv zookeeper-3.4.12 zookeeper
复制zoo_sample.cfg,并重名为zoo.cfg
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
http://i2.运维网.com/images/blog/201810/28/bbec63340c1b0e8e732476d3afda6bb3.png
创建 ZooKeeper 的 data 目录
mkdir -p /data/zookeeper
创建 myid 文件,其内容为1
echo "1" > /data/zookeeper/myid (## 注意对应的c173的值为 2, c174的值为 3;)
配置 zookeeper
vim /usr/local/zookeeper/conf/zoo.cfg
添加以下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.199.172:2888:3888
server.2=192.168.199.173:2888:3888
server.3=192.168.199.174:2888:3888
http://i2.运维网.com/images/blog/201810/28/8d07bd0c3554578cfc456b7b0d728cff.png
启动ZooKeeper服务, 并通过 jps 或者 ps -ef 来验证服务正常启动
zkServer.sh start
jps
ps -ef | grep zookeeper
http://i2.运维网.com/images/blog/201810/28/5f3ccb460779cf24ea9a4be5bd19fdd7.png
http://i2.运维网.com/images/blog/201810/28/8a8df6a25b807aff647c8657bbcec9f3.png
注意:
ZooKeeper 的日志存放位置与zookeeper启动的时候在同一目录下,名称为 zookeeper.out;
完成同样的 zookeeper 安装配置在 c173, c174 服务器上。
Kafka的安装与配置
版本:kafka_2.10-0.10.0.1
涉及的服务器 (c172 to c174)
这里以c172安装配置 ZooKeeper 为例
注意:Filebeat使用的版本(filebeat-6.3.2)所支持的Kafka版本要对应支持
https://www.elastic.co/guide/en/beats/filebeat/6.3/kafka-output.html
http://i2.运维网.com/images/blog/201810/28/8bc542c900d971741f0782ec4d766190.png
获取kafka安装包
wget https://archive.apache.org/dist/kafka/0.10.0.1/kafka_2.10-0.10.0.1.tgz
解压,重命名
tar zxvf kafka_2.10-0.10.0.1.tgz -C /usr/local/
mv kafka_2.10-0.10.0.1 kafka
创建kafka日志目录
mkdir -p /kafka-logs
配置kafka配置文件
vim /usr/local/kafka/config/server.properties
关键配置项目内容 (c172为例)
broker.id=1
listeners=PLAINTEXT://192.168.199.172:9092
log.dirs=/kafka-logs
num.partitions=6
log.retention.hours=60
log.segment.bytes=1073741824
zookeeper.connect=192.168.199.172:2181,192.168.199.173:2181,192.168.199.174:2181
auto.create.topics.enable=true
delete.topic.enable=true
启动kafka ( nohup ......& : 放置于后台运行)
nohup kafka-server-start.sh /usr/local/kafka/config/server.properties &
检测kafka服务
jps
http://i2.运维网.com/images/blog/201810/28/33e14f4b10345f2c21427b52fdaa5391.png
生成的kafka 的日志文件 nohup.out ( 与执行kafka 启动时在同一目录下产生)
同样的步骤对 c173, c174服务器完成kafka 的安装和配置
kafka 基本命令操作
显示topic列表
kafka-topics.sh --zookeeper c172:2181,c173:2181,c174:2181 --list
创建一个topic,并指定topic属性(副本数、分区数等)
kafka-topics.sh --create --zookeeper c172:2181,c173:2181,c174:2181 --replication-factor 1 --partitions 3 --topic xyz
查看某个topic的状态
kafka-topics.sh --describe --zookeeper c172:2181,c173:2181,c174:2181 --topic xyz
生产消息
kafka-console-producer.sh--broker-list c172:9092,c173:9092,c174:9092 --topic xyz
消费消息
kafka-console-consumer.sh --zookeeper c172:2181,c173:2181,c174:2181 --topic xyz
kafka-console-consumer.sh --zookeeper c172:2181,c173:2181,c174:2181 --topic xyz --from beginning
删除topic
kafka-topics.sh --zookeeper c172:2181,c173:2181,c174:2181 --delete --topic xyz
Filebeat 的安装与配置
版本:filebeat-6.3.2
涉及的服务器 c171
解压安装,重命名
tar zxvf filebeat-6.3.2-linux-x86_64.tar.gz -C /usr/local/
mv filebeat-6.3.2-linux-x86_64 filebeat
配置filebeat有两种方法:
传统方法:修改filebeat.yml 的配置文件
模块配置:在modules.d 目录下包含了各种模块
http://i2.运维网.com/images/blog/201810/28/70bd8e800d8326c4728ed56f1411cc2f.png
在modules.d 下支持的模块列表
http://i2.运维网.com/images/blog/201810/30/e99107e16427250174c6131e3189e0f4.png
这里以修改 filebeat.yml 配置为例
############INPUT################
filebeat.inputs:
[*]type: log
enabled: true
paths:
[*]/var/log/messages
[*]/var/log/secure
fields:
log_topic: osmessages
name: "192.168.199.171"
############OUTPUT################
output.kafka:
enabled: true
hosts: ["192.168.199.172:9092", "192.168.199.173:9092", "192.168.199.174:9092"]
version: "0.10"
topic: '%{}'
partition.round_robin:
reachable_only: true
worker: 2
required_acks: 1
compression: gzip
max_message_bytes: 10000000
logging.level: debug
http://i2.运维网.com/images/blog/201810/30/e07d821fe6f2535d00b8b6c6c8e46e28.png
启动filebeat
nohup ./filebeat -e -c filebeat.yml &
查看输出
tail -f nohup.out
http://i2.运维网.com/images/blog/201810/30/cbd6d6daa1a56d280724e5ecf534ef6b.png
数据过滤的例子, 然后通过 nohup.out可查看结果
processors:
- drop_fields:
fields: ["beat","host","input","source","offset","prospector" ]
http://i2.运维网.com/images/blog/201810/30/66f8b0674625159541185af4107b1ba8.png
验证 从filebeat的日志传给了kafka
在kafka的服务器上执行:(有一个osmessages的topic)
http://i2.运维网.com/images/blog/201810/30/0a705cce812974cb0ec7b13d18b2196f.png
消费osmessages;
执行以下命令
http://i2.运维网.com/images/blog/201810/30/e48695476d547a2eb6a6d0daab244143.png
测试:在任意一台服务器上ssh到c171 (filebeat),随后在上述的屏幕如果有以下输出,表明kafka服务器从filebeat的服务器中获取了数据,并消费了
http://i2.运维网.com/images/blog/201810/30/457e35bb92f073755b24a6f6b0057050.png
Logstash的安装,配置
版本:logstash-6.3.2
涉及的服务器 c175
解压安装包,并重命名
tar zxvf logstash-6.3.2.tar.gz -C /usr/local/
mv logstash-6.3.2 logstash
http://i2.运维网.com/images/blog/201810/30/2ed50ddfad0680bce4dd0ba602b468ed.png
logstatsh只做三件事情
接收数据(input),分析过滤(filter),输出数据(output)
通过插件机制的方式去实现,filter不是必须的,input,output是必须的;
插件:https://github.com/logstash-plugins
input插件:接收数据
filter插件:过滤数据
output插件:输出数据
Logstash 配置文件
http://i2.运维网.com/images/blog/201810/31/587dc20b063f006be466e4b8ff815622.png
jvm.options: JVM内存资源配置文件
logstash.yml:logstash 全局配置文件
logstash 事件配置文件:手工创建
./logstash -e 'input{stdin{}} output{stdout{codec=>rubydebug}}'
http://i2.运维网.com/images/blog/201810/31/8f76d9195bb36b013ba63d2b0da82098.png
或者让logstash通过调用配置文件的方式来实现,
vim testfile.conf
http://i2.运维网.com/images/blog/201810/31/d66414211ceb39747ae95765ee812649.png
bin/logstash -f testfile.conf
或者放后台运行, 查看nohup.out 的日志
nohup bin/logstash -f testfile.conf &
http://i2.运维网.com/images/blog/201810/31/d68cd53b661b9d845c24254dab2f18a2.png
本例的logstatsh 从kafka接收数据,然后输出给elasticsearch。 创建一个logstash的配置文件
vim kafka_io_es.conf
http://i2.运维网.com/images/blog/201810/31/0812f744897b876b5cafc64bf5e0647a.png
调用并执行
nohup ./bin/logstash -f ./config/kafka_io_es.conf &
tail -f nohup.out
http://i2.运维网.com/images/blog/201810/31/0d1953ef95988d1359bf9c1374affd44.png
Kibana的安装与配置
版本:kibana-6.3.2
涉及的服务器 c178
解压安装包,并重命名
zxvf kibana-6.3.2-linux-x86_64.tar.gz -C /usr/local
mv kibana-6.3.2-linux-x86_64 kibana
http://i2.运维网.com/images/blog/201810/31/fb0769bcc4a78d260a4b7dafe6d2ced1.png
配置文件
vim /usr/local/kibana/config/kibana.yml
输入以下内容
server.port: 5601
server.host: "192.168.199.178"
elasticsearch.url: "http://192.168.199.176:9200"
kibana.index: ".kibana"
http://i2.运维网.com/images/blog/201810/31/2f259bf887a87b8329b44e4a407a68df.png
启动kibana服务
nohup /usr/local/kibana/bin/kibana &
查看日志
tail -f nohup.out
查看服务进程
ps -ef | grep node
http://i2.运维网.com/images/blog/201810/31/64e7e2addd6bbe1f7425025e9ef6231d.png
在客户端打开浏览器输入
http://192.168.199.178:5601
http://i2.运维网.com/images/blog/201810/31/5fc88bcd1decc5fd270b0164c49de3ba.png
总结各服务的开启方式例子
nohup ./filebeat -e -c filebeat.yml &
zkServer.sh start
nohup kafka-server-start.sh /usr/local/kafka/config/server.properties &
nohup ./bin/logstash -f ./config/kafka_io_es.conf
elasticsearch -d
nohup /usr/local/kibana/bin/kibana &
++++++++++++++++++++++++++++++++++++++++++
要深刻理解数据流向,各项服务提供的功能
重点和难点:logstash的插件配置(input, filter,output)
++++++++++++++++++++++++++++++++++++++++++
页:
[1]