返回

从头开始,再搭个完整的夜莺V6

后端

自我介绍

之前在云上跑了一个夜莺v6的集群,但也想折腾一下,打算在自己的mac电脑上再搭建一个。做这个原因很简单,因为喜欢折腾新技术和开源项目。

本文分享了如何在MAC环境中二进制方式构建夜莺V6,并提供详细的步骤和示例代码。本文适合对夜莺v6感兴趣的开发者和运维人员,以及希望在本地环境中搭建夜莺监控系统的读者。

搭建方案

最近很多在maces的朋友推荐用wrk2来部署夜莺,但是我也没用过,于是花了一下午时间,把Wrk2的思路整理了一下。
关于Wrk2:
在正式部署之前,我还是想再说明一下wrk2,wrk2就是用yaml文件去映射docker的compose,wrk2根据yml文件中的配置,进行一键化的服务创建,能够降低你在使用docker compose 创建服务的过程中的复杂度。

准备工作

首先我们需要本地准备三个服务,web、judge、数据,注意不要再使用其它东西了,另外需要两台数据库,一个是pg的数据库,另外一个redis。
因为为了方便,将夜莺v6的web、judge、数据以及redis服务都放到了一台主机上,postgres装在了另外一台主机上。
web、judge、数据服务占用了三个端口,分别是9000、9001、9002,pg占用端口为8422、redis占用端口为6379。

docker-compose搭建

# 数据服务
version: '3'
services:
  nightingale-tsdb:
    image: xuyunpeng/nightingale-tsdb:latest
    network_mode: host
    environment:
      NG_STORAGE: clickhouse
      NG_TSDB_HTTP_PORT: 9002
    ports:
      - 9002:9002
    depends_on:
      - postgresql
      - redis

#web服务
version: '3'
services:
  nightingale-web:
    image: xuyunpeng/nightingale-web:latest
    network_mode: host
    environment:
      # 点对点的数据推送服务地址
      NG_PUSH_ADDRESS: '127.0.0.1:18888'
      # 无论用哪种方式进行数据的推送,都需要开启Agent的认证功能,这里使用的是HTTP方式
      NG_AGENT_AUTH_ENABLE: 'true'
      # 配置一下数据的上报策略
      NG_METRIC_REPORT_STRATEGY: 'mixed'
      # Web的启动端口
      NG_WEB_LISTEN: '0.0.0.0:9000'
    ports:
      - '9000:9000'
    depends_on:
      - nightingale-tsdb
      - redis

#judge服务
version: '3'
services:
  nightingale-judge:
    image: xuyunpeng/nightingale-judge:latest
    network_mode: host
    environment:
      # 点对点的数据推送服务地址
      NG_PUSH_ADDRESS: '127.0.0.1:18888'
      # Judge的启动端口
      NG_JUDGE_LISTEN: '0.0.0.0:9001'
    ports:
      - '9001:9001'
    depends_on:
      - nightingale-tsdb
      - redis

本地搭建

首先通过wrk2 安装夜莺v6

wrk2 install nightingale_v6
wrk2 start nightingale_v6

接下来安装一下可视化大屏

wrk2 install nightingale_dashboard
wrk2 start nightingale_dashboard

当看到“Started http server on 0.0.0.0:8080”表示安装成功

然后就可以点击前往http://127.0.0.1 进行使用了

总结

首先整个搭建和部署过程还是很快的,整体来看,其实使用wrk2搭建整个夜莺的监控,还是比较方便的。如果你平时使用wrk2的话,再去使用docker compose部署夜莺,可能需要花一点时间来适应和学习,不过一旦习惯以后,还是会非常便利。