说来话长,网上的安装版本太坑爹了,很多是问题是版本兼容性,导致我在测试时一直有问题,好了,现在总结一个简单又完美的安装文档
安装版本:
先下载好以下软件包
【jdk-7u75-linux-x64.gz】
【redis-2.6.16.tar.gz】
wget http://download.redis.io/releases/redis-2.6.16.tar.gz
【elasticsearch-1.3.2.tar.gz】
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.5.2.tar.gz
【logstash-1.4.2.tar.gz】
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
【kibana-latest.zip】
wget http://download.elasticsearch.org/kibana/kibana/kibana-latest.zip
好了,直接开工:
一、JAVA环境安装
1
2
3
4
5
6
7
|
tar
-zxvf jdk-7u75-linux-x64.gz -C
/opt
vi
/etc/profile
export
JAVA_HOME=
/usr/local/jdk1
.7.0_75
export
JRE_HOME=${JAVA_HOME}
/jre
export
CLASSPATH=.:${JAVA_HOME}
/lib
:${JRE_HOME}
/lib
export
PATH=${JAVA_HOME}
/bin
:$PATH
source
/etc/profile
|
二、安装redis
1
2
3
4
5
6
7
|
tar
-zxvf redis-2.6.16.
tar
.gz
cd
redis-2.6.16
make
–j24
make
install
mkdir
-p
/data/redis
cd
/data/redis/
mkdir
{db,log,etc}
|
编辑配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
vim
/data/redis/etc/redis
.conf
#----------------------------------------------------
#this is the config file for redis
pidfile
/var/run/redis
.pid
port 6379
timeout 0
loglevel verbose
logfile
/data/redis/log/redis
.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression
yes
dbfilename dump.rdb
dir
/data/redis/db/
slave-serve-stale-data
yes
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 128
#vm-enabled no
#vm-swap-file /tmp/redis.swap
#vm-max-memory 0
#vm-page-size 32
#vm-pages 134217728
#vm-max-threads 4
#hash-max-zipmap-entries 512
#hash-max-zipmap-value 64
#list-max-ziplist-entries 512
#list-max-ziplist-value 64
set
-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing
yes
|
启动和验证redis
1
2
3
|
[logstash@Logstash_2 redis]
# redis-server /data/redis/etc/redis.conf &
[logstash@Logstash_2 redis]
# redils-cli
redis 127.0.0.1:6379> keys *
|
三、安装elasticsearch
1
2
3
4
5
6
7
8
9
10
11
12
|
#tar zxvf elasticsearch-1.5.2.tar.gz
#mv elasticsearch-1.5.2 /usr/local/
#cd /usr/local/
#ln -s elasticsearch-1.5.2 elasticsearch
在最下面文件增加如下内容(权限管理和防跨站攻击):
#vi config/elasticsearch.yml
http.cors.allow-origin:
"/.*/"
http.cors.enabled:
true
script.disable_dynamic:
true
保存后,我们可以用以下命令启动
#/usr/local/elasticsearch/bin/elasticsearch -f
|
ctrl+c退出
以后台方式运行
1
|
#/usr/local/elasticsearch/bin/elasticsearch -d
|
验证安装,访问默认的9200端口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
curl -X GET http:
//localhost
:9200
{
"status"
: 200,
"name"
:
"Eros"
,
"version"
: {
"number"
:
"1.3.2"
,
"build_hash"
:
"dee175dbe2f254f3f26992f5d7591939aaefd12f"
,
"build_timestamp"
:
"2014-08-13T14:29:30Z"
,
"build_snapshot"
:
false
,
"lucene_version"
:
"4.9"
},
"tagline"
:
"You Know, for Search"
}
|
四、安装logstash
1
2
3
4
5
6
|
#tar zxvf logstash-1.4.2.tar.gz
#mv logstash-1.4.2 /usr/local
#cd /usr/local
#ln -s logstash-1.4.2 logstash
#mkdir logstash/conf
#chown -R root:root logstash
|
logstash分为两种:一个是服务器,一个是代理端,我们在中心服务器都要启动
先说中心服务器
启动之前我们要先配置一下文件,这个配置主要是从REDIS取出键值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#vi logstash.conf
input {
redis {
host =>
"127.0.0.1"
port =>
"6379"
key =>
"nginx_logs"
data_type =>
"list"
codec =>
"json"
type
=>
"nginx_logs"
tags => [
"nginx_logs"
]
}
}
output {
elasticsearch {
host =>
"127.0.0.1"
}
}
|
好了,保存后就可以启动了
1
|
#logstash/bin/logstash agent -f logstash.conf &
|
同样,我们要启动logstash的服务器端,也就是网页版,会启动9292
当然了,这一步也可以省去,因为后面我们配置kibana,用kibana做网页访问展示
1
|
#logstash/bin/logstash web &
|
以上配置完,我们的中心服务就配置完了,看下我们的进程
1
2
3
4
5
|
root@admin:
/yundata/data/logstash
# ps -ef|grep java
root 11885 11724 0 09:20 pts
/0
00:00:25
/usr/local/jdk1
.7.0_75
/bin/java
-Xmx500m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=
true
-XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -jar
/yundata/data/logstash/vendor/jar/jruby-complete-1
.7.11.jar -I
/yundata/data/logstash/lib
/yundata/data/logstash/lib/logstash/runner
.rb web
root 12619 1 0 09:34 pts
/3
00:00:13
/usr/local/jdk1
.7.0_75
/bin/java
-Xms256m -Xmx1g -Xss256k -Djava.awt.headless=
true
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Delasticsearch -Des.path.home=
/yundata/data/elasticsearch-1
.3.2 -
cp
:
/yundata/data/elasticsearch-1
.3.2
/lib/elasticsearch-1
.3.2.jar:
/yundata/data/elasticsearch-1
.3.2
/lib/
*:
/yundata/data/elasticsearch-1
.3.2
/lib/sigar/
* org.elasticsearch.bootstrap.Elasticsearch
root 13768 12251 0 10:04 pts
/3
00:00:00
grep
--color=auto java
root 21322 1 0 Apr15 ? 00:01:51
/usr/local/jdk1
.7.0_75
/bin/java
-Xmx500m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=
true
-XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -jar
/yundata/data/logstash/vendor/jar/jruby-complete-1
.7.11.jar -I
/yundata/data/logstash/lib
/yundata/data/logstash/lib/logstash/runner
.rb agent -f redis.conf
|
以上配置完,就可以访问我们的服务了,
1
|
http:
//127
.0.0.1:9292
/index
.html
#/dashboard/file/logstash.json
|
以这里就不上图了,不过只能正常访问还看不到数据,后面我们再采集数据
五、安装kibana
这一步可以安装,也可以不用,因为:
logstash的最新版已经内置kibana,你也可以单独部署kibana。kibana3是纯粹JavaScript+html的客户端,所以可以部署到任意http服务器上。
前提安装好APACHE,我们直接放到目录下
1
2
|
unzip kibana-latest.zip
cp
-r kibana-latest
/var/www/html
|
可以修改config.js来配置elasticsearch的地址和索引。
用浏览器访问试试看 http://127.0.0.1/html/kibana-latest/index.html
好了,至此已经安装完了,很简单吧
我们接下来采集数据:在我们的NGINX服务器,
1、安装好JAVA环境,
2、拷贝logstash
3、编写采集脚本
10.252.35.170是我们有中心服器,我们现在把数据写入到中心服务器的redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#vi nginx.conf
input {
file
{
type
=>
"nginx_logs"
path => [
"/alidata/log/nginx/access/default.log"
]
exclude => [
"*.gz"
,
"access.log"
]
}
}
output {
stdout {}
redis {
host =>
"10.252.35.170"
port => 6379
data_type =>
"list"
key =>
"nginx_logs"
}
}
|
启动
1
|
logstash
/bin/logstash
agent -f nginx.conf &
|
当然以上是我们测试写的一个配置,如果要具体的配置
可以参考《logstash 过虑nginx访问日志》
好了,在中心服务器我们启动redis监控,看数据有没有写入
1
|
# redis-cli monitor
|
这样一个比较快速 简单的日志服务器就搭建好了,当然这个采集脚本还要改进,后续我们再谈,
采集到数据后,我们刷新页面,就可以看到数据了
小小激动下~~~
本文转自 jackjiaxiong 51CTO博客,原文链接:http://blog.51cto.com/xiangcun168/1680441