夜莺随笔:安装篇(一)

2022-02-16 18:49:21 浏览数 (1)

夜莺是新一代国产智能监控系统。对云原生场景、传统物理机虚拟机场景,都有很好的支持,10分钟完成搭建,1小时熟悉使用,经受了滴滴生产环境海量数据的验证,希望打造国产监控的标杆之作,目前是v5.0版本,从这个版本开始,与 Prometheus、VictoriaMetrics、Grafana、Telegraf 等生态做了协同集成,力争打造国内最好用的开源运维监控系统。

正文

如果仅仅是为了快速测试,Docker 部署方式是最快的,不过很多朋友未必有 Docker 环境,另外为了减少引入更多技术栈,增强生产环境稳定性,有些朋友可能也不愿意用 Docker,那本篇就来讲解如何快速部署单机版,单机版的配套时序库是使用 Prometheus。如果要监控的机器有几千台,服务有几百个,单机版的容量无法满足,可以上集群版,集群版的时序库建议使用VictoriaMetrics,也可以使用M3DB,不过M3DB的架构更复杂,很多朋友无法搞定,选择简单的 VictoriaMetrics,对大部分公司来讲,足够用了。我们先来看一下服务端架构:

  • 核心模块server:server 是用来做告警的,会从数据库中同步告警规则,然后读取 Prometheus 的数据做告警判断。server 也可以接收监控数据上报,然后通过 remote write 协议写入多个时序库。server 也依赖 redis,用 redis 存储了 server 本身以及监控对象的心跳信息。
  • 核心模块 webapi:提供 restful api,用于和前端 JavaScript 交互,把一些用户配置类的信息写入 mysql,鉴权采用 jwt,jwt 的 token 使用 redis 存储,在单机部署的方式下,server 的 redis 和 webapi 的 redis 可以复用。

本文环境

  • CentOS 8
  • Redis
  • Prometheus
  • VictoriaMetrics
  • Mariadb

本文机器详情

  • 华为云
  • n9e(server/webapi/prometheus/mariadb/redis):192.168.0.99
  • VictoriaMetrics:192.168.0.153

安装前置软件(如有请忽略)

代码语言:javascript复制
dnf -y install vim git wget 

安装 Prometheus

代码语言:javascript复制
mkdir /opt/prometheus 
wget https://s3.jcloud.sjtu.edu.cn/899a892efef34b1b944a19981040f55b-oss01/github-release/prometheus/prometheus/releases/download/v2.33.0/prometheus-2.33.0.linux-amd64.tar.gz 
tar xf prometheus-2.33.0.linux-amd64.tar.gz
cp -far prometheus-2.33.0.linux-amd64/* /opt/prometheus/

创建Prometheus service 文件

代码语言:javascript复制
cat <<EOF >/etc/systemd/system/prometheus.service
[Unit]
Description="prometheus"
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple

ExecStart=/opt/prometheus/prometheus  --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data --web.enable-lifecycle --enable-feature=remote-write-receiver --query.lookback-delta=2m 

Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus


[Install]
WantedBy=multi-user.target
EOF

启动 Prometheus

代码语言:javascript复制
systemctl enable prometheus
systemctl restart prometheus

安装数据库

代码语言:javascript复制
dnf -y install mariadb-server

启动数据库并设置密码

密码自己设置即可,本文为 xiaoyu123

代码语言:javascript复制
systemctl start mariadb
systemctl enable mariadb
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xiaoyu123');" 

安装 redis 并启动

代码语言:javascript复制
dnf -y install redis 
systemctl start redis 
systemctl enable redis 

安装夜莺组件

代码语言:javascript复制
mkdir -p /opt/n9e && cd /opt/n9e
wget https://github.com/didi/nightingale/releases/download/v5.3.1/n9e-5.3.1.tar.gz
tar zxvf n9e-5.3.1.tar.gz

导入数据库文件

代码语言:javascript复制
mysql -uroot -pxiaoyu123 < docker/initsql/a-n9e.sql

修改夜莺相关配置

由于默认的配置文件的数据库密码为 1234 ,所以需要调整。

代码语言:javascript复制
vim etc/server.conf
代码语言:javascript复制
vim etc/webapi.conf

创建service文件

默认已经自带,仅仅需要调整参数,主要是调整启动文件路径和工作目录。

代码语言:javascript复制
vim etc/service/n9e-server.service
cp etc/service/n9e-server.service /usr/lib/systemd/system/
systemctl start n9e-server
systemctl enable n9e-server
代码语言:javascript复制
vim etc/service/n9e-webapi.service
cp etc/service/n9e-webapi.service /usr/lib/systemd/system
systemctl start n9e-webapi
systemctl enable n9e-webapi

访问测试

默认用户名密码为 root/root.2020

下载安装VictoriaMetrics单机版

代码语言:javascript复制
mkdir -p /opt/vm && cd /opt/vm
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.72.0/victoria-metrics-amd64-v1.72.0.tar.gz
tar zxvf victoria-metrics-amd64-v1.72.0.tar.gz

启动数据库

默认单机版端口号为8428.

代码语言:javascript复制
mkdir /data
./victoria-metrics-prod -storageDataPath /data

创建守护文件

代码语言:javascript复制
cat <<EOF >/etc/systemd/system/victoria.service
[Unit]
Description="VictoriaMetrics"
Documentation=https://docs.victoriametrics.com/
After=network.target

[Service]
Type=simple

ExecStart=/opt/vm/victoria-metrics-prod -storageDataPath /data 

Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=VictoriaMetrics


[Install]
WantedBy=multi-user.target
EOF

启动vm数据库

代码语言:javascript复制
systemctl start victoria
systemctl enable victoria

测试接口

代码语言:javascript复制
curl http://127.0.0.1:8428/metrics

修改配置

n9e-server 通过 remote write 接口写入时序库,vm 作为时序库的一个选择,其 remote write 接口地址为:http://192.168.0.153:8428/api/v1/write ,把这个地址配置到 server.conf 当中即可,配置完了重启 n9e-server。

代码语言:javascript复制
vim /opt/n9e/etc/server.conf
代码语言:javascript复制
vim /opt/n9e/etc/webapi.conf

prometheus添加远程写模块

代码语言:javascript复制
vim /opt/prometheus/prometheus.yml

重启需要检查

写在最后

整体安装过程相对比较简单,下一篇将带来如何利用 telegraf 和 exporter 进行监控任务。

0 人点赞