搜尋此網誌

2012年7月19日 星期四

[工具介紹] Splunk + Google Maps,讓你輕鬆掌握事件的來源。


logo_splunk_black_mini在前幾篇的分享當中,我們陸續利用了 Splunk 來即時呈現與分析系統登入與封鎖 (fail2ban) 的相關資訊。雖然這些資訊可以幫助我們快速掌握環境的狀況,但是仍有一些不足的地方。其中一個令人困擾的地方,就是很多事件發生的地點都是以 IP 位址來呈現,例如被封鎖的 IP 位址。在大多時候,看到 125.64.43.102 這樣的數據對我們來說並沒有太大的意義,而其中一種常見的轉換呈現方式,就是列出這個 IP 位址的所在地。
Splunk 可以透過應用程式的擴充來達到轉換 IP 位址為實體位置的功能,其中一個是 Google Maps 這個應用程式。在今天的分享中,我們就來按部就班將 fail2ban 的被封鎖 IP 位址資訊轉換成實體位置,並整合至我們之前建立的儀表板之中。
在開始今天的操作之前,我們至少必須有一個完整運作的 Indexer,並能夠蒐集 fail2ban 的相關訊息。如果你還沒有這樣的環境,請先參考這篇文章吧。
接下來同樣讓我們一步步完成今天的目標囉:
  1. 進入應用程式管理介面。
    "管理員" –> "應用程式" –> "應用程式"。4001
  2. 瀏覽線上應用程式。
    點選 "線上尋找更多應用程式"。4002
  3. 安裝 Google Maps 應用程式。
    找到 Google Maps 應用程式後點選 "安裝 Free 版本"。4003
  4. 開始安裝。
    點選 "安裝"。
    4004
  5. 等待安裝完畢。
     
    4005
  6. 重新啟動。
    安裝成功後必須重新啟動 Splunk 才能正常使用 Google Maps,點選 "重新啟動 Splunk"。4006
  7. 確認啟動。
    點選 "確定"。
    4007
  8. 等待重新啟動完成。
    4008
  9. 完成重新啟動。
    點選 "確定"。
    4009
  10. 重新登入 Splunk。
    輸入帳號/密碼後,點選 "登入"。4010
  11. 搜尋資料。
    "應用程式" –> "Search"。4011
  12. 測試 Google Maps 於搜尋功能下的作用。
    輸入搜尋指令
    sourcetype=fail2ban Ban | rex field=_raw "Ban (?<client_ip>.*)" | stats count BY client_ip | geoip client_ip
    眼尖的讀者可以發現我們將之前出現過的指令加上了 | geoip client_ip 這個命令。
    透過這個命令的作用,此時顯示結果多了許多關於地理位置的資訊,包含國家、城市、經緯度等等。
    4012
  13. Google Maps 應用程式。
    Google Maps 本身就是一個圖型化的應用,與 Splunk 的整合當然也不是僅僅多了一些文字描述而已。Google Maps 應用程式提供了圖型化的呈現方式。
    選取 "應用程式" –> "Google Maps"。
    4013
  14. 圖型化顯示。
    我們輸入與之前相同的指令
    sourcetype=fail2ban Ban | rex field=_raw "Ban (?<client_ip>.*)" | stats count BY client_ip | geoip client_ip
    此時呈現的方式變成了 Google Maps,圖中的圓圈與數字分別代表 client_ip 的所在地與數量。
    4014
  15. 整合 Google Maps 至儀表板中。
    前面針對 Google Maps 的操作雖然簡單易用,但是如果能夠整合至我們之前所建立的儀表板之中,就可以讓我們進一步加強對環境狀態的掌握。因此我們先回到搜尋介面。
    選取 "應用程式" –> "Search"。
    4015
  16. 選取我們之前建立的儀表板。
    我之前建立的儀表板名稱為 "fail2ban 歷史統計",此時需點選
    "儀表板和檢視" –> "fail2ban 歷史統計"。
    4016
  17. 顯示儀表板的 XML 設定代碼。
    想要將 Google Maps 加入儀表板之中,必須使用被稱為 Advanced XML 的設定方式,採用預設的設定方式是無法支援 Google Maps 的。雖然使用 Advanced XML 的設定方式可以讓我們引用更多方便的功能,但是卻也失去了圖型化設定的能力,所有的設定都必須透過直接修改 XML 來達成。而且這樣的轉換是單方向的,也就是我們無法從 Advanced XML 設定方式轉回一般的設定方式。 
    在儀表板網址的後方加上 ?showsource=1 ,其中最後的輸入方塊 XML source 就是我們所需要的資訊。將文字區塊內的 XML 字串複製出來。
    4017
  18. 回到儀表板並開始設定。
    將儀表板網址後面的 ?showsource=1 拿掉,我們回到原先的儀表板畫面。
    選取"編輯" –> "開"。
    4018
  19. 直接編輯 XML 檔。
    點選 "編輯 XML"。
    4019
  20. 這是預設的 XML 設定方式。
    4020
  21. 貼上 XML 字串。
    將剛剛複製好的 XML 字串原封不動的貼至輸入方塊當中,並覆蓋掉原先的 XML 字串。
    4021
  22. 貼上 Google Maps 的 XML 設定字串。
    在倒數第二行插上下列 XML 設定字串
      <module name="HiddenSearch" layoutPanel="panel_row5_col1" autoRun="true">       
        <param name="search">sourcetype=fail2ban Ban | rex field=_raw "Ban (?&lt;client_ip&gt;.*)" | stats count BY client_ip | geoip client_ip</param>       
        <param name="earliest">0</param>       
        <module name="GoogleMaps">       
        <param name="height">500px</param>       
        <param name="mapType">roadmap</param>       
        <param name="scrollwheel">on</param>       
        </module>       
      </module>
    輸入完成後點選 "儲存"。
    前述的 XML 設定字串有兩個需要特別注意的地方,其中 layoutPanel="panel_row5_col1" 的 5 與 1 分別代表第 5 列與第 1 行。你可以透過修改這個參數來調整 Google Maps 的所在位置。另外一個需要注意的地方是 search 這個參數其實就是我們之前所使用的查詢指令,不過 < 與 > 被分別用 &lt; 與 &tg; 所取代了,原因是 < 與 > 對 XML 來說是特殊字元,因此無法直接使用。
    4022
  23. 儀表板與 Google Maps 的結合。
    我們可以清楚看到儀表板之中出現了 Google Maps 的資訊,上面呈現了各個地區被封鎖 IP 的數量。
    4023
  24. 發揮你的想像力。
    Google Maps 的應用當然不僅於此,一切都將取決於你的應用與想像力。例如我將之前設定的系統即時登入資訊與 Google Maps 做一結合,只要有任何登入系統的行為發生,我就可以馬上知道登入來自何方。這樣的資訊是不是更加清楚,看起來也更專業了呢?
    4024

About