在运维工作中,Logstash 作为数据采集和处理的核心工具,支持多种输入源,能够从不同的数据源中收集数据。以下是 Logstash 常见的输入源及其配置方式:
1. 文件(File)
从本地文件或日志文件中读取数据,适用于采集服务器上的日志文件。
配置示例:
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
2. Beats
接收来自 Filebeat 或其他 Beats 的数据,常用于与轻量级采集器配合使用。
配置示例:
input {
beats {
port => 5044
}
}
3. Kafka
从 Kafka 主题中消费数据,适用于大规模分布式消息队列场景。
配置示例:
input {
kafka {
bootstrap_servers => "localhost:9092"
topics => ["logs"]
}
}
4. JDBC(数据库)
从数据库中读取数据,支持多种数据库(如 MySQL、PostgreSQL 等)。
配置示例:
input {
jdbc {
jdbc_driver_library => "/path/to/mysql-connector-java.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "root"
jdbc_password => "password"
schedule => "* * * * *"
}
}
5. Syslog
接收 Syslog 数据,适用于传统的系统日志采集。
配置示例:
input {
syslog {
port => 514
}
}
6. HTTP
通过 HTTP 接收数据,适用于从 Web 应用或其他服务接收日志。
配置示例:
input {
http {
port => 8080
}
}
7. TCP/UDP Socket
支持基于 TCP 或 UDP 协议的日志传输,适用于网络设备或应用的日志采集。
配置示例:
input {
tcp {
port => 5000
}
udp {
port => 5001
}
}
8. Redis
从 Redis 数据库或 Redis Pub/Sub 中读取数据,适用于缓存和消息队列场景。
配置示例:
input {
redis {
data_type => "list"
key => "logstash"
host => "localhost"
port => 6379
}
}
9. AWS Kinesis Data Streams
基于 AWS 服务的流式日志采集,适用于云原生应用。
配置示例:
input {
aws_kinesis {
stream_name => "my-kinesis-stream"
region => "us-east-1"
}
}
10. JMS
从 JMS 消息队列中读取数据,适用于企业级消息中间件。
配置示例:
input {
jms {
destination => "queue:MyQueue"
topic => "topic:MyTopic"
jndi_jms_url => "vm://localhost:5447"
jndi_context => {
java.naming.factory.initial => "org.apache.activemq.jndi.ActiveMQInitialContextFactory"
java.naming.provider.url => "vm://localhost:5447"
java.naming.factory.queue => "org.apache.activemq.ActiveMQQueue"
java.naming.factory.topic => "org.apache.activemq.ActiveMQTopic"
}
}
}
11. 其他输入源
Logstash 还支持其他多种输入源,如串口设备(Serial Port)、Grok(基于正则表达式匹配日志字段)等。
综上所述,通过这些输入源,Logstash 可以灵活地从各种数据源中采集数据,满足不同场景下的日志和数据处理需求。