# Logstash的安裝教程和使用方法
## 一、Logstash簡介
Logstash是Elastic Stack(原ELK Stack)的核心組件之一,由Elastic公司開發的開源數據處理管道工具。它能夠動態地從多種數據源采集數據,對數據進行過濾、解析和轉換,最后將標準化后的數據輸出到目標存儲(如Elasticsearch、Kafka等)。
### 核心功能
- **數據采集**:支持文件、數據庫、消息隊列等50+種輸入源
- **數據處理**:豐富的過濾器插件(Grok、Date、Mutate等)
- **數據輸出**:可輸出到Elasticsearch、文件系統、郵件等
- **可擴展性**:支持自定義插件開發
## 二、安裝準備
### 系統要求
- **操作系統**:Linux/Windows/macOS(推薦Linux生產環境)
- **Java環境**:JDK 8或11(建議OpenJDK)
- **硬件配置**:
- 最小2GB內存(生產環境建議4GB+)
- 2CPU核心以上
### 環境檢查
```bash
# 檢查Java版本
java -version
# 輸出示例
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2, mixed mode)
# 導入Elastic GPG密鑰
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# 添加APT倉庫
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
# 安裝Logstash
sudo apt-get update && sudo apt-get install logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.15.2-linux-x86_64.tar.gz
tar -xzf logstash-7.15.2-linux-x86_64.tar.gz
cd logstash-7.15.2
C:\Program Files\LogstashLOGSTASH_HOME=C:\Program Files\Logstash%LOGSTASH_HOME%\bindocker pull docker.elastic.co/logstash/logstash:7.15.2
docker run -it --rm -p 5044:5044 docker.elastic.co/logstash/logstash:7.15.2
/usr/share/logstash/
├── bin/ # 可執行文件
├── config/ # 配置文件
│ ├── logstash.yml # 主配置文件
│ └── pipelines.yml # 管道定義文件
├── data/ # 數據存儲
├── logs/ # 日志文件
└── plugins/ # 插件目錄
創建測試配置文件test.conf:
input {
stdin { }
}
output {
stdout {
codec => rubydebug
}
}
啟動測試:
bin/logstash -f test.conf
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
input {
kafka {
bootstrap_servers => "kafka1:9092,kafka2:9092"
topics => ["web_logs"]
codec => "json"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
geoip {
source => "clientip"
}
}
filter {
mutate {
rename => { "user" => "username" }
convert => { "bytes" => "integer" }
remove_field => ["temp_field"]
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
}
output {
if [type] == "nginx" {
elasticsearch { ... }
} else {
file {
path => "/var/log/logstash/other.log"
}
}
}
# config/pipelines.yml
- pipeline.id: main
pipeline.workers: 4
pipeline.batch.size: 125
queue.type: persisted
queue.max_bytes: 1gb
修改config/jvm.options:
-Xms2g
-Xmx2g
-XX:+UseConcMarkSweepGC
啟用監控API:
curl -X GET "localhost:9600/_node/stats/pipelines?pretty"
# 查看詳細錯誤日志
tail -n 100 /var/log/logstash/logstash-plain.log
# 測試配置文件語法
bin/logstash --config.test_and_exit -f your_config.conf
input插件是否支持多線程bin/logstash --profile生成性能報告pipeline.workers數量# 離線安裝插件
bin/logstash-plugin install --local /path/to/plugin.gem
# 更新所有插件
bin/logstash-plugin update
# config/pipelines.yml
- pipeline.id: nginx
path.config: "/etc/logstash/conf.d/nginx.conf"
- pipeline.id: mysql
path.config: "/etc/logstash/conf.d/mysql.conf"
bin/logstash-plugin generate --type filter --name myfilter --path ~/logstash_plugins
gem build logstash-filter-myfilter.gemspec
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/path/to/cert.pem"
ssl_key => "/path/to/key.pkcs8"
}
}
”`
這篇教程包含了從安裝到進階使用的完整內容,您可以根據實際需求調整配置示例。建議在生產環境中使用前進行充分測試,特別是性能相關參數需要根據硬件配置調整。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。