查詢一次nexus3無法下載raw代理檔案的問題
背景
再利用OWASP Dependency Check 工具做漏洞檢查時需要連線國家的漏洞庫,這裡利用到上篇部落格用到的nexus3代理的漏洞庫,在測試時發現有的漏洞庫檔案可以下載,有的檔案不可以下載,用瀏覽器下載時瀏覽器提示
問題分析
這時候用過nexus3代理的都會知道,如果代理第一次訪問,會去遠端伺服器上下載,最後快取到本地的nexus3伺服器上。在這快取期間,可能會無法下載,那麼問題可能就是在這段時間,但是後來等了3個小時左右,還不可以下載,這時候問題應該就不是那個問題了,這時候去nexus3的伺服器上檢查日誌。發現伺服器上nexus3日誌正常
tail -f $NEXUS_HOME /../sonatype-work/nexus3/log/nexus.log -n 10000
說名問題不在nexus3,這裡,這時候想著分析檢視一下伺服器資源是否正常,先檢視伺服器記憶體使用情況
free -m
通過上圖可以看到伺服器記憶體資源充足,記憶體沒問題,那麼有沒有可能是儲存的問題呢
df -h
通過df -h 檢視後發現伺服器上/目錄下已經使用的100%了,這是問題已經明瞭了,就是沒有硬碟資源導致nexus3無法下載.
解決問題
那麼這時候需要檢視一下是什麼檔案佔用了大量的空間,使用前一篇部落格中提到的技巧最後查詢到是一個nginx的日誌佔用了大量的空間。大概3G左右,還是一個error的日誌?問題是為什麼這個error日誌這麼大。然後通過檢視nginx的配置檔案發現核心配置如下
gzip on;
server {
listen 80;
server_name localhost;
access_log /var/log/nexus_access_log main;
error_log /var/log/nexus_error_log debug_http;
原來是開啟了http的debug模式,導致每次請求都會產生除錯日誌到error的日誌中,OK 到這裡,已經真相大白了。
nginx http除錯日誌格式如下
2018/10/09 17:25:38 [debug] 836#0: *1 http process request header line 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Host: 192.168.30.100" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Connection: keep-alive" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Content-Length: 992" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Origin: http://localhost" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "X-Requested-With: XMLHttpRequest" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "X-Nexus-UI: true" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Accept: */*" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Referer: http://localhost/" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Accept-Encoding: gzip, deflate" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Accept-Language: zh-CN,zh;q=0.9" 2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Cookie: _ga=GA1.4.143565627.1521178533" 2018/10/09 17:25:38 [debug] 836#0: *1 http header done 2018/10/09 17:25:38 [debug] 836#0: *1 generic phase: 0 2018/10/09 17:25:38 [debug] 836#0: *1 rewrite phase: 1 2018/10/09 17:25:38 [debug] 836#0: *1 test location: "/" 2018/10/09 17:25:38 [debug] 836#0: *1 test location: "files/"
nexus3 無法下載raw檔案的原因?
- 伺服器沒有磁碟空間了,為什麼伺服器沒有磁碟空間了?
- 因為nginx的錯誤日誌中有除錯日誌,每次請求伺服器時都會產生大量的請求除錯日誌。
- 而nexus3是有nginx做了個反代處理的,而nginx沒有空間,程序就無法處理請求了
然後這裡直接刪除了錯誤的請求日誌。
rm -rf /var/log/nexus-error-log
刪除後,這時候檔案不在了,用檢視磁碟的命令檢視空間是否恢復,
df -h
竟然空間還是100%,應該是由於nginx的程序還佔用著這裡的檔案控制代碼,重啟nginx試一下
service nginx restart
df -h
重啟之後,ok,可以使用,再用瀏覽器下載檔案,可以下載了
問題解決
結論
對於Linux上的基礎性服務,需要有監控服務,可以有定期處理這些日誌檔案。有預警服務來完善這些事情