官网:www.elastic.co
--摘自https://www.kancloud.cn/devops-centos/centos-linux-devops/397454
ELK是什么?E(Elasticsearch,之后简称ES) 一款基于的Lucene的分布式搜索引擎,负责存储和搜索数据,成功案例:
GitHub 使用 Elasticsearch 对1300亿行代码进行查询
Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索
L(Logstash) 数据处理、发送,负责数据的接收、处理、输出,将数据发送给ES或KafkaK(Kibana) 数据展示,负责检索和展示ES中的数据B(Beats)数据发送,负责收集数据发送给Logstash或ES,Beats组件包括:
Filebeat,日志和文件数据收集Packetbeat,网络数据收集Metricbeat,系统和服务指标收集Winlogbeat,Windows日志收集Heartbeat,服务可用性监测(url列表)现在大家都在用Beats组件中的Filebeat代替Logstash在客户端收集数据。本节内容摘自知乎
相对于Logstash来说Filebeat
非常的轻量级功能单一,只做数据收集和发送数据采集方面,性能相对Logstash高go语言编写,用来替换logstash-forward相对于Filebeat来说Logstash
非常的重功能多,数据的接收、处理、输出数据采集方面,性能相对Filebeat低Java语言编写,使用Jruby插件
基础环境部署
阿里YUM源配置(略)
全局JDK 1.8部署
yum install java-1.8.131
配置系统参数
配置内存锁#追加 /etc/security/limits.conf
echo " " >> /etc/security/limits.conf
echo "#elasticsearch memlock dinghe add 20170828 " >> /etc/security/limits.conf
echo "elasticsearch soft memlock unlimited" >> /etc/security/limits.conf
echo "elasticsearch hard memlock unlimited" >> /etc/security/limits.conf
配置文件描述符
echo " " >> /etc/security/limits.conf
echo "#limit dinghe add 20170828 " >> /etc/security/limits.conf
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
配置map_counter
echo "#elasticsearch inti dinghe add 20170828" >> /etc/sysctl.conf
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
重启服务器
ELK安装(RPM安装、强烈推荐)
rpm -ivh elasticsearch-5.5.0.rpm
#修改用户shell
usermod elasticsearch -s /bin/bash
#5.5版本的rpm安装会出现变量找到到(oracle java找不到)和memlock配置不生效的情况,修改用户shell后或使用openjdk解决
配置Elasticsearch
创建用户和基础目录
mkdir /data/es-data
#多磁盘方式mkdir /data/es01,/data/es02
chown -R elasticsearch. /data/es-data
修改相关配置
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: es-cluster
node.name: master-1
path.data: /data/es_data/
network.host: 192.168.0.232
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.0.232", "192.168.0.231"
配置注释
#集群名称
cluster.name: es-cluster
#本节点名称
node.name: master-1
#数据文件位置
path.data: /data/es_data/
#日志位置
path.logs: /app/logs/es
#配置绑定IP
network.host: 192.168.0.232
#配置服务端口(9300为集群选举使用的端口)
http.port: 9200
#使用单播的方式发现集群节点,避免网络波动和云服务器网络限制造成的节点发现失败问题
discovery.zen.ping.unicast.hosts: ["192.168.0.232", "192.168.0.231"
启动ES服务
#源码包启动 /app/es/bin/elasticsearch
systemctl restart elasticsearch
安装elasticsearch-head插件
Chrome插件方式(推荐)
Chrome插件中搜索 elasticsearch head
http://pan.baidu.com/s/1slSDvv3
服务模式
cd /opt
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
npm install grunt-cli --registry=https://registry.npm.taobao.org
#备注:grunt是Javascrip的构建工具
npm install --registry=https://registry.npm.taobao.org
#安装过程中会下载phantomjs-2.1.1-linux-x86_64.tar.bz2,取消下载即可
npm run start
访问elasticsearch-head插件
open (http://localhost:9100/)
错误处理
错误1(RPM包处理方式):elasticsearch 5.x which: no java in
安装的jdk 1.8.121,不成功,安装openjava-jdk1.8.131成功
或修改elasticsearch用户 usermod elasticsearch -s /bin/bash
错误2:bootstrap.memory_lock: true导致Elasticsearch启动失败问题(RPM安装未解决)
...略
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
...略
ERROR: bootstrap checks failed
memory locking requested for elasticsearch process but memory is not locked
...略
解决:
#追加 /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
错误3:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
错误4:Centos 6.x 安装elasticsearch5.2无法启动bug
报错:
ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
原因:
这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
解决:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
可以查看issues
https://github.com/elastic/elasticsearch/issues/22
错误5:文件描述符设置太小
报错
max file descriptors [4096 for elasticsearch process is too low, increase to at least [65536
max number of threads [1024 for user [[elasticsearch is too low, increase to at least [2048
解决
编辑limits.conf 文件
#vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
#Centos6.x修改vim /etc/security/limits.d/90-nproc.conf
soft nproc 1024 修改为 soft nproc 2048
sysctl -p
-