部署计划
node1 xx.xx.xx.xxxcss
node2 xx.xx.xx.xxxnode
node3 xxx.xxx.xxxlinux
上面表明3个节点,且配置好/etc/hosts,为了方便最好配置ssh免密,定时同步网络时间等nginx
部署计划(因为学习机器资源有限,使用最精简方式部署)git
logsgithub |
logstashapache |
esnpm |
kibana编程 |
|
node1bootstrap |
y |
|||
node2 |
y |
y |
||
node3 |
y |
精简版部署架构图:
部署说明:
一、node1上放置测试日志文件
二、node1安装kibana
三、node2安装logstash收集器
四、node3安装es
五、logstash收集log过滤后发送到es
六、kibana负责读取es后展现
注:
全部节点统一建立如下两个目录
软件解压放置目录:/opt/soft
软件压缩包放置目录: /opt/zip
全部节点安装好jdk8,且配置好环境变量
部署elasticsearch
由部署计划咱们知道,es部署在node3节点上。
该文档讲解的ELK基于7.0版本,因为ELK不一样版本之间并不兼容,一般官方发版新版本时都会配套发版,强烈建议或要求安装ELK各个组件的版本以以官方配套为准,一般版本号是一致的。
单机版
建立用户组
es官方规定,不能以root帐号启动,因此咱们须要建立用户和用户组
groupadd lazy
useradd -g lazy lazy
将帐号加入sudo
为了后面方便借用root权限,将lazy用户加入sudo
vi /etc/sudoers.d/lazy
内容以下:
lazyALL=(ALL) ALL
建立目录
mkdir -p /opt/soft /opt/zip
压缩包放置目录:/opt/zip
安装软件目录:/opt/soft
安装JDK8
下载、解压、配置环境变量
具体不演示
下载ES
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
解压ES
tar -xvf /opt/zip/elasticsearch-7.0.0-linux-x86_64.tar.gz -C /opt/soft/
修改目录归属
chown -R lazy:lazy /opt/soft/elasticsearch-7.0.0
切换帐号
su lazy
启动
/opt/soft/elasticsearch-7.0.0/bin/elasticsearch后台运行:/opt/soft/elasticsearch-7.0.0/bin/elasticsearch -d
访问
curl -XGET 127.0.0.1:9200/_cat/health?v
没有作任何配置状况下,为开发模式,默认只绑定到环回地址127.0.0.1上,只能经过127.0.0.1访问,外部没法访问。
能够经过配置$ES_HOME/config/elasticsearch.yml文件中的network.host:配置项进行其它网卡的绑定。注意,es发现一旦用户配置了network.host,在下次启动ES时将开启生产模式启动引导检查功能(如文件句柄数量限制,线程数限制等)。
若是你确实只是单节点且须要配置network.host来提供对外访问能力,你能够配置discovery.type为single-node来实现,可是若是你配置了discovery.type为single-node,es将不会开启启动引导检查功能,事实上建议开启es的启动引导的严格检查。当discovery.type配置single-node时,咱们能够配置系统属性es.enforce.bootstrap.checks为true来强制启动生产模式检查。
下面给出单机版最终配置:
cluster.name: my-applicationnode.name: node-3bootstrap.memory_lock: falsenetwork.host: node3discovery.seed_hosts: ["node3"]cluster.initial_master_nodes: ["node-3"]
注意,上面的单机版配置会进行生产模式检查,启动会报错,关于生产模式检查配置请参考下面的集群部署说明。
单机版部署完毕!
集群
除了单机版部署外,这里同时也给出集群部署方式,可是咱们本次elk使用单机版部署,由于资源有限。集群部署就要涉及到node1\node2\node3三台节点的配置和安装。
集群版ES配置
node1节点上操做:
vi /opt/soft/elasticsearch-7.0.0/config/elasticsearch.yml
内容以下:
cluster.name: my-applicationnode.name: node-1path.data: /var/es/datapath.logs: /var/es/logsbootstrap.memory_lock: truenetwork.host: node1http.port: 9200discovery.seed_hosts: ["node1", "node1", "node3"]cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
说明:
cluster.name:集群名称,自定义,建议语义化,多个集群时保证惟一path.data和path.logs:数据存储目录,日志目录。须要执行chown -R lazy:lazy /var/es/network.host: 配置ip或0.0.0.0discovery.seed_hosts: 配置集群机器Ip列表。能够在每台机子/etc/hosts文件配置本地dns,方便记忆,好比笔者这里的node1,node2,node3均在/etc/hosts文件配置好了的。cluster.initial_master_nodes:参与主节点节点列表。bootstrap.memory_lock: 将配置的JVM堆内存锁定在内存中,禁止将堆的某个内存页交换到磁盘。注意,若是你的机子内存不够锁定或帐号内存锁定权限不足,将启动失败发生这种状况作法有两种:1、配置帐号(例如lazy)的锁定内存大小为无限大vi /etc/security/limits.conf末尾追加:lazy - memlock unlimited2、将bootstrap.memory_lock设置为false而不是设置为true,而后在系统层面禁止内存交换,禁止交互能够防止es在垃圾回收时与磁盘反复交互致使卡顿。
修改系统配置
当用户配置了network.host项后,es就会开启生产模式检查,发现任何一项不知足要求,将启动失败。生产模式检查主要包括:
JVM堆大小检查
$ES_HOME/config/jvm.options配置文件配置初始化堆大小-Xms和最大堆大小-Xmx保持一致,默认为1G,生产环境建议适当调大,通常配置为系统内存1/2较为理想。例如:4G服务器能够配置2G堆大小
加大文件数量限制
例如这里的话就须要配置es帐号(lazy)文件描述符大小,生产模式要求为65535。配置方式:
vi /etc/security/limits.conf
末尾追加:
lazy - nofile 65535
加大线程数限制
Elasticsearch经过将请求分解为多个阶段并将这些阶段交给不一样的线程池执行程序来执行请求。Elasticsearch中的各类任务有不一样的线程池执行程序。所以,Elasticsearch须要可以建立大量线程。检查的最大线程数确保Elasticsearch进程有权在正常使用下建立足够的线程,至少须要4096个线程。配置方式:
vi /etc/security/limits.conf
末尾追加:
lazy - nproc 4096
禁止内存交互
大多数操做系统尝试使用尽量多的内存来存储文件系统缓存,并急切地交换掉未使用的应用程序内存。这可能致使部分JVM堆甚至其可执行页面被换出到磁盘。交换对elasticsearch性能,节点稳定性很是不利,应该不惜一切代价避免。配置方式:
vi /etc/fstab
而后注释掉任何有swap单词的行
加大虚拟内存
Elasticsearch mmapfs默认使用目录来存储其索引。操做系统默认的mmap计数限制过低,这可能致使内存不足异常。配置方式:
vi /etc/sysctl.conf
末尾追加:
vm.max_map_count=262144
启动集群
一、将配置好的es经过scp -r命令分发到集群其它节点
二、分别在每一个节点建立帐号lazy和帐号组lazy
三、建立目录/var/es,chown -R lazy:lazy /var/es
四、配置/etc/hosts
五、每一个节点修改好系统配置(须要切换到root)
六、关闭防火墙
七、su lazy切换帐号,执行下面命令启动:
/$ES_HOME/bin/elasticsearch -d
7、浏览器访问:
http://node1:9200/_cat/health?v
http://node2:9200/_cat/health?v
http://node3:9200/_cat/health?v
安装界面插件
elasticsearch能够经过插件方式进行功能或管理上的扩展,例如咱们上面看到的经过浏览器对elasticsearch查询API操做很不方便,返沪的结果界面也不太友好。咱们下面来安装一个界面友好的支持插件elasticsearch-head。安装步骤以下:
官方安装文档:
https://github.com/mobz/elasticsearch-head
一、安装node环境
cd /opt/zipwget https://nodejs.org/dist/latest-v10.x/node-v10.15.3-linux-x64.tar.gztar -zxvf node-v10.15.3-linux-x64.tar.gz -C ../soft配置NODE_HOME到/etc/profile$NODE_HOME/bin:$NODE_HOME/sbin
配置npm加速
alias cnpm="npm --registry=https://registry.npm.taobao.org
二、安装git bzip2
yum install gityum install -y bzip2
三、下载elastic search-head插件
cd /opt/zipgit clone https://github.com/mobz/elasticsearch-head.gitcd /opt/zip/elasticsearch-headcnpm installnohup npm start &
四、浏览器访问
http://node3:9100/
五、修改elasticsearch.yml配置
末尾追加以下内容:
http.cors.enabled: truehttp.cors.allow-origin: "*"
六、重启elasticsearch
切换lazy帐号
ps aux | grep elastic | awk '{print $2}' | xargs kill -9elasticsearch -d
七、再次访问
能够看到,安装成功,后面咱们就能够在这个插件上进行管理elasticsearch
本文分享自微信公众号 - Java软件编程之家(gh_b3a87885f8f5)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。