如何使用 Opserver 來監控 Redis

之前參加 twmvc 活動,由阿砮介紹 Stack Overflow open source 的監控專案 - OpServer,不僅是 open source 專案又是 .net MVC 寫的,實在非常有親切感,之前因為專案需要曾經嘗試安裝,最近為團隊安裝時發現又忘得差不多了XD 所以筆記一下

文章大綱

  1. 安裝 Opserver
  2. Opserver 安全性設定
  3. 監控 Redis

安裝 Opserver

  1. clone
  2. 解壓縮檔案
  3. 開啟專案並設定啟始專案

    • 預設為 Opserver.Core

      1error

    • Opserver 專案,按右鍵,選 Set as StartUp Project

      2startup

  4. 編譯 (Build)

Opserver 安全性設定

  • 沒找到 SecuritySettings.config 的錯誤

    3needconfig

  • 加入 SecuritySettings.config

    • Opserver 專案, Config 資料夾下有 SecuritySettings.config.example

      4securityconfig

    • rename SecuritySettings.config.exampleSecuritySettings.config

    • 依需求設定權限(在預設網址後面加上 /about 可以顯示現行安全設定)

      • AD (default)

        <SecuritySettings provider="AD" />

        5AD

      • alladmin

        <SecuritySettings provider="alladmin" />

        6alladmin

      • View All ><SecuritySettings provider="" />

        7viewall

    • 如果不是使用 AD ,畫面需要帳號密碼,請使用 admin/admin

      login

      監控 Redis

8nomonitor

  • 加入 RedisSettings.json

    • Opserver 專案, Config 資料夾下有 RedisSettings.json.example

      9redisconfig

    • rename RedisSettings.json.exampleRedisSettings.json

  • RedisSettings.json 連線資訊有兩種設定方式

    1. 只設定 Servers

      • 外層 name 為 ip or host name
      • 內層 name 為顯示名稱; port 為 redis port 號
      {
        "Servers": [{
                "name": "127.0.0.1",
                "instances": [ { "name": "local", "port": "6379" } ]
              }
          ]
      }
      
    2. allServersServers 搭配

      • allServers instances name 表示顯示名稱;port 為 redis port 號
      • Servers name 填 host ip or name { "allServers": { "name": "test", "instances": [ { "name": "local", "port": "6379" } ] } , "Servers": [{ "name": "127.0.0.1" } ] }
  • connection 邏輯可以參考 \Opserver.Core\Data\Redis\RedisModule.cs

  • 預設值可以參考 \Opserver.Core\Settings\RedisSettings.cs

    • 更新頻率(RefreshIntervalSeconds) 預設 30 秒
    • redis instance 預設 port 6379

20170324 補充:需要密碼連線 (requirepass)

如果 redis 需使用密碼才能連線,請參加以下設定方式 1. 只設定 Servers - 在 Serversinstances object 中加上 password 設定

    ```json
    "Servers": [
        {
          "name": "127.0.0.1",
          "instances": [ { "name": "local", "port": "6379","password":"password" } ]
        }
    ]
    ```
  1. allServersServers 搭配

    • allServersinstances object 中加上 password 設定

      "allServers": {
          "name": "test",
          "instances": [
              {
                  "name": "local",
                  "port": "6379",
                  "password":"password"
              }
          ]
      },
      "Servers": [{ "name": "127.0.0.1" } ]
      

監控結果

  1. 列表頁

    10list

  2. 詳細頁

    11detail

    12detail

心得

設定的工不多,只是文件稍嫌不足,屬性名稱也多有重複,不是很好理解,但整體架設還是很方便

參考資料

  1. Opserver GitHub
  2. OpServer 監控服務的解決方案簡報