Logstash 的安裝設定與日誌的轉送
在 Ansible Automation Controller 可以將日誌發送到其他的日誌聚合主機上,目前支援的日誌類型有
- Logstash
- splunk
- loggly
- sumologic
- other
這篇主要是說明 Logstash 該如何設置。
假設
這篇文章假設你已經架設好 ElasticSearch ,而且使用的是 RHEL8。
安裝 Logstash
首先是安裝 logstash,logstash 的安裝很簡單,新增 /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
輸入以下指令安裝 logstash
sudo yum install -y logstash
預設的 elasticsearch plugin 有版本匹配問題,需要改用 logstash-output-opensearch plugin
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
新增 /etc/logstash/conf.d/pipeline.conf
input {
tcp {
port => 5044
codec => line
}
}
filter {
json {
source => "message"
}
}
output {
opensearch {
hosts => ["http://<elasticsearch_server>:9200"]
index => "aap-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
stdout {}
}
設定說明如下
- log 轉發的這類服務,都是以 pipeline 形式來設定,所以會有 input -> filter -> output
- input 使用 TCP,並 listen 5044;codec 可以選 line 或 json,automation controller 送出的格式是 line。
- filter 使用 json 來解析 message 這個欄位,因為 message 這欄位裡是 json 格式的字串。
- output 輸出到 opensearch,index 指定為 aap-<日期> ;在 Kibana 裡建立索引時,就是使用 aap-* 來作為 pattern
設定完成後,啟用服務
systemctl enable --now logstash
啟動後要等一下,因為要啟動 JVM 來執行 JRuby,這段時間可以使用 journalctl 來檢查輸出
journalctl -u logstash -f
Automation controller 的設置
完成 Logstash 安裝與啟用以後,到 Automation Controller 裡,從左邊選「設置」,右邊選「日誌」,點選「編輯」
- 日誌紀錄聚合器,填入主機名稱或是 IP
- 日誌紀錄聚合器端口,填入 5044 ,這個 port 號碼就是前面 logstash 設定 input 裡所指定的。
- 日誌紀錄聚合器類型,選擇 Logstash
- 日誌紀錄聚合器協議,選擇 TCP
設定好以後,存檔,這樣就大功告成了。