使用logstash+elasticsearch+kibana快速搭建日志平台

参考博客:http://storysky.blog.51cto.com/628458/1158707、http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html、http://chenlinux.com/2012/08/26/translate-using-elasticsearch-for-logs/

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有:

  • 根据关键字查询日志详情
  • 监控系统的运行状况
  • 统计分析,比如接口的调用次数、执行时间、成功率等
  • 异常数据自动触发消息通知
  • 基于日志的数据挖掘

对于日志来说,最常见的需求就是收集、查询、显示,正对应logstash、elasticsearch、kibana的功能。


下面是在logstash master机器上需要的安装包

安装jdk 1.7

oracle java主页

省略安装过程,推荐1.7+版本

java -version

设置java的环境变量,比如

sudo vim ~/.bashrc

>>
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH  
>>

source ~/.bashrc


安装redis

redis主页

cd ~/src
wget http://download.redis.io/releases/redis-2.6.16.tar.gz
tar -zxf redis-2.6.16.tar.gz
cd redis-2.6.16
make
sudo make install

可以通过redis源代码里utils/install_server下的脚本简化配置工作

cd utils
sudo ./install_server.sh 

install_server.sh在问你几个问题后会把redis安装为开机启动的服务,可以通过下面的命令行来启动/停止服务

sudo /etc/init.d/redis_ start/end 

启动redis客户端来验证安装

redis-cli
> keys *


安装Elasticsearch

Elasticsearch主页

cd /search
sudo mkdir elasticsearch
cd elasticsearch
sudo wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.zip
sudo unzip elasticsearch-0.90.5.zip

elasticsearch解压即可使用非常方便,接下来我们看一下效果,首先启动ES服务,切换到elasticsearch目录,运行bin下的elasticsearch

cd /search/elasticsearch/elasticsearch-0.90.5/bin
./elasticsearch start

访问默认的9200端口

curl -X GET http://localhost:9200


安装logstash

logstash主页

cd /search
sudo mkdir logstash
cd logstash
sudo wget http://download.elasticsearch.org/logstash/logstash/logstash-1.3.3-flatjar.jar
java -jar logstash-1.3.3-flatjar.jar web

logstash下载即可使用,命令行参数可以参考logstash flags,主要有

agent   #运行Agent模式
-f CONFIGFILE #指定配置文件

web     #自动Web服务
-p PORT #指定端口,默认9292


安装kibana

logstash的最新版已经内置kibana,你也可以单独部署kibana。kibana3是纯粹JavaScript+html的客户端,所以可以部署到任意http服务器上。

cd /search
sudo mkdir kibana
sudo wget http://download.elasticsearch.org/kibana/kibana/kibana-latest.zip
sudo unzip kibana-latest.zip
sudo cp -r  kibana-latest /var/www/html

可以修改config.js来配置elasticsearch的地址和索引。

用浏览器访问试试看 http://127.0.0.1/html/kibana-latest/index.html


集成

监测日志主服务器上redis.conf文件内容(redis.conf文件中的元素含义请见logstash官网)

如下:

input {
  redis {
    host => "127.0.0.1"
    port => "6379" 
    key => "logstash:redis"
    data_type => "list"
    codec  => "json"
    type => "redis-input"
    tags => ["ewalletlogs"]
  }
}

output {
  elasticsearch {
    embedded=>true
  }

}

修改或者创建redis.conf文件后需要重新启动logstat服务:

java -jar logstash-1.3.3-flatjar.jar agent -f redis.conf &

java -jar logstash-1.3.3-flatjar.jar web&

被监测日志服务区redis.conf文件内容(元素含义请见logstash官网)

如下:

input { 
    file { 
    	type => "ewallet" 
    	path => "/export/logs/ewallet/ewallet.log"
        #将输入的日志以json格式显示,以便存储到NoSQL中
        message_format => "json_event"
  } 
    file {
    	type => "payapi" 
    	path => "/export/logs/ewallet/payapi.log" 
    }
   file {
    	type => "front" 
    	path => "/export/logs/ewallet/front.log" 
    }
}

#将多行的错误日志合并到上一行
filter {
   multiline {
    pattern => "^[^20]"
    what => "previous"
  }
}

#将收集到的日志放到redis中,以通过kibana显示
output { 
      redis { 
      host => '172.17.253.217' 
      data_type =>'list' 
      key => 'logstash:redis'
    } 
} 

#将收集到的日志放到mongodb中,以通过mongodb存储,待日后做日志分析
 output {
  # Use mongodb to store logstash event.
  mongodb {
      uri => "mongodb://172.17.253.217:27017"
      database => "local"
      collection => "ewalletlogs" 
  }
}

修改或者创建redis.conf文件后需要重新启动logstat服务:

java -jar logstash-1.3.3-flatjar.jar agent -f redis.conf &

redis.conf中的multiply是为了支持错误多行显示,正则表达式含义为:如果本行记录开头不是以20开头,那么就和上一行合并显示


设置完毕后logstash自带的kibana访问效果图:



错误日志多行显示效果图如下:


注意事项

1、在监测日志主服务器上,logstash代理运营时可能会提示打开的文件太多,这时需要将服务器的打开文件数增加,如增加到65535


为了提高最大打开文件数到默认值1024以上, 需要在系统上修改2个地方。 在这个案例中, 我们将最大打开文件数增加到为65535(系统部给出的建议)。 所有的步骤需要root用户操作。
1)/etc/pam.d/login 添加
session required     /lib/security/pam_limits.so
2) 按照最大打开文件数量的需求设置系统, 并且通过检查/proc/sys/fs/file-max文件来确认最大打开文件数已经被正确设置。 echo 65535 > /proc/sys/fs/file-max
3)在/etc/security/limits.conf文件中设置最大打开文件数,添加2行内容:
* soft nofile 4096
* hard nofile 4096
解释:下面是一行提示
     #<domain>      <type>  <item>         <value>添加如下这行。
* – nofile 2048
这行设置了每个用户的默认打开文件数为2048。 注意”nofile”项有两个可能的限制措施。
就是<type>项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。
如果使用”-”字符设定<type>, 则hard和soft设定会同时被设定。
硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。
hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。

2、打开elasticsearch-0.90.5/config/elasticsearch.yml修改集群名、节点名、分片数和备份数

修改集群名(可选)找到: cluster.name,去掉前面的#,修改为 cluster.nameewallet(名字随意)

修改结点名(可选):同上,找到node.name,去掉前面的#,修改为node.nameyb1

修改分片数(可选):同上,找到index.number_of_shards,去掉前面的#,修改为index.number_of_shards10(默认为5

修改备份数(可选):同上,找到index.number_of_replicas,去掉前面的#,修改为index.number_of_replicas 1(默认也是1,可不理)。

3、打开elasticsearch-0.90.5/bin/elasticsearch.in.sh修改占用内存大小

修改Es占用内存:找到 ES_MIN_MEMES_MAX_MEM,修改es最大和最小占用内存值。

(说明:Es的集群非常简单,只要在同一个局域网内,多台服务器能互相通讯,并且cluster.name是一样的,就能自动集在一起。)


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值