CENTOS6.5安装日志分析ELK elasticsearch + logstash + redis + kibana

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介:

1、日志平台的工作流程

wKioL1XNWHGwPB_ZAAErAE7qZjQ757.jpg

  • 多个独立的agent(Shipper)负责收集不同来源的数据,一个中心agent(Indexer)负责汇总和分析数据,在中心agent前的Broker(使用redis实现)作为缓冲区,中心agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。

  • Shipper表示日志收集,使用LogStash收集各种来源的日志数据,可以是系统日志、文件、redis、mq等等;

  • Broker作为远程agent与中心agent之间的缓冲区,使用redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在redis中,而不至于丢失;

  • 中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter);

  • ElasticSearch用于存储最终的数据,并提供搜索功能;

  • Kibana提供一个简单、丰富的web界面,数据来自于ElasticSearch,支持各种查询、统计和展示;



2、机器的部署情况

192.168.1.140 # redis 服务器,角色broker
192.168.1.140 # logstash 角色 indexer 服务器,集成elasticsearch, kibana,必须有安装web服务
192.168.1.132  # nginx服务器,角色生产服务器,logstash需要收集它的日志  


这里选用的软件的版本:

logstash-1.4.2   

elasticsearch-1.4.2

redis-2.6.16

kibana 是logstash内带的


这些软件之间有兼容性问题,请用其他代替版本的同学注意。


2.1 安装logstash-1.4.2


yum -y install java-1.7.0-openjdk    安装logstash需要jdk的支持

wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz

tar xzvf logstash-1.4.2.tar.gz -C /app/ && mv /app/logstash-1.4.2 /app/logstash

mkdir  -p /app/logstash/conf


注:如果yum出现这样的问题:

wKiom1XNmPGimkTjAAEhdUP90ls708.jpg

需要按照epel

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

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6


测试安装

cd /app/logstash/bin

./logstash -'input { stdin { } } output { stdout {} }'

输入“good job”, 如果出现类似下图,说明logstash正常工作


wKioL1XNY4WistO7AABZM1ME6tM652.jpg

2.2 安装 elasticsearch-1.4.2


wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.tar.gz

tar xzvf  elasticsearch-1.4.2.tar.gz -C /app/

cd /app/elasticsearch-1.4.2/config


修改配置文件elasticsearch.yml

discovery.zen.ping.multicast.enabled: false  #关闭广播,如果局域网有机器开9300 端口,服务会启动不了

network.host: 192.168.1.140                 #指定主机地址,其实是可选的,但是最好指定因为后面跟kibana集成的时候会报http连接出错(直观体现好像是监听了:::9200 而不是0.0.0.0:9200)

http.cors.allow-origin: "/.*/"              

http.cors.enabled: true                      #这2项都是解决跟kibana集成的问题,错误体现是 你的 elasticsearch 版本过低


启动elasticsearch

cd /app/elasticsearch-1.4.2/bin

./elasticsearch   # 配置阶段建议直接启动,日志会输出到stdout,-d 选项表示以daemon的方式启动,如果没有出现error ,表示服务正常启动


测试logstash 跟elasticsearch数据交互


/app/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { host => 192.168.1.140 } }'

输入you know

 curl 'http://192.168.1.140:9200/_search?pretty' # 如果有输出且没有出现错误表示服务器交互成功


注:可能出现如下错误信息,我也不知道什么原因,我没有管  不过不耽误后面的搭建  有谁知道这个是怎么回事  或者怎么解决的请留言 谢谢!!

wKioL1XNisGzLrUOAAEiDE6asV0557.jpg

2.3  安装kibana

cd /app/logstash/vendor

vim kibana/config.js   #elasticsearch: "http://"+window.location.hostname+":9200",修改成"http://192.168.1.140:9200"

cp -Rv  kibana  /var/www/html       拷贝网页的配置

/etc/init.d/httpd start  /  service httpd start


能够访问url http://192.168.1.140/kibana/index.html  看到这样的画面


wKiom1XNiaXw_7aZAAUjnHG_bKg098.jpg

2.4安装redis

#tar xzvf redis-2.6.16.tar.gz -C /app

#cd /app/redis-2.6.16 && mkdir conf

#make target=linux26 (报错 可能缺少一些编译的工具,按照提示,yum安装就行了   

 

如果出现如下报错:

wKiom1XNir-wXt5zAAD5kpEPQzM970.jpg

