夜莺 v6.0.0-ga.3部署
一、夜莺架构
1、中心汇聚式部署方案
这个方案的架构图如下:
夜莺只有一个模块了,就是 n9e,可以部署多个 n9e 实例组成集群,n9e 依赖 2 个存储,数据库、Redis,数据库可以使用 MySQL 或 Postgres,自己按需选用。
n9e 提供的是 HTTP 接口,前面负载均衡可以是 4 层的,也可以是 7 层的。一般就选用 Nginx 就可以了。
n9e 这个模块接收到数据之后,需要转发给后端的时序库,相关配置是:
[Pushgw]
LabelRewrite = true
[[Pushgw.Writers]]
Url = "http://127.0.0.1:9090/api/v1/write"
相当于是,虽然数据源可以在页面配置了,但是上报转发链路,还是需要在配置文件指定。
所有机房的 agent( 比如 Categraf、Telegraf、 Grafana-agent、Datadog-agent ),都直接推数据给 n9e,这个架构最为简单,维护成本最低。当然,前提是要求机房之间网络链路比较好,一般有专线。如果网络链路不好,则要使用下面的部署方式了。
2、边缘下沉式混杂部署方案
还是先上架构图,一图胜千言:
这个图尝试解释 3 种不同的情形,比如 A 机房和中心网络链路很好,Categraf 可以直接汇报数据给中心 n9e 模块,另一个机房网络链路不好,就需要把时序库下沉部署,时序库下沉了,对应的告警引擎和转发网关也都要跟随下沉,这样数据不会跨机房传输,比较稳定。但是心跳还是需要往中心心跳,要不然在对象列表里看不到机器的 CPU、内存使用率。还有的时候,可能是接入的一个已有的 Prometheus,数据采集没有走 Categraf,那此时只需要把 Prometheus 作为数据源接入夜莺即可,可以在夜莺里看图、配告警规则,但是就是在对象列表里看不到,也不能使用告警自愈的功能,问题也不大,核心功能都不受影响。
边缘机房,下沉部署时序库、告警引擎、转发网关的时候,要注意,告警引擎需要依赖数据库,因为要同步告警规则,转发网关也要依赖数据库,因为要注册对象到数据库里去,需要打通相关网络,告警引擎和转发网关都不用Redis,所以无需为Redis打通网络。
二、部署
实验主机
规格:4C/8G/40G
系统:CentOS Linux release 7.9.2009 (Core)
1、部署Mysql
#配置yum源
cat > /etc/yum.repos.d/mysql-community.repo <<EOF
# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/$basearch
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/x86_64/$basearch
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64/$basearch
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/x86_64/$basearch
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-preview]
name=MySQL Tools Preview
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/7/x86_64/$basearch
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-7.5-community]
name=MySQL Cluster 7.5 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.5-community/el/7/x86_64/$basearch
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-7.6-community]
name=MySQL Cluster 7.6 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.6-community/el/7/x86_64/$basearch
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-8.0-community]
name=MySQL Cluster 8.0 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-8.0-community/el/7/x86_64/$basearch
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
EOF
#yum安装mysql5.7
yum install -y mysql-community-server
#启动mysql
systemctl start mysqld
systemctl enable mysqld
#查看mysql临时密码
grep 'temporary password' /var/log/mysqld.log
#登录mysql并修改密码
mysql -uroot -p
alter user root@'localhost' identified by 'Huawei@123';
exit
2、部署redis
#安装epel源再安装redis
yum install -y epel-release
yum install -y redis
#启动redis
systemctl start redis
systemctl enable redis
3、部署prometheus
#搬运官方文档部署prometheus。 如果使用VictoriaMetrics就不用部署prometheus。
mkdir -p /opt/prometheus
wget https://s3-gz01.didistatic.com/n9e-pub/prome/prometheus-2.28.0.linux-amd64.tar.gz -O prometheus-2.28.0.linux-amd64.tar.gz
tar xf prometheus-2.28.0.linux-amd64.tar.gz
cp -far prometheus-2.28.0.linux-amd64/* /opt/prometheus/
# service
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
systemctl daemon-reload
systemctl enable prometheus
systemctl restart prometheus
systemctl status prometheus
4、部署VictoriaMetrics
#参考快猫文档部署,如果使用prometheus就不用部署VictoriaMetrics。
https://flashcat.cloud/docs/content/flashcat-monitor/nightingale/install/victoriametrics
#注意
cluster为集群版,
不带cluster为单机版,端口8428
mkdir -p /opt/victoria-metrics
cd /opt/victoria-metrics
#下载安装包
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.90.0/victoria-metrics-linux-amd64-v1.90.0.tar.gz
tar xzf victoria-metrics-linux-amd64-v1.90.0.tar.gz
#使用systemd托管
cat > /usr/lib/systemd/system/victoria-metrics.service << EOF
[Unit]
Description="victoria-metrics"
After=network.target
[Service]
Type=simple
ExecStart=/opt/victoria-metrics/victoria-metrics-prod
WorkingDirectory=/opt/victoria-metrics
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n9e
[Install]
WantedBy=multi-user.target
EOF
#启动victoria-metrics
systemctl start victoria-metrics
systemctl status victoria-metrics
systemctl enable victoria-metrics
5、部署夜莺
#nightingale项目地址: https://github.com/ccfos/nightingale
#下载夜莺
mkdir -p /opt/n9e
cd /opt/n9e
wget https://download.flashcat.cloud/n9e-v6.0.0-ga.3-linux-amd64.tar.gz
tar zxvf n9e-v6.0.0-ga.3-linux-amd64.tar.gz
[root@localhost etc]# cd /opt/n9e/
[root@localhost n9e]# ll
total 73616
drwxr-xr-x. 3 root root 35 Apr 11 20:22 cli
drwxr-xr-x. 10 root root 256 Apr 11 20:22 docker
drwxr-xr-x. 4 root root 91 Apr 11 20:37 etc
drwxr-xr-x. 20 root root 263 Apr 11 20:22 integrations
-rwxr-xr-x. 1 1001 123 25280512 Apr 6 19:05 n9e
-rwxr-xr-x. 1 1001 123 10838016 Apr 6 19:05 n9e-cli
-rw-r--r--. 1 1001 123 29784 Apr 6 19:04 n9e.sql
-rw-r--r--. 1 root root 23303591 Apr 11 20:22 n9e-v6.0.0-ga.3-linux-amd64.tar.gz
-rw-------. 1 root root 8358785 Apr 12 09:22 nohup.out
drwxr-xr-x. 6 root root 76 Apr 11 20:22 pub
#修改配置文件
vi /opt/n9e/etc/config.toml
#找到82行配置数据库密码,我这里是Huawei@123
DSN="root:Huawei@123@tcp(127.0.0.1:3306)/n9e_v6?charset=utf8mb4&parseTime=True&loc=Local&allowNativePasswords=true"
#redis、prometheus都在本机,没做认证,就不修改了。
#配置时序库
#找到151-153行,改为使用VictoriaMetrics
[[Pushgw.Writers]]
Url = "http://127.0.0.1:8428/api/v1/write"
#Url = "http://127.0.0.1:9090/api/v1/write"
#导入sql文件
mysql -uroot -pHuawei@123 < /opt/n9e/n9e.sql
#使用systemd托管
cat > /usr/lib/systemd/system/n9e.service << EOF
[Unit]
Description="n9e"
After=network.target
[Service]
Type=simple
ExecStart=/opt/n9e/n9e
WorkingDirectory=/opt/n9e
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n9e
[Install]
WantedBy=multi-user.target
EOF
#启动n9e
systemctl start n9e
systemctl status n9e
systemctl enable n9e
[root@localhost n9e]# ss -lntp|grep 17000
LISTEN 0 128 [::]:17000 [::]:* users:(("n9e",pid=1871,fd=9))
6、部署Categraf
Categraf 是一个监控采集 Agent,类似 Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供监控数据采集能力,采用 All-in-one 的设计,不但支持指标采集,也希望支持日志和调用链路的数据采集。来自快猫研发团队,和 Open-Falcon、Nightingale 的研发是一拨人。
categraf项目地址: https://github.com/flashcatcloud/categraf
https://flashcat.cloud/docs/content/flashcat-monitor/categraf/1-introduction/
#下载categraf
cd /opt
wget https://github.com/flashcatcloud/categraf/releases/download/v0.2.38/categraf-v0.2.38-linux-amd64.tar.gz
tar xzf categraf-v0.2.38-linux-amd64.tar.gz
mv categraf-v0.2.38-linux-amd64 categraf
#查看版本号
cd categraf
[root@localhost categraf]# ./categraf -version
v0.2.38-59789d309e339bb52947f2e5a551042ee2726c08
#修改配置文件
#修改主机名配置
hostname = "$ip"
#修改writers,修改19000为17000
[[writers]]
url = "http://127.0.0.1:17000/prometheus/v1/write"
#修改心跳为true
[heartbeat]
enable = true
#使用systemd托管
cp /opt/categraf/conf/categraf.service /usr/lib/systemd/system/
systemctl daemon-reload
#启动categraf
systemctl start categraf
systemctl status categraf
systemctl enable categraf
7、添加数据源
#登录夜莺
http://10.255.0.230:17000
#默认密码
root/root.2020
#添加VictoriaMetrics时序库
系统配置--Prometheus Like 添加
数据源名称: LocalVM
URL: http://localhost:8428
write_addr: http://localhost:8428/api/v1/write
关联告警引擎集群: default
8、效果