日志系统升级之路(安装Elasticsearch和Kibana)
一、现有情况
公司内部现有一套中心日志系统,供各个系统模块使用,该日志系统架构如下:
1.1 存在的问题
但是随着日益增长的数据量,该系统存在如下几个问题:
-
由于公司服务器在某机房托管,日志系统数据库所占空间巨大,拓容不便。
-
日志搜索困难,且响应很慢。
1.2 优化方案
1.2.1 日志数据库分库
1.2.1 Solr
1.2.3 Elasticsearch
1.3 选型
经过研究和分析,最终选型Elasticsearch(以下简称ES),原因如下:
-
分布式:横向扩展非常灵活。
-
全文检索:基于lucene的强大的全文检索能力。
-
近实时搜索和分析:数据进入ES,可达到近实时搜索,还可进行聚合分析。
-
高可用:容错机制,自动发现新的或失败的节点,重组和重新平衡数据。
-
模式自由:ES的动态mapping机制可以自动检测数据的结构和类型,创建索引并使数据可搜索。
-
简单易用,ES集成了.net客户端,免去操作http接口的烦琐工作。
-
日志数据,都是静态数据。
同时,由我们自己使用Nest和Elasticsearch.Net两个客户端,维护索引,故而省去Logstash
二、Elasticsearch
2.1 部署
2.1.1 安装java运行环境
ES由java开发,所以需先安装java jre(我这里是在本地虚拟机,所以直接安装jdk)
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
配置环境变量,修改/etc/profile,追加如下内容:
#set java environment JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH
(注意具体的文件夹jre-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64中的小版本号)
使配置生效,并验证配置的路径是否正确。
source /etc/profile echo $JAVA_HOME echo $PATH echo $CLASSPATH
2.1.2 安装ES
定位到指定目录
cd /home/es
下载ES
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
解压到根目录的opt下
tar -xvf elasticsearch-6.2.4.tar.gz -C /opt
至此,ES已经下载好了。
修改配置,/config/elasticsearch.yml
network.host: 0.0.0.0
表示允许所有ip访问(注意:如果不设置,则只有本机能访问)
cd /opt/es.6.2.4/bin
启动es(注意:ES不能以root用户身份运行)
./elasticsearch
如果出现这个报错,关闭虚拟机,修改虚拟机中cpu为2核,开机后重试出现错误,如图:
第一个问题的解决办法:
修改文件/etc/security/limits.conf,在最后追加
* hard nofile 65536 * soft nofile 65536
然后切换到root下,使用 sysctl -p 后,使用如下命令查看:
sysctl -p ulimit -Hn
出现65536则表示成功(注意,有时无变化,请检查格式并注销当前用户,重新登录)
第二个问题的解决办法:
修改文件/etc/sysctl.conf ,在最后追加
vm.max_map_count=655360
使用 sysctl -p 后如下图则表示配置成功
切换回es用户,在 /opt/es.6.2.4/bin 目录下,使用 ./elasticsearch 重新启动
至此,es启动成功,默认端口为9200,使用http://192.168.17.130:9200/ 即可访问
三、Kibana
3.1 安装Kibana
从www.elastic.co/cn/downloads/past-releases#kibana下载Kibana 6.2.4 后
解压到/opt/kbn.6.2.4
3.2 配置
在config/kibana.yml中配置 修改如下配置:
允许访问的ip和es地址
server.host: "0.0.0.0" elasticsearch.url: "http://192.168.17.130:9200"
3.3启动
进入到目录 /opt/kbn.6.2.4,使用如下命令启动:
./kibana
使用默认端口访问:http://192.168.17.130:5601
至此,ES和Kibana部署完成。
(注意:上面示例是我在本机演示,所以运行方式都是前台运行)