文档章节

logstash elasticsearch kibana日志集中解决方案

chaun
 chaun
发布于 2016/05/06 15:42
字数 1497
阅读 54
收藏 1

Logstash是一个开源的,可以对分布式环境中的日志进行收集分析的工具。 Kibana也是一个开源和免费的工具,他可以帮助汇总,分析和搜索重要日志数据并提供友好的web界面,它可以为Logstash和ElasticSearch提供日志分析的web界面。

下面看看各组件的作用:

redis:在这里做一个缓存的机制,logstash shipper 将 log 转发到redis(只做队列处理不做存储)。Logstash central 从 redis 中读取数据并转发给 Elasticsearch 。 这里加上 redis 是为了提高 Logstash shipper 的日志提交到Logstash central 的速度,同时避免由于突然断电等导致的数据的丢失。

Elasticsearch : 开源的搜索引擎框架,它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。也可进行多数据集群,提高效率。这里的目的是从 redis中 读取数据,并转发到 kibana中。

Kibana:漂亮的界面展示,用 web 界面将数据挖掘后的数据以图表等形式进行形象的展示


下面是我画的一张原理图,可以看看其工作流程及各组件作用:

这里写图片描述

所用到的包,包含:
JDK、Elasticsearch、Logstash、Redis、Kibana
http://yunpan.cn/cuhTEuTiCBnpb (提取码:fcc4)


环境:

OS : Centos 6.5
Kernel : 2.6.32-431.el6.x86_64
Memory : 4g
Logstash  central : 10.1.0.100
Logstash  shipper : 10.1.0.101
Software :
    elasticsearch-1.7.4.tar.gz
    jdk-7u79-linux-x64.gz
    kibana-4.1.4-linux-x64.tar.gz
    logstash-2.1.1.tar.gz
    redis-3.0.6.tar.gz

JAVA 环境及变量设置

解包
tar zxf jdk-7u79-linux-x64.gz  -C /usr/local/
mv /usr/local/jdk1.7.0_79/ /usr/local/java
设置环境变量
JAVA_HOME=/usr/local/java
JAVA_BIN=$JAVA_HOME/bin
PATH=$PATH:$JAVA_BIN
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASS
PATH

source /etc/profile

Redis 部署

安装依赖包
yum -y install make gcc-c++

解包并且编译   
tar zxf redis-3.0.6.tar.gz -C /usr/local/     
cd /usr/local/redis-3.0.6
make MALLOC=libc

创建日志目录及数据目录
mkdir /usr/local/redis-3.0.6/logs
mkdir /usr/local/redis-3.0.6/data

配置 redis 后台运行、监听地址和端口、AOF存储方式、日志级别及位置
vim /usr/local/redis-3.0.6/redis.conf
daemonize yes
port 6379
bind 10.1.0.100
appendonly yes
loglevel notice
logfile "/usr/local/redis-3.0.6/logs/redislog"
dir /usr/local/redis-3.0.6/data

Redis 警告信息调整

echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
echo 511 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled
sysctl -p

启动 Redis 并测试是否可用

/usr/local/redis-3.0.6/src/redis-server /usr/local/redis-3.0.6/redis.conf
/usr/local/redis-3.0.6/src/redis-cli -h 10.1.0.100
10.1.0.100:6379> set x 1
OK
10.1.0.100:6379> get x
"1"
10.1.0.100:6379> 

Logstash central 配置 (server 端)

解包
tar zxf logstash-2.1.1.tar.gz -C /usr/local/

创建日志存放目录及配置档目录
mkdir -p /usr/local/logstash-2.1.1/logs
mkdir -p /usr/local/logstash-2.1.1/conf

配置 central.conf

vim /usr/local/logstash-2.1.1/conf/central.conf

input {

        redis {
                host => "10.1.0.100"
                port => "6379"
                type => "channelui-ci1"
                data_type => "list"
                key => "logstash"
        }

         redis {
                host => "10.1.0.100"
                port => "6379"
                type => "cartui-ci1"
                data_type => "list"
                key => "logstash"
        }

         redis {
                host => "10.1.0.100"
                port => "6379"
                type => "bbsui-ci1"
                data_type => "list"
                key => "logstash"
        }

}

output {

        elasticsearch {
                hosts => "10.1.0.100:9200"
        }

}

