(高版本)ELK(Elasticsearch + Logstash + Kibana)服务服务搭建

一、ELK是什么鬼?

ELK实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。

1. ElasticSearch

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2. Logstash

Logstash是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。

3. Kibana

Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。

二、ELK有何优势?

1. 强大的搜索功能,elasticsearch可以以分布式搜索的方式快速检索,而且支持DSL的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选数据。

2. 完美的展示功能,可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致。

3. 分布式功能,能够解决大型集群运维工作很多问题,包括监控、预警、日志收集解析等。

三、ELK一般用来做啥?

ELK组件在海量日志系统的运维中,可用于解决:

- 分布式日志数据集中式查询和管理

- 系统监控,包含系统硬件和应用各个组件的监控

- 故障排查

- 安全信息和事件管理

- 报表功能

ELK组件在大数据运维系统中,主要可解决的问题如下:

- 日志查询,问题排查,上线检查

- 服务器监控,应用监控,错误报警,Bug管理

- 性能分析,用户行为分析,安全漏洞分析,时间管理

缘起:

在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素。

搭建一个日志系统

搭建一个日志系统需要考虑一下一些因素:

利用什么技术,是自己实现还利用现成的组件

日志需要定义统一的格式

日志需要拥有一个锚点来进行全局跟踪

第一个问题,针对小公司来说,基本没有自己的研发能力,绝对是选用第三方开源的组件了。ELK配置比较简单,有现成的UI界面,容易检索日志信息,是首选。

第二个问题,利用log4j2定义好统一的日志格式,利用logstash过滤日志内容。

第三个问题,全局跟踪的ID有几种生产方式,一种是利用UUID或者生成随机数,一种是利用数据库来生成sequence number,还可以通过自定义一个id生成服务来获取。考虑到自身服务的需要,这里选用生成随机数来实现。

ELK工作原理:

从左边看起,每一台webserver上都会部署一个logstash-agent,它的作用是用类似tailf的方式监听日志文件,然后把新添加的日志发送到redis队列里面,logstash-indexer负责从redis相应的队列里面取出日志,对日志进进行加工后输出到elasticsearch中,elasticsearch会根据要求对日志进行索引归集,最后用户可以通过kibana来查看和分析日志。

软件包下载:

elasticsearch:

wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.2.1/elasticsearch-2.2.1.tar.gz

logstash:

wget https://download.elastic.co/logstash/logstash/logstash-2.2.2.tar.gz

kibana:

wget https://download.elastic.co/kibana/kibana/kibana-4.4.2-linux-x64.tar.gz

环境搭建:

注意:jdk可自行网上搜索安装方法

注:由于Logstash的运行依赖于Java环境, 而Logstash 1.5以上版本不低于java 1.7,因此推荐使用最新版本的Java。因为我们只需要Java的运行环境,所以可以只安装JRE,不过这里我依然使用JDK,请自行搜索安装。

此次搭建需要使用的网络源:

虚拟机能够访问互联网:

安装Java环境

yum -y install java-1.8.0-openjdk*

安装Elasticsearch

tar -xvf elasticsearch-2.2.1.tar.gz -C /usr/local/

ln -s /usr/local/elasticsearch-2.2.1/ /usr/local/elasticsearch

cd /usr/local/elasticsearc

安装插件:

./bin/plugin install  mobz/elasticsearch-head

插件安装方法1:

1.elasticsearch/bin/plugin -install mobz/elasticsearch-head

2.运行es

3.打开http://localhost:9200/_plugin/head/

插件安装方法2:

1.https://github.com/mobz/elasticsearch-head下载zip 解压

2.建立elasticsearch-1.0.0\plugins\head\_site文件

3.将解压后的elasticsearch-head-master文件夹下的文件copy到_site

4.运行es

5.打开http://localhost:9200/_plugin/head/

创建用户和目录(因为elasticsearch 2.0.0 以上版本不能用root用户运行)

1
2
3
4
5
[[email protected]]# groupadd -g 1000 elasticsearch
[[email protected]]# useradd -g 1000 -u 1000 elasticsearch
[[email protected]]# sudo -u elasticsearch mkdir /tmp/elasticsearch
[[email protected]]# ls /tmp/elasticsearch
[[email protected]]# sudo -u elasticsearch mkdir /tmp/elasticsearch/{data,logs}

mkdir /usr/local/elasticsearch/config/scripts

编辑配置文件vim config/elasticsearch.yml

加如以下四行(注意冒号后面有空格):

path.data: /tmp/elasticsearch/data

path.logs: /tmp/elasticsearch/logs

network.host: 192.168.100.10(服务器IP)

network.port: 9200

启动服务:

sudo -u elastsearch /usr/local/elasticsearch/bin/elasticsearch

注意:如果正式应用需要在后台运行

1 sudo -u elastsearch /usr/local/elasticsearch/bin/elasticsearch -d

注意:

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

# curl 192.168.100.10:9200

{

"name" : "Wilson Fisk",

"cluster_name" : "elasticsearch",

"version" : {

"number" : "2.2.1",

"build_hash" : "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1",

"build_timestamp" : "2016-03-09T09:38:54Z",

"build_snapshot" : false,

"lucene_version" : "5.4.1"

},

"tagline" : "You Know, for Search"

}

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

刚刚安装的head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。现在也可以使用它打开http://192.168.253.140:9200/_plugin/head/页面来查看ES集群状态:

上面的功能还是不错的!

【安装Logstash---数据日志存储和传输】

