elk搭建完整搭建【篇1】

简介:

【参考】

官网:

https://www.elastic.co/downloads

参考:

http://517sou.net/archives/centos%E4%B8%8B%E4%BD%BF%E7%94%A8elk%E5%A5%97%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90%E5%92%8C%E7%9B%91%E6%8E%A7%E5%B9%B3%E5%8F%B0/

http://my.oschina.net/itblog/blog/547250

http://baidu.blog.51cto.com/71938/1676798


【ELK组成】

Elasticsearch:

Search and analyze data in real time.

Logstash:

Collect, enrich, and transport data.

Kibana:

Explore and visualize your data.


注意:三个组建缩写ELK


【安装系统环境和软件包】

系統信息:

[root@log_server src]# du -sh elasticsearch-2.2.1.tar.gz logstash-all-plugins-2.2.0.tar.gz kibana-4.4.2-linux-x64.tar.gz 

29M     elasticsearch-2.2.1.tar.gz

72M     logstash-2.2.2.tar.gz

32M     kibana-4.4.2-linux-x64.tar.gz


可以检查的校验码与官网对比是否包已经下载完整

[root@log_server src]# sha1sum kibana-4.4.2-linux-x64.tar.gz 

6251dbab12722ea1a036d8113963183f077f9fa7  kibana-4.4.2-linux-x64.tar.gz

[root@log_server src]# cat /etc/redhat-release ; uname -m

CentOS release 6.4 (Final)

x86_64

关闭防火墙

[root@log_server src]# /etc/init.d/iptables status

iptables: Firewall is not running.

[root@log_server src]# getenforce 

Disabled

最大文件描述符(默人用户级别的1024太小咯 要求是65536以上)

[root@master ~]# ulimit -n

102400


修改方式:

打开文件增加两行 /etc/security/limits.conf 


* soft nofile 102400

* hard nofile 102400


查看 ulimit -n

[root@log_server src]# java -version

java version "1.7.0_99"

OpenJDK Runtime Environment (rhel-2.6.5.0.el6_7-x86_64 u99-b00)

OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)



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

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

(推荐yum安装yum install -y java-1.7.0-openjdk)

yum install -y java-1.8.0-openjdk.x86_64   (推荐用1.8 否则会有警告)

!!! Please upgrade your java version, the current version '1.7.0_09-icedtea-mockbuild_2013_01_16_18_52-b00' may cause problems. We recommend a minimum version of 1.7.0_51


这是版本建议(推荐1.8)

【下载来自官网源和软件安装介绍】

wKioL1cnQiqyWAMJAACr_DGJnHw790.png


系统环境和版本信息:本文把ELK套件部署在一台CentOS单机上。

具体的版本要求如下:

1
wget https: //download .elasticsearch.org /elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2 .2.1 /elasticsearch-2 .2.1. tar .gz
1
wget https: //download .elastic.co /logstash/logstash/logstash-2 .2.2. tar .gz
1
wget https: //download .elastic.co /kibana/kibana/kibana-4 .4.2-linux-x64. tar .gz

wKiom1cnQfWjIXgDAAD6KIFnyNI326.png

wKioL1cnQsjSDzv1AACz_HEEhNQ969.png

wKioL1cnQsjj_L8MAAEp1HH4NgM563.png




【安装elasticsearch】

解压、软连接、cd到目录下

1
2
3
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

安装这个重要的插件:

1
[root@master elasticsearc] # ./bin/plugin install  mobz/elasticsearch-head

-> Installing mobz/elasticsearch-head...

Plugins directory [/usr/local/elasticsearc/plugins] does not exist. Creating...

Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ...

Downloading .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE

Verifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ...

NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)

Installed head into /usr/local/elasticsearc/plugins/head


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

1
2
3
4
5
[root@master elasticsearc] # groupadd -g 1000  elasticsearch  
[root@master elasticsearc] # useradd -g 1000 -u 1000 elasticsearch                           
[root@master elasticsearc] # sudo -u elasticsearch mkdir /tmp/elasticsearch
[root@master elasticsearc] # ls /tmp/elasticsearch
[root@master elasticsearc] # 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

network.port: 9200


启动配置默认,启动elasticsearch

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


wKioL1cnUT-TvKKMAAC9iLaHDXQ785.png



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

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

查看进程和端口

[root@master ~]# ps -ef | grep java

1000      9477  9338  2 21:02 pts/4    00:00:07 /usr/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/local/elasticsearch -cp /usr/local/elasticsearch/lib/elasticsearch-2.2.1.jar:/usr/local/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start

root      9620  9576  0 21:07 pts/0    00:00:00 grep --color=auto java

[root@master ~]# netstat -tulnp |grep java

tcp        0      0 ::ffff:192.168.100.10:9200  :::*                        LISTEN      9477/java           

tcp        0      0 ::ffff:192.168.100.10:9300  :::*                        LISTEN      9477/java      

注意:

