X Tutup
The Wayback Machine - https://web.archive.org/web/20201109213115/https://github.com/didi/nightingale
Skip to content
master
Go to file
Code

Latest commit

* support openID2.0

* generate UUID if it's not set

* add m3db support

* add test shell

* update transfer.yml

* remove klog

* use remote m3 repo

* remove some file
2d1a2fd

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Oct 19, 2020
etc
Nov 9, 2020
Oct 22, 2020
src
Nov 9, 2020
Oct 8, 2020
Apr 7, 2020
Mar 11, 2020
Oct 19, 2020
Oct 29, 2020
Oct 29, 2020
Nov 9, 2020
Nov 9, 2020

README.md

国内用户�以访问gitee镜�仓库: https://gitee.com/cnperl/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 nginx

2�下载我们编译好的二进制到/home/n9e目录,如果�更�目录,�注�修改nginx.conf,建议先用这个目录,玩熟了�说

mkdir -p /home/n9e
cd /home/n9e
wget http://116.85.64.82/n9e.tar.gz
tar zxvf n9e.tar.gz

3��始化数�库,这里�设使用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

4�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.conf

7�检查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 1

8�检查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 all

10�登录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会更炫酷一些,�是,在数��大的时候性能较差。

系统架构

n9e系统架构图

监控部分的架构和之å‰?没有差别,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,注明商业版。

You can’t perform that action at this time.
X Tutup