ELK(elasticsearch+logstash+kibana)开源日志分析平台搭建

简介:

环境介绍


System:   CentOS7.2 x86_64

hostname: elk-server.huangming.org

IP Address: 10.0.6.42、10.17.83.42


本篇的ELK环境为单机部署方式,即将ELK所有的软件包都安装在一台服务器上,配置如下:

CPU:   4c

Mem:   8G

Disk:  50


一、Elasticsearch安装


1、安装jdk 1.8及以上的版本(安装过程略)

1
2
3
4
[root@elk-server elk] # java -version
java version  "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)


2、下载Elasticsearch最新版本(目前5.5版本)

1
2
3
4
使用curl命令下载 tar
# curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
也可以使用wget命令下载
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz


3、解压至指定目录(安装目录)/usr/local/下,并将其重命名为elasticsearch (完整的目录应该为/usr/local/elasticsearch)

1
2
3
# tar -zxf elasticsearch-5.5.2.tar.gz -C /usr/local/
# cd /usr/local/
# mv elasticsearch-5.5.2 elasticsearch


2、创建一个用于运行elasticsearch的普通用户,随后修改elasticsearch家目录的所属权限为该用户;创建elasticsearch数据存储目录/data/elasticsearch

1
2
3
4
5
# groupadd elasticsearch
# useradd -g elasticsearch elasticsearch -m
# chown -R elasticsearch. /usr/local/elasticsearch
# mkdir /data/elasticsearch
# chown -R elasticsearch. /data/elasticsearch


2、修改elasticsearch.yml配置文件

1
2
3
4
5
6
# vim config/elasticsearch.yml
cluster.name: my-application         #ELK集群名称
path.data:  /data/elasticsearch       #elasticsearch 数据存储目录
path.logs:  /usr/local/elasticsearch/logs    #elasticsearch 日志存储路径
network.host: 10.17.83.42            #elasticsearch 监听地址,默认为localhost
http.port: 9200                      #elasticsearch 监听端口,默认问9200


6、修改相关的内核参数


打开/etc/security/limits.conf文件,添加以下参数

1
2
3
4
*        soft    nproc           2048
*        hard    nproc           16384
*        soft    nofile          65536
*        hard    nofile          65536


修改vm.max_map_count=262144

1
# echo "/etc/sysctl.conf" >> /etc/sysctl.conf


7、运行elasticsearch (注意:要切换到普通用户运行)


# su - elasticsearch

$ ./bin/elasticsearch