可以执行  make MALLOC=libc


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


         原因:查看redis的源码 src/zmalloc.c可以看到如下代码:

 

       #if defined(USE_TCMALLOC)

 

#define malloc(size) tc_malloc(size)

 

#define calloc(count,size) tc_calloc(count,size)

 

#define realloc(ptr,size) tc_realloc(ptr,size)

 

#define free(ptr) tc_free(ptr)

 

#elif defined(USE_JEMALLOC)

 

#define malloc(size) je_malloc(size)

 

#define calloc(count,size) je_calloc(count,size)

 

#define realloc(ptr,size) je_realloc(ptr,size)

 

#define free(ptr) je_free(ptr)

 

可以看到源码中首先会判断系统中是否存在tcmalloc内存分配器,如果没有,则使用jemalloc内存分配器,如果连jemalloc分配器也没有找到,就会报错了。

 

本次现网部署Redis后,因为没有jemalloc分配器,导致碎片率达到了1.59,redis的内存占用率也就是实际内存占用的1.59倍,这个数据量是非常恐怖的,对内存资源是个相当大的损耗。

 

在现网环境的linux系统中,可能没有预先安装Jemalloc分配器,需要手动安装。

 

         1、wget http://www.canonware.com/download/jemalloc/jemalloc-3.2.0.tar.bz2

 

         2、tar jxf jemalloc-3.2.0.tar.bz2  (tar.bz2的压缩格式使用 tar jxf 解压)

 

         3、cd jemalloc-3.2.0

 

         4、./configure

 

         5、make && make install

 

         6、ldconfig

 

过程完成后,在切回到redis-2.6.14目录中,重新执行make命令

 

 

当然如果不想使用jemalloc分配器,可以强制使用如下命令来安装redis:

 

         make MALLOC=libc  (libc是默认的内存分配器,不过经过验证,碎片率是最高的)

 

 

经现网验证:

 

1)  使用libc内存分配器的话,内存碎片率可以达到1.6左右

 

2)  但是使用jemalloc,碎片率一般在1.1以内

 

3)  对于tcmalloc,和jemalloc的结果差不多,但是因为redis暂时还没有集成tcmalloc,所以需要另外来安装,过程详见:

http://blog.nosqlfan.com/html/3490.html



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


#./src/redis-server redis.conf  # daemonize yes 使用默认的配置文件


2.5 集成logstash  redis

vim /app/logstash/conf/nginx_acces.conf  写入如下内容

input {
    redis {
        host => '192.168.1.140'  # 我方便测试没有指定password,最好指定password
        data_type => 'list'
        port => "6379"
        key => 'logstash:redis' #自定义
        type => 'redis-input'   #自定义
    }
}
output {
    elasticsearch {
        host => "192.168.1.140"   # 由于redis和elasticsearch在一台机器上所以IP是一个

        codec => "json"
        protocol => "http"  #版本1.0+ 必须指定协议http
    }
}


验证配置文件

cd /app/logstash

#bin/logstash -f ./conf/nginx_access.conf -t  # 无误后启动

#bin/logstash -f ./conf/nginx_access.conf  --verbose # 要检查错误 --debug

wKiom1XNjf6B3KS5AAPw4h7mTzs310.jpg

启动成功  有警告没有管


2.6  日志接入 另一台机器  安装logstash 过程 跟上面一样 但是  nginx_access.conf 配置如下


  1. input {

  2.     file {

  3.         type => "nginx_access"

  4.         path => "/var/log/nginx/access.log"  日志的路径

  5.     }

  6. }



  7. output {

  8.     stdout { codec => rubydebug }

  9.     redis {

  10.         host => '192.168.1.140'              对接的redisIP

  11.         data_type => 'list'

  12.         key => 'logstash:redis'

  13.     }

  14. }


到此配置告一段落,下面验收成果

刷新nginx日志

然后在132上的logstash能够看到如下

wKioL1XNkrmQxXlcAAESfim6sK8002.jpg

然后在140端能够看到:


wKioL1XNk4bxLPYhAAJ_CHFHCws783.jpg

重点是访问http://192.168.1.140/kibana/index.html  验收最后的页面


wKioL1XNk_DzfOBVAAUMo7CPb94248.jpg

这个是一个简单的格式 已经设计好的 当然可以自己定义了。

定义的方法:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4938039&uid=24940078


点进去以后的界面是这样的:

wKioL1XNlOmTlnMVAAVLkn5PkRE466.jpg

3 安装插件  安装bigdesk

