系统环境

为了安装时不出错,建议选择这两者选择一样的版本,本文全部选择5.3版本。

  • System: Centos release 7.3
  • Java: openjdk version "1.8.0_131"
  • ElasticSearch: 5.3.1

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

  • Logstash: 5.3.1

Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

  • Kibana: 5.3.1

Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

ELK 关系:

LEK:logstatsh 收集日志,存到elasticserach (存储,产生索引,搜索) 到kibana展现(view)

官网首页下载tar源码包

将以上的源码包上传至centos服务器上/usr/local/src目录下

tips: Logstash 的运行依赖于 Java 运行环境, Logstash 1.5 以上版本不低于 java 7 推荐使用最新版本的 Java 。由于我们只是运行 Java 程序,而不是开发,下载 JRE 即可。首先,在 Oracle 官方下载新版 jre ,下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

一、准备

1. 下载jdk-8u131-linux-x64.tar,上传至CentOS上。

2. 解压源码包

通过终端新建java文件夹,并解压至/usr/local/java文件夹下

  1. # mkdir -pv /usr/local/java
  2. # tar -zxvf /usr/local/src/jdk-8u131-linux-x64.tar.gz -C /usr/local/java

3. 设置jdk环境变量

这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量

  1. # vi /etc/profile

在末尾添加如下图所示:

请记住,在上述添加过程中,等号两侧不要加入空格,不然会出现“不是有效的标识符”,因为source /etc/profile 时不能识别多余到空格,会理解为是路径一部分。

然后保存使profile生效

  1. source /etc/profile

4. 检验是否安装成功

  1. java -version

成功则显示如下

二、Elasticsearch安装配置

1. 解压elasticsearch-5.3.1.tar源码包

下载链接:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.1.tar.gz

解压至/usr/local/目录下

  1. tar -zxvf /usr/local/src/elasticsearch-5.3.1.tar.gz -C /usr/local/

2. 修改配置文件

修改 /usr/local/elasticsearch-5.3.1/config/elasticsearch.yml

配置文件。

以下供参考配置,实际以需求为准:

  1. vi /usr/local/elasticsearch-5.3.1/config/elasticsearch.yml
  2. # 这里指定的是集群名称,需要修改为对应的,开启了自发现功能后,ES会按照此集群名称进行集群发现
  3. cluster.name: skynet_es_cluster
  4. node.name: skynet_es_cluster_dev1
  5. # 数据目录
  6. path.data: /data/elk/data
  7. # log 目录
  8. path.logs: /data/elk/logs
  9. # 修改一下ES的监听地址,这样别的机器也可以访问
  10. network.host: 0.0.0.0
  11. # 默认的端口号
  12. http.port: 9200
  13. discovery.zen.ping.unicast.hosts: ["172.18.5.111", "172.18.5.112"]
  14. # discovery.zen.minimum_master_nodes: 3
  15. # enable cors,保证_site类的插件可以访问es
  16. http.cors.enabled: true
  17. http.cors.allow-origin: "*"
  18. # Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
  19. bootstrap.memory_lock: false
  20. bootstrap.system_call_filter: false

注意,设置参数的时候:后面要有空格!

tips:ElasticSearch 配置文件译文解析

3. 修改系统参数

确保系统有足够资源启动ES

设置内核参数

  1. vi /etc/sysctl.conf
  2. # 增加以下参数
  3. vm.max_map_count=655360

执行以下命令,确保生效配置生效:

  1. sysctl -p

设置资源参数

  1. vi /etc/security/limits.conf
  2. # 修改
  3. * soft nofile 65536
  4. * hard nofile 131072
  5. * soft nproc 65536
  6. * hard nproc 131072

设置用户资源参数

  1. vi /etc/security/limits.d/20-nproc.conf
  2. # 设置elk用户参数
  3. elk soft nproc 65536

4. 添加启动用户,设置权限

启动ElasticSearch5版本要非root用户,需要新建一个用户来启动ElasticSearch

  1. useradd elk #创建用户elk
  2. groupadd elk #创建组elk
  3. useradd elk -g elk #将用户添加到组
  4. mkdir -pv /data/elk/{data,logs} # 创建数据和日志目录
  5. # 修改文件所有者
  6. chown -R elk:elk /data/elk/
  7. chown -R elk:elk /usr/local/elasticsearch-5.3.1/

