標籤: mis

  • 伺服器轉移的 Check List

    伺服器轉移的 Check List

    伺服器轉移的時機點包括了:

    • 更換系統(e.g. centOS -> Debian)
    • 更換主機商
    • 主機需求迫不得已需要轉移

    各種各樣的問題,而如果不是使用 panel,或是沒有提供/規劃快速轉移的服務的話,這邊列一個轉移前後需要檢查的點,目前以 LEMP 環境,帶一些常用的服務/語言為主:

    1. 有上 git 的檔案
      • 如果不要完整備份,是否有備份 config, uploads, logs, writeable 等 ignore 的檔案?
      • 如果要完整備份,是否有把 .git 檔案包含在其中?
    2. 全部檔案
      • 除了 document root 資料夾之外,有沒有外部/連結/其他服務所使用到的資料夾?
      • Compose 等是否需要重新 build?
    3. 網站設定/環境
      • 程式本身使用到哪些服務/設定: user.ini, .htaccess 等等
      • 其他環境使用到哪些服務/設定:Node.js, python, Memcached, Redis 等等。
    4. GIT 使用的 private key 是否可重複使用,或是需要重新申請。
    5. PHP 使用的版本、擴充套件、啟用的套件、環境設定等。
    6. Nginx 的 vhost 設定,包含 log 路徑位置等;Apache 設定。
    7. SSL 的證書,其他服務可能使用到的憑證等。
    8. DNS 設定是否需要更動。
    9. FTP 的用戶、密碼與路徑(如果有用的話)
    10. Docker 的 image, compose, container 或是 dockerFile 等(如果有的話)
    11. IP 防火牆設定,請注意主機商或主機內都有機會設定。
    12. MySQL/MariaDB 或是其他資料庫服務等備份,請注意用戶權限,建議是備份成為 .sql 檔案,參考備份的 shell Script
    13. Cron 中對於網站的設定,注意除了網址呼叫之外,是否有針對路徑的呼叫?路徑是否有改變。
    14. Linux 的安全設定,包含是否有 ip 限制 SSH 連線、VPS 的設定等等以及驗證。
    15. Email 的設定,如果新的 server 不支援 email 設定的話可能得把這塊移轉到其他伺服器/服務商上面。
    16. 其他服務串接:包含了可能串接對方服務會有 ip 驗證或是作為 server 端, client 呼叫可能會產生的問題(例如設計上直接呼叫 ip)等。

    寫一寫發現有點多,主要還是怕避免落人口舌就越寫越多,肯定是還有遺漏的,畢竟我不是專職做系統工程師的角色,而伺服器鬼故事很多,天知道配合的 SE 是哪方天神。愛惜自己的肝,請從良好的配置習慣開始。

    1. 培養資料管理的態度和原則,一開始分類、整理好,以後採雷少。
    2. 建立一個關於自己技術成長的規則,避免自己被自己搞死
      • 例如我會利用每一台伺服器來做分類,舊的伺服器會遵循同一個資料管理的方法並且適時的更新,等於是對自己的技術作版本管理。
    3. 如果是接別人的 server/code ,除非自己能夠重構或是改好,要不遵守對方的規則為上策。等於是做一個版本的 branch 。
    4. 萬一很複雜(而且沒有管理系統),做文件是好的。
    5. 如果查看修改的頻率不高,做文件是好的。
    6. 最好的管理是給使用者自主管理,讓使用者有意識到那是他的東西,讓他懂得維護的方法。
      • 當然要做好期待管理以及費用的問題。通常使用者就是客戶。

    以上。

  • Linux 上使用 Monit 做監控

    Linux 上使用 Monit 做監控

    Monit 是一個不錯用的監控軟體,可以實作異常警報或是重啟等動作。網路上有滿多教學的,但是可能是名字的關係,google 時常常找到其他東西。這邊記錄一下。

    有幾個注意點:

    1. M/Monit 是另一款延伸的應用程式,需要付費但有更多功能
    2. 常用的功能:
      • monitrc 設定 stmp 和 alert 。提供警報通道。
      • 設定監控閾值和動作(例如要重啟/開/關或是 alert)
    3. 也有一些延伸功能,例如添加網頁存取,可以透過網頁查看。
    4. 最有需要的應該是 loadavg 和 mem, cpu 的警報。
    5. 有個缺點是無法做 server down/up 的警報。
    6. 重啟指令:monit reload
      • 如果 mail 設定成功,會收到一封重啟通知。
      • monitrc 設定中有 log 位置設定,debian 中預設 /var/log/monit.log 有任何問題可以先看 log

    目前我使用大多作為警報收信,應該是還沒遇到不穩定的系統需要實作自動重啟,算是一種成就??

    這裡貼上一個設定範本 + 說明:

    # 檢察系統效能
    check system $HOST
    
    # 主要設定中 daemon 參數設定 60s,2 cyvles 表示 120s
        if loadavg (5min) > 2 for 2 cycles then alert
        if loadavg (15min) > 2 for 2 cycles then alert
    
    # 有些 server 有 2 顆的 cpu 數字會需要設定超過 100%
        if cpu usage > 190% for 2 cycles then alert
        if memory usage > 85% for 1 cycles then alert
        if swap usage > 30% then alert
    
    # 監控網路行為,要注意 interface 在 server 中是哪個?
    check network public with interface ens4
        if failed link then alert
        if changed link then alert
        if saturation > 90% then alert
        if download > 10 MB/s for 10 cycles then alert
    
    # for 5 times within 30 cycles 意思是: 在 30 個循環裡面出現 5 次(滿足條件)的狀況下
        if upload > 20 MB/s for 5 times within 30 cycles then alert
    
    # 監控硬碟空間的行為, data_directory 是辨識用名稱, PATH 後面的路徑是要監控的路徑
    check filesystem data_directory PATH /data/
        if write rate > 50 MB/s for 5 cycles then alert
        if read rate > 50 MB/s for 5 cycles then alert
    # 因為通常 space 不太會降回去,所以設定的 cycles 數字比較大,相對要特別注意警告
        if space usage > 80% for 60 cycles then alert
    
    check filesystem root_directory PATH /
        if write rate > 50 MB/s for 5 cycles then alert
        if read rate > 50 MB/s for 5 cycles then alert
        if space usage > 80% for 60 cycles then alert

    附上實作顯示網頁的畫面截圖:

    同場加映找到的資源,以後可以少找一些吧。

    基於 centos 環境介紹和教學:

    基於 debian/ubuntu 環境這是介紹和教學(滿詳細的):

    這是延伸的監控服務,要付費的,但是功能更強大: