ELK的帮助文档:https://www.elastic.co/
一、日志系统搭建部署(ELK的引入)
1、背景
<1>目的:
系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
<2>日志管理:
通常,日志被分散的储存不同的设备上。如果需要管理数十上百台服务器,必须依次登录每台机器的传统方法查阅日志,这样很繁琐和效率低下。当务之急是使用集中化的日志管理,开源实时日志分析ELK平台能够完美的解决上述所提到的问题。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
2、工具选取
<1>ELK工作原理展示图:
Logstash收集Server产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表
<2>工具组成:
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成:
1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。在elasticsearch中,所有节点的数据是均等的。
2)Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,它Kibana可以为 Logstash 和ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
二、实验环境(rhel7.3版本)
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
---|---|
server1(es节点1)。内存至少2G | 172.25.83.1 |
三、ElasticSearch单节点的安装部署
1、下载ElasticSearch所需的软件包(elasticsearch-6.6.1.rpm),及其依赖的jdk包(jdk-8u181-linux-x64.rpm),并进行安装
[root@server1 ~]# ls
elasticsearch-6.6.1.rpm jdk-8u181-linux-x64.rpm
[root@server1 ~]# rpm -ivh jdk-8u181-linux-x64.rpm
[root@server1 ~]# rpm -ivh elasticsearch-6.6.1.rpm
值得注意的是:必须先安装jdk的软件包,再安装elasticsearch的软件包。否会报错。
2、编辑elasticsearch的主配置文件/etc/elasticsearch/elasticsearch.yml
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-es #集群的名字(该名字随意给)
23 node.name: server1 #节点的名称(必须有解析)
43 bootstrap.memory_lock: true #开启内存锁定
55 network.host: 172.25.83.1 #指定该es节点的ip
59 http.port: 9200 #es对应的端口
- 查看配置文件/etc/elasticsearch/elasticsearch.yml中不以#开头的行。以此来查看修改了哪些内容。
值得注意的是:内存锁定只在该配置文件(/etc/elasticsearch/elasticsearch.yml)中修改,是不起作用的。还需要修改/etc/security/limits.conf和elasticsearch服务的启动脚本(/usr/lib/systemd/system/elasticsearch.service)
3、编辑/etc/security/limits.conf和elasticsearch服务的启动脚本(/usr/lib/systemd/system/elasticsearch.service)
[root@server1 ~]# vim /etc/security/limits.conf #在文件的最后添加如下的内容
62 elasticsearch soft memlock unlimited
63 elasticsearch hard memlock unlimited
64
65 elasticsearch - nofile 65536
66 elasticsearch - nproc 4096
[root@server1 ~]# vim /usr/lib/systemd/system/elasticsearch.service #添加如下的内容
37 LimitMEMLOCK=infinity
[root@server1 ~]# systemctl daemon-reload #修改完启动脚本之后,重新加载
4、启动elasticsearch服务,并查看该服务对应的9200端口是否已经打开
[root@server1 ~]# systemctl start elasticsearch
[root@server1 ~]# netstat -antulpe | grep 9200
tcp6 0 0 172.25.83.1:9200 :::* LISTEN 997 25587 2383/java
5、测试,确保ElasticSearch单节点部署成功
测试一:访问web界面
测试二:查看集群中节点的健康状态(目前只有一个节点server1),以及集群中的节点个数(目前只有一个节点server1)
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/health?v 可以看到状态是green,表示成功
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1555386815 03:53:35 my-es green 1 1 0 0 0 0 0 0 - 100.0%
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/health #
1555386824 03:53:44 my-es green 1 1 0 0 0 0 0 0 - 100.0%
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/nodes?v #可以看到server1,表示成功
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.25.83.1 10 96 1 0.01 0.03 0.05 mdi * server1
[root@server1 ~]#
[root@server1 ~]# curl -XGET http://172.25.83.1:9200/_cat/nodes
172.25.83.1 10 96 1 0.01 0.03 0.05 mdi * server1
至此ElasticSearch单节点的安装部署也就完成了。
但是我们会发现我们部署的ElasticSearch没有很直观好看的web界面,这是让人不舒服的地方,所以下篇博文将在本篇博文的基础上搭建直观好看的web界面。