5. 启动ES

查看内存剩余

  1. free -g

使用elk用户启动elasticsearch服务

切换至elk用户

  1. su elk
  2. /usr/local/elasticsearch-5.3.1/bin/elasticsearch

检查elasticsearch服务,如下图所示,即成功开启服务了,这就意味着你现在已经启动并运行一个Elasticsearch节点了。

tips:

单个节点可以作为一个运行中的Elasticsearch的实例。而一个集群是一组拥有相同cluster.name的节点,(单独的节点也可以组成一个集群)可以在elasticsearch.yml配置文件中修改cluster.name,该节点启动时加载(需要重启服务后才会生效)。

客户端网页访问:

服务器要关闭防火墙

  1. systemctl stop firewalld.service

网页访问如下所示:即成功了

6.插件

参考链接:

Elasticsearch 5.0 —— Head插件部署指南

ElasticSearch 5.0的head插件安装

三、安装 Logstash

下载并安装 Logstash ,安装 logstash 只需将它解压的对应目录即可,例如: /usr/local 下:

官网下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-5.3.1.tar.gz

1.解压源码包

  1. tar /usr/local/src/logstash-5.3.1.tar.gz -C /usr/local/

首先,我们通过运行最基本的Logstash管道来测试您的Logstash安装。

Logstash管道有两个必需的元素,input并且output,以及一个可选的元素,filter。输入插件消耗来自源的数据,过滤器插件会按照您指定的方式修改数据,并且输出插件将数据写入到目的地。

