ElasticSearch+LogStash+Kibana+Redis搭建日志管理服务

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

说来话长,网上的安装版本太坑爹了,很多是问题是版本兼容性,导致我在测试时一直有问题,好了,现在总结一个简单又完美的安装文档

安装版本:

先下载好以下软件包

【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

这样一个比较快速 简单的日志服务器就搭建好了,当然这个采集脚本还要改进,后续我们再谈,

采集到数据后,我们刷新页面,就可以看到数据了

小小激动下~~~

wKioL1W65gvjPe0mAAP4Cqzo-H0494.jpg



本文转自 jackjiaxiong 51CTO博客,原文链接:http://blog.51cto.com/xiangcun168/1680441

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
15天前
|
数据可视化 索引
elasticsearch head、kibana 安装和使用
elasticsearch head、kibana 安装和使用
|
1月前
|
监控 安全 Linux
【Elasticsearch专栏 14】深入探索:Elasticsearch使用Logstash的日期过滤器删除旧数据
使用Logstash的日期过滤器可以有效删除Elasticsearch中的旧数据,释放存储空间并提高集群性能。通过配置Logstash,可以指定索引模式、筛选时间戳早于特定阈值的文档,并在输出阶段删除这些旧数据。执行配置时,需确保Logstash与Elasticsearch连接正常,并监控日志以确保操作安全。定期执行此操作可确保旧数据不会过多积累。总之,Logstash的日期过滤器提供了一种简单而高效的方法,帮助管理和优化Elasticsearch中的数据。
|
3月前
|
存储 NoSQL 关系型数据库
Redis 日志篇:无畏宕机快速恢复的杀手锏
Redis 日志篇:无畏宕机快速恢复的杀手锏
74 0
|
3月前
|
Java 应用服务中间件 nginx
微服务框架(二十九)Logstash Nginx 日志上报
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为Logstash Nginx 日志上报 本系列文章中所使用的框架版本为Spring Boot 2.0.3...
|
2月前
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
235 1
|
3月前
|
Dubbo Java 应用服务中间件
微服务框架(三十)Logstash Kong 日志上报
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为Logstash Kong 日志上报 本系列文章中所使用的框架版本为Spring Boot 2.0.3-...
|
2月前
|
JSON Prometheus Cloud Native
Grafana 系列 - 统一展示 -8-ElasticSearch 日志快速搜索仪表板
Grafana 系列 - 统一展示 -8-ElasticSearch 日志快速搜索仪表板
|
2天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
23 3
|
18天前
|
关系型数据库 MySQL Linux
linux特定服务日志
Linux系统的服务日志在`/var/log`目录下,如系统日志(`/var/log/syslog`或`/var/log/messages`)、认证日志(`/var/log/auth.log`)、SSH日志(`/var/log/auth.log`或`/var/log/secure`)。Web服务器(Apache和Nginx)的访问和错误日志、MySQL错误日志、Postfix及Dovecot邮件服务器日志也在此处。日志位置可能因发行版和服务配置而异,不确定时可查服务配置或用`grep`搜索。使用`logrotate`可管理日志文件大小。
19 6
|
1月前
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
181 1