要想知道整个插件的列表,请访问http://www.elasticsearch.org/guide/reference/modules/plugins/ 插件还是很多的,个人认为比较值得关注的有以下几个,其他的看你需求,比如你要导入数据当然就得关注river了。

该插件可以查看集群的jvm信息,磁盘IO,索引创建删除信息等,适合查找系统瓶颈,监控集群状态等,可以执行如下命令进行安装,或者访问项目地址:https://github.com/lukas-vlcek/bigdesk

 

先上一张效果图:

wKiom1XNlJ3S54apAAQxjqyDg34123.jpg

这里我是按照https://github.com/lukas-vlcek/bigdesk

上面的第二种  git clone的方式做的(第一种没成功。。。)

首先确保安装git

yum install -y git

然后将按照上面的命令做:

git clone https://github.com/lukas-vlcek/bigdesk.git

cd bigdesk/

git tag

   [... some tags left out for brevity ....]
   v2.2.2
   v2.2.3
   v2.4.0

git checkout v2.4.0


然后将整个bigdesk目录拷贝到http下

cp -ar bigdesk /var/www/html/


然后就可以访问了

http://192.168.1.140/bigdesk

wKiom1XNlgzAotbkAAGnBUf5Pl4825.jpg

先修改host  然后连接  然后会出来一个小图标(成果展示图里的) 点击小图标就能出现监控的选项了。


声明:该文参考了如下几位的博客,但是是我亲自搭建了整个过程,对整个的流程进行了新的把控和优化。

http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=17291169&id=4898582

http://www.mamicode.com/info-detail-475881.html

http://nkcoder.github.io/blog/20141031/elkr-log-platform-deploy/

本文转自    憬薇   51CTO博客,原文链接:http://blog.51cto.com/welcomeweb/1684696


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
28天前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
72 3
|
10天前
|
机器学习/深度学习 存储 监控
Elasticsearch 在日志分析中的应用
【9月更文第2天】随着数字化转型的推进,日志数据的重要性日益凸显。日志不仅记录了系统的运行状态,还提供了宝贵的洞察,帮助企业改进产品质量、优化用户体验以及加强安全防护。Elasticsearch 作为一个分布式搜索和分析引擎,因其出色的性能和灵活性,成为了日志分析领域的首选工具之一。本文将探讨如何使用 Elasticsearch 作为日志分析平台的核心组件,并详细介绍 ELK(Elasticsearch, Logstash, Kibana)栈的搭建和配置流程。
42 4
|
24天前
|
NoSQL 数据可视化 Linux
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
这篇文章提供了在CentOS 7上安装Redis的详细步骤,包括上传Redis安装包、解压安装、编译、安装、备份配置文件、修改配置以支持后台运行和设置密码、启动Redis服务、使用客户端连接Redis、关闭Redis服务、解决Redis Desktop Manager图形化工具连接失败的问题、设置Redis开机自启动,以及Redis服务的启动和停止命令。
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
|
30天前
|
Kubernetes Java 索引
Elasticsearch on K8S 开启慢日志
本文档指导如何在Elasticsearch on PaaS环境中手动配置慢日志。首先通过API设置索引的慢日志阈值,接着创建`log4j2.properties`的ConfigMap以定义日志滚动策略,并修改Elasticsearch配置引入此ConfigMap。最后,通过Kubernetes命令检查Pod内的`logs`目录以查看生成的慢日志文件。需注意,不当配置可能会影响系统性能。[官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/logging.html)提供更多细节。
96 3
|
28天前
|
存储 安全 Java
在CentOS 7上安装和配置Elasticsearch的方法
在CentOS 7上安装和配置Elasticsearch的方法
56 0
|
29天前
|
存储 监控 Ubuntu
一键搞定:用脚本轻松部署ELK,让日志分析变得简单又高效
【8月更文挑战第13天】ELK栈由Elasticsearch、Logstash和Kibana组成,用于日志存储、解析及展示,是大数据领域广泛采用的日志解决方案。鉴于其安装配置复杂,本文提供了一个适用于Ubuntu 16.04的ELK自动安装Shell脚本示例。脚本首先确保Java环境安装,接着添加Elastic.co的APT仓库并安装ELK组件,最后启动所有服务。通过自动化流程,简化部署工作,减少人为错误,提升效率。实际应用中还需根据具体需求调整配置和服务设置。
18 0
|
9天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
24天前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
24天前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
28天前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
13 0