运行elasticsearch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[elasticsearch@elk-server ~]$  cd  /usr/local/elasticsearch/
[elasticsearch@elk-server elasticsearch]$ . /bin/elasticsearch
[2017-08-28T14:51:31,069][INFO ][o.e.n.Node               ] [] initializing ...
[2017-08-28T14:51:31,186][INFO ][o.e.e.NodeEnvironment    ] [6eN59Pf] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [89.4gb], net total_space [91.4gb], spins? [unknown], types [rootfs]
[2017-08-28T14:51:31,187][INFO ][o.e.e.NodeEnvironment    ] [6eN59Pf] heap size [1.9gb], compressed ordinary object pointers [ true ]
[2017-08-28T14:51:31,188][INFO ][o.e.n.Node               ] node name [6eN59Pf] derived from node ID [6eN59PfuS7iVRfoEppsngg];  set  [node.name] to override
[2017-08-28T14:51:31,189][INFO ][o.e.n.Node               ] version[5.5.2], pid[2759], build[b2f0c09 /2017-08-14T12 :33:14.154Z], OS[Linux /3 .10.0-327.el7.x86_64 /amd64 ], JVM[Oracle Corporation /Java  HotSpot(TM) 64-Bit Server VM /1 .8.0_65 /25 .65-b01]
[2017-08-28T14:51:31,189][INFO ][o.e.n.Node               ] JVM arguments [-Xms2g, -Xmx2g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless= true , -Dfile.encoding=UTF-8, -Djna.nosys= true , -Djdk.io.permissionsUseCanonicalPath= true , -Dio.netty.noUnsafe= true , -Dio.netty.noKeySetOptimization= true , -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled= false , -Dlog4j2.disable.jmx= true , -Dlog4j.skipJansi= true , -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home= /usr/local/elasticsearch ]
[2017-08-28T14:51:32,174][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [aggs-matrix-stats]
[2017-08-28T14:51:32,174][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [ingest-common]
[2017-08-28T14:51:32,175][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [lang-expression]
[2017-08-28T14:51:32,175][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [lang-groovy]
[2017-08-28T14:51:32,175][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [lang-mustache]
[2017-08-28T14:51:32,175][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [lang-painless]
[2017-08-28T14:51:32,175][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [parent- join ]
[2017-08-28T14:51:32,175][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [percolator]
[2017-08-28T14:51:32,175][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [reindex]
[2017-08-28T14:51:32,176][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [transport-netty3]
[2017-08-28T14:51:32,176][INFO ][o.e.p.PluginsService     ] [6eN59Pf] loaded module [transport-netty4]
[2017-08-28T14:51:32,176][INFO ][o.e.p.PluginsService     ] [6eN59Pf] no plugins loaded
[2017-08-28T14:51:33,991][INFO ][o.e.d.DiscoveryModule    ] [6eN59Pf] using discovery  type  [zen]
[2017-08-28T14:51:34,576][INFO ][o.e.n.Node               ] initialized
[2017-08-28T14:51:34,577][INFO ][o.e.n.Node               ] [6eN59Pf] starting ...
[2017-08-28T14:51:34,814][INFO ][o.e.t.TransportService   ] [6eN59Pf] publish_address {10.17.83.42:9300}, bound_addresses {10.17.83.42:9300}
[2017-08-28T14:51:34,826][INFO ][o.e.b.BootstrapChecks    ] [6eN59Pf] bound or publishing to a non-loopback or non-link- local  address, enforcing bootstrap checks
[2017-08-28T14:51:37,883][INFO ][o.e.c.s.ClusterService   ] [6eN59Pf] new_master {6eN59Pf}{6eN59PfuS7iVRfoEppsngg}{hs82h4vkTwKCEvKybCodbw}{10.17.83.42}{10.17.83.42:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
[2017-08-28T14:51:37,900][INFO ][o.e.h.n.Netty4HttpServerTransport] [6eN59Pf] publish_address {10.17.83.42:9200}, bound_addresses {10.17.83.42:9200}
[2017-08-28T14:51:37,900][INFO ][o.e.n.Node               ] [6eN59Pf] started
[2017-08-28T14:51:37,925][INFO ][o.e.g.GatewayService     ] [6eN59Pf] recovered [0] indices into cluster_state
[2017-08-28T14:51:43,485][INFO ][o.e.c.m.MetaDataCreateIndexService] [6eN59Pf] [.kibana] creating index, cause [api], templates [], shards [1]/[1], mappings [_default_, index-pattern, server, visualization, search, timelion-sheet, config, dashboard, url]



一般情况我们要求elasticsearch在后台运行,使用命令如下:

1
$ . /bin/elasticsearch  -d


8、检查elasticsearch状态,如下则表示正常运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@elk-server elasticsearch] # curl http://10.17.83.42:9200
{
   "name"  "6eN59Pf" ,
   "cluster_name"  "my-application" ,
   "cluster_uuid"  "cKopwE1iTciIQAiFI6d8Gw" ,
   "version"  : {
     "number"  "5.5.2" ,
     "build_hash"  "b2f0c09" ,
     "build_date"  "2017-08-14T12:33:14.154Z" ,
     "build_snapshot"  false ,
     "lucene_version"  "6.6.0"
   },
   "tagline"  "You Know, for Search"
}



二、Logstash安装


1、下载logstash软件包

1
# wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.2.tar.gz


2、解压至指定安装目录

1
2
3
4
# tar -zxf logstash-5.5.2.tar.gz -C /usr/local/
# cd /usr/local/
  
# mv logstash-5.5.2 logstash


3、运行logstash

# cd logstash/

# ./bin/logstash -e 'input { stdin { } } output { stdout {} }'


输入hello world!  ,验证是否正常输出

1
2
3
4
5
6
7
8
9
10
11
12
[root@elk-server logstash] # ./bin/logstash -e 'input { stdin { } } output { stdout {} }'
ERROR StatusLogger No log4j2 configuration  file  found. Using default configuration: logging only errors to the console.
Sending Logstash's logs to  /usr/local/logstash/logs  which  is now configured via log4j2.properties
[2017-08-28T15:11:33,267][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=> "path.queue" , :path=> "/usr/local/logstash/data/queue" }
[2017-08-28T15:11:33,273][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=> "path.dead_letter_queue" , :path=> "/usr/local/logstash/data/dead_letter_queue" }
[2017-08-28T15:11:33,300][INFO ][logstash.agent           ] No persistent UUID  file  found. Generating new UUID {:uuid=> "2fb479ab-0ca5-4979-89b1-4246df9a7472" , :path=> "/usr/local/logstash/data/uuid" }
[2017-08-28T15:11:33,438][INFO ][logstash.pipeline        ] Starting pipeline { "id" => "main" "pipeline.workers" =>8,  "pipeline.batch.size" =>125,  "pipeline.batch.delay" =>5,  "pipeline.max_inflight" =>1000}
[2017-08-28T15:11:33,455][INFO ][logstash.pipeline        ] Pipeline main started
The stdin plugin is now waiting  for  input:
[2017-08-28T15:11:33,497][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
hello world!   
2017-08-28T07:11:42.724Z elk-server.huangming.org hello world!



三、Kibana安装


1、下载kibana

1
# wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.2-linux-x86_64.tar.gz


2、解压至安装目录

1
2
3
# tar -zxf kibana-5.5.2-linux-x86_64.tar.gz -C /usr/local/
# cd /usr/local/
# mv kibana-5.5.2-linux-x86_64 kibana


3、修改配置

1
2
3
4
5
6
7
# cd kibana/
  
# vim config/kibana.yml
  
server.port: 5601             # 监听端口
server.host:  "10.17.83.42"    # 指定后端服务器
elasticsearch.url:  "http://10.17.83.42:9200"   # 指定elasticsearch实例地址



4、运行kibana


# ./bin/kibana &

1
2
3
4
5
6
7
8
9
10
[root@elk-server kibana] # ./bin/kibana &
[1] 3219
[root@elk-server kibana] #   log   [07:26:02.496] [info][status][plugin:kibana@5.5.2] Status changed from uninitialized to green - Ready
   log   [07:26:02.604] [info][status][plugin:elasticsearch@5.5.2] Status changed from uninitialized to yellow - Waiting  for  Elasticsearch
   log   [07:26:02.637] [info][status][plugin:console@5.5.2] Status changed from uninitialized to green - Ready
   log   [07:26:02.682] [info][status][plugin:metrics@5.5.2] Status changed from uninitialized to green - Ready
   log   [07:26:02.930] [info][status][plugin:elasticsearch@5.5.2] Status changed from yellow to green - Kibana index ready
   log   [07:26:02.932] [info][status][plugin:timelion@5.5.2] Status changed from uninitialized to green - Ready
   log   [07:26:02.937] [info][listening] Server running at http: //10 .17.83.42:5601
   log   [07:26:02.939] [info][status][ui settings] Status changed from uninitialized to green - Ready



5、验证kibana


在客户端浏览器打开http://10.17.83.42:5601

wKioL1mj3eGhpWozAAB5-KFyFn4377.png


在该页面提示我们需要创建一个index

 

首先创建一个kinana默认的index(名称为.kibana),如果输入的index名不存在,则无法创建

wKiom1mj3hmxgB_IAABf9OAqQII729.png


查看运行状态及已安装的插件

wKioL1mj3vXCO9DzAACd_1n55NM020.png


至此ELK已经搭建完成了,下面来创建一个收集message系统日志的实例



本文转自 HMLinux 51CTO博客,原文链接:http://blog.51cto.com/7424593/1960254

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
7月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1220 64
搭建ELK日志收集,保姆级教程
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
912 90
|
11月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
5695 0
ELK 圣经:Elasticsearch、Logstash、Kibana 从入门到精通
ELK是一套强大的日志管理和分析工具,广泛应用于日志监控、故障排查、业务分析等场景。本文档将详细介绍ELK的各个组件及其配置方法,帮助读者从零开始掌握ELK的使用。
|
存储 监控 安全
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4698 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
542 9
|
11月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1089 54
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
1131 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
下一篇
开通oss服务