整体流程

  1. filebeat收集openresty应用日志传输到Redis集群中
  2. Logstash从Redis集群中拉取数据,并传输到Elasticsearch集群
  3. 使用Kibana可视化索引
  4. 使用Elasticsearch-head管理lasticsearch集群

注:Logstash不支持集群模式

环境

均为CentOS 7.4 x64系统

openresty 192.168.0.10 1.15.8版本

filebeat 192.168.0.10 7.3.0版本

Redis集群 192.168.0.11 6381-6386端口(暂采用伪集群的方式) 5.0.5版本

Logstash 192.168.0.12 7.3.0版本

Elasticsearch集群 192.168.0.13-15 7.3.0版本

Kibana 192.168.0.16 7.3.0版本

Elasticsearch-head 192.168.0.17

软件下载地址

filebeat|Logstash|Elasticsearch|Kibana:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

Elasticsearch-head:https://github.com/mobz/elasticsearch-head

Redis:https://redis.io/download

Redis集群开启外部访问,设置访问密码,防火墙放行端口

配置

filebeat配置

安装

软件采用通过下载rpm包的方式进行安装

rpm -ivh filebeat-7.3.0-x86_64.rpm
systemctl daemon-reload
systemctl enable filebeat.service
systemctl start filebeat.service

修改filebeat.yml配置文件

openresty日志文件路径:

access:/usr/local/openresty/nginx/logs/host.access.log

error:/usr/local/openresty/nginx/logs/error.log

文件路径:/etc/filebeat/filebeat.yml

注销其他的output输出

filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/host.access.log
fields:
log_source: access - type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/error.log
fields:
log_source: error output.redis:
hosts: ["192.168.0.11:6381","192.168.0.11:6382","192.168.0.11:6383","192.168.0.11:6384","192.168.0.11:6385","192.168.0.11:6386"]
password: foobar2000
db: 0
key: "log_list"

还有一些其他的优化参数,后期需要再添加

测试

重启filebeat后,使用浏览器访问网址,确保先生成的有access和error日志,然后在Redis集群的第0库查看

会发现有一个key是log_list,值是list的数据,里面一行一行的数据就是收集过来的日志,这些日志加的有一些元数据

具体可以查看本博客的另一篇文章《使用filebeat收集日志传输到redis的各种效果展示》,这里面有详细的讲解。

Logstash配置

安装

  1. 配置java环境
cd /usr/local/src
tar -zxv -f openjdk-12_linux-x64_bin.tar.gz -C /usr/local/
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk-12
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar source /etc/profile.d/java.sh
  1. 安装logstash

软件采用通过下载rpm包的方式进行安装

rpm -ivh logstash-7.3.0.rpm
systemctl daemon-reload
systemctl enable logstash.service
systemctl start logstash.service

修改启动文件,确保能找到java环境变量

文件路径:/usr/share/logstash/bin/logstash.lib.sh

在行首加入如下信息

export JAVA_HOME=/usr/local/jdk-12
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

msg.conf配置文件修改

logstash默认的配置文件时在/etc/logstash/conf.d/目录下创建以conf结尾的文件,本例中创建的是msg.conf

文件路径:/etc/logstash/conf.d/msg.conf

该文件内容如下

input {

  redis {
# 若报错该redis不能访问,则不使用Redis集群,只使用一台redis,需要修改filebeat.yml文件
host => "192.168.0.11"
port => 6381
password => foobar2000
data_type => "list"
key => "log_list"
db => 0
} } output {
# 根据filebeat.yml中设置的不同日志来源进行区分,从而创建不同的索引
if [fields][log_source] == 'access' {
elasticsearch {
hosts => ["http://192.168.0.13:9200","http://192.168.0.14:9200","http://192.168.0.15:9200"]
index => "filebeat-access-%{+YYYY.MM.dd}"
id => "access_id"
}
} if [fields][log_source] == 'error' {
elasticsearch {
hosts => ["http://192.168.0.13:9200","http://192.168.0.14:9200","http://192.168.0.15:9200"]
index => "filebeat-error-%{+YYYY.MM.dd}"
id => "error_id"
}
}
}

测试

查看redis的key值对应的list数据还有没,没有的话说明已经把日志传输给logstash了。

Elasticsearch集群配置

安装

详细参考本博客另一篇文章《ElasticSearch集群》

elasticsearch.yml配置文件修改

文件路径:/etc/elasticsearch/elasticsearch.yml

详细参考本博客另一篇文章《ElasticSearch集群》

测试

详细参考本博客另一篇文章《ElasticSearch集群》

Elasticsearch-head配置

yum -y install epel-release
yum -y install git npm
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start

启动后会占用当前窗口,改用脚本启动方式

在当前目录下创建一个start.sh文件

#!/bin/bash

nohup npm run start > /tmp/head.log 2>&1 &

默认访问地址是http://localhost:9100

这时可以通过使用nginx代理的方式进行访问

可以配置一个域名,同时设置一个nginx网站访问密码,具体参考本博客的另一篇文章《nginx配置访问密码,输入用户名和密码才能访问》

