ELK平台介绍
以下内容来自:http://baidu.blog.51cto.com/71938/1676798
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
系统环境
CentOS release 6.8 (Final) 32bit
内核:4.10.4-1.el6.elrepo.i686
工作原理如下如所示:
前期准备工作
为了避免安装过程中出现其他错误, 需提前关闭Selinux和iptables。 并禁用ipv6
[root@host local]# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config [root@host local]# service iptables stop
net.ipv6.conf.all.disable_ipv6 = 1 #禁用ipv6 # ~ sysctl -p #~ reboot
[root@host ~]# cd /usr/local/src/ [root@host ~]# tar zxvf jdk-8u144-linux-i586.tar.gz -C /usr/local/
[root@host ~]# vim /etc/profile.d/java.sh #写入如下内容 JAVA_HOME=/usr/local/jdk1.8.0_144/ JAVA_BIN=/usr/local/jdk1.8.0_144/bin JRE_HOME=/usr/local/jdk1.8.0_144/jre PATH=$PATH:/usr/local/jdk1.8.0_144/bin:/usr/local/jdk1.8.0_144/jre/bin CLASSPATH=/usr/local/jdk1.8.0_144/jre/lib:/usr/local/jdk1.8.0_144/lib: /usr/local/jdk1.8.0_144/jre/lib/charsets.jar export JAVA_HOME JAVA_BIN JRE_HOME PATH CLASSPATH [root@host ~]# source /etc/profile.d/java.sh [root@host src]# java -version #显示以下内容,则说明java安装成功 java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) Client VM (build 25.144-b01, mixed mode)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.0.tar.gz [root@host src]# tar zvxf elasticsearch-5.6.0.tar.gz -C /usr/local/ [root@host src]# cd /usr/local/elasticsearch-5.6.0/config #进入配置目录 [root@host config]# ls -l total 16 -rw-rw---- 1 root root 2854 Sep 6 23:07 elasticsearch.yml -rw-rw---- 1 root root 3064 Sep 6 23:07 jvm.options -rw-rw---- 1 root root 4456 Sep 6 23:07 log4j2.properties
#创建elasticsearch数据存放目录
[root@host ~]# mkdir -p /data/elasticsearch/data [root@host ~]# mkdir /data/elasticsearch/log
由于机器内存较小,需要修改jvm内存, 而elasticsearch默认分配的jvm内存是2G.
如果不修改会导致无法启动elasticsearch
[root@host config]# pwd /usr/local/elasticsearch-5.6.0/config [root@host config]# vim jvm.options
根据机器内存来修改, 测试机内存是1g, 我这里分配300m
修改elasticsearch主配置文件
[root@host config]# vim elasticsearch.yml
1、开启log日志, 定义路径为/var/log/elasticsearch.log
2、设置监听IP
打开注释,设置服务器ip地址。
修改以下配置项:
</div> cluster.name=my-application node.name=node-1</div> path.data=/data/elasticsearch/data path.logs=/data/elasticsearch/logs
3、启动测试
[root@host config]# cd /usr/local/elasticsearch-5.6.0/bin/
注意:Centos7启动会报如下错误,提示不能以root身份运行
< 3 ELK - [root]:~ > # useradd elasticsearch < 3 ELK - [root]:~ > # chown -R elasticsearch:elasticsearch /data/elasticsearch < 3 ELK - [root]:~ > # chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-5.6.1/ [elasticsearch@ELK bin]$ ./elasticsearch -d #以daemon启动
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
解决:切换到root用户,编辑limits.conf 添加类似如下内容 vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
vi /etc/sysctl.conf vm.max_map_count=655360 vi /etc/security/limits.d/90-nproc.conf * soft nproc 2048</div> ulimit -n 65536 #临时修改,重启失效</div> sysctl -p
原因:
这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
解决:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
vim /usr/local/elasticsearch-5.6.0/config/elasticsearch.yml bootstrap.memory_lock: false bootstrap.system_call_filter: false
继续启动测试
OK启动成功,查看监听端口
curl http://127.0.0.1:9200 #出现如下内容表示elasticsearch安装成功。
1、Elasticsearch默认http端口为9200,节点端口为9300
/usr/local/elasticsearch-5.6.0 #主目录
/usr/local/elasticsearch-5.6.0/config #配置文件目录
/usr/local/elasticsearch-5.6.0/logs #日志目录
/usr/local/elasticsearch-5.6.0/bin #启动脚本
三、安装Kibana
[root@host src]# wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.0-linux-x86.tar.gz [root@host src]# tar zxvf kibana-5.6.0-linux-x86.tar.gz -C /usr/local/ [root@host src]# cd ..</div> root@host local]# mv kibana-5.6.0-linux-x86/ kibana-5.6.0 root@host local]# cd kibana-5.6.0/config
修改配置文件
[root@host config]# vim kibana.yml #server.host: "localhost" 把host改为服务器外网ip,用于对外访问
启动kibana
[root@host ~]# cd /usr/local/kibana-5.6.0/bin [root@host bin]# pwd /usr/local/kibana-5.6.0/bin [root@host bin]# ./kibana
访问kibana URL地址