设为首页 收藏本站
查看: 1424|回复: 0

[经验分享] 实战 Elastic Stack

[复制链接]

尚未签到

发表于 2019-1-28 12:17:10 | 显示全部楼层 |阅读模式
实战 Elastic Stack - ELK 部署与配置

  • 系统环境:CentOS Linux release 7.5.1804 (Core)
  • 服务器数量:8 台

  相关软件及版本
  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

  变量生效
  source /etc/profile
  验证JAVA版本
  java -version

  同样的步骤完成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

  针对elasticsearch的系统调优
  vim /etc/sysctl.conf
  加入以下内容
  fs.file-max=655360
vm.max_map_count=262144

  vim /etc/security/limits.conf
  加入以下内容
  *        soft    nproc           204800
*        hard    nproc           204800
*        soft    nofile          655360
*        hard    nofile          655360
*        soft    memlock         unlimited
*        hard    memlock         unlimited

  vim /etc/security/limits.d/20-nproc.conf
  修改内容为
  *          soft    nproc     40960
root       soft    nproc     unlimited

  执行下面命令来生效
  sysctl -p

  logout系统,再重新login,并执行 ulimit -a 查看调优的结果
  ulimit -a

  JVM调优
  vim /usr/local/elasticsearch/config/jvm.options
Xms 和Xmx的值,推荐设置为物理内存的一半。(这里都设置为1GB)

  创建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"]

  启动elasticsearch集群, # 注意:确保 /usr/local/elasticsearch 和 /data1/elastisearch 和 /data2/elasticsearch 的授权用户是elasticsearch 用户;启动 elasticsearch服务的时候,必须要切换到 elasticsearch 用户
  su - elasticsearch
/usr/local/elasticsearch/bin/elasticsearch -d
  验证elasticsearch服务启动正常
  jps

  curl http://192.168.199.176:9200
有如下输出,表明该服务正常

  关于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

  创建 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

  启动ZooKeeper服务, 并通过 jps 或者 ps -ef 来验证服务正常启动
  zkServer.sh start
jps   
ps -ef | grep zookeeper


  注意:
  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

  获取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

  生成的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 目录下包含了各种模块

  在modules.d 下支持的模块列表

  这里以修改 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: '%{[fields.log_topic]}'
partition.round_robin:
reachable_only: true
worker: 2
required_acks: 1
compression: gzip
max_message_bytes: 10000000
logging.level: debug

  启动filebeat
  nohup ./filebeat -e -c filebeat.yml &
  查看输出
  tail -f nohup.out

  数据过滤的例子, 然后通过 nohup.out可查看结果
  processors:
- drop_fields:
fields: ["beat","host","input","source","offset","prospector" ]

  验证 从filebeat的日志传给了kafka
在kafka的服务器上执行:(有一个osmessages的topic)

  消费osmessages;
执行以下命令

  测试:在任意一台服务器上ssh到c171 (filebeat),随后在上述的屏幕如果有以下输出,表明kafka服务器从filebeat的服务器中获取了数据,并消费了

  Logstash的安装,配置
  版本:logstash-6.3.2
涉及的服务器 c175
  解压安装包,并重命名
  tar zxvf logstash-6.3.2.tar.gz -C /usr/local/
mv logstash-6.3.2 logstash

  logstatsh只做三件事情
接收数据(input),分析过滤(filter),输出数据(output)
通过插件机制的方式去实现,filter不是必须的,input,output是必须的

插件:https://github.com/logstash-plugins
  input插件:接收数据
filter插件:过滤数据
output插件:输出数据
  Logstash 配置文件

  jvm.options: JVM内存资源配置文件
logstash.yml:logstash 全局配置文件
logstash 事件配置文件:手工创建
  ./logstash -e 'input{stdin{}} output{stdout{codec=>rubydebug}}'

  或者让logstash通过调用配置文件的方式来实现,
  vim testfile.conf

  bin/logstash -f testfile.conf
  或者放后台运行, 查看nohup.out 的日志
  nohup bin/logstash -f testfile.conf &

  本例的logstatsh 从kafka接收数据,然后输出给elasticsearch。 创建一个logstash的配置文件
  vim kafka_io_es.conf

  调用并执行
  nohup ./bin/logstash -f ./config/kafka_io_es.conf &
tail -f nohup.out

  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

  配置文件
  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"

  启动kibana服务
  nohup /usr/local/kibana/bin/kibana &
  查看日志
  tail -f nohup.out
  查看服务进程
  ps -ef | grep node

  在客户端打开浏览器输入
  http://192.168.199.178:5601

  总结各服务的开启方式例子
  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668696-1-1.html 上篇帖子: centos6安装部署ELK以及后续操作 下篇帖子: ELK5.5.0 集群部署以及体验使用插件X
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表