启动 logstash central 并查看日志是否有问题
/usr/local/logstash-2.1.1/bin/logstash agent –verbose –config /usr/local/logstash-2.1.1/conf/central.conf –log /usr/local/logstash-2.1.1/logs/logstash.log &


elasticsearch 配置
tar zxf elasticsearch-1.7.4.tar.gz -C /usr/local/

编辑 elasticsearch.yml 并且配置监听地址及监听端口
vim /usr/local/elasticsearch-1.7.4/config/elasticsearch.yml

network.bind_host: 10.1.0.100
http.port: 9200

Elasticsearch 内存设置
vim /usr/local/elasticsearch-1.7.4/bin/elasticsearch.in.sh

if [ "x$ES_MIN_MEM" = "x" ]; then
    ES_MIN_MEM=4g
fi
if [ "x$ES_MAX_MEM" = "x" ]; then
    ES_MAX_MEM=4g
fi
if [ "x$ES_HEAP_SIZE" != "x" ]; then
    ES_MIN_MEM=$ES_HEAP_SIZE
    ES_MAX_MEM=$ES_HEAP_SIZE
fi

启动 Elasticsearch

如果直接启动则会报错:java.net.UnknownHostException: slave-master: slave-master: Name or service not known

所以记得在 /etc/hosts 中添加 ip 地址和 hostname 的映射信息
10.1.0.100 logstash-server

启动 elasticsearch
/usr/local/elasticsearch-1.7.4/bin/elasticsearch &

注意:如果出现如下错误,请删除索引

删除操作: curl -XDELETE 10.1.0.100:9200/.kibana

{"name":"Kibana","hostname":"logstash-server","pid":2629,"level":30,"msg":"Elasticsearch is still initializing the kibana index... Trying again in 2.5 second.","time":"2015-11-26T18:10:38.597Z","v":0}
{"name":"Kibana","hostname":"logstash-server","pid":2629,"level":30,"msg":"Elasticsearch is still initializing the kibana index... Trying again in 2.5 second.","time":"2015-11-26T18:10:41.109Z","v":0}
{"name":"Kibana","hostname":"logstash-server","pid":2629,"level":30,"msg":"Elasticsearch is still initializing the kibana index... Trying again in 2.5 second.","time":"2015-11-26T18:10:43.626Z","v":0}

访问 http://10.1.0.100:9200http://10.1.0.100:9300 查看是否正常

这里写图片描述

这里写图片描述


部署 kibana

解包
tar zxf kibana-4.1.4-linux-x64.tar.gz -C /usr/local/


编辑配置并修改
vim /usr/local/kibana-4.1.4-linux-x64/config/kibana.yml

host: "10.1.0.100"
port: 5601
elasticsearch.url: "http://10.1.0.100:9200"


启动
/usr/local/kibana-4.1.4-linux-x64/bin/kibana &

打开浏览器输入 http://10.1.0.100:5601
提示 Kibana 正在加载并缓存,马上就可打开页面

进来之后他要你创建一个默认索引,可是没有 create 的字样

其实是你装完 kibana 然后日志文件要是一直没有新的日志产生呢这里就一直是灰的,这个时候你只需要去访问一下你的网站,然后就行了
(当时我碰到这个问题的时候,因为用的虚拟机做的,卡了几个小时啊坑爹啊)

下面我们做完客户端再来看这个问题!

这里写图片描述


配置 Logstash-client

JAVA 环境及变量设置

解包
tar zxf jdk-7u79-linux-x64.gz  -C /usr/local/
mv /usr/local/jdk1.7.0_79/ /usr/local/java
设置环境变量
JAVA_HOME=/usr/local/java
JAVA_BIN=$JAVA_HOME/bin
PATH=$PATH:$JAVA_BIN
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASS
PATH

source /etc/profile

Logstash shipper 配置 (client 端)

解包、并且创建日志目录和配置档目录

tar zxf logstash-2.1.1.tar.gz -C /usr/local/

mkdir -p /usr/local/logstash-2.1.1/logs
mkdir -p /usr/local/logstash-2.1.1/conf

编辑 shipper.conf 文件
vim /usr/local/logstash-2.1.1/conf/shipper.conf

