1. Logstash 9.2.4 环境准备与安装
1.1 系统环境检查
在开始安装Logstash 9.2.4之前,我们需要确保系统环境满足基本要求。根据官方文档,Logstash 9.2.4需要:
- Java 11或更高版本(推荐OpenJDK)
- 至少4GB内存(生产环境建议8GB以上)
- 2核CPU(处理复杂管道时建议4核以上)
- 10GB可用磁盘空间(日志量大的场景需要更多)
验证Java环境的方法:
bash复制java -version
如果未安装Java,可以使用以下命令安装OpenJDK 11:
bash复制# Ubuntu/Debian
sudo apt update && sudo apt install -y openjdk-11-jdk
# CentOS/RHEL
sudo yum install -y java-11-openjdk-devel
1.2 下载与安装Logstash
从Elastic官网获取Logstash 9.2.4的安装包。考虑到国内网络环境,推荐使用国内镜像源加速下载:
bash复制# 下载压缩包
wget https://artifacts.elastic.co/downloads/logstash/logstash-9.2.4-linux-x86_64.tar.gz
# 解压到指定目录
tar -zxvf logstash-9.2.4-linux-x86_64.tar.gz -C /opt/
cd /opt/logstash-9.2.4/
对于Windows系统,可以下载ZIP包后解压到合适目录(如C:\Program Files\Logstash)。
1.3 目录结构解析
安装完成后,Logstash的主要目录结构如下:
code复制/opt/logstash-9.2.4/
├── bin/ # 可执行文件目录
├── config/ # 配置文件目录
│ ├── logstash.yml # 主配置文件
│ └── pipelines.yml # 管道定义文件
├── data/ # 数据存储目录
├── logs/ # 日志文件目录
├── modules/ # 模块目录
└── vendor/ # 依赖库目录
注意:生产环境中建议将data和logs目录挂载到独立磁盘分区,避免系统盘空间不足导致服务中断。
2. 基础配置与管道定义
2.1 主配置文件调整
编辑config/logstash.yml进行基础配置:
yaml复制node.name: "logstash-prod-01" # 节点名称
path.data: /data/logstash # 数据存储路径
path.logs: /var/log/logstash # 日志存储路径
pipeline.workers: 4 # 工作线程数(建议等于CPU核心数)
queue.type: persisted # 使用持久化队列防止数据丢失
queue.max_bytes: 2gb # 队列最大容量
2.2 创建第一个管道
在config/pipelines.yml中定义管道:
yaml复制- pipeline.id: main
path.config: "/etc/logstash/conf.d/*.conf"
pipeline.workers: 4
然后在/etc/logstash/conf.d/目录下创建具体的管道配置文件,例如filebeat-to-elasticsearch.conf:
conf复制input {
beats {
port => 5044
ssl => false
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:message}" }
}
date {
match => [ "timestamp", "ISO8601" ]
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
}
2.3 配置文件验证
在启动前验证配置文件语法:
bash复制bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/filebeat-to-elasticsearch.conf
如果显示"Configuration OK",则表示配置文件语法正确。
3. 运行与管理Logstash
3.1 启动与停止
前台启动(调试时使用):
bash复制bin/logstash -f /etc/logstash/conf.d/filebeat-to-elasticsearch.conf
后台启动(生产环境使用):
bash复制nohup bin/logstash -f /etc/logstash/conf.d/filebeat-to-elasticsearch.conf &> /var/log/logstash/stdout.log &
停止Logstash:
bash复制ps aux | grep logstash | grep -v grep | awk '{print $2}' | xargs kill -9
3.2 系统服务配置
对于长期运行的环境,建议配置为系统服务。创建/etc/systemd/system/logstash.service文件:
ini复制[Unit]
Description=Logstash
After=network.target
[Service]
Type=simple
User=logstash
Group=logstash
Environment="LS_HOME=/opt/logstash-9.2.4"
Environment="LS_SETTINGS_DIR=/opt/logstash-9.2.4/config"
ExecStart=/opt/logstash-9.2.4/bin/logstash -f /etc/logstash/conf.d/
Restart=always
[Install]
WantedBy=multi-user.target
然后启用服务:
bash复制sudo systemctl daemon-reload
sudo systemctl enable logstash
sudo systemctl start logstash
3.3 监控与日志查看
查看运行状态:
bash复制systemctl status logstash
查看日志:
bash复制tail -f /var/log/logstash/logstash-plain.log
监控指标API(默认端口9600):
bash复制curl http://localhost:9600/_node/stats
4. 高级功能与性能优化
4.1 多管道配置
Logstash支持同时运行多个独立的管道。修改pipelines.yml:
yaml复制- pipeline.id: nginx-logs
path.config: "/etc/logstash/conf.d/nginx/*.conf"
pipeline.workers: 2
queue.type: persisted
queue.page_capacity: 64mb
- pipeline.id: app-logs
path.config: "/etc/logstash/conf.d/app/*.conf"
pipeline.workers: 4
queue.type: persisted
queue.max_bytes: 1gb
4.2 性能调优建议
- JVM堆内存设置:编辑config/jvm.options
conf复制-Xms4g
-Xmx4g
建议设置为系统内存的50%,但不超过31GB(JVM限制)
- 批处理大小调整:
conf复制output {
elasticsearch {
hosts => ["http://localhost:9200"]
flush_size => 5000
idle_flush_time => 5
}
}
- 使用持久化队列防止数据丢失:
yaml复制queue.type: persisted
queue.max_bytes: 4gb
path.queue: /data/logstash/queue
4.3 常用插件推荐
-
输入插件:
- filebeat:轻量级日志采集
- kafka:从消息队列消费
- jdbc:从数据库读取
-
过滤插件:
- grok:日志解析
- mutate:字段操作
- geoip:IP地理位置解析
-
输出插件:
- elasticsearch:写入ES集群
- kafka:发送到消息队列
- http:调用API接口
安装插件示例:
bash复制bin/logstash-plugin install logstash-filter-dissect
bin/logstash-plugin update
4.4 安全配置
- 启用SSL加密:
conf复制input {
beats {
port => 5044
ssl => true
ssl_certificate => "/path/to/cert.pem"
ssl_key => "/path/to/key.pem"
}
}
- Elasticsearch认证:
conf复制output {
elasticsearch {
hosts => ["https://es-cluster:9200"]
user => "logstash_user"
password => "securepassword"
ssl => true
cacert => "/path/to/ca.crt"
}
}
- 敏感信息保护:使用环境变量或密钥管理工具存储密码,避免硬编码在配置文件中。