location /head {
proxy_pass http://127.0.0.1:9100;
#Proxy Settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}

修改elasticsearch.yml配置文件,开启跨域访问

在每个集群节点的elasticsearch.yml配置文件末尾加上如下两行数据

http.cors.enabled: true
http.cors.allow-origin: "*"

Kibana配置

安装

软件采用通过下载rpm包的方式进行安装

rpm -Uvh kibana-7.3.0-x86_64.rpm
systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana.service

kibana.yml配置文件修改

文件路径:/etc/kibana/kibana.yml

这个也采用nginx代理的方式进行访问,同时设置nginx的web访问密码

具体参考本博客的另一篇文章《nginx配置访问密码,输入用户名和密码才能访问》

后期可以结合X-pack插件进行用户角色和权限管理等功能

server.port: 5601
server.host: "127.0.0.1"
server.basePath: "/kibana" # 跟nginx那个路径对应,否则无法加载静态资源
elasticsearch.hosts: ["http://192.168.0.13:9200","http://192.168.0.14:9200","http://192.168.0.15:9200"]
i18n.locale: "zh-CN"

nginx配置文件内容

location /kibana/ {
proxy_pass http://127.0.0.1:5601;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/kibana/(.*)$ /$1 break;
}

使用http://ip/kibana进行访问,查看索引信息等

或者采用另一种配置

nginx配置文件

server {
listen 80;
server_name xxx.xxx.com;
root /usr/share/nginx/html;
expires -1; client_max_body_size 10m;
location / {
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://172.17.107.187:5600;
}
}

kibana.yml配置文件

server.port: 5601
server.host: "127.0.0.1"
elasticsearch.hosts: ["http://192.168.0.13:9200","http://192.168.0.14:9200","http://192.168.0.15:9200"]
i18n.locale: "zh-CN"

访问的话直接使用域名的方式,不加后缀kibana

注意这两种不同方式的配置

测试

打开浏览器进行访问,查看索引,日志文件等

后期扩展

  1. 各软件之间的数据传输采用加密的方式进行
  2. 结合X-pack给kibana的访问设置用户角色和权限控制等
  3. filebeat模块的功能还有待研究
  4. 其他beats产品有待研究
  5. kibana的web界面使用还有待研究
  6. 读取MySQL数据库数据到Elasticsearch功能还有待研究
  7. 在Logstash中过滤数据还有待研究
  8. 其他未了解的也都待研究

filebeat->redis->logstash->elasticsearch->kibana的更多相关文章

  1. filebeat+redis+logstash+elasticsearch+kibana搭建日志分析系统

    filebeat+redis+elk搭建日志分析系统 官网下载地址:https://www.elastic.co/downloads 1.下载安装filebeat wget https://artif ...

  2. Filebeat+Kafka+Logstash+ElasticSearch+Kibana 日志采集方案

    前言 Elastic Stack 提供 Beats 和 Logstash 套件来采集任何来源.任何格式的数据.其实Beats 和 Logstash的功能差不多,都能够与 Elasticsearch 产 ...

  3. Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版

    1. 了解各个组件的作用 Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读) Kafka ...

  4. filebeat+redis+logstash+elasticsearch基本配置--适用于6.4版本

    filebeat配置: filebeat.inputs:- type: log enabled: true paths: - /opt/xxxx.log fields:                ...

  5. filebeat -> logstash -> elasticsearch -> kibana ELK 日志收集搭建

    Filebeat 安装参考 http://blog.csdn.net/kk185800961/article/details/54579376 elasticsearch 安装参考http://blo ...

  6. Nginx filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示

    filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示   by:授客  QQ:1033553122   测试环境 Win7 64 CentOS-7- ...

  7. 使用logstash+elasticsearch+kibana快速搭建日志平台

    日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: * 根据关键字查询日志详情 * 监控系统的运行状况 * 统计分析,比如接口的调用次数.执行时间.成功 ...

  8. logstash+elasticsearch+kibana快速搭建日志平台

    使用logstash+elasticsearch+kibana快速搭建日志平台   日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日 ...

  9. 【转载】使用logstash+elasticsearch+kibana快速搭建日志平台

    原文链接:http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html 日志的分析和监控在系统开发中占非常重要的地 ...

  10. 安装logstash,elasticsearch,kibana三件套

    logstash,elasticsearch,kibana三件套 elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意: 关于安装文档, ...

随机推荐

  1. Luogu P4707 重返现世 (拓展Min-Max容斥、DP)

    题目链接 https://www.luogu.org/problem/P4707 题解 最近被神仙题八连爆了-- 首先Min-Max容斥肯定都能想到,问题是这题要用一个扩展版的--Kth Min-Ma ...

  2. Thrift支持的基本数据类型

    'bool' | 'byte' | 'i8' | 'i16' | 'i32' | 'i64' | 'double' | 'string' | 'binary' | 'slist'(deprecated ...

  3. 第11组 Beta冲刺(2/5)

    第11组 Beta冲刺(2/5) 队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11997386.html 作业博客 https://edu.cn ...

  4. 黑马lavarel教程---7、文件上传

    黑马lavarel教程---7.文件上传 一.总结 一句话总结: 在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的. 1.在lavar ...

  5. C++如何限制对象在堆上或栈上生成

    1,限制类的对象只能生成在栈上 将 operator new 各种原型设为私有 #include <iostream> class OnlyOnStack { public: OnlyOn ...

  6. SAP MaxDB Backup and Restore

    Back up the data and redo log entries from the data and log areas of your database to data carriers ...

  7. D2下午

    前言 至于为什么D2要分上下午,唯一的原因就是lyd那个毒瘤用了一上午讲他昨天要讲的鬼畜东西,所以今天下午才开始讲数论了 对了,补一下lyd的数论人 <数论人>(大雾) 数论的光束是歌德巴 ...

  8. jenkins docker 发布

    分享下怎么使用jenkins 发布 docker   首先准备docker的相关部分 docker tomcat基础镜像,这边使用centos7做系统,dockerfile如下: #tomcat基础镜 ...

  9. http协议详解之响应报文 3

    --------------响应示例--------------------------response#状态行HTTP/1.1 200 OK #协议及版本号.状态码.状态描述 #消息报头Date: ...

  10. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_1 请求参数绑定入门

    请求参数的绑定 参数绑定 创建新的页面 给方法加上注解 前面没有斜线 重新部署项目 传递一个username的值 后台方法接收 重新部署项目 再传一个password的值 再输出password ja ...