2.Elasticsearch部署
[toc]
ELKstack部署及配置
环境准备
| 公网IP | 内网IP | 主机名 | 部署服务 | 用途 | 
|---|---|---|---|---|
| 10.0.0.81 | 172.16.1.81 | elk01 | elasticsearch、JDK | 存储日志的数据库(2G内存) | 
| 10.0.0.82 | 172.16.1.82 | elk02 | elasticsearch、JDK | 存储日志的数据库(2G内存) | 
| 10.0.0.83 | 172.16.1.83 | elk03 | Logstash、JDK | 收集日志、过滤日志 | 
| 10.0.0.84 | 172.16.1.84 | elk04 | Redis、Kibana | 消息队列、日志展示 | 
| 10.0.0.85 | 172.16.1.85 | nginx01 | nginx、filebeat | 修改nginx日志格式为json收集 | 
| 10.0.0.86 | 172.16.1.86 | tomcat01 | tomcat、JDK、filebeat | 修改tomcat日志格式为json收集 | 
安装包准备
| 安装包名 | 用途 | 
|---|---|
| elasticsearch-5.3.0.rpm | 存储日志的数据库 | 
| elasticsearch-head.tar.gz | elasticsearch的web界面插件 | 
| logstash-5.3.0.rpm | 日志收集、日志分析工具 | 
| kibana-5.3.0-x86_64.rpm | 日志展示、日志查询工具 | 
| filebeat-5.3.2-x86_64.rpm | 日志收集工具(比Logstash轻量) | 
| jdk-8u121-linux-x64.tar.gz | JAVA容器(es、Logstash、tomcat需要) | 
| nginx-1.10.3.tar.gz | 测试收集nginx日志 | 
| apache-tomcat-8.0.38.tar.gz | 测试收集tomcat日志 | 
| redis-3.2.8.tar.gz | 消息队列工具 | 
Elasticsearch环境准备
关闭防火墙
| 1 | # CentOS6 关闭防火墙 | 
关闭SELINUX
| 1 | # 临时关闭 | 
设置epel源
| 1 | # CentOS6 下载epel源 | 
修改时区
| 1 | # 将时区修改为上海时区 | 
设置时间同步
| 1 | # 同步服务器时间(切记保证集群之间时间一致非常重要) | 
部署Elasticsearch
在elk01 和 elk02两台机器分别安装elasticsearch,因为elasticsearch服务运行需要JAVA环境,所以两台服务器都需要安装JAVA环境。
安装JDK环境
下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
| 1 | # 解压JDK安装包 | 
安装elasticsearch
- 手动下载rpm包 
- 本地安装并解决依赖 - 1 - yum localinstall -y elasticsearch-5.3.0.rpm 
 
- ES官方源安装 - 更换官方源 - 1 
 2
 3
 4
 5
 6
 7
 8
 9- vim /etc/yum.repos.d/es.repo 
 [elasticsearch-5.x]
 name=Elasticsearch repository for 5.x packages
 baseurl=https://artifacts.elastic.co/packages/5.x/yum
 gpgcheck=1
 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
 enabled=1
 autorefresh=1
 type=rpm-md
- 安装es并解决依赖 - 1 - yum install -y elasticsearch 
 
修改配置文件
- CentOS6 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27- # 查看配置文件修改部分内容 
 grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
 # 设置集群名称(想要其他节点加入同一个集群必须集群名称相同)
 cluster.name: elk-cluster
 # 节点名称(通过此配置项来区分集群中的所有节点)
 node.name: es01
 # elasticsearch数据存放目录
 path.data: /data/elk/data
 # elasticsearch日志存放目录
 path.logs: /data/elk/logs
 # CentOS6不支持内存锁功能,所以要关闭内存锁
 bootstrap.memory_lock: false
 bootstrap.system_call_filter: false
 # elasticsearch监听地址
 network.host: 0.0.0.0
 # elasticsearch服务端口
 http.port: 9200
 # 配置所有集群节点IP
 discovery.zen.ping.unicast.hosts: ["10.0.0.81", "10.0.0.82"]
- CentOS7 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31- # 编辑配置文件 
 vim /etc/elasticsearch/elasticsearch.yml
 cluster.name: elk-cluster
 ## 设置集群名称(想要其他节点加入同一个集群必须集群名称相同)
 node.name: es01
 ## 节点名称(通过此配置项来区分集群中的所有节点)
 path.data: /data/elk/data
 ## elasticsearch数据存放目录
 path.logs: /data/elk/logs
 ## elasticsearch日志存放目录
 bootstrap.memory_lock: true/false
 ## 内存锁设置(在CentOS7中支持内存锁并且要修改启动脚本,不使用:false)
 network.host: 0.0.0.0
 ## elasticsearch监听地址
 http.port: 9200
 ## elasticsearch服务端口
 discovery.zen.ping.unicast.hosts: ["10.0.0.81", "10.0.0.82"]
 ## 配置所有集群节点IP
 # 查看配置文件修改部分内容(CentOS7中配置)
 grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
 # 修改内存限制(如果有则去掉此行注释)
 LimitMEMLOCK=infinity
 # 修改启动脚本
 vim /usr/lib/systemd/system/elasticsearch.service
 # 重新加载启动脚本
 systemctl reload-daemon
