夜莺是一套分布式高可用的运维监控系统,最大的特点是混合云支持,既可以支持传统物理机虚拟机的场景,也可以支持K8S容器的场景。同时,夜莺也不只是监控,还有一部分CMDB的能力、自动化运维的能力,很多公司都基于夜莺开发自己公司的运维平台。重点是部署方便快捷,相比目前主流的监控系统zabbix和Prometheus有自己的优势。
yum安装:安装git docker docker-compose
#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
#关闭内核安全机制selinux
setenforce 0
#永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#yum安装git & epel-release & docker & docker-compose
yum -y install epel-release
yum -y install git docker docker-compose
#git clone 夜莺
git clone https://github.com/didi/nightingale.git
正克隆到 'nightingale'...
remote: Enumerating objects: 18476, done.
remote: Counting objects: 100% (3713/3713), done.
remote: Compressing objects: 100% (1887/1887), done.
remote: Total 18476 (delta 1782), reused 3455 (delta 1669), pack-reused 14763
接收对象中: 100% (18476/18476), 31.39 MiB | 1.69 MiB/s, done.
处理 delta 中: 100% (8105/8105), done.
#启动docker服务
systemctl start docker & systemctl enable docker
#进入到夜莺的docker目录
cd nightingale/docker
#docker-compose 启动夜莺监控
docker-compose up -d
访问ip:18000
账号:root
密码:root.2020
配置agent端
server端修改配置文件address.yml,将monapi和transfer的addresses都改为本机ip
vim /home/n9e/etc/address.yml
monapi:
http: 0.0.0.0:8006
addresses:
- 172.16.108.145
transfer:
http: 0.0.0.0:8008
rpc: 0.0.0.0:8009
addresses:
- 172.16.108.145
docker安装:
1安装docker
利用华为源下载docker-ce的yum仓库:https://mirrors.huaweicloud.com/
根据版本下载docker的repo文件:
wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
软件仓库地址替换为:
sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
更新索引文件并安装:
sudo yum makecache fast
yum install docker -y
systemctl start docker
systemctl enable docker
安装成功之后,可以查看docker安装的版本
docker version
2.docker-compose
github下载链接: https://github.com/docker/compose/releases/
由于我们的docker版本不是很高,所以docker-compose的版本也需要选择稍微老点的版本,防止容器启动时报错。
mv docker-compose-Linux-x86_64 docker-compose
将可执行权限应用于二进制文件:
chmod +x docker-compose
mv docker-compose /usr/local/bin/
创建软链接:
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
docker-compose --version
3.部署n9e:
系统组件占用了以下端口,80, 5800, 5810, 5811, 5820, 5821, 5830, 5831, 5840, 5841, 6379, 2058, 3306,部署前请确保这些端口没有被使用。
yum install git -y
mkdir /home/n9e
cd /home/n9e
git clone https://github.com/didi/nightingale.git
下载夜莺repo的内容
cd dockerfiles
docker-compose up
修改etc/hosts 加入域名解析 127.0.0.1 n9e.example.com
浏览器访问 http://n9e.example.com
用户名 root 密码 root.2020
就此部署完成!
夜莺配置模板:
cat /root/nightingale/docker/docker-compose.yaml
version: "3.7"
services:
mysql:
# platform: linux/x86_64
image: "mysql:5.7"
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/
- ./mysqletc/my.cnf:/etc/my.cnf
network_mode: host
redis:
image: "redis:6.2"
container_name: redis
hostname: redis
restart: always
environment:
TZ: Asia/Shanghai
network_mode: host
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
environment:
TZ: Asia/Shanghai
volumes:
- ./prometc:/etc/prometheus
network_mode: host
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--web.console.libraries=/usr/share/prometheus/console_libraries"
- "--web.console.templates=/usr/share/prometheus/consoles"
- "--enable-feature=remote-write-receiver"
- "--query.lookback-delta=2m"
ibex:
image: ulric2019/ibex:0.3
container_name: ibex
hostname: ibex
restart: always
environment:
GIN_MODE: release
TZ: Asia/Shanghai
WAIT_HOSTS: 127.0.0.1:3306
volumes:
- ./ibexetc:/app/etc
network_mode: host
depends_on:
- mysql
command: >
sh -c "/wait && /app/ibex server"
n9e:
image: flashcatcloud/nightingale:latest
container_name: n9e
hostname: n9e
restart: always
environment:
GIN_MODE: release
TZ: Asia/Shanghai
WAIT_HOSTS: 127.0.0.1:3306, 127.0.0.1:6379
volumes:
- ../etc:/app/etc
network_mode: host
depends_on:
- mysql
- redis
- prometheus
- ibex
command: >
sh -c "/wait && /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
volumes:
- ./categraf/conf:/etc/categraf/conf
- /:/hostfs
- /var/run/docker.sock:/var/run/docker.sock
network_mode: host
depends_on:
- n9e