filebeat->redis->logstash->elasticsearch->kibana
整体流程
- filebeat收集openresty应用日志传输到Redis集群中
- Logstash从Redis集群中拉取数据,并传输到Elasticsearch集群
- 使用Kibana可视化索引
- 使用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配置
安装
- 配置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
- 安装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
注意这两种不同方式的配置
测试
打开浏览器进行访问,查看索引,日志文件等
后期扩展
- 各软件之间的数据传输采用加密的方式进行
- 结合X-pack给kibana的访问设置用户角色和权限控制等
- filebeat模块的功能还有待研究
- 其他beats产品有待研究
- kibana的web界面使用还有待研究
- 读取MySQL数据库数据到Elasticsearch功能还有待研究
- 在Logstash中过滤数据还有待研究
- 其他未了解的也都待研究
filebeat->redis->logstash->elasticsearch->kibana的更多相关文章
- filebeat+redis+logstash+elasticsearch+kibana搭建日志分析系统
filebeat+redis+elk搭建日志分析系统 官网下载地址:https://www.elastic.co/downloads 1.下载安装filebeat wget https://artif ...
- Filebeat+Kafka+Logstash+ElasticSearch+Kibana 日志采集方案
前言 Elastic Stack 提供 Beats 和 Logstash 套件来采集任何来源.任何格式的数据.其实Beats 和 Logstash的功能差不多,都能够与 Elasticsearch 产 ...
- Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版
1. 了解各个组件的作用 Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读) Kafka ...
- filebeat+redis+logstash+elasticsearch基本配置--适用于6.4版本
filebeat配置: filebeat.inputs:- type: log enabled: true paths: - /opt/xxxx.log fields: ...
- filebeat -> logstash -> elasticsearch -> kibana ELK 日志收集搭建
Filebeat 安装参考 http://blog.csdn.net/kk185800961/article/details/54579376 elasticsearch 安装参考http://blo ...
- Nginx filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示
filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示 by:授客 QQ:1033553122 测试环境 Win7 64 CentOS-7- ...
- 使用logstash+elasticsearch+kibana快速搭建日志平台
日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: * 根据关键字查询日志详情 * 监控系统的运行状况 * 统计分析,比如接口的调用次数.执行时间.成功 ...
- logstash+elasticsearch+kibana快速搭建日志平台
使用logstash+elasticsearch+kibana快速搭建日志平台 日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日 ...
- 【转载】使用logstash+elasticsearch+kibana快速搭建日志平台
原文链接:http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html 日志的分析和监控在系统开发中占非常重要的地 ...
- 安装logstash,elasticsearch,kibana三件套
logstash,elasticsearch,kibana三件套 elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意: 关于安装文档, ...
随机推荐
- Luogu P4707 重返现世 (拓展Min-Max容斥、DP)
题目链接 https://www.luogu.org/problem/P4707 题解 最近被神仙题八连爆了-- 首先Min-Max容斥肯定都能想到,问题是这题要用一个扩展版的--Kth Min-Ma ...
- Thrift支持的基本数据类型
'bool' | 'byte' | 'i8' | 'i16' | 'i32' | 'i64' | 'double' | 'string' | 'binary' | 'slist'(deprecated ...
- 第11组 Beta冲刺(2/5)
第11组 Beta冲刺(2/5) 队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11997386.html 作业博客 https://edu.cn ...
- 黑马lavarel教程---7、文件上传
黑马lavarel教程---7.文件上传 一.总结 一句话总结: 在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的. 1.在lavar ...
- C++如何限制对象在堆上或栈上生成
1,限制类的对象只能生成在栈上 将 operator new 各种原型设为私有 #include <iostream> class OnlyOnStack { public: OnlyOn ...
- 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 ...
- D2下午
前言 至于为什么D2要分上下午,唯一的原因就是lyd那个毒瘤用了一上午讲他昨天要讲的鬼畜东西,所以今天下午才开始讲数论了 对了,补一下lyd的数论人 <数论人>(大雾) 数论的光束是歌德巴 ...
- jenkins docker 发布
分享下怎么使用jenkins 发布 docker 首先准备docker的相关部分 docker tomcat基础镜像,这边使用centos7做系统,dockerfile如下: #tomcat基础镜 ...
- http协议详解之响应报文 3
--------------响应示例--------------------------response#状态行HTTP/1.1 200 OK #协议及版本号.状态码.状态描述 #消息报头Date: ...
- 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_1 请求参数绑定入门
请求参数的绑定 参数绑定 创建新的页面 给方法加上注解 前面没有斜线 重新部署项目 传递一个username的值 后台方法接收 重新部署项目 再传一个password的值 再输出password ja ...