二进制方式部署

一步一步手把手教学,讲解如何搭建夜莺服务端各个组件,当前是v3版本,模块较多,等v4的时候,会合并服务端组件,敬请期待

setup01

准备一台系统为 CentOS7.X 的虚拟机或物理机,并安装完成 mysqlredisnginx软件,简单 yum 安装即可,生产环境可寻求运维或DBA同学帮忙部署。

  1. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  2. curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  3. yum install -y mariadb* redis nginx

setup02

下载我们已经编译好的二进制包到 /home/n9e 目录,如果想要更换安装目录,需要修改 nginx.conf,建议先用这个目录,熟悉之后,在进行自定义。

  1. mkdir -p /home/n9e
  2. cd /home/n9e
  3. wget http://116.85.64.82/n9e.tar.gz
  4. tar zxvf n9e.tar.gz

setup03

安装存储

想用 m3db 的,参考 https://github.com/didi/nightingale/wiki/%E9%83%A8%E7%BD%B2_10_v4%E7%89%88%E6%9C%ACm3db%E6%8E%A5%E5%85%A5 想用 n9e-tsdb 的,参考 https://github.com/n9e/n9e-tsdb#readme

setup04

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

  1. cd /home/n9e/sql
  2. mysql -uroot -p1234 < n9e_ams.sql
  3. mysql -uroot -p1234 < n9e_hbs.sql
  4. mysql -uroot -p1234 < n9e_job.sql
  5. mysql -uroot -p1234 < n9e_mon.sql
  6. mysql -uroot -p1234 < n9e_rdb.sql

setup05

redis 配置修改,默认配置的 6379 端口,密码为空,如果默认配置不对,可以执行如下命令,看到多个配置文件里有 redis 相关配置,挨个检查并修改即可。

  1. cd /home/n9e/etc
  2. grep redis -r .

setup06

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

前端的源码单独拆了一个 repo,地址是: https://github.com/n9e/fe 没有和 nightingale 放在一起。

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

setup07

覆盖 nginx.conf,建议大家还是看一下这个配置,熟悉一下 nginx 的配置,夜莺不同 web 侧组件就是通过 nginx 的不同 location 区分的,覆盖完了配置记得 reload 一下或者重启 nginx。

  1. cp etc/nginx.conf /etc/nginx/nginx.conf
  2. systemctl restart nginx

setup08

检查 identity.yml,要保证这个 shell 可以正常获取本机 ip,如果实在不能正常获取,自己又不懂 shell,那么在 specify 字段写固定也可以。

  1. # 用来做心跳,给服务端上报本机ip
  2. ip:
  3. specify: ""
  4. shell: ifconfig `route|grep '^default'|awk '{print $NF}'`|grep inet|awk '{print $2}'|head -n 1
  5. # MON、JOB的客户端拿来做本机标识
  6. ident:
  7. specify: ""
  8. shell: ifconfig `route|grep '^default'|awk '{print $NF}'`|grep inet|awk '{print $2}'|head -n 1

setup09

检查 agent.yml 的几个 shell,挨个检查是否可以跑通,跑不通就改成适合自己环境的,实在不会改,直接写固定,比如 disk 部分,如果固定为 80Gi ,那么就可以写为:disk: echo 80Gi

  1. report:
  2. # ...
  3. sn: dmidecode -s system-serial-number | tail -n 1
  4. fields:
  5. cpu: cat /proc/cpuinfo | grep processor | wc -l
  6. mem: cat /proc/meminfo | grep MemTotal | awk '{printf "%dGi", $2/1024/1024}'
  7. disk: df -m | grep '/dev/' | grep -v '/var/lib' | grep -v tmpfs | awk '{sum += $2};END{printf "%dGi", sum/1024}'

setup10

启动各个进程,包括 mysqlredisnginx,夜莺的各个组件直接用 control 脚本启动即可,后续上生产环境,可以用systemd 之类的进行托管。

  1. cd /home/n9e
  2. ./control start all

setup11

登录 web,账号 root,密码 root.2020,登入后第一步先要修改密码,如果 nginx 报权限类的错误,检查 selinux 是否关闭以及防火墙策略是否异常,如下命令可关闭 selinux 和防火墙。

  1. setenforce 0
  2. sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config
  3. systemctl disable firewalld.service
  4. systemctl stop firewalld.service
  5. systemctl stop NetworkManager
  6. systemctl disable NetworkManager

setup12

如果前10步骤都部署完成但仍然没有搭建起来,你可能需要查看视频教程

最后修改 2021-04-16: Update binary.md (54b536a)