本文是自行翻譯自 Graylog 官方文件再加上自己操作的一些畫面。
Graylog 版本是 v.3.3.2。
Index Sets
剛開始接觸 Graylog 的人,可以去看 Index model 的文件以全面性的了解 Graylog 中 index set 的功能。
每個 stream 都被分配到一個 index set,該 index set 控制 messages 是如何被分類到該 stream 中然後儲存到 Elasticsearch 中。在網頁介面上的 stream 總覽顯示每個 stream 的 index set。
當創建一個 stream 的時候,可以分配 Index set 到該 stream 中,在編輯 stream 設定的時候也可以修改配置的 index set。
註: Graylog 不會自動複製 messages 到新的 Elasticsearch index 中,如果另外一個 index set 被分配到該 stream。
預設上,Graylog 會將每個 message 都歸類到「All messages」stream 中,除非 message 從這個 stream 中被移除(使用 pipeline rule,參考文件 Processing Pipelines 的部分),或者是 stream 的設定有勾選「Remove matches from ‘All messages’ stream」。
如果 messages 應該要被儲存在別的、有著不同設定的 index 而不是預設的 Default index set,那麼後者很方便好用。舉例來說,web server access logs 應該只被保存四週,然而其他的 messages 應該被保存一年。
儲存的需求
Graylog 把 messages 寫入 Elasticsearch 一次到每個 index set 中。這表示如果所有 streams 都用預設的「Default index set」,每個 message 只會被寫入 Elasticsearch 一次,不管該 message 被歸類在多少 streams 中。這可以想成是一種防止重複的機制。
如果有些 streams 使用其他的 index sets 然後沒有使用「Remove matches from ‘All messages’ stream」設定,messages 會被寫入 Elasticsearch 至少兩次,一次到預設的 Default index set,一次到指定的 index set。這表示相同的 message 會被儲存在兩個甚至更多個 Elasticsearch index 中,然後有著不同的 index 設定。
除非你明確的希望重複的儲存相同的 messages 在不同的 Elasticsearch index 中,否則就把 Default index set 分配給相對應的 stream,或是啟用「Remove matches from ‘All messages’ stream」設定給相對應的 stream。
以上是文件的部分。實作的部分則是先到「Indices & Index Sets」頁面(位於選單 System / Indices),按下右上角「Create index set」按鈕創建一個新的 index set。
在「Create Index Set」頁面,輸入 Title、Description、Index prefix,其他的設定都用預設的,然後按「Save」按鈕。例如隨便輸入「test」來做測試。
建立好了之後可以在「Indices & Index Sets」頁面看到新建立的「Test index」:
在 Elasticsearch 中也有看到新增一個名為「text_0」的 index,但內容為空。
回到「Streams」頁面,編輯之前用來測試所新增的「All error messages」stream,把 Index Set 改成剛剛建立的「Test index」,把「Remove matches from ‘All messages’ stream」勾選起來,按「Save」儲存。
過了一小段時間之後,就可以看到 Elasticsearch 中的「test_0」index 有一些資料了!而且在「Streams」頁面點選「All error messages」stream 也可以直接看到有 messages 在這個 stream 中了!
結束!!