解決 Clickhouse 無限膨脹的 Log

前言

在剛建置完 Clickhouse 並開始上手使用後,我便開始享受這極其快速的資料庫。由於我照過往的經驗確定資料不會超過 20 GB,所以虛擬機設定 30 GB 給他。

我發現我的硬碟容量在 2 天內就爆開了,正當我毫無頭緒,不知道為什麼的時候,注意到了我的 /var/log/clickhouse-server 資料夾底下正發生災難。

001.jpg

哇靠,stderr.log 及他的快樂夥伴們直接在這開趴,在這個資料夾底下產出了 18 GB 的 Log。

產生 Log 不是不好,他可以用於除錯。但太多的 Log 也沒意義,因此這篇文章就是要來講如何限制這些 Log 的產生。

clickhouse-server.log

這個 clickhouse-server.log 應該就是最標準紀錄操作過程的 Log,他預設產生 Log 的方式無法無天,我們必須治治他。

在資料夾 /etc/clickhouse-server/config.d 底下,有一個 logger.xml 檔案,我們編輯他,依照你的需求更改。size 裡面放的就是允許單個檔案的大小,而 count 則是允許產生多少檔案。

<clickhouse>
    <logger>
        <log>/var/log/clickhouse-server/clickhouse-server.log</log>
        <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
        <size>10M</size>
        <count>5</count>
    </logger>
</clickhouse>

完成後記得使用 clickhouse restart 來重啟 Clickhouse,再次探索這個資料夾,你會發現 clickhouse-server.log 照你預期的產生囉。

002.jpg

stderr.log

這個 stderr.log 就是紀錄發生錯誤的內容,但我不確定這個方法正不正確。應該說,在設定完上面的 clickhouse-server.log 後,他就不再肥大了。

不過我還是把我有操作過的方法記錄在這裡,以供參考。

進入 /etc/clickhouse-server/config.d 資料夾底下,新增一個名為 z_log_disable.xml 的檔案。

cd /etc/clickhouse-server/config.d && sudo vim z_log_disable.xml

貼上以下內容:

<?xml version="1.0"?>
<clickhouse>
    <asynchronous_metric_log remove="1"/>
    <metric_log remove="1"/>
    <query_thread_log remove="1" />  
    <query_log remove="1" />
    <query_views_log remove="1" />
    <part_log remove="1"/>
    <session_log remove="1"/>
    <text_log remove="1" />
    <trace_log remove="1"/>
    <crash_log remove="1"/>
    <opentelemetry_span_log remove="1"/>
    <zookeeper_log remove="1"/>
</clickhouse>

完成後完成後使用 clickhouse restart 來重啟 Clickhouse,此舉會將大部分的 Log 關閉,所以你可以依照你的需求做一些改變。