开源日志分析系统ELK平台搭建部署

开源日志分析系统ELK平台搭建部署

一、前言

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products

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

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

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

二、准备工作

准备3台机器:

192.168.2.61(安装Elasticsearch,kibana,Logstash)

192.168.2.83(收集umember日志)

192.168.2.93(收集Nginx日志,安装Logstash)

操作系统:Centos 6.5 x64

下载安装包

Elasticsearch:

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz

Logstash:

https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz

kibana:

https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz

安装第三方epel源

rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装JDK环境(所有机器)

http://120.52.72.24/download.oracle.com/c3pr90ntc0td/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

cd /usr/local
tar -zxf jdk-8u131-linux-x64.tar.gz
ln -sv jdk1.8.0_131/ jdk
vi /etc/profile.d/jdk.sh

添加以下内容

export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:/usr/local/jdk/bin

~

chmod 755 /etc/profile.d/jdk.sh
. /etc/profile.d/jdk.sh

查看是否生效

java –version

修改ulimit限制

vi /etc/security/limits.d/90-nproc.conf

*       soft  nproc        10240
*       hard   nproc        10240
*       soft  nofile        65536
*       hard   nofile        65536
vi /etc/sysctl.conf

添加下面内容

vm.max_map_count = 262144

然后执行以下命令

sysctl -p

三、ElasticSearch安装配置

创建一个ELK目录,把安装包都放这个目录下。

[[email protected] ~]$ mkdir elk
[[email protected] ~]$ cd elk/

解压ElasticSearch安装包

[[email protected] elk]$ tar -zxfelasticsearch-5.3.0.tar.gz

安装Head插件

yum install npm git  #安装node.js
git clonegit://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start &  或者 grunt server 启动

通过http://192.168.2.61:9100/ 登录

然后编辑ES的配置文件:

vi config/elasticsearch.yml

修改以下配置项:

cluster.name: my-application
node.name: node-1
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host=0.0.0.0
network.port=9200
http.cors.enabled: true
http.cors.allow-origin: "*"

其他的选项保持默认,然后启动ES:

[[email protected] elk]$ /home/unilife/elk/elasticsearch-5.3.0/bin/elasticsearch &

可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。

然后,通过网页打开http://192.168.2.61:9200/ ,可以看到以下内容

返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。

四、Logstash安装

Logstash功能如下:

它就是一个收集器而已,我们需要为它指定Input和Output(当然Input和Output可以为多个)。由于我们需要把Java项目中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。

tar -zxf logstash-5.3.0.tar.gz
cd logstash-5.3.0

编写配置文件

