[喵咪BELK实战(3)] logstash+filebeat搭建
[喵咪BELK实战(3)] logstash+filebeat搭建
前言
在上节我们已经把elasticsearch+kibana已经搭建起来了,可以正常的进行数据的索引查询了,但是直接对elasticsearch进行操作也非常不方便, elasticsearch很难对接其他的数据源,这是使用就需要logstash和filebeat出场了...
附上:
喵了个咪的博客:w-blog.cn
官网地址:https://www.elastic.co/cn/
1. logstash
logstash主要的作用就是输入输出进行数据的处理,官方声称支持十几种数据输入源和输出源,并且可以多点分发是一个很强大的工具,我们主要使用的是它的数据处理功能(比如解析日志提取关键字索引,数据过滤等)
1.1 安装
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz
tar -zxvf logstash-5.3.0.tar.gz
mv logstash-5.3.0 /usr/local/
1.2 第一条管道
从之前的介绍有了解到logstash它的主要功能是处理数据进行输入输出,所以我们就要搭建一条输入输出的数据通道来进行数据传输,创建这条管道的配置文件:
vim /usr/local/logstash-5.3.0/config/first-pipeline.conf
# 制定输入源为beats 并且开发9011端口接受数据
input {
beats {
port => 9011
}
}
# 制定数据输出源为elasticsearch 并且指定index名称
output {
elasticsearch {
hosts => [ "localhost:9200" ]
index => "first-pipeline-%{+YYYY.MM.dd}"
}
}
试着启动logstash: /usr/local/logstash-5.3.0/bin/logstash -f /usr/local/logstash-5.3.0/config/first-pipeline.conf 看到如下输出证明以及成功启动logstash
[2017-05-04T09:55:59,951][INFO ][logstash.inputs.beats ] Beats inputs: Starting input listener {:address=>"0.0.0.0:9011"}
[2017-05-04T09:56:00,007][INFO ][logstash.pipeline ] Pipeline main started
[2017-05-04T09:56:00,104][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
使用Supervisor运行
使用Supervisor常驻启动修改配置文件加入如下语句在重启Supervisor就可以在后台运行
;你需要启动的进程给个名字
[program:logstash]
;你需要执行的语句
command=/usr/local/logstash-5.3.0/bin/logstash -f /usr/local/logstash-5.3.0/config/first-pipeline.conf
;是否自动启动
autostart=true
autorestart=true
;运行程序的用户
user=root
2. filebeat
虽然logstash也可以直接监听文件的数据,为什么还需要filebeat呢? 应为一般我们需要采集很多台服务器上的日志时需要做到尽量少的占用资源以及尽可能的简单,logstash使用JAVA编写可想而知对于资源消耗也不可小视,filebeat使用GO编写几乎做到不影响机器性能,并且filebeat还可以进行最基础的分类这就是选择filebeat的原因(之前beats是整合在logstash后面应为种种原因被分离了出来)
注意1:beats由很多程序组成filebeat只是其中对文件进行采集的一种 注意2:不一定要使用beats, logstash也可以直接接受各种组件上传的日志beats只是其中一种
2.1 安装
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.3.1-linux-x86_64.tar.gz
tar -zxvf filebeat-5.3.1-linux-x86_64.tar.gz
mv filebeat-5.3.1-linux-x86_64 /usr/local/filebeat-5.3.1
2.2 配置采集数据源
既然是采集文件数据当然少不了对采集数据源的配置
vim /usr/local/filebeat-5.3.1/filebeat.yml
默认filebeat输出源是elasticsearch我们需要替换成logstash
# 修改如下语句
output.elasticsearch: -> output.logstash:
hosts: ["localhost:9200"] -> hosts: ["localhost:9011"]
配置文件默认采集/var/log下以.log结尾的文件
- input_type: log
paths:
- /var/log/*.log
使用如下命令运行 :/usr/local/filebeat-5.3.1/filebeat -c /usr/local/filebeat-5.3.1/filebeat.yml
2.3 使用Supervisor运行
使用Supervisor常驻启动修改配置文件加入如下语句在重启Supervisor就可以在后台运行
;你需要启动的进程给个名字
[program:filebeat]
;你需要执行的语句
command=/usr/local/filebeat-5.3.1/filebeat -c /usr/local/filebeat-5.3.1/filebeat.yml
;是否自动启动
autostart=true
autorestart=true
;运行程序的用户
user=root
3 在kibana中查看采集的日志
正常采集起来之后就可以在kibana中添加一个查看的索引了
这个时候就把/var/log中所有以.log结尾的日志全部采集上来了并且可以通过source来进行文件的选择
这是选择了只看yum.log之后的效果
4. 总结
到这里我们基本上吧BELK已经完整的搭建起来并且对日志开始采集了,但是BELK不仅仅如此,还有对于kibana的使用,对于各类日志的处理,对于时间的处理,对于索引字段的增加等还有很多细节,继续关注喵了个咪的博客会为大家带来更多的关于BELK的使用技巧
注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!
- HDUOJ---(4708)Herding
- HDUOJ---(4708)Rotation Lock Puzzle
- HDUOJ---Hamming Distance(4712)
- HDUOJ-----Difference Between Primes
- HDUOJ----(4706)Children's Day
- poj-------Common Subsequence(poj 1458)
- poj----Maximum sum(poj 2479)
- HDUOJ---hello Kiki
- HDUOJ-----X问题
- POJ-----C Looooops
- POJ--Strange Way to Express Integers
- HDUOJ----More is better(并查集)
- HDUOJ 1099——Lottery
- HDUOJ-----取(m堆)石子游戏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- sort 升序还是降序?priority_queue 大根堆还是小根堆?
- 将2N个整数分成两组,每组有N个数,并且满足,这两组的差的绝对值最小。
- C++11正则表达式 ECMAScript文法
- Flutter基础widgets教程-Divider篇
- std::vector扩容机制,.按1.5倍取整扩容,如下。
- 求一个数的临近的较大的2的整数次幂
- 在文件IO操作中,合理使用缓存。
- Flutter基础widgets教程-Drawer篇
- C++ 实现可变参数
- C++ 单例模式
- c++ 日志类 线程安全+缓存
- C++ 实现通过类名来进行实例化(反射机制?)
- Flutter基础widgets教程-ExpansionPanel篇
- muduo TcpServer粗略过程
- muduo 超时重连