定期保養
Log 分析 - 使用 ELK
全程使用 Jenkins 協助分析 Apache/Nginx 日誌 for 定期保養。
基本步驟
準備好 log 的壓縮檔(ZIP) 。
開啟 Jenkins: https://jenkins.moodle.tw or https://ci.moodle.tw 都可以, 找到 Elk22, Elk23 的頁籤。
用 Elk2PVE, 建立1台 Elk, 在 console 最後找到 SSH URI (eg. 右圖中的 192.168.XXX.XXX)。
把 SSH URI 帶入, nginx2Elk (or apache2Elk ) , 並上傳ZIP 檔。
請注意, 上傳ZIP檔需要時間, 在按下 Build 後不要馬上換頁(否則上傳會中斷)。
重要參數(Elk2PVE)
Kibana Version: 請選最新版本(目前 8.10.4)
Locale: 語系(en, 因為中文需要翻譯,不會有最新版本)
doLADP, addMetricbeat: 增加 LDAP 認證, 如果是要做 log 分析不需要選
重要參數(nginx2Elk, apache2Elk)
PROJECTID: 客戶案名(大寫)
logs.zip : Apache/Nginx的log壓縮檔
sshURI: 從 Elk2PVE 拿到的 Kibana 主機 SSH URI (eg. admin@192.168.XXX.XXX)
createUser, addFilebeat: 是否建立新使者/重新安裝 Filebeat
Elastic port/ Kibana port: 預設即可.
3. Log 上傳完成後, 進 console output, 找 *** Nginx to ELK install is done. 會看到有兩個超連結, 點第2個超連結, 就會看到 Dashboard.
Dashboard 畫面
大log檔案
改用 WinSCP 上傳到 Kibana主機, 在 nginx2Elk 指定徑:
先用 Elk2PVE, 建好最新版的 ELK (目前 8.10.4) ⇒ SSHURI
開 WinSCP 上傳 logs 壓縮檔, 並解開. ⇒ log 所在路徑(如圖, /home/admin/logXXX)
在 nginx2ELK 給 SSHURI 及 LogsPATH (跳過檔案上傳)
done.
在 WinSCP 按 Ctrl + P 直接開啟 SSH console/terminal
Q+A
HeatMap缺欄位問題
hour_of_day, day_of_week
Runtime field
原使用 Scripted field 現已經棄用(deparecated), 官方建議用 Runtime Field.
PUT "localhost:5601/s/XXX/api/data_views/data_view/XXX*/runtime_field" -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'
hour_of_day
{
"name": "hour_of_day",
"runtimeField": {
"type": "long",
"script": {
"source": "emit(doc[\u0027\u0040timestamp\u0027].value.getHour())"
}
}
}
day_of_week
{
"name": "day_of_week",
"runtimeField": {
"type": "keyword",
"script": {
"source": "emit(doc[\u0027\u0040timestamp\u0027].value.dayOfWeekEnum.getDisplayName(TextStyle.SHORT, Locale.ROOT))"
}
}
}
資料來源:Log 分析-使用 ELK 簡報