其实它就是一个收集器而已,收集(input)和传输(output),我们需要为它指定Input和Output(当然Input和Output可以为多个)。可以指定input的日志和output到elasticsearch中

tar xvf logstash-2.2.2.tar.gz -C /usr/local/

ln -s /usr/local/logstash-2.2.2/ /usr/local/logstash

测试logstash

(1) 屏幕输入输出方式测试

/usr/local/logstash/bin/logstash -e ‘input { stdin { } } output { stdout { } }‘

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

使用-e参数在命令行中指定配置是很常用的方式

不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。例如:在logstash安装目录下创建

配置logstash

创建配置文件目录:
mkdir -p /usr/local/logstash/etc
vim /usr/local/logstash/etc/hello_search.conf

输入下面:

# cat /usr/local/logstash/etc/hello_search.conf

input {

stdin {

type => "human"

}

}

output {

stdout {

codec => rubydebug

}

elasticsearch {

hosts => "192.168.100.10:9200"

}

}

启动: /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/hello_search.conf

(以频幕上输入的方式输入,以rubydebug格式输出到屏幕,并且传递到elasticsearch)

测试logstash日志是否传输到了elasticsearch

通过以下接口:

curl ‘http://192.168.253.140:9200/_search?pretty‘

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

【安装kibana---展示数据】

注:现在kibanna可以自带了web服务,bin/kibana就可以直接启动了,建议不用nginx进行配合启动了,使用自带的web

安装Kibana

下载kibana后,解压到对应的目录就完成kibana的安装

解压、软连接

1
2
tar -xzvf kibana-4.4.2-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/kibana-4.4.2-linux-x64/ /usr/local/kibana

启动kibanna

1 /usr/local/kibana-4.4.2-linux-x64/bin/kibana

或者

1 /usr/local/kibana/bin/kibana

此时是没有连接上elasticsearch

配置kibanna

vim /usr/local/kibana-4.4.2-linux-x64/config/kibana.yml

重启

/usr/local/kibana/bin/kibana

web访问:

监听了5601作为web端口

使用http://kibanaServerIP:5601访问Kibana,登录后,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。

In order to use Kibana you must configure at least one index pattern. Index patterns are used to identify the Elasticsearch index to run search and analytics against. They are also used to configure fields.

为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index

补充:

[配置logstash作为Indexer]

将logstash配置为索引器,并将logstash的日志数据存储到Elasticsearch,本范例主要是索引本地系统日志

cat /usr/local/logstash/etc/logstash-indexer.conf

input {

file {

type =>"syslog"

path => ["/var/log/messages", "/var/log/secure" ]

}

syslog {

type =>"syslog"

port =>"5544"

}

}

output {

stdout { codec=> rubydebug }

elasticsearch {hosts => "192.168.100.10:9200" }

}

执行:

/usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash-indexer.conf

执行:

echo "谷歌alphago和李世石围棋大战"  >> /var/log/messages

每个收集日志的启动,都是一个独立的进程

时间: 2024-08-27 18:58:43

(高版本)ELK(Elasticsearch + Logstash + Kibana)服务服务搭建的相关文章

CentOS 7.x安装ELK(Elasticsearch+Logstash+Kibana)

第一次听到ELK,是新浪的@ARGV 介绍内部使用ELK的情况和场景,当时触动很大,原来有那么方便的方式来收集日志和展现,有了这样的工具,你干完坏事,删除日志,就已经没啥作用了. 很多企业都表示出他们很关心安全,不过他们压根就没看过和关注过自己服务器的日志,这是有点讽刺的.先把日志管理好,然后我们再去深入讨论安全. Mirantis的Fuel,已经引入ELK作为OpenStack的监控工具,所以我们也需要重点去学习一下ELK. 刚好看到一个老外的视频,介绍CentOS 7安装ELK,讲的很实在,

[Big Data - ELK] ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事

ELK(ElasticSearch+Logstash+Kibana)日志分析工具

日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事

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及以上的版本(安装过程略) [[email protected] elk]# java -v

centos7安装配置ELK(Elasticsearch+Logstash+Kibana)

yum install java-1.8.0-openjdk yum install elasticsearch-2.1.0.rpm systemctl start elasticsearch rpm -qc elasticsearch tar -zxvf kibana-5.0.0-snapshot-linux-x64.tar.gz mv kibana-5.0.0-snapshot-linux-x64 kibana cp -R kibana /opt/ vi /etc/systemd/syste

Linux——使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台

http://wsgzao.github.io/post/elk/

ELK (Elasticsearch+Logstash+Kibana)使用说明

使用ELK对返回502的报警进行日志的收集汇总 Elk:日志收集分析平台 网址:http://www.xxx.com eg:Server用户访问网站返回502 首先在zabbix上找到Server的IP 然后登录到elk上使用如下搜索条件: pool_select:X.X.X.X AND status:502 AND verb:GET 返回如下的界面: Time:返回502发生的时间 Domainname:返回502发生错误的域名 geoip.ip:用户访问的ip地址 Request:用户请求链

使用集中日志服务器收集softether日志,并用ELK (elasticsearch + logstash + kibana) 查询

启用远程syslog: On CentOS 6.5 syslog server: mkdir /var/log/softether vi /etc/rsyslog.conf# Provides UDP syslog reception$ModLoad imudp$UDPServerRun 514 :fromhost-ip, isequal, "vpnserver-ip" /var/log/softether/vpnserver-ip.log optional:vi /etc/logro