2.安装完成后运行如下命令:

  1. /usr/local/logstash-5.3.1/bin/logstash -e 'input { stdin { } } output { stdout {} }'
  2. Sending Logstash's logs to /usr/local/logstash-5.3.1/logs which is now configured via log4j2.properties
  3. [2017-04-25T06:07:10,900][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>125}
  4. The stdin plugin is now waiting for input:
  5. [2017-04-25T06:07:10,968][INFO ][logstash.pipeline ] Pipeline main started
  6. [2017-04-25T06:07:11,064][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
  7. hello world
  8. 2017-04-25T10:07:41.447Z yyp hello world

我们可以看到,我们输入什么内容logstash按照某种格式输出,其中-e参数参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。使用ctrl-c命令可以退出之前运行的Logstash。

使用-e参数在命令行中指定配置是很常用的方式,不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。 例如:在 logstash 安装目录下(/usr/local/logstash-5.3.1/config)创建一个“基本配置”测试文件 logstash-simple.conf, 文件内容如下:

3.创建配置文件

  1. cat logstash-simple.conf
  2. input { stdin { } }
  3. output {
  4. stdout { codec=> rubydebug }
  5. }

Logstash 使用 input 和 output 定义收集日志时的输入和输出的相关配置,本例中 input 定义了一个叫 "stdin" 的 input , output 定义一个叫 "stdout" 的 output 。无论我们输入什么字符, Logstash 都会按照某种格式来返回我们输入的字符,其中 output 被定义为 "stdout" 并使用了 codec 参数来指定 logstash 输出格式。

使用logstash的-f参数来读取配置文件,执行如下开始进行测试:

4.启动

  1. /usr/local/logstash-5.3.1/bin/logstash -f /usr/local/logstash-5.3.1/config/logstash-simple.conf
  2. Sending Logstash's logs to /usr/local/logstash-5.3.1/logs which is now configured via log4j2.properties
  3. [2017-04-25T06:18:43,294][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>125}
  4. [2017-04-25T06:18:43,939][INFO ][logstash.pipeline ] Pipeline main started
  5. The stdin plugin is now waiting for input:
  6. [2017-04-25T06:18:44,674][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
  7. hello world!
  8. {
  9. "@timestamp" => 2017-04-25T12:21:21.526Z,
  10. "@version" => "1",
  11. "host" => "yyp",
  12. "message" => "hello world!"
  13. }

如上显示,说明成功了。

4.测试Elasticsearch 和 Logstash 来收集日志数据

接下来我们在 logstash 安装目录下创建一个用于测试 logstash 使用 elasticsearch 作为 logstash 的后端的测试文件 logstash-test.conf,该文件中定义了stdout和elasticsearch作为output,这样的“多重输出”即保证输出结果显示到屏幕上,同时也输出到elastisearch中。

前提要保证elasticsearch和logstash都正常启动(需要先启动elasticsearch,再启动logstash)

  1. cat logstash-test.conf
  2. input { stdin { } }
  3. output {
  4. elasticsearch {hosts => "192.168.30.132:9200" } #elasticsearch服务地址
  5. stdout { codec=> rubydebug }
  6. }

开启服务,执行如下命令:

  1. /usr/local/logstash-5.3.1/bin/logstash -f /usr/local/logstash-5.3.1/config/logstash-test.conf

我们可以使用 curl 命令发送请求来查看 ES 是否接收到了数据:

  1. curl 'http://192.168.30.132:9200/_search?pretty'

返回结果:

  1. {
  2. "took" : 13,
  3. "timed_out" : false,
  4. "_shards" : {
  5. "total" : 1,
  6. "successful" : 1,
  7. "failed" : 0
  8. },
  9. "hits" : {
  10. "total" : 1,
  11. "max_score" : 1.0,
  12. "hits" : [
  13. {
  14. "_index" : ".kibana",
  15. "_type" : "config",
  16. "_id" : "5.3.1",
  17. "_score" : 1.0,
  18. "_source" : {
  19. "buildNum" : 14844
  20. }
  21. }
  22. ]
  23. }
  24. }

至此,你已经成功利用 Elasticsearch 和 Logstash 来收集日志数据了。

四、kibana的安装

1. 解压kibana-5.3.1-linux-x86_64源码包

下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-5.3.1-linux-x86_64.tar.gz

  1. 解压至/usr/local/下
  2. tar -zxvf /usr/local/src/kibana-5.3.1-linux-x86_64.tar.gz -C /usr/local/

2.配置kibana

  1. 编辑kibana.yml配置文件
  2. vi /usr/local/kibana-5.3.1-linux-x86_64/config/kibana.yml
  3. 修改以下参数:
  4. server.port: 5601 #开启默认端口5601
  5. server.host: 192.168.30.132 #站点地址
  6. elasticsearch.url: http://192.168.30.132:9200 #指向elasticsearch服务的ip地址
  7. kibana.index: “.kibana

3.启动

  1. 执行以下命令启动:
  2. /usr/local/kibana-5.3.1-linux-x86_64/bin/kibana

4.测试浏览器访问

访问:http://192.168.30.132:5601

如下图所示,说明成功访问了

5.配置ES索引

kibana第一次使用时,会要求创建index,只要按照默认值即可。

注意:

首次会提示没有索引。。。。

首先需要加上我们刚刚建立的索引index => "logstash--%{+YYYY-MM}" 点击setting->indices, 在这里我们可以Configure an index pattern, 也就是说可以配置 正则匹配的index,

  1. cat logstash-simple.conf
  2. input {
  3. stdin{}
  4. }
  5. output {
  6. elasticsearch {
  7. action => "index" # 在ES上操作index
  8. hosts => "192.168.30.132:9200" # ES地址
  9. index => "logstash-%{+YYYY-MM}" #索引名
  10. }
  11. }

可以看到默认的index是"logstash-*", 默认是从logstash导出的数据, 因为我们在logstash中配置的索引就是logstash开头的,所以这里我们保持默认不变.

下面还有一个Time-field name, 一般来说time都是一个必要的字段, 并且这个字段的类型是date类型! 不是string!!! 如果没有时间字段, 那么将上面的" Index contains time-based events" 取消就OK.

问题

1、出现Configure an index pattern create是灰色的的问题

这个问题是配置文件的问题,修改logstash的配置文件,使其输出到elasticsearch,其中的index选项配置为kibana上的index,比如我是index => "logstash-%{+YYYY-MM}" ,这个时候重启logstash,kibana就保持默认的logstash-*索引既可,应该能够看到Create按钮了

参考资料:第一次接触elk日志系统,搭建过程中遇到种种问题,借鉴网上分享的知识,终于成功搭建elk日志系统,好记性不如烂笔头!

  1. Elasticsearch+Logstash+Kibana教程
  2. Elasticsearch 官方文档参考
  3. Logstash 官方文档参考
  4. Kibana User Guide 官方文档参考

Galle,斯里兰卡

你手里的光阴是无限的,你的世纪,一个接着一个。

CentOs 7.3下ELK日志分析系统搭建的更多相关文章

  1. Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)

    因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见 ...

  2. ELK日志分析系统搭建

    之前一段时间由于版本迭代任务紧,组内代码质量不尽如人意.接二连三的被测试提醒后台错误之后, 我们决定搭建一个后台日志分析系统, 经过几个方案比较后,选择的相对更简单的ELK方案. ELK 是Elast ...

  3. ELK日志分析系统搭建(转)

    摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究 ...

  4. ELK日志分析系统搭建 windows

    1 分别下载elk包 下载地址 https://www.elastic.co/cn/downloads 2 将这三个解压到同一个目录下,便于管理 3 elasticsearch不需要修改配置 默认即可 ...

  5. Rsyslog+ELK日志分析系统

    转自:https://www.cnblogs.com/itworks/p/7272740.html Rsyslog+ELK日志分析系统搭建总结1.0(测试环境) 因为工作需求,最近在搭建日志分析系统, ...

  6. ELK日志分析系统简单部署

    1.传统日志分析系统: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安 ...

  7. ELK日志分析系统-Logstack

    ELK日志分析系统 作者:Danbo 2016-*-* 本文是学习笔记,参考ELK Stack中文指南,链接:https://www.gitbook.com/book/chenryn/kibana-g ...

  8. 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步

    第十章-实战:ELK日志分析系统 ElasticSearch.Logstash.Kibana简称ELK系统,主要用于日志的收集与分析. 一个完整的大型分布式系统,会有很多与业务不相关的系统,其中日志系 ...

  9. Docker笔记(十):使用Docker来搭建一套ELK日志分析系统

    一段时间没关注ELK(elasticsearch —— 搜索引擎,可用于存储.索引日志, logstash —— 可用于日志传输.转换,kibana —— WebUI,将日志可视化),发现最新版已到7 ...

随机推荐

  1. CuratorFramework使用

    CuratorFrameworkFramework是ZooKeeper Client更高的抽象API 自动连接管理: 1. 当ZooKeeper客户端内部出现异常, 将自动进行重连或重试, 该过程对外 ...

  2. Liferay开发实战(1):入门

    网址: https://www.liferay.com/zh/ 文档: https://dev.liferay.com/develop 入门文章网上很多,中文的较少,存在版本太旧的问题,也缺少一步一步 ...

  3. java操作数据库的基本方法

    此次开发工具为eclipse,才有的数据库驱动是mysql-connector-java-5.1.8-bin.jar 第一步,在eclipse的工程目录中引用mysql驱动 驱动下载地址:https: ...

  4. String.format(String format,Object... args)的用法

    String.format(String format, Object... args)方法详解 以前也看到过很多次这个用法,一直记不牢靠,今天整理一下.   我仅仅举几个例子稍做说明: String ...

  5. swiper4-vue 不使用loop,由最后一张跳到第一张

    <template> <div class="swiper-box"> <div class="swiper-container" ...

  6. GCC C语言 DLL范例,含源码

    作者:小白救星 编译:gcc -c -DBUILDING_HZ_DLL1 hzdll1.c           gcc -shared -o hzdll1.dll hzdll1.o -Wl,--kil ...

  7. Centos 7 快速搭建IOS可用IPsec

    安装 strongswan yum install -y http://ftp.nluug.nl/pub/os/Linux/distr/fedora-epel/7/x86_64/Packages/e/ ...

  8. (转) lsof 一切皆文件

    原文:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/lsof.html lsof(list open files)是一个查看当前系统文 ...

  9. 一个对眼睛很好的vim 颜色主题

    地址:https://github.com/altercation/vim-colors-solarized 安装: $ cd vim-colors-solarized/colors $ mv sol ...

  10. tomcat配置说明,配置不用访问工程名

    # 配置项目访问不用输入项目名称 # [重要]亲测 <Host>中的 appBass="" 一定不能带目录,必须为空,因为启动tomcat会启动appBass下面的所有 ...