Logstash 提供了非常丰富的输入插件,用于从各种数据源中读取数据。以下是一些常见的输入插件类型及其用途:
1.`file`插件
• 用途:从文件中读取数据。
• 适用场景:适用于从日志文件、CSV 文件或其他文本文件中读取数据。
• 示例配置:
```plaintext
input {
file {
path => "/var/log/*.log"
start_position => "beginning"
}
}
```
• `path`:指定文件路径,支持通配符。
• `start_position`:指定从文件的哪个位置开始读取,可以是`beginning`(从头开始)或`end`(从文件末尾开始)。
2.`tcp`插件
• 用途:从 TCP 网络端口接收数据。
• 适用场景:适用于从网络设备、应用程序或其他服务中接收日志或数据。
• 示例配置:
```plaintext
input {
tcp {
port => 5000
codec => plain
}
}
```
• `port`:指定监听的 TCP 端口号。
• `codec`:指定数据的编码方式,`plain`表示普通文本。
3.`udp`插件
• 用途:从 UDP 网络端口接收数据。
• 适用场景:适用于接收轻量级的网络消息,如日志或监控数据。
• 示例配置:
```plaintext
input {
udp {
port => 5000
codec => plain
}
}
```
• `port`:指定监听的 UDP 端口号。
• `codec`:指定数据的编码方式。
4.`stdin`插件
• 用途:从标准输入(命令行)读取数据。
• 适用场景:适用于测试和开发环境,手动输入数据进行处理。
• 示例配置:
```plaintext
input {
stdin {
codec => plain
}
}
```
5.`beats`插件
• 用途:接收来自 Filebeat、Metricbeat 等 Elastic Stack 的 Beats 代理的数据。
• 适用场景:与 Elastic Stack 生态系统集成,用于接收和处理日志、指标等数据。
• 示例配置:
```plaintext
input {
beats {
port => 5044
}
}
```
• `port`:指定监听的端口号,Filebeat 会将数据发送到此端口。
6.`http`插件
• 用途:通过 HTTP 协议接收数据。
• 适用场景:适用于从 Web 应用程序或 RESTful API 接收数据。
• 示例配置:
```plaintext
input {
http {
host => "0.0.0.0"
port => 8080
}
}
```
• `host`:指定监听的主机地址。
• `port`:指定监听的端口号。
7.`syslog`插件
• 用途:接收 Syslog 格式的日志消息。
• 适用场景:适用于接收来自网络设备、服务器等的 Syslog 日志。
• 示例配置:
```plaintext
input {
syslog {
port => 514
type => "syslog"
}
}
```
• `port`:指定监听的端口号,Syslog 通常使用 514 端口。
• `type`:指定数据类型,便于后续处理。
8.`jms`插件
• 用途:从 Java 消息服务(JMS)队列或主题中读取数据。
• 适用场景:适用于与 Java 应用程序集成,从消息队列中接收数据。
• 示例配置:
```plaintext
input {
jms {
include_destination_types => ["queue"]
destination => "my_queue"
username => "user"
password => "pass"
initial_context_factory => "org.apache.activemq.jndi.ActiveMQInitialContextFactory"
provider_url => "tcp://localhost:61616"
}
}
```
9.`rabbitmq`插件
• 用途:从 RabbitMQ 消息队列中读取数据。
• 适用场景:适用于与 RabbitMQ 集成,从队列中接收消息。
• 示例配置:
```plaintext
input {
rabbitmq {
host => "localhost"
port => 5672
queue => "my_queue"
user => "guest"
password => "guest"
}
}
```
10.`redis`插件
• 用途:从 Redis 列表或通道中读取数据。
• 适用场景:适用于与 Redis 集成,从 Redis 的消息队列中接收数据。
• 示例配置:
```plaintext
input {
redis {
host => "localhost"
port => 6379
data_type => "list"
key => "my_list"
}
}
```
11.`exec`插件
• 用途:执行外部命令,并将命令的输出作为数据源。
• 适用场景:适用于运行脚本或命令,并将结果作为输入数据。
• 示例配置:
```plaintext
input {
exec {
command => "ls -l"
interval => 10
}
}
```
• `command`:指定要执行的命令。
• `interval`:指定命令的执行间隔(秒)。
12.`generator`插件
• 用途:生成模拟数据,用于测试和开发。
• 适用场景:适用于开发和测试阶段,生成测试数据。
• 示例配置:
```plaintext
input {
generator {
count => 10
type => "test"
}
}
```
• `count`:指定生成的数据条数。
• `type`:指定数据类型。
13.`http_poller`插件
• 用途:定期从 HTTP 端点拉取数据。
• 适用场景:适用于从 RESTful API 或其他 HTTP 服务中定期获取数据。
• 示例配置:
```plaintext
input {
http_poller {
urls => {
test => {
method => get
url => "http://example.com/api/data"
}
}
schedule => { cron => "* * * * *" }
}
}
```
• `urls`:定义要拉取的 URL。
• `schedule`:定义拉取的频率,使用 Cron 表达式。
14.`mqtt`插件
• 用途:从 MQTT 消息代理中读取数据。
• 适用场景:适用于物联网(IoT)场景,从 MQTT 消息队列中接收数据。
• 示例配置:
```plaintext
input {
mqtt {
broker => "tcp://localhost:1883"
topics => ["sensor/data"]
}
}
```
15.`s3`插件
• 用途:从 Amazon S3 存储桶中读取数据。
• 适用场景:适用于从 S3 中读取日志文件或数据文件。
• 示例配置:
```plaintext
input {
s3 {
bucket => "my-bucket"
region => "us-east-1"
sincedb_path => "/path/to/sincedb"
interval => 60
}
}
```
• `bucket`:指定 S3 存储桶名称。
• `region`:指定 S3 存储桶所在的区域。
• `sincedb_path`:记录已处理文件的路径。
• `interval`:指定检查 S3 存储桶的频率(秒)。
16.`jdbc`插件
• 用途:从关系型数据库中读取数据。
• 适用场景:适用于从 MySQL、PostgreSQL 等数据库中读取数据。
• 示例配置:
```plaintext
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "root"
jdbc_password => "password"
statement => "SELECT * FROM my_table"
}
}
```
• `jdbc_connection_string`:指定数据库连接字符串。
• `jdbc_user`和`jdbc_password`:指定数据库用户名和密码。
• `statement`:指定 SQL 查询语句。
17.`kinesis`插件
• 用途:从 Amazon Kinesis 数据流中读取数据。
• 适用场景:适用于从 Kinesis 数据流中接收实时数据。
• 示例配置:
```plaintext
input {
kinesis {
stream_name => "my-stream"
region => "us-east-1"
}
}
```
18.`mqtt`插件
• 用途:从 MQTT 消息代理中读取数据。
• 适用场景:适用于物联网(IoT)场景,从 MQTT 消息队列中接收数据。
• 示例配置:
```plaintext
input {
mqtt {
broker => "tcp://localhost:1883"
topics => ["sensor/data"]
}
}
```
19.`udp`插件
• 用途:从 UDP 网络端口接收数据。
• 适用场景:适用于接收轻量级的网络消息,如日志或监控数据。
• 示例配置:
```plaintext
input {
udp {
port => 5000
codec => plain
}
}
```
20.`zmq`插件
• 用途:从 ZeroMQ 消息队列中读取数据。
•