文档章节

logstash elasticsearch kibana日志集中解决方案

chaun
 chaun
发布于 2016/05/06 15:42
字数 1497
阅读 58
收藏 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
深圳
高级程序员
私信 提问
基于Docker部署ELK (Elasticsearch, Logstash, Kibana)集中日志处理平台,及在Spring Boot应用

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

ImWiki
2018/05/27
0
0
ELK+Filebeat+Nginx集中式日志解决方案(一)

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

在下郑小明
2018/06/26
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
CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分...

wujunqi1996
2018/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
1
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
2
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
3
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
2
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部