设为首页 收藏本站
查看: 600|回复: 0

[经验分享] 将redis加入到elk日志系统里

[复制链接]

尚未签到

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

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

  那就安装新一点的tcl吧,方法如下:
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就会看到成功的字样,如图:
DSC0002.jpg

  现在redis的漏洞比较多,大多数就是因为密码太简单导致的,所以把redis密码改一下,在redis.conf里,改成如下的样子:
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”即可:
./elasticsearch-plugin install x-pack --batch  
./logstash-plugin install x-pack
  
./kibana-plugin install x-pack
  如果要查看已经安装的插件,那就是:
[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,那就是:
./kibana-plugin remove x-pack  重启服务即可登录,默认的登录用户名: elastic 密码:changeme。
DSC0003.jpg        DSC0004.jpg

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

  这是因为中国特色社会主义的网络限制访问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文件夹里,然后安装:
[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的具体信息如下:
[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,它的写法如下:
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之后,看到显示如下:
DSC0006.jpg

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

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

  参考资料:https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/input/redis.html
  最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!
DSC0009.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630036-1-1.html 上篇帖子: JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制) 下篇帖子: 【NoSQL】抛弃VIP,使用consul和sentinel构建redis的高可用系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表