ElasticSearch+LogStash+Kibana+Redis搭建日志管理服务
说来话长,网上的安装版本太坑爹了,很多是问题是版本兼容性,导致我在测试时一直有问题,好了,现在总结一个简单又完美的安装文档
安装版本:
先下载好以下软件包
【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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
软链接ln -s以及如何解决其产生“Too many levels of symbolic links ”的错误?
1 2 3 4 5 [hadoop@hddcluster2script]$ ls /etc/init .d /hadoop .sh ls :cannotaccess /etc/init .d /hadoop .sh:Toomanylevelsofsymboliclinks [hadoop@hddcluster2script]$ ls /home/hadoop/script/hadoop .sh /etc/init .d /hadoop .sh ls :cannotaccess /etc/init .d /hadoop .sh:Toomanylevelsofsymboliclinks /home/hadoop/script/hadoop .sh 解决办法:sudo 删除链接,然后补上全路径。 在做ln的时候要将文件的绝对路径下的完整目录写上去!例子如下: 1 2 3 4 5 6 7 8 9 10 11 12 [hadoop@hddcluster2script]$ sudo rm /etc/init .d /hadoop .sh [hadoop@hddcluster2script]$ su...
- 下一篇
hadoop之 Zookeeper 分布式应用程序协调服务
(1) Zookeeper 在 Hadoop 集群中的作用 Zookeeper 是分布式管理协作框架,Zookeeper 集群用来保证 Hadoop 集群的高可用,(高可用的含义是:集群中就算有一部分服务器宕机,也能保证正常地对外提供服务。) (2) Zookeeper 保证高可用的原理 Zookeeper 集群能够保证 NameNode 服务高可用的原理是:Hadoop 集群中有两个 NameNode 服务,两个NameNode 都定时地给 Zookeeper 发送心跳,告诉 Zookeeper 我还活着,可以提供服务,单某一个时间只有一个是 Action 状态,另外一个是 Standby 状态,一旦 Zookeeper 检测不到 Action NameNode 发送来的心跳后,就切换到 Standby 状态的 NameNode 上,将它设置为 Action 状态,所以集群中总有一个可 用的 NameNode,达到了 NameNode 的高可用目的。 (3) Zookeeper 的选举机制 Zookeeper 集群也能保证自身的高可用,保证自身高可用的原理是,Zookeeper 集群...
相关文章
文章评论
共有0条评论来说两句吧...