大家好,經過2個月的開發,夜莺v4來了,歡迎大家試用。本文為大家介紹一下開發v4的背景、最新子產品組成、更新建議,同時示範一下單機快速部署的方式。如果朋友是第一次嘗試夜莺,可以按照後面講解的部署方式來搞,5分鐘搞定。
演進背景
v3版本融入了很多運維平台的功能,元件變多,部署麻煩,不同的元件互相之間有調用關系,在做分布式部署的時候需要了解整體架構才能正确修改配置檔案,對使用者提出了較高的要求。很多issue和群裡的讨論,都反映出了這個複雜性問題。
我們希望降低這個複雜度,是以,把衆多服務端子產品做了合并。這樣原來元件之間的調用都變成了程序内部的方法調用,可靠性性能都會提升。
新的架構
子產品合并之後,把時序存儲抽離,總共隻剩3個元件:server、prober、agentd。
服務端就是部署server子產品,如果要叢集部署,就搞2個機器,每個機器分别部署server子產品即可。每個server會使用本機的redis,是以,有幾個server就部署幾個redis,redis隻需監聽在127.0.0.1,供本機的server使用即可。
prober是個中心式探針,比如貴司有2個網絡區域,每個網絡區域可以部署一個prober,用此prober采集監控本區域的資料庫中間件。如果擔心prober挂掉,每個區域可以部署多個prober做高可用。不同網絡區域的prober,有個配置要注意,即:report.region字段,比如有bj和gz兩個網絡區域,每個網絡區域分别部署了2台prober,bj的2台prober,report.region要設定為bj,gz的2台prober,report.region要設定為gz。最後,在server.yml裡修改monapi.region字段,配上bj和gz。
如果網絡是可以互聯互通的,那就簡單了,prober和server混部即可,都放到中心。
agentd是部署到所有目标機器的,采集目标機器的性能名額,在目标機器執行插件之類的,v4版本的agentd與server之間通信隻走了server的rpc端口,是以相比v3,開通網絡acl要變簡單了。
更新建議
如果v2、v3已經玩得很溜了,并且滿足貴司的需求,就不建議更新了。當然,如果新版本有些功能特别想要,那就隻能更新了。
如果時序庫是使用的tsdb+index這個方案,tsdb程序不用動,可以複用v3的,但是index需要更新。tsdb+index這倆子產品的代碼抽取到了github.com/n9e/n9e-tsdb中了,編譯方法和二進制最新位址都可以在這個repo的README中找到。
server.yml預設使用m3作為存儲後端,是以,如果使用tsdb+index的方案,需要修改server.yml,把DataSource改成使用tsdb。
不過我個人建議大家嘗試一下m3db,容災、擴容都做的很友善。
快速部署
這裡我帶着大家部署一個單機版本的夜莺v4,請大家提前準備好mysql、redis、nginx,單機部署,直接yum安裝即可,非常簡便。請找一台幹淨的機器測試!
1、下載下傳二進制
mkdir -p /home/n9e
cd /home/n9e
wget http://116.85.64.82/n9e-4.0.1.tar.gz
tar zxvf n9e-4.0.1.tar.gz
2、初始化資料庫,這裡假設使用 root 賬号,密碼為 1234,如果不是這個賬号密碼,需要修改 /home/n9e/etc/mysql.yml
cd /home/n9e/sql
mysql -uroot -p1234 < n9e_ams.sql
mysql -uroot -p1234 < n9e_hbs.sql
mysql -uroot -p1234 < n9e_job.sql
mysql -uroot -p1234 < n9e_mon.sql
mysql -uroot -p1234 < n9e_rdb.sql
3、redis請不要配置密碼, 如果redis設定了密碼,需要修改/home/n9e/etc/server.yml,把密碼改對
4、下載下傳前端靜态資源檔案,放到/home/n9e下,請不要随意更換目錄結構,否則還要自行修改nginx.conf,徒增煩惱
cd /home/n9e
wget http://116.85.64.82/pub-3.5.2.tar.gz
tar zxvf pub-3.5.2.tar.gz
5、覆寫nginx.conf。如果靜态資源檔案不是放到/home/n9e下的,就要先修改nginx.conf了
cp etc/nginx.conf /etc/nginx/nginx.conf
systemctl restart nginx
6、時序資料存儲部署,這裡選擇使用單機版本的m3db
mkdir -p /home/m3db
cd /home/m3db
wget https://s3-gz01.didistatic.com/n9e-pub/tarball/m3dbnode-single-v0.0.1.tar.gz
tar zxvf m3dbnode-single-v0.0.1.tar.gz
cd m3dbnode-single
./scripts/install.sh
# 使用下面的curl初始化M3DB,這一步千萬不能少!!!
# retentionTime 表示曆史監控資料存儲時長,使用m3一般建議最長不要超過3個月
curl -X POST http://localhost:7201/api/v1/database/create -d '{
"type": "local",
"namespaceName": "default",
"retentionTime": "48h"
}'
7、最後一步,啟動相關程序。即可通路nginx看效果了
cd /home/n9e
./control start server
./control start prober
./control start agentd
# 其中server如果正常啟動,會監聽在8000和8001兩個端口上,檢視端口是否在監聽可以用下面的指令
ss -tlnp|grep n9e-server
# 正常應該展示下面的輸出
LISTEN 0 128 :::8000 :::* users:(("n9e-server",pid=32234,fd=59))
LISTEN 0 128 :::8001 :::* users:(("n9e-server",pid=32234,fd=58))
預設使用者是root,密碼是root.2020
系統截圖:

8、可能的問題
系統安裝好了,也能看到名額,但是點選名額看不到圖
很可能是系統時間沒有校準,與本地PC時間不一緻
server子產品程序雖然在,但是server的兩個端口都沒有在監聽