将redis加入到elk日志系统里

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

之前在http://blog.51cto.com/chenx1242/2048014 里面,我画的那个架构图里说了整个架构可以加入redis,但是在文章里我没有写到redis怎么加进去。为了让整个系统更好的分层,是非常建议引入 Redis 的,毕竟Redis 服务器是logstash官方推荐的broker选择。Redis 作为一个缓存,能够帮助我们在主节点上屏蔽掉多个从节点之间不同日志文件的差异,负责管理日志端(从节点)的人可以专注于向 Redis 里生产数据,而负责数据分析聚合端的人则可以专注于从 Redis 内消费数据。所以这一次实验要把redis加进去,同时也要部署一个nginx,让elk再去采集nginx的日志。

整个架构图图下:


image.png


部署redis

安装redis的方法请去看http://blog.51cto.com/chenx1242/1793895  ,我这里使用的redis版本是4.0.6,在执行#make test的时候可能会有如下的错误:

image.png


那就安装新一点的tcl吧,方法如下:

1
2
3
4
5
wget http: //downloads .sourceforge.net /tcl/tcl8 .6.1-src. tar .gz
tar  xzvf tcl8.6.1-src. tar .gz  -C  /usr/local/
cd   /usr/local/tcl8 .6.1 /unix/
. /configure
make  &&  make  install


然后重新去#make test就会看到成功的字样,如图:

image.png


现在redis的漏洞比较多,大多数就是因为密码太简单导致的,所以把redis密码改一下,在redis.conf里,改成如下的样子:

1
2
3
4
5
6
7
8
9
bind 内网IP地址 127.0.0.1               ###仅允许内网和本机访问
protected-mode  yes                    ###保护模式开启
port 6379                           ###端口默认为6379,按需修改
daemonize  yes                         ###守护模式开启
pidfile  /usr/local/redis/redis .pid                ###指定pid文件路径和文件名
logfile  "/usr/local/redis/redis.log"              ###指定日志文件路径和文件名
dbfilename redis.rdb                      ###指定数据文件RDB文件名
dir  /usr/local/redis/                     ###指定数据文件RDB文件的存放路径
requirepass 『YOURPASSWORD』               ###设置访问密码,提升密码强度


保存之后启动redis即可。


如果redis是主从配置,若master配置了密码则slave也要配置相应的密码参数否则无法进行正常复制的。需要在slave的redis.conf里找到“#masterauth  mstpassword”,去掉注释,也改成跟master一样的密码,重启一下即可。 


nginx的安装这里就不写了,直接看http://www.runoob.com/linux/nginx-install-setup.html 这个就行了。


安装x-pack

x-pack是elk官方提供的认证授权插件,安装方法很简单,分别找到下面三个文件,然后后面加上“install x-pack”即可:

1
2
3
. /elasticsearch-plugin  install  x-pack --batch 
. /logstash-plugin  install  x-pack 
. /kibana-plugin  install  x-pack


如果要查看已经安装的插件,那就是:

1
2
3
4
[root@chen-elk-001 bin] # ./elasticsearch-plugin list
x-pack
[root@chen-elk-001 bin] # ./kibana-plugin list
x-pack@5.6.4


如果kibana-plugin要卸载x-pack,那就是:

1
. /kibana-plugin  remove x-pack


重启服务即可登录,默认的登录用户名: elastic 密码:changeme。

image.png       image.png


这里注意一下,#./logstash-plugin install x-pack 的时候可能是出现ruby源的错误,如图:

image.png


这是因为中国特色社会主义的网络限制访问https://rubygems.org  ,一般来说,可以把它更改成阿里的ruby源https://ruby.taobao.org/  ,不过如果你的服务器无法跨越长城的话,那么更改也是不好使的,所以在这一步,我选择离线安装x-pack。也就是先把https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.6.4.zip 这个文件下载到本地上传到服务器的root文件夹里,然后安装:

1
2
3
[root@chen-logstash-001 bin] # ./logstash-plugin install file:///root/x-pack-5.6.4.zip
Installing  file /root/x-pack-5 .6.4.zip
Install successful


