滴滴夜莺:从监控告警系统向运维平台演化

简述

滴滴夜莺(Nightingale)是一款经过大规模生产环境验证的、分布式高性能的运维监控系统。基于Open-Falcon,结合滴滴内部的最佳实践,在性能、可维护性、易用性方面做了大量的改进,支撑了滴滴内部数十亿监控指标,覆盖了从系统、容器、到应用等各层面的监控需求。

夜莺于2020年3月底开源至今,GitHub Star已突破2000,并且于9月底发布了最新的3.0版本。本次更新夜莺被拆成了四个子系统,分别是:

  1. 用户资源中心(RDB)
    平台底座,所有的运维系统,都需要依赖这个,内置用户、权限、角色、组织、资源的管理。类似于CMDB。
  2. 资产管理系统(AMS)
    偏硬件资产的管理,开源版本开放了一个主机设备的管理。agent安装之后,会自动注册到资产管理系统,自动采集到机器的sn、ip、cpu、mem、disk等信息。
  3. 任务执行中心(JOB)
    用于批量跑脚本,类似pssh、ansible、saltstack,不过不支持playbook。任务本身支持一些控制:暂停点、容忍度、单机超时时间、中途暂停、中途取消、中途Kill等。
  4. 监控告警系统(MON)

从新拆分的系统来看,夜莺已经不简单是一个监控告警系统,而是逐步演变成一个运维平台,这一点也已经在“滴滴夜莺后续发展计划,新功能通告”中确定。通告中也很直接的指出了当前运维所面对的问题:
“运维这个领域,社区里每个细分方向都或多或少有一些开源解决方案了,但是没有行业标准,没法很好的集成在一起,缺少一个平台底座,所以,我们准备来干这个事,把商业版里边的一些偏平台底座的功能开源出来,那后面大家基于这个底座,就可以生长出各式各样的适合自己公司的场景化的应用。”

话不多少,我们来体验下吧。

安装

1、安装基础组件

yum install epel-release
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-3.0.0.tar.gz
tar zxvf n9e-3.0.0.tar.gz

3、初始化数据库,这里假设使用root账号,密码1234,如果不是这个账号密码,注意修改/home/n9e/etc/mysql.yml

systemctl start mariadb
mysql_secure_installation

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 .

systemctl start redis

5、下载前端静态资源文件,放到默认的/home/n9e目录下,如果要改目录,需要修改后面提到的nginx.conf

cd /home/n9e
wget http://116.85.64.82/pub.tar.gz
tar zxvf pub.tar.gz

6、更新nginx.conf并启动

cp etc/nginx.conf /etc/nginx/nginx.conf
# 启动
nginx

7、检查identity.yml,要保证这个shell可以正常获取本机ip

cat /home/n9e/etc/identity.yml
# 用来做心跳,给服务端上报本机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,挨个检查是否可以跑通

cat /home/n9e/etc/agent.yml
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

cd /home/n9e
./control start all

10、登录web,账号root,密码root.2020

# 关闭selinux
setenforce 0
# 访问
http://ip

功能展示

1. 用户资源中心

用户资源中心最核心的是组织资源树,树节点的类别和扩展字段可以自定义。节点上挂两类对象,一个是人员权限,一个是资源。
在这里插入图片描述
主机设备作为默认资源,未挂载前在用户资源中心的游离资源中,挂载后才能被分配到租户的叶子节点下。
在这里插入图片描述
2. 资产管理系统

每一条资产,都有一个租户的字段,代表资产归属,需要管理员去分配资产归属(修改资产的所属租户),各个租户才能使用对应的资产,分配完了之后,会出现在用户资源中心的“游离资源”菜单中,各个租户就可以把游离资源挂到资产树上去分门别类的管理使用

在这里插入图片描述在这里插入图片描述

3. 任务执行中心

可以通过任务执行中心批量执行脚本,通过组织资源树选择不同的租户、服务器列表。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
4.监控告警系统

通过监控大盘进行展示,采集配置默认支持日志、端口、进程、插件等。

在这里插入图片描述

总结

运维虽然可以使用各种开源方案完成大部分工作,但是都无法进行有效的可持续集成,导致各应用平台或系统不但增多,运维的注意力被过度分散。而夜莺的最新版本以标准化的方式整合了CMDB、操作自动化、监控等运维过程中比较重要的部分,可以让运维将更多的精力放在标准化、自动化等更重要的地方。

猜你喜欢

转载自blog.csdn.net/yanggd1987/article/details/109007315