夜鶯(Nightingale)使用二進位方式部署的步驟和注意事項
如果您尚未閱讀《安裝前置說明》章節,請先閱讀,之後再閱讀本章節。
下載
從 GitHub 下載最新版本,然後你會得到一個類似 n9e-${version}-linux-amd64.tar.gz 的壓縮包。這是 X86 CPU 架構的發佈包,如果你需要 ARM 架構的就下載那個 arm64 的包,沒有提供 Windows 版本的發佈包,因為夜鶯監控是一個伺服器端專案,通常執行在 Linux 系統上。
如果你想在 Windows 和 Mac 上執行夜鶯也是 OK 的,只是需要你自行編譯了,編譯也比較簡單,可以參考專案程式碼倉庫下的 Makefile 檔案內的邏輯。
將下載的壓縮包解壓縮到 /opt/n9e 目錄下。
mkdir /opt/n9e && tar zxvf n9e-${version}-linux-amd64.tar.gz -C /opt/n9e
單節點測試安裝
這種模式下,只是為了測試,既不用相依 MySQL 也不用相依 Redis(實際是使用的 SQLite 和記憶體型 Redis:miniredis),啟動比較簡單,直接解壓後啟動即可。
啟動程序
cd /opt/n9e && nohup ./n9e &> n9e.log &
因為只是測試模式,就直接使用 nohup 啟動了,生產環境肯定是需要使用 systemd 來託管 n9e 程序的。
檢查程序
# check process is runing or not
ss -tlnp|grep 17000
登入
開啟瀏覽器存取 http://localhost:17000。預設使用者名稱是 root,預設密碼是 root.2020。
請把 localhost 替換成你的伺服器 IP 位址。
單節點正式安裝
生產環境中,我們建議使用 MySQL 和 Redis 來儲存資料。
修改設定
修改 /opt/n9e/etc/config.toml 設定檔,配置 MySQL 和 Redis 的連線資訊。
DB 部分:
[DB]
DBType = "mysql"
DSN = "YourUsername:YourPassword@tcp(127.0.0.1:3306)/n9e_v6?charset=utf8mb4&parseTime=True&loc=Local"
Redis 部分:
[Redis]
Address = "127.0.0.1:6379"
Password = "YourRedisPassword"
RedisType = "standalone"
啟動程序
啟動 n9e 二進位即可,夜鶯會自動建立資料庫表。當然,這需要你的 DB 連線帳號具備建立資料庫表、改表的權限。
nohup ./n9e &> n9e.log &
## 檢查程序是否啟動成功
ps -ef | grep n9e
## 檢查連接埠是否正常在監聽
ss -tlnp | grep 17000
nohup 可以快速啟動驗證,有問題查看 n9e.log 日誌檔案。
使用 systemd 管理
生產環境建議使用 systemd 來管理 n9e 程序。下面是一個簡單的 systemd 設定範例:
[Unit]
Description=Nightingale Monitoring Service
After=network.target
[Service]
Type=simple
ExecStart=/opt/n9e/n9e
WorkingDirectory=/opt/n9e
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n9e
[Install]
WantedBy=multi-user.target
將上述內容儲存為 /etc/systemd/system/n9e.service,然後執行以下命令:
## 設定夜鶯程序開機自啟動
sudo systemctl enable n9e
## 啟動夜鶯程序
sudo systemctl start n9e
登入
開啟瀏覽器存取 http://localhost:17000。預設使用者名稱是 root,預設密碼是 root.2020。
請把 localhost 替換成你的伺服器 IP 位址。
叢集模式
在《夜鶯架構設計》中已經講解過叢集模式的邏輯,這裡不再贅述。從部署角度,只需要搞多個機器,每個機器部署一個 n9e 程序,配置好 MySQL 和 Redis 的連線資訊即可。多個 n9e 程序共用同一套 MySQL 和 Redis,所以這多個 n9e 程序的設定檔是完全一樣的。
邊緣模式
邊緣模式的說明請一定先閱讀:夜鶯架構中的邊緣模式說明!!!
邊緣模式要用到 n9e-edge 這個二進位,可以在 n9e-${version}-linux-amd64.tar.gz 壓縮包裡找到。n9e-edge 需要和中心端的 n9e 通訊,同步告警規則,所以 n9e-edge 的設定檔中需要給出中心端 n9e 的連線資訊。
邊緣叢集
邊緣機房的 n9e-edge 也可以部署多個實例組成叢集,同一個叢集內多個 n9e-edge 的設定檔也要保持一致,設定檔中的 EngineName 相同的實例,會被看做一套引擎叢集的多個實例,取一個和中心端 n9e 不一樣的名字。中心端的 n9e 的 EngineName 預設叫 default,邊緣端 n9e-edge 的 EngineName 預設叫 edge。
如果你有多個邊緣機房,需要每個邊緣機房的 n9e-edge 的 EngineName 都不一樣,比如 edge1、edge2 等等。這樣區分之後,才能做到不同的資料來源指定不同的告警引擎。
n9e-edge 啟動
注意 n9e-edge 程序啟動的時候要指定設定目錄,而非指定設定檔,比如:
nohup ./n9e-edge --configs etc/edge &> edge.log &
上面的 etc/edge 就是設定目錄。要是寫成 --configs etc/edge/edge.toml 就不對囉。
常見問題
Q1:啟動後 502 / 看不到頁面?
A:
- n9e-server 程序是否在跑(
ps aux | grep n9e); - 資料庫連線:
mysql -h <db-host> -u<user> -p<password>測試; - 連接埠衝突:預設 17000 連接埠是否被佔用;
- 看日誌
tail -f /var/log/n9e/server.log。
Q2:升級二進位版本?
A:參考 升級指南 文件。基本步驟:停老程序 → 備份 → 替換二進位 → 啟動新版 → 看日誌確認 schema migration 成功。
Q3:能不能用 Docker Compose 部署?
A:可以。社群推薦用 Docker Compose 方式 — 設定檔統一管理,升級回滾方便。