配置filebeat

由于这个nginx我们需要先让filebeat把nginx.log和error.log先推到redis存储,然后再由redis推到logstash。配置filebeat.yml的具体信息如下: 

1
2
3
4
5
6
7
8
9
10
11
[root@iZbp10hw6wezxmrvrcjyhlZ filebeat] # grep -iv '#' /etc/filebeat/filebeat.yml | grep -iv '^$'
filebeat.prospectors:
- input_type: log
   paths:
     /usr/local/nginx/logs/ *.log     #这里是nginx的日志文件夹
     
output.redis:                 #以下这部分都是新加的
   enabled:  true
   hosts: [ "127.0.0.1:6379" ]
   key: logindexer_list             #与redis配置文件里的key遥相呼应
   password: 『YOURPASSWORD』     #跟上面的密码遥相呼应


配置完毕之后,启动filebeat,命令语句:#/etc/init.d/filebeat start -c /etc/filebeat/filebeat.yml


配置logstash

由于这台logstash已经开启了一个logstash进程,那么再收集nginx的日志需要新开一个logstash进程,也需要新写一个conf文件,假设新的conf文件是nginx-logstash.conf,它的写法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
input {
     redis {
         host =>  "10.168.173.181"
         type  =>  "redis-input"
         data_type =>  "list"
         key =>  "logindexer_list"
         port => 6379
         password =>  "ChenRedi$"
     }
}
 
# filter configration here
output {
      elasticsearch {
         hosts => [  "10.162.80.192:9200"  ]
         user => elastic
         password => changeme
         index =>  "nginxlogstash-%{+YYYY.MM.dd}"         #这个是新的索引
     }
stdout {
     codec => rubydebug
        }
}


现在logstash不支持多个实例共享一个path.data,所以要在在启动不同实例的时候,命令行里增加"--path.data PATH " ,为不同实例指定不同的路径。启动logstash之后,看到显示如下:

image.png


再到nginx的日志看一下,因为logstash里没有做日志的切割,所以是整个一个类似字符串的形式发送了过来:

image.png


果然有这样的日志,可见logstash与nginx的redis已经正确连接。在elasticsearch里,使用#curl -u 账号密码 'localhost:9200/_cat/indices?v' 查询索引的时候,就会看到那个"nginxlogstash",如图:

image.png




参考资料:https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/input/redis.html


最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/2054719

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
241 0
|
3月前
|
存储 NoSQL 关系型数据库
Redis 日志篇:无畏宕机快速恢复的杀手锏
Redis 日志篇:无畏宕机快速恢复的杀手锏
78 0
|
3月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
3月前
|
消息中间件 数据可视化 关系型数据库
ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统
ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统
151 0
|
16天前
|
消息中间件 存储 运维
更优性能与性价比,从自建 ELK 迁移到 SLS 开始
本文介绍了 SLS 基本能力,并和开源自建 ELK 做了对比,可以看到 SLS 相比开源 ELK 有较大优势。
54780 130
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus VS ELK Stack:容器监控与日志管理工具的比较与选择
在容器化时代,有效的容器监控与日志管理工具对于确保应用程序的可靠性和可维护性至关重要。本文将比较两个主流工具,Prometheus和ELK Stack,探讨它们在容器监控和日志管理方面的特点、优势和适用场景,帮助读者做出明智的选择。
|
3月前
|
监控 NoSQL Redis
ELK7.x日志系统搭建 3. 采用轻量级日志收集Filebeat
ELK7.x日志系统搭建 3. 采用轻量级日志收集Filebeat
105 0
|
3月前
|
消息中间件 JSON 负载均衡
ELK7.x日志系统搭建 2. Nginx、Cluster等日志收集
ELK7.x日志系统搭建 2. Nginx、Cluster等日志收集
112 0
|
3月前
|
Go 数据处理 Docker
elk stack部署自动化日志收集分析平台
elk stack部署自动化日志收集分析平台
80 0