input {

    file{
        type => "channelui-ci1"
        path => "/data/docker_logs/channelui-ci1/catalina.2015-12-28.log" 
    }

    file {
        type => "cartui-ci1"
        path => "/data/docker_logs/cartui-ci1/catalina.2015-12-28.log"
    }

    file {
            type => "bbsui-ci1"
            path => "/data/docker_logs/bbsui-ci1/catalina.2015-12-28.log"
    }

}


output {

    redis {
        host => "10.1.0.100"
        data_type => "list"
        key => "logstash"
    }

}

启动 logstash shipper 并查看日志是否有问题
/usr/local/logstash-2.1.1/bin/logstash agent –verbose –config /usr/local/logstash-2.1.1/conf/shipper.conf –log /usr/local/logstash-2.1.1/logs/logstash.log &

ok , 这时候基本环境都搭建的差不多了,但是访问 http://10.1.0.100:5601 还是老页面,那么在 logstash-client 中改变监控的日志文件,就可以进行创建了

logstash-client 端操作:

cat localhost.2015-12-21.log >> catalina.2015-12-28.log

接着打开 http://10.1.0.100:5601 页面,一切ok!

这里写图片描述

如果有新日志生成,那么在图标中也会显示出来

这里写图片描述

本文转载自:http://blog.csdn.net/wanglei_storage/article/details/50465499

共有 人打赏支持
chaun
粉丝 91
博文 269
码字总数 91059
作品 0
深圳
高级程序员
ELK+Filebeat+Nginx集中式日志解决方案(一)

一、使用说明: ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称...

在下郑小明
06/26
0
0
基于Docker部署ELK (Elasticsearch, Logstash, Kibana)集中日志处理平台,及在Spring Boot应用

当我们还是单体部署我们的Spring Boot项目的时候,日志通常都是放在我们的Linux服务器目录,使用简单的Spring Boot已经包含的Logback框架即可实现。当我们基于Docker部署我们的分布式或者集群...

ImWiki
05/27
0
0
初探 ELK - 每天5分钟玩转 Docker 容器技术(89)

在开源的日志管理方案中,最出名的莫过于 ELK 了。ELK 是三个软件的合称:Elasticsearch、Logstash、Kibana。 Elasticsearch 一个近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是...

CloudMAN
2017/11/03
0
0
ELK环境搭建(ElasticSearch+Logstash+kibana)

ELK是指Elasticsearch + Logstash + Kibaba三个组件的组合。本文讲解一个基于日志文件的ELK平台的搭建过程,有关ELK的原理以及更多其他信息,会在接下来的文章中继续研究。   在这个系统中...

阿恒灬
2017/10/31
0
0
使用ELK构建微服务的日志平台

1 概述 在微服务架构中,会部署众多的应用,其中有基础应用,比如:网关,服务发现等。同时还有大量的业务应用。所以,如何有效的收集它们的日志,并且方便查询,同时提供友好的可视化展示,...

Java大蜗牛
08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

这周撸了两款小程序,分享下关键点。

本周撸了两款小程序,在这里总结下开发过程中的小经验,希望对大家有用。 小程序端 我们先说小程序要注意的地方。 ##默认入口转发问题 当一个小程序Page的js文件中存在 onShareAppMessage 方...

阿北2017
16分钟前
1
0
物联网技术很新吗?不!都是旧技术

通常,当我们想到物联网时,我们会想到新的、令人兴奋的现代技术。毕竟,还有什么比不用起床就能通过智能手机告诉咖啡机开始煮晨杯的“未来”更重要呢? 多亏了物联网,我们可以在世界任何地方...

linuxCool
24分钟前
1
0
利用责任链模式设计一个拦截器

前言 近期在做 Cicada 的拦截器功能,正好用到了责任链模式。 这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。 责任链模式 先来看看什么是责任链模式。 引用一段维基百科对其...

crossoverJie
42分钟前
2
0
属性动画

透明度 alpha 平移translationX/translationY 旋转 rotation 缩放 scaleX/scaleY 多个动画一起AnimatorSet 透明度 ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"alpha" ......

lanyu96
43分钟前
1
0
Docker和Kubernetes如何让DevOps更具效力

缩短time-to-makrt对于任何一家企业都至关重要,这直接决定了客户满意度、市场竞争力乃至盈利能力。但在部署应用时,大多数企业内的IT团队都或多或少会遇到Dev和Ops之间的问题,这两个部门围...

好雨云帮
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部