**本文不介绍技术的具体实现,只介绍概念原理,有哪些实现方式.适合已经学习过ELK的人,进行ELK快速复习**
#Logstash
## 1.Logstash安装
参考:[《安装logstash》](http://www.kancloud.cn/hanxt/elk/153880)
## 2.Logstash概念
* logstash与linux系统的配合管道"|"的使用方式比较像,输入,过滤,输出
* Logstash是用多线程来实现的,并为每类线程取了名字.输入的叫做"<threadname",过滤的叫做"|threadname",输出的叫做">threadname"
* 数据在线程之间以事件的形式流转.不要叫行,因为logstash可以处理多行的事件.
logstash通常会为原始事件添加一些额外信息,如:
* @timestamp 用来标记事件发生的事件
* host用来标记事件发生的主机位置
* type用来标记事件的唯一标识类型,比如:std表示标准输入输出
* tags用来为事件打标签,一个事件可以有多个标签组成的数组
Logstash的过滤插件都有四个方法:
* add_tag
* remove_tag
* add_filed
* remove_filed
**第7-14页的配置语法先简单略过**
## 3.Logstash插件配置
插件是logstash的最大的特色,目前支持四种插件类型:
* 输入插件
* 输出插件
* 过滤插件
* 编解码插件
### 3.1 输入插件
#### 3.1.1 stdin:从linux终端的标准输入获得数据
这个不多说
#### 3.1.2 file:文件输入
* 可以监听文件的变化,记录一个数据库文件.sincedb来跟踪被监听文件的当前读取位置
* 支持通配符
* 支持递归子目录
#### 3.1.3 TCP输入
不建议使用,测试可以.因为logstash的缓冲队列中只能缓存20个事件.
建议在生产中使用kafka或redis作为消息队列
#### 3.1.4 syslog输入
syslog是运维领域一种流行的数据传输协议.如果想从设备上收集系统日志,syslog应该是第一选择,尤其是网络设备.
**如果有需要,syslog需要进一步的了解**
#### 3.1.5 collected输入
collectd是一款系统监控软件,可以用来收集CPU,内存,网卡流量,磁盘IO及磁盘空间占用等信息。他会在系统运行时周期性的统计系统相关信息.可以利用这些信息来查找系统性能瓶颈.