ELFK 開源日志平臺實(shí)戰(zhàn)部署之 Logstash
上一篇文章寫了ES集群部署,這篇文章將介紹和部署logstash。
整體實(shí)驗(yàn)框架:

服務(wù)器信息:
IP | 角色 | 內(nèi)存要求 |
10.0.0.41 | kibana+es集群節(jié)點(diǎn)1 | 建議2G或以上 |
10.0.0.42 | es集群節(jié)點(diǎn)2 | 建議2G或以上 |
10.0.0.43 | es集群節(jié)點(diǎn)3+logstash | 建議2G或以上 |
10.0.0.44 | filebeat+被采集日志的服務(wù)器 | 建議1G或以上 |
1. logstash簡介
logstash是一個開源的數(shù)據(jù)采集工具,通過數(shù)據(jù)源采集數(shù)據(jù).然后進(jìn)行過濾,并自定義格式輸出到目的地。
logstash可以采集任何格式的數(shù)據(jù),當(dāng)然我們這里主要是討論采集系統(tǒng)日志,服務(wù)日志等日志類型數(shù)據(jù)。
官方產(chǎn)品介紹:https://www.elastic.co/cn/products/logstash
2. logstash部署
我將logstash安裝在節(jié)點(diǎn)三:10.0.0.43
(1) 安裝jdk環(huán)境
在logstash服務(wù)器上確認(rèn)openjdk安裝,前面已經(jīng)安裝過了,可忽略
[root@elk03 ~]# java -version
openjdk version "11.0.27" 2025-04-15
OpenJDK Runtime Environment BiSheng (build 11.0.27+6)
OpenJDK 64-Bit Server VM BiSheng (build 11.0.27+6, mixed mode, sharing)(2) 安裝logstash
在logstash服務(wù)器上傳并使用rpm安裝logstash**
[root@elk03 ~]# rpm -ivh logstash-8.18.2-x86_64.rpm(3) 修改配置
修改logstash主配置文件,主要是數(shù)據(jù)和日志目錄
[root@elk03 ~]# grep -Ev "^$|^#" /etc/logstash/logstash.yml
path.data: /var/lib/logstash
path.logs: /var/log/logstash(4) 對啟動命令做軟鏈接
[root@elk03 ~]# ln -s /usr/share/logstash/bin/logstash /bin/logstash因?yàn)閱用畈辉?PATH環(huán)境變量中,所以做軟件到/bin/下方便直接使用
5. logstash測試
(1) 編寫測試配置文件
[root@elk03 ~]# vim /etc/logstash/conf.d/test.conf
input {
stdin {}
}
filter {
mutate {
add_field => { "source" => "logstash-manual-test" }
}
}
output {
elasticsearch {
hosts => ["http://10.0.0.41:9200"]
index => "logstash-test-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}配置說明:
- input{}與output{}必寫, filter{}可以不寫
- input中的stdin{}為眾多input插件中的一個,表示從標(biāo)準(zhǔn)輸入(也就是鍵盤輸入)收集數(shù)據(jù)
- output中的stdout{}為眾多output插件中的一個,表示收集的數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出(也就是當(dāng)前終端)
(2) 啟動
[root@elk03 ~]# logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/test.conf參數(shù)說明:
- --path.settings 指定主配置文件目錄,不指定會有警告信息
- -f 指定收集數(shù)據(jù)配置文件
- 此命令啟動較慢,需要半分鐘左右。最后一句信息看到Successfully表示啟動成功
- 此命令沒有加后臺符號,會占用終端
(3) 測試結(jié)果

說明:
- 輸入任何信息都會成為message字段的值,并在當(dāng)前終端顯示
- @timestamp,host,@version為默認(rèn)添加的字段
(4) 關(guān)閉
測試完后,關(guān)閉。方法以下2種任選:
- ctrl+c 因?yàn)檎加媒K端啟動,直接ctrl+c就可以關(guān)閉進(jìn)程
- ps -ef |grep java查找進(jìn)程pid,然后kill殺死進(jìn)程
3. logstash采集日志
(1) 編寫收集日志配置文件
這里以/var/log/messages日志為例,只定義input輸入和output輸出,不考慮過濾
[root@elk03 ~]# vim /etc/logstash/conf.d/test2.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["10.0.0.41:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}說明:
- file是眾多input插件中的一個,用于收集本地日志文件
- path指定收集的日志路徑
- start_position => "beginning"表示從日志最開頭收集,默認(rèn)是從最后收集
- elasticsearch是眾多output插件中的一個,用于將收集的數(shù)據(jù)輸出給elasticsearch
- hosts => ["10.0.0.41:9200"] 也可以指定多個es節(jié)點(diǎn)IP
- index指定收集后的索引名稱,+YYYY.MM.dd是日期,每天都會隨著時(shí)間變化而變化
(2) 啟動測試
[root@elk03 ~]# logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/test2.conf &使用&符號方便啟動后可以繼續(xù)使用命令驗(yàn)證.
(3) 驗(yàn)證索引
查看日志文件條數(shù):
[root@elk03 ~]# wc -l /var/log/messages
17056 /var/log/messages(4) 查看es是否有日志
http://10.0.0.41:9200/_cat/indices?v
可以看到統(tǒng)計(jì)/var/log/messages的行數(shù)和es查看到的行數(shù)是一樣的,說明已經(jīng)采集到了日志。
(5) 拓展驗(yàn)證
- 索引里的docs數(shù)量會隨著日志增加而增加
- 即使關(guān)閉logstash進(jìn)程,日志有變化,再啟動logstash進(jìn)程也會把日志的更新都收集到ES。
4. logstash采集多日志源
[root@logstash ~]# vim /etc/logstash/conf.d/test.conf
input {
file {
path => "/var/log/messages"
start_position => "beginning"
type => "messages"
}
file {
path => "/var/log/yum.log"
start_position => "beginning"
type => "yum"
}
}
filter {
}
output {
if [type] == "messages" {
elasticsearch {
hosts => ["10.0.0.42:9200","10.0.0.41:9200","10.0.0.43:9200"]
index => "logstash-%{+YYYY-MM-dd}"
}
}
if [type] == "yum" {
elasticsearch {
hosts => ["10.0.0.42:9200","10.0.0.41:9200","10.0.0.43:9200"]
index => "logstash-yum-%{+YYYY-MM-dd}"
}
}
}說明:
- 收集messages日志, 索引名為logstash-%{+YYYY-MM-dd}
- 收集yum日志,索引名為logstash-yum-%{+YYYY-MM-dd}
- /var/log/yum.log為空,是不會產(chǎn)生索引的??梢允褂脃um install XXX安裝軟件使yum日志產(chǎn)生記錄
5. logstash啟停操作
# 啟動并設(shè)置開機(jī)自啟動
systemctl enable --now logstash
# 停止
systemctl stop logstash
# 重啟
systemctl restart logstash本篇將logstash作為采集,后續(xù)會用filebeat作為采集,logstash只做過濾。下一篇將講解kibana部署和使用,敬請關(guān)注!