可以看到,它跟其他的节点的传输端口为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.100.10:9200/_plugin/head/页面来查看ES集群状态:

上面的功能还是不错的!

wKiom1cnUbnivnHSAACHck6M0T8351.png




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

Logstash的功能如下:



wKiom1cnUk2TZAxfAAFbN_7tYLc036.png


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


解压、软连接

1
2
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 {} }'


wKiom1cnU8mxO4KmAAA-81Be9KY249.png


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

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


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


配置logstash

1
2
3
4
5
创建配置文件目录:
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)


wKiom1cnXGej5p0GAABBechG03g483.png



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

通过以下接口:

curl 'http://192.168.100.10:9200/_search?pretty'


wKioL1cnXUuhvgCrAABQEikbuGw657.png


表明已经接收到了日志

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



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


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

使用自带的web

5.1 安装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/config/kibana.yml 

修改

# elasticsearch.url: "http://localhost:9200"

elasticsearch.url: "http://192.168.100.10:9200"

重启

/usr/local/kibana/bin/kibana 


wKioL1cnX5PTBCAmAACSn-zs2sA400.png


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


wKiom1cnX77AKXkUAAD96BFyc_8652.png



点击“Discover”,可以搜索和浏览Elasticsearch中的数据,默认搜索的是最近15分钟的数据。可以自定义选择时间。


wKiom1cnYOHx8u_SAADpwrc2l5g183.png


 到此,说明你的ELK平台安装部署完成。




补充:


[配置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


wKioL1cnY2TSvlHlAABK7XNFBBg494.png


刷新kibana

wKiom1cnYvbgBCkvAACsJEfDtPk910.png


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


wKiom1cnY-vyufajAAC0fDQ5_u4295.png

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1769525如需转载请自行联系原作者


cuizhiliang

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
消息中间件 监控 数据可视化
一口气完成ELK 日志平台的搭建,我感觉我又行了!
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
消息中间件 数据采集 监控
ELK搭建(五):linux系统日志监控平台搭建
现在的生产系统多使用linux系统,在实际生产过程中我们除了需要监控一些业务日志之外,有时也需要监控linux系统本身的日志,来帮助我们进行一些排错和判断。那么这一期,我们就针对linux系统日志监控平台的搭建来进行讲解 与往期一样,我们针对实际搭建教程更多是快速搭建为主,不做过多的原理性讲解,这一类讲解我们放到后期单独开几期博客来探讨。
1701 0
ELK搭建(五):linux系统日志监控平台搭建
|
消息中间件 数据采集 监控
ELK搭建(四):监控mysql慢查询、错误日志日志
因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。 普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。
1500 0
ELK搭建(四):监控mysql慢查询、错误日志日志
|
自然语言处理 运维 监控
不能不学!从零到一搭建ELK日志,在Docker环境下部署 Elasticsearch 数据库
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
消息中间件 监控 NoSQL
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台
Nginx是一款轻量级、高性能的流量分发和反向代理的web服务。随着市场业务量的增加,普通的web容器,如tomcat的并发量已经远不能满足我们的业务量,同时随着分布式架构的普及,我们需要一款反向代理服务的支持,于是Nginx应运而生。 Nginx已经在大多数业务中普遍使用,因此针对Nginx的性能监控十分必要,这样我们才能实时掌握服务器请求情况和运行效率 所以今天,我们的目标就是搭建一个Nginx运行性能监控平台
724 0
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台
|
消息中间件 数据采集 监控
ELK搭建(十二):搭建Nginx访问、错误日志监控平台
Nginx是一款轻量级、高性能的流量分发和反向代理的web服务。随着市场业务量的增加,普通的web容器,如tomcat的并发量已经远不能满足我们的业务量,同时随着分布式架构的普及,我们需要一款反向代理服务的支持,于是Nginx应运而生。 Nginx已经在大多数业务中普遍使用,因此针对Nginx的流量监控,错误日志监控极其必要,这样才能让我们能够及时了解系统运行情况。 那么今天,我们就来看看如何搭建Nginx访问记录、错误日志监控平台
1002 0
ELK搭建(十二):搭建Nginx访问、错误日志监控平台
|
消息中间件 存储 JSON
不得不学!从零到一搭建ELK日志,在Docker环境下部署 logstash 工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
监控 数据可视化 Go
不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
数据可视化 数据挖掘 定位技术
不得不学!从零到一搭建ELK日志,在Docker环境下部署 Kibana 可视化工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
存储 运维 监控
ELK搭建(十一):搭建MongoDB运行情况监控平台
mongoDB作为基于磁盘的非关系型数据库,JSON格式数据存储方式,具有优秀的查询效率。越来越多的场景使用到了MongoDB。在生产运维中,更需要我们能够实时的掌握mongo的运行情况,以方便我们数据库运行问题做出及时的调整和补救。
841 0
ELK搭建(十一):搭建MongoDB运行情况监控平台