1、夜莺监控简介
夜莺监控(Nightingale)是一款国产的开源云原生监控系统,它将数据采集、可视化、监控告警、数据分析等多个功能集成于一体,旨在提供一个开箱即用、功能完整的企业级监控解决方案。
2、技术架构与工作流程
夜莺在架构上设计灵活,可以看作一个统一的管理中枢,负责处理告警规则、数据查看和配置管理,而具体的数据采集和存储则可以对接生态中各种成熟的开源组件。
数据采集:支持多种采集器(Agent),如 Categraf(官方推荐)、Telegraf、Grafana-Agent等,它们负责收集监控数据并推送给夜莺服务端。
数据处理与告警:服务端模块接收数据后,可将其写入后端多种时序数据库(如Prometheus、VictoriaMetrics等),并同步执行配置好的告警规则判断。
数据展示与管理:提供统一的Web界面,用于配置告警规则、查看监控仪表盘、管理用户权限等,降低了多系统协同使用的复杂度。
3、功能特性
强大的告警管理:这是夜莺的核心优势。它提供了可视化的告警规则配置界面,改变了传统Prometheus需要修改配置文件的方式,便于团队协作。此外,还支持告警屏蔽、分级收敛(避免告警风暴)、多渠道通知以及通过脚本实现告警自愈等高级功能。
开箱即用的体验:产品内置了针对操作系统、MySQL、Redis等常见组件的监控仪表盘和告警规则模板,导入即可快速使用,大幅降低了初始建设成本。
灵活的部署与扩展:既支持简单的单机Docker快速部署,也支持为应对海量监控指标(数亿时间线)而进行的集群化水平扩展。独特的"中心-边缘"架构还能很好地支持多机房、混合云等复杂网络环境的统一监控管理。
4、主要适用场景
从零搭建监控平台:希望快速获得一个功能完备、易于管理的监控系统。
替代或升级现有监控组合:觉得维护Prometheus、AlertManager、Grafana等多个独立组件过于繁琐和割裂。
应对复杂部署环境:需要统一监控管理多个网络隔离的机房或混合云资源。
需要强化告警管理:团队规模扩大,需要通过更直观的UI和精细化的规则进行告警协同管理
5、拉取categraf镜像
bash
```bash
docker pull mysql:8
docker pull redis:latest
docker pull victoriametrics/victoria-metrics:v1.79.12
docker pull flashcatcloud/nightingale:latest
docker pull flashcatcloud/categraf:latest
6、下载源码包
bash
cd /data
wget https://github.com/ccfos/nightingale/archive/refs/tags/v8.0.0-beta.10.tar.gz
7、编辑docker-compose.yaml文件
bash
tar -zxvf v8.0.0-beta.10.tar.gz
mv nightingale-8.0.0-beta.10 nightingale
cat /data/nightingale/docker/compose-bridge/docker-compose.yaml
networks:
nightingale:
driver: bridge
services:
mysql:
image: "mysql:8"
container_name: mysql
hostname: mysql
restart: always
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 1234
volumes:
- ./mysqldata:/var/lib/mysql/
- ../initsql:/docker-entrypoint-initdb.d/
- ./etc-mysql/my.cnf:/etc/my.cnf
networks:
- nightingale
ports:
- "3306:3306"
redis:
image: "redis:latest"
container_name: redis
hostname: redis
restart: always
environment:
TZ: Asia/Shanghai
networks:
- nightingale
ports:
- "6379:6379"
victoriametrics:
image: victoriametrics/victoria-metrics:v1.79.12
container_name: victoriametrics
hostname: victoriametrics
restart: always
environment:
TZ: Asia/Shanghai
ports:
- "8428:8428"
networks:
- nightingale
command:
- "--loggerTimezone=Asia/Shanghai"
nightingale:
image: flashcatcloud/nightingale:latest
container_name: nightingale
hostname: nightingale
restart: always
environment:
GIN_MODE: release
TZ: Asia/Shanghai
WAIT_HOSTS: mysql:3306, redis:6379
volumes:
- ./etc-nightingale:/app/etc
networks:
- nightingale
ports:
- "17000:17000"
- "20090:20090"
depends_on:
- mysql
- redis
- victoriametrics
command: >
sh -c "/app/n9e"
categraf:
image: "flashcatcloud/categraf:latest"
container_name: "categraf"
hostname: "categraf01"
restart: always
environment:
TZ: Asia/Shanghai
HOST_PROC: /hostfs/proc
HOST_SYS: /hostfs/sys
HOST_MOUNT_PREFIX: /hostfs
WAIT_HOSTS: nightingale:17000, nightingale:20090
volumes:
- ./etc-categraf:/etc/categraf/conf
- /:/hostfs
networks:
- nightingale
depends_on:
- nightingale
8、启动categraf容器
bash
cd /data/nightingale/docker/compose-bridge
docker-compose up -d
docker-compose ps
9、访问categraf服务
bash
浏览器访问: http://192.168.112.115:7000
默认用户名密码: root/root.2020