创建目录并授权
| 1 | # 创建数据目录 | 
优化文件描述符
- CentOS7 - 1 
 2
 3
 4
 5
 6- # 编辑limit文件 
 vim /etc/security/limits.conf
 * soft memlock unlimited
 * hard memlock unlimited
 * soft nofile 131072
 * hard nofile 131072
- CentOS6 - 1 
 2
 3
 4- # 编辑子配置文件 
 vim /etc/security/limits.d/90-nproc.conf
 * soft nproc 2048
 root soft nproc unlimited
优化文件描述符
| 1 | # 在配置文件最后一行后添加 | 
设置JVM最大最小内存限制
| 1 | # 编辑配置文件 | 
启停elasticsearch
- CentOS6 - 1 
 2
 3- # 启动、停止elasticsearch 
 /etc/init.d/elasticsearch start
 /etc/init.d/elasticsearch stop
- CentOS7 - 1 
 2
 3- # 启动、停止elasticsearch 
 systemctl start elasticsearch
 systemctl stop elasticsearch
- 查看进程和端口 - 1 
 2
 3
 4
 5
 6
 7- # 查看启动进程 
 ps -ef|grep java
 # 查看端口
 netstat -lntup
 tcp 0 0 :::9200 :::* LISTEN 10872/java
 tcp 0 0 :::9300 :::* LISTEN 10872/java
- PS:如果服务没有启动就修改 内存所true改为false - 1 
 2- vim /etc/elasticsearch/elasticsearch.yml 
 bootstrap.memory_lock: true ---> false
验证启动elasticsearch后的页面
打开浏览器访问地址:http://10.0.0.81:9200/

其他节点安装并加入集群
安装其他节点,步骤和上面一样,修改配置文件时,直接将elk01节点的配置文件scp(拷贝)过去,然后在配置文件中讲节点名称修改后启动即可。
发送修改好的配置文件
| 1 | # 发送配置文件到其他节点 | 
创建目录并授权
| 1 | # 创建数据目录 | 
启停elasticsearch
- CentOS6 - 1 
 2
 3- # 启动、停止elasticsearch 
 /etc/init.d/elasticsearch start
 /etc/init.d/elasticsearch stop
- CentOS7 - 1 
 2
 3- # 启动、停止elasticsearch 
 systemctl start elasticsearch
 systemctl stop elasticsearch
- 查看进程和端口 - 1 
 2
 3
 4
 5
 6
 7- # 查看启动进程 
 ps -ef|grep java
 # 查看端口
 netstat -lntup
 tcp 0 0 :::9200 :::* LISTEN 10872/java
 tcp 0 0 :::9300 :::* LISTEN 10872/java
- PS:如果服务没有启动就修改 内存所true改为false - 1 
 2- vim /etc/elasticsearch/elasticsearch.yml 
 bootstrap.memory_lock: true ---> false
验证启动elasticsearch后的页面
打开浏览器访问地址:http://10.0.0.82:9200/

Elasticsearch的head插件
安装elasticsearch插件
插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发爱好者提供的插件,可以实现对elasticsearch集群的状态监控与管理配置等功能,我们现在要安装的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。
安装Elasticsearch的head插件时,要安装npm,npm的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。
在Elasticsearch 5.x版本以后不再支持直接安装head插件,而是需要通过启动一个服务方式。
Github地址:https://github.com/mobz/elasticsearch-head
安装执行流程
安装npm
| 1 | # 安装npm(只需要在一个节点安装即可,如果前端还有nginx做反向代理可以每个节点都装) | 
安装git
| 1 | # 安装git命令 | 
安装nodejs
| 1 | # 下载nodejs | 
安装elasticsearch-head插件
| 1 | #进入下载head插件代码目录 | 


 故障解析
- 故障:连接不上 - 原因是没有打开跨域访问
 
- 解决方法: - /etc/elasticsearch/elasticsearch.yml在最后一行下面追加 - http.cors.enabled: true
- http.cors.allow-origin: “*”
 
- 重启服务 - 1 - systemctl restart elasticsearch.service 
 

模拟提交数据







