国内用户å?¯ä»¥è®¿é—®gitee镜åƒ?仓库: https://gitee.com/mirrors/Nightingale å?Œæ¥é?žå®žæ—¶ï¼Œæ¯?天一次,ä¸?过速度快
�级说明
v3.x的版本和v2.x差别巨大,没办法平滑è¿?移,å?¯ä»¥ç»§ç»ä½¿ç”¨ v.2.8.0 ,我们之所以决定å?‡çº§åˆ°v3.xï¼Œå…·ä½“åŽŸå› è¯·çœ‹è¿™é‡Œ ,简而言之,我们是希望夜莺é€?æ¸?演化为一个è¿?ç»´å¹³å?°ã€‚如果v2.x用ç?€ä¹Ÿèƒ½æ»¡è¶³éœ€æ±‚,å?¯ä»¥ç»§ç»ç”¨v2.x,毕竟,适å?ˆè‡ªå·±çš„æ‰?是最好的
新版效果
用户资æº?ä¸å¿ƒï¼š
资产管ç?†ä¸å¿ƒï¼š
任务执行ä¸å¿ƒï¼š
监控告è¦ä¸å¿ƒï¼š
安装æ¥éª¤
1�找个干净的CentOS7,准备好mysql�redis�nginx,简�yum安装一下��,生产环境mysql建议找dba帮忙��
yum install -y mariadb* redis nginx2�下载我们编译好的二进制到/home/n9e目录,如果�更�目录,�注�修改nginx.conf,建议先用这个目录,玩熟了�说
mkdir -p /home/n9e
cd /home/n9e
wget http://116.85.64.82/n9e.tar.gz
tar zxvf n9e.tar.gz3ã€?åˆ?始化数æ?®åº“,这里å?‡è®¾ä½¿ç”¨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.sql4ã€?redisé…?置修改,默认é…?置的6379端å?£ï¼Œå¯†ç ?为空,如果默认é…?ç½®ä¸?对,å?¯ä»¥æ‰§è¡Œå¦‚下命令,看到多个é…?置文件里有redis相关é…?置,挨个检查修改下
cd /home/n9e/etc
grep redis -r .5ã€?下载å‰?端é?™æ€?资æº?文件,放到默认的/home/n9e目录下,如果è¦?改目录,需è¦?修改å?Žé?¢æ??到的nginx.conf
cd /home/n9e
wget http://116.85.64.82/pub.tar.gz
tar zxvf pub.tar.gzå‰?端的æº?ç ?å?•独拆了一个repo,地å?€æ˜¯ï¼š https://github.com/n9e/fe 没有和nightingale放一å?—
6�覆盖nginx.conf,建议大家还是看一下这个�置,熟悉一下nginx�置,夜莺��web侧组件就是通过nginx的��location区分的。覆盖完了�置记得reload一下或者��nginx
cp etc/nginx.conf /etc/nginx/nginx.conf7ã€?检查identity.yml,è¦?ä¿?è¯?这个shellå?¯ä»¥æ£å¸¸èŽ·å?–本机ip,如果实在ä¸?能æ£å¸¸èŽ·å?–,自己å?ˆä¸?懂shellä¸?会改,在specifyå—æ®µå†™æ»ä¹Ÿè¡Œ
# 用��心跳,给�务端上报本机ip
ip:
specify: ""
shell: ifconfig `route|grep '^default'|awk '{print $NF}'`|grep inet|awk '{print $2}'|head -n 1
# MONã€?JOB的客户端拿æ?¥å?šæœ¬æœºæ ‡è¯†
ident:
specify: ""
shell: ifconfig `route|grep '^default'|awk '{print $NF}'`|grep inet|awk '{print $2}'|head -n 18ã€?检查agent.ymlçš„å‡ ä¸ªshell,挨个检查是å?¦å?¯ä»¥è·‘通,跑ä¸?通就改æˆ?适å?ˆè‡ªå·±çš„,实在是ä¸?会改,直接写æ»ï¼Œæ¯”如disk部分,写æ»80Gi直接写:disk: echo 80Giå?³å?¯
report:
# ...
sn: dmidecode -s system-serial-number | tail -n 1
fields:
cpu: cat /proc/cpuinfo | grep processor | wc -l
mem: cat /proc/meminfo | grep MemTotal | awk '{printf "%dGi", $2/1024/1024}'
disk: df -m | grep '/dev/' | grep -v '/var/lib' | grep -v tmpfs | awk '{sum += $2};END{printf "%dGi", sum/1024}'9ã€?å?¯åЍå?„个进程,包括mysqlã€?redisã€?nginx,夜莺的å?„个组件直接用control脚本å?¯åЍå?³å?¯ï¼Œå?Žç»ä¸Šç”Ÿäº§çŽ¯å¢ƒï¼Œå?¯ä»¥ç”¨systemd之类的托管
cd /home/n9e
./control start all10ã€?登录web,账å?·root,密ç ?root.2020,进æ?¥ç¬¬ä¸€æ¥ä¸€å®šè¦?修改密ç ?,如果nginx报æ?ƒé™?类的错误,检查selinux是å?¦å…³é—了,如下命令å?¯å…³é—
setenforce 0上é?¢å®‰è£…æ¥éª¤å¦‚果走完了ä»?然没有æ?建起æ?¥ï¼Œä½ å?¯èƒ½éœ€è¦? 使用Docker安装 或者 查看视频教程
å?系统简介
夜莺拆æˆ?了四个å?系统,分别是:用户资æº?ä¸å¿ƒï¼ˆRDB)ã€?资产管ç?†ç³»ç»Ÿï¼ˆAMS)ã€?任务执行ä¸å¿ƒï¼ˆJOB)ã€?监控告è¦ç³»ç»Ÿï¼ˆMON)。下é?¢åˆ†åˆ«ä»‹ç»?ä¸€ä¸‹è¿™å‡ ä¸ªå?系统的设计åˆ?è¡·
用户资æº?ä¸å¿ƒ
这是一个平å?°åº•座,所有的è¿?维系统,都需è¦?ä¾?赖这个,内置用户ã€?æ?ƒé™?ã€?角色ã€?组织ã€?资æº?的管ç?†ã€‚æœ€æ ¸å¿ƒçš„æ˜¯ä¸€æ£µç»„ç»‡èµ„æº?æ ‘ï¼Œæ ‘èŠ‚ç‚¹çš„ç±»åˆ«å’Œæ‰©å±•å—æ®µå?¯ä»¥è‡ªå®šä¹‰ï¼Œç»„织资æº?æ ‘çš„å±‚çº§ç»“æž„æœ€ç®€å?•的组织方å¼?是:租户》项目》模å?—,å¤?æ?‚一点的组织方å¼?:租户》组织》项目》模å?—》集群,组织是å?¯ä»¥åµŒå¥—的。节点上挂两类对象,一个是人员æ?ƒé™?,一个是资æº?,资æº?å?¯ä»¥æ˜¯å?„类资æº?,除了主机设备ã€?网络设备,也å?¯ä»¥æ˜¯rds实例,redis实例,当然,这就需è¦?rdsã€?redis的管控系统和RDB打通了。滴滴在å?šä¸€äº›å¤§çš„ä¸å?Žå?°å•†ä¸šåŒ–解决方案的时候,RDB就是扮演了这么一个底座的角色。
资产管�系统
这里的资产管ç?†ç³»ç»Ÿï¼Œæ˜¯å??硬件资产的管ç?†ï¼Œè¿™ä¸ªç³»ç»Ÿçš„使用者一般是系统部的人,资产管ç?†ç±»äººå‘˜ï¼Œåº”用è¿?维相对ä¸?太关注这个系统。开æº?版本开放了一个主机设备的管ç?†ï¼Œå¤§å®¶å?¯ä»¥äºŒå¼€ï¼Œå¢žåŠ ä¸€äº›ç½‘ç»œè®¾å¤‡ç®¡ç?†ã€?机柜机架ä½?的管ç?†ã€?é…?件耗æ??的管ç?†ç‰ç‰ï¼Œæœ‰äº†åº•座,上é?¢å†?长出一些其他系统都相对容易。agent安装之å?Žï¼Œä¼šè‡ªåŠ¨æ³¨å†Œåˆ°èµ„äº§ç®¡ç?†ç³»ç»Ÿï¼Œè‡ªåŠ¨é‡‡é›†åˆ°æœºå™¨çš„snã€?ipã€?cpuã€?memã€?diskç‰ä¿¡æ?¯ï¼Œè¿™äº›ä¿¡æ?¯ä¸ºäº†ç?µæ´»æ€§è€ƒè™‘,都是用shell采集的,上文“安装æ¥éª¤â€?ä¸€ç« æœ‰æ??åˆ°ï¼Œå…¶ä¸æœ€é‡?è¦?的是ipï¼Œç³»ç»Ÿä¸æœ‰å¾ˆå¤šè®¾å¤‡ï¼Œip是需è¦?全局唯一,其他的snã€?cpuã€?memã€?diskç‰ï¼Œå¦‚æžœæ— æ³•é‡‡é›†æˆ?功,å?¯ä»¥å†™æ»ï¼Œshell里直接写echo一个å?‡æ•°æ?®å?³å?¯ã€‚
æ¯?一æ?¡èµ„äº§ï¼Œéƒ½æœ‰ä¸€ä¸ªç§Ÿæˆ·çš„å—æ®µï¼Œä»£è¡¨èµ„产归属,需è¦?管ç?†å‘˜åŽ»åˆ†é…?资产归属(修改资产的所属租户),å?„个租户æ‰?能使用对应的资产,分é…?完了之å?Žï¼Œä¼šå‡ºçŽ°åœ¨ç”¨æˆ·èµ„æº?ä¸å¿ƒçš„“游离资æº?â€?è?œå?•ä¸ï¼Œå?„个租户就å?¯ä»¥æŠŠæ¸¸ç¦»èµ„æº?æŒ‚åˆ°èµ„äº§æ ‘ä¸ŠåŽ»åˆ†é—¨åˆ«ç±»çš„ç®¡ç?†ä½¿ç”¨ã€‚æ ‘èŠ‚ç‚¹çš„åˆ›å»ºæ˜¯åœ¨æ ‘ä¸Šå?³é”®å“ˆã€‚
任务执行ä¸å¿ƒ
用于批é‡?跑脚本,类似psshã€?ansibleã€?saltstack,ä¸?过ä¸?支æŒ?playbook,大é?“至简,就用脚本撸å?§ï¼Œshellã€?pythonã€?perlã€?ruby,都行,å?ªè¦?机器上有解æž?å™¨ã€‚å› ä¸ºæ˜¯å†…ç½®åˆ°å¤œèŽºé‡Œçš„ï¼Œæ‰€ä»¥ä½“ç³»åŒ–ä¼šæ›´å¥½ä¸€äº›ï¼Œå’Œç»„ç»‡èµ„æº?æ ‘çš„æ?ƒé™?是打通的,å?¯ä»¥æŽ§åˆ¶ä¸?å?Œçš„人对ä¸?å?Œçš„æœºå™¨æœ‰ä¸?å?Œçš„æ?ƒé™?,有些人å?¯ä»¥ç”¨rootè´¦å?·æ‰§è¡Œï¼Œæœ‰äº›äººå?ªèƒ½ç”¨æ™®é€šè´¦å?·æ‰§è¡Œï¼Œåކå?²æ‰§è¡Œè®°å½•都å?¯ä»¥é€šè¿‡web页é?¢æŸ¥çœ‹å®¡è®¡ã€‚任务本身支æŒ?一些控制:暂å?œç‚¹ã€?容å¿?度ã€?å?•机超时时间ã€?ä¸é€”æš‚å?œã€?ä¸é€”å?–消ã€?ä¸é€”Killç‰ã€‚
一些ç»?常è¦?跑的脚本,å?¯ä»¥å?šæˆ?模æ?¿ï¼Œæ¨¡æ?¿æ˜¯å¯¹è„šæœ¬çš„ä¸€ç§?管ç?†æ–¹å¼?,å?Žç»å°±å?¯ä»¥åŸºäºŽæ¨¡æ?¿åˆ›å»ºä»»åŠ¡ï¼Œå¡«ä¸ªæœºå™¨åˆ—è¡¨å°±å?¯ä»¥æ‰§è¡Œã€‚比如安装JDK,调整TCPå†…æ ¸å?‚数,调整ulimitç‰æœºå™¨åˆ?始化脚本,都å?¯ä»¥å?šæˆ?模æ?¿ã€‚
å¼€æº?版本的任务执行ä¸å¿ƒï¼Œå?¯ä»¥çœ‹å?šæ˜¯ä¸€ä¸ªå‘½ä»¤é€šé?“,å?Žç»å?¯ä»¥åŸºäºŽè¿™ä¸ªå‘½ä»¤é€šé?“构建一些场景化应用,比如机器åˆ?始化平å?°ã€?æœ?务å?˜æ›´å?‘布平å?°ã€?é…?置分å?‘系统ç‰ã€‚任务执行ä¸å¿ƒå?„ç±»æ“?作都有API对外暴露,具体å?¯å?‚看:router.go 我å?¸çš„命令通é?“æ¯?周执行任务é‡?超过60ä¸‡ï¼Œå°±æ˜¯å› ä¸ºå?„类上层业务都在ä¾?赖这个命令通é?“的能力。
监控告è¦ç³»ç»Ÿ
è¿™å?—æ ¸å¿ƒé€»è¾‘å’Œv2版本差别ä¸?å¤§ï¼Œç›‘æŽ§æŒ‡æ ‡åˆ†æˆ?äº†è®¾å¤‡ç›¸å…³æŒ‡æ ‡å’Œè®¾å¤‡æ— å…³æŒ‡æ ‡ï¼Œå› ä¸ºæœ‰äº›è‡ªå®šä¹‰ç›‘æŽ§æ•°æ?®çš„场景,endpointä¸?好定义,或者endpointç»?常å?˜åŒ–,这ç§?å°±å?¯ä»¥ä½¿ç”¨è®¾å¤‡æ— å…³æŒ‡æ ‡çš„æ–¹å¼?æ?¥å¤„ç?†ã€‚监控大盘å?šäº†ä¼˜åŒ–,引入了更多类型的图表,但夜莺毕竟是个metrics监控系统,处ç?†çš„æ˜¯æ•°å€¼åž‹æ—¶åº?æ•°æ?®ï¼Œæ‰€ä»¥ï¼Œæœ€æœ‰ç”¨çš„图表其实就是折线图,其他类型图表,看看就好,场景较少。夜莺也å?¯ä»¥å¯¹æŽ¥Grafana,有个专门的DataSourceæ?’件,Grafana会更炫酷一些,å?ªæ˜¯ï¼Œåœ¨æ•°æ?®é‡?大的时候性能较差。
系统架构
监控部分的架构和之å‰?没有差别,collectoræ?‰è¿›äº†ä¸€äº›å‘½ä»¤æ‰§è¡Œçš„能力,所以改了个å??å—å?«agent。引入了三个新组件:rdbã€?amsã€?job,rdb是用户资æº?ä¸å¿ƒï¼Œams是资产管ç?†ç³»ç»Ÿï¼Œjob是任务执行ä¸å¿ƒã€‚agent除了上报监控数æ?®ç»™transfer,还会上报本机信æ?¯ç»™ams,注册本机信æ?¯åˆ°èµ„产管ç?†ç³»ç»Ÿï¼Œå?¦å¤–就是与job模å?—交互,拉å?–è¦?执行的任务,上报任务执行结果。
文档手册
v3版本ä¸?准备å?•独建站了,文档全部使用github wiki: https://github.com/didi/nightingale/wiki 欢迎大家一起完善。å?¦å¤–当å‰?æ£åœ¨å½•制一套夜莺的教å¦è§†é¢‘,å?Žç»ä¼šæ”¾åˆ°å¾®ä¿¡å…¬ä¼—å?·ï¼šops-soldier,欢迎关注获å?–教程
交�互助
对于夜莺的建议或修改,请直接æ??交issue或prã€‚å¦‚æƒ³åŠ å…¥ã€?夜莺网å?‹äº’助交æµ?ç¾¤ã€‘ï¼Œè¯·åŠ å¾®ä¿¡å¥½å?‹ï¼šUlricQinï¼Œæ³¨æ˜ŽåŠ ç¾¤ã€‚
商业版本
夜莺开æº?ç‰ˆæœ¬æ˜¯ä»Žå•†ä¸šç‰ˆæœ¬ä¸æ‘˜å?–的部分功能,商业版本会更强大,滴滴ä¸?æ¢æœ‰è¿?ç»´å¹³å?°çš„商业化解决方案,还有DevOpsã€?IaaSã€?PaaSã€?大数æ?®ã€?安全ç‰å?„类商业化产å“?,如有兴趣欢迎è?”系我们,微信å?·ï¼šUlricQin,注明商业版。