vi config/log4j_to_es.conf
# For detail structure of this file
# Set:https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
input {
  #For detail config for log4j as input,
  #See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
 log4j {
   mode => "server"
   host => "192.168.2.61"
   port => 4567
  }
}
filter {
 #Only matched data are send to output.
}
output {
  #For detail config for elasticsearch as output,
  #See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
 elasticsearch {
   action => "index"                #The operation on ES
   hosts  =>"192.168.2.61:9200"    #ElasticSearch host, can be array.
   index  =>"dubbo"               #Theindex to write data to, can be any string.
  }

启动Logstash

[[email protected] logstash-5.3.0]$./bin/logstash -f config/log4j_to_es.conf &

用 -f 选项指定配置文件

修改Java项目的log4j.properties,将Log4j的日志输出到SocketAppender

log4j.rootCategory=debug, stdout, R, E, socket
 
# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4567
log4j.appender.socket.RemoteHost=192.168.2.61
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d[%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000

最后重新启动Java服务

用Head插件查看ES状态和内容

上面使用了ES的Head插件观察了ES集群的状态和数据,但这只是个简单的用于跟ES交互的页面而已,并不能生成报表或者图表什么的,接下来使用Kibana来执行搜索并生成图表。

五、Kiabana安装

解压安装包

tar -zxf kibana-5.3.0.tar.gz
cd kibana-5.3.0

配置kibana

[[email protected] kibana-5.3.0]$ viconfig/kibana.yml

修改以下内容

server.host: "0.0.0.0"
elasticsearch.url: http://192.168.2.61:9200

启动Kiabana

[[email protected] kibana-5.3.0]$ ./bin/kibana &

通过http://192.168.2.61:5601/ 访问Kibana

为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里我输入之前配置的Index名字dubbo,Kibana会自动加载该Index下doc的field,并自动选择合适的field用于图标中的时间字段:

接下来切换到Discover标签上,就能看到ES中的数据了:

六、Logstash收集日志

6.1、Logstash收集Nginx日志

192.168.2.93上操作

mkdir /home/unilife/elk
cd /home/unilife/elk

解压文件

tar -zxf logstash-5.3.0.tar.gz
cd logstash-5.3.0

编写配置文件

[[email protected] bin]$ vi/home/unilife/elk/logstash-5.3.0/config/nginx_to_es.conf

添加以下内容

input {
 file {
    type => "nginx_access"
    path => ["/usr/local/nginx/logs/access.log"]
 
  }
}
filter {
 #Only matched data are send to output.
}
output {
  #For detail config for elasticsearch as output,
  #See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
 elasticsearch {
   action => "index"               #The operation on ES
   hosts  =>"192.168.2.61:9200"    #ElasticSearch host, can be array.
   index  =>"nginx"               #Theindex to write data to, can be any string.
  }
}

启动Logstash

[[email protected] bin]$ ./bin/logstash -fconfig/nginx_to_es.conf &

用ElasticSearch的Head插件查看ES状态和内容,

可以看到nginx日志已经存储到ES

然后通过Kibana为nginx创建一个index

Kibana上能看到nginx数据了。

6.2、Logstash通过kafka收集日志信息

编辑配置文件

[[email protected] bin]$ vi/home/unilife/elk/logstash-5.3.0/config/kafka_to_elasticsearch.conf

添加以下内容

input {
 
    kafka {
      topics => "unilife_nginx_production"
      group_id => "flume_unilife_nginx_production"
      bootstrap_servers =>"192.168.2.240:9092,192.168.2.241:9093,192.168.2.242:9094,192.168.2.243:9095,192.168.2.244:9096"
  }
 
}

output {
 
    elasticsearch {
      action => "index"
      hosts  =>["192.168.2.240:9200","192.168.2.241:9200","192.168.2.242:9200","192.168.2.243:9200","192.168.2.244:9200"]
      index  => "nginx"
  }
 
}

启动Logstash

[[email protected] bin]$ ./bin/logstash -fconfig/kafka_to_elasticsearch.conf &
时间: 2024-10-08 01:19:11

开源日志分析系统ELK平台搭建部署的相关文章

docker:搭建ELK 开源日志分析系统

ELK 是由三部分组成的一套日志分析系统, Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片, 索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash:动态数据收集管道,Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用 Kibana:可视化视图,将elasticsearh所收集的data通过视图展现.kibana 是一个

CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源.分布式.restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分析功能的搜索引擎,能够扩展至数以百计的节点实时处理PB级别的数据.它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等.Elasticsearch集群采用主从模式,通过获取Logstash客户端收集来的日志信息同步到Elastic

实时日志分析系统ELK 部署与运行中的问题汇总

前记: 去年测试了ELK,今年测试了Storm,最终因为Storm需要过多开发介入而放弃,选择了ELK.感谢互联网上各路大神,目前总算是正常运行了. logstash+elasticsearch+kibana的搭建参考:http://wsgzao.github.io/post/elk/.由于搭建过程比较简单就不赘述,主要分享几个坑. 正文: 1.日志如何获取 无论是storm方案还是elk,都涉及这个关键问题.为减少和运维.开发的交叉,尽可能独立.快速,加之当时发现了justniffer这个“神

ELK平台搭建部署

1.获取软件: 2.安装elasticsearch 修改几个文件: 2.1./etc/security/limits.conf: * soft nproc 2048 * hard nproc 4096 * soft nofile 65536 * hard nofile 131072 2.2./etc/sysctl.conf,添加如下: vm.max_map_count = 655360 2.3./etc/security/limits.d/20-nproc.conf: * soft nproc

在CentOS7中部署ELK日志分析系统

在CentOS7中部署ELK日志分析系统 ELK原理介绍 什么是ELK ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具. Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是一套开放REST和JAVA API等

Web服务之部署AWStats日志分析系统

AWStats是使用Perl语言开发的一款开源日志分析系统,不仅可以用来分析Apache网站日志,也可以用来分析Samba.Vsftpd.IIS等服务的日志信息.结合crond等任务计划服务,可以对不断增长的日志内容定期进行分析 部署AWStats分析系统 ? ? AWStats的软件包可以从官网上下载 1. 安装AWStats软件包 ? ? 安装非常简单,只需将软件包解压到httpd服务器的/usr/local/目录下即可 2. 为统计的站点建立配置文件 ? ? AWStats系统支持统计多个

部署AWStats日志分析系统与优化(附安装包)

介绍 AWStats是使用Perl语言开发的一款开源日志分析系统,可以分析apache,samba,vsftpd,iis等服务的日志信息,结合crond等计划任务,可以对不断增长的日志内容定期进行分析. 它可以帮助我们直观的图形化的,图形化的!看到原本繁杂的日志文件.这篇文章就使用一个简单的apache服务来演示如何部署AWStats日志分析系统. 环境 VMware Workstation 14 pro 测试机型 redhat6.5 IP:192.168.10.100 win10 IP:192

部署Awstats日志分析系统

知识部分·什么是AWStats:AWStats分析系统是使用Perl语言开发的一款开源日志分析系统.可用于分析Apache.Samba.Vsftpd.IIS等服务的日志信息.也可以结合crond等计划任务,不断对增长的日志进行定期分析.操作步骤1.解压软件包,并将文件移动到/usr/local下2.为要统计的站点建立配置文件.首先切换到../awstats/tools下,授予awstats_configure.pl一个可执行的权限,然后执行该文件.3.在该位置添加apache的配置文件4.继续,

在Linux系统上部署AWStats日志分析系统

AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache网站服务器的访问日志,也可用来分析Samba Vsftpd IIS等服务的日志信息.综合crond等计划任务服务,可以对不断增长的日志内容定期进行分析. 实验环境:一台Linux6.5虚拟机,IP地址为192.168.100.222 一台windows虚拟机,地址为192.168.100.30 AWStats软件包链接:https://pan.baidu.com/s/1HWLiZuVEl9JSPGzPqT8O