首页 > Linux > 夜莺V4监控安装教程

夜莺V4监控安装教程

2021年6月26日 发表评论 阅读评论

一、演进背景

v3版本融入了很多运维平台的功能,组件变多,部署麻烦,不同的组件相互之间有调用关系,在做分布式部署的时候需要了解整体架构才能正确修改配置文件,对用户提出了较高的要求。很多issue和群里的讨论,都反映出了这个复杂性问题。

我们希望降低这个复杂度,所以,把众多服务端模块做了合并。这样原来组件之间的调用都变成了进程内部的方法调用,可靠性性能都会提升。

二、新的架构

模块合并之后,把时序存储抽离,总共只剩3个组件:server、prober、agentd。

服务端就是部署server模块,如果要集群部署,就搞2个机器,每个机器分别部署server模块即可。每个server会使用本机的redis,所以,有几个server就部署几个redis,redis只需监听在127.0.0.1,供本机的server使用即可。

prober是个中心式探针,比如贵司有2个网络区域,每个网络区域可以部署一个prober,用此prober采集监控本区域的数据库中间件。如果担心prober挂掉,每个区域可以部署多个prober做高可用。不同网络区域的prober,有个配置要注意,即:report.region字段,比如有bj和gz两个网络区域,每个网络区域分别部署了2台prober,bj的2台prober,report.region要设置为bj,gz的2台prober,report.region要设置为gz。最后,在server.yml里修改monapi.region字段,配上bj和gz。

如果网络是可以互联互通的,那就简单了,prober和server混部即可,都放到中心。

agentd是部署到所有目标机器的,采集目标机器的性能指标,在目标机器执行插件之类的,v4版本的agentd与server之间通信只走了server的rpc端口,所以相比v3,开通网络acl要变简单了。

三、安装mysql、redis、nginx

这里我带着大家部署一个单机版本的夜莺v4,请大家提前准备好mysql、redis、nginx,单机部署,直接yum安装即可,非常简便。请找一台干净的机器测试!下面的服务端部署是在centos7.3(内核版本5.11.14-1.el7.elrepo.x86_64)进行的。

1、安装redis:

cd /root/soft/

wget http://download.redis.io/releases/redis-6.2.0.tar.gz

tar -zvxf redis-6.2.0.tar.gz

cd redis-6.2.0

make

make install PREFIX=/usr/local/redis

cp redis.conf /usr/local/redis/bin/

vi /usr/local/redis/bin/redis.conf 文件,把 daemonize no 改为 daemonize yes

vi /etc/systemd/system/redis.service 添加开机启动服务

###
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
###

设置redis开机启动:

systemctl daemon-reload

systemctl enable redis.service

systemctl start redis.service

创建redis命令软链: ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis

2、安装Nginx:

yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

cd /root/soft/

wget http://nginx.org/download/nginx-1.18.0.tar.gz

tar -zvxf nginx-1.18.0.tar.gz 

cd nginx-1.18.0

./configure –prefix=/usr/local/nginx/  && make && make install

3、安装mysql:

rpm -e –nodeps mariadb-libs

yum install -y  gcc gcc-c++ cmake ncurses ncurses-devel bison

cd /root/soft/

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.37.tar.gz

tar -zvxf mysql-boost-5.7.37.tar.gz

cd mysql-5.7.37

groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql   

mkdir /usr/local/mysql    

mkdir -p /data/mysql

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/data/mysql \

-DWITH_BOOST=boost \

-DSYSCONFDIR=/etc \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DENABLE_DTRACE=0 \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DWITH_EMBEDDED_SERVER=OFF

make -j `grep processor /proc/cpuinfo | wc -l`

make install

cd /usr/local/mysql

mkdir temp

chmod 777 ./temp

chown -R mysql:mysql .

cd /data/mysql

chown -R mysql:mysql .

cd /usr/local/mysql

./bin/mysqld –initialize-insecure –user=mysql –basedir=/usr/local/mysql –datadir=/data/mysql

./bin/mysql_ssl_rsa_setup

创建配置文件:

cat > /etc/my.cnf << EOF
[client]
port=3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
skip-external-locking
#skip-name-resolve
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql
tmpdir=/usr/local/mysql/temp
# server_id = .....
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/logs/mysql_error.log
pid-file=/usr/local/mysql/mysql.pid
open_files_limit=10240
back_log=600
max_connections=500
max_connect_errors=6000
wait_timeout=605800
#open_tables=600
#table_cache = 650
#opened_tables = 630
max_allowed_packet=32M
sort_buffer_size=4M
join_buffer_size=4M
thread_cache_size=300
query_cache_type=1
query_cache_size=256M
query_cache_limit=2M
query_cache_min_res_unit=16k
tmp_table_size=256M
max_heap_table_size=256M
key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M
lower_case_table_names=1
default-storage-engine=INNODB
innodb_buffer_pool_size=2G
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
#####################
long_query_time=2
slow-query-log=on
slow-query-log-file=/usr/local/mysql/logs/mysql-slow.log
[mysqldump]
quick
max_allowed_packet=32M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF

配置mysql服务并启动:

echo -e '\n\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chkconfig –add mysqld

chkconfig mysqld on

service mysqld start

cd /usr/local/mysql

./bin/mysql_secure_installation   #88123456

四、夜莺server端安装

1、下载n9e的二进制包

mkdir -p /home/n9e

cd /home/n9e

wget http://116.85.64.82/n9e-4.0.1.tar.gz

tar zxvf n9e-4.0.1.tar.gz

2、初始化数据库

这里假设使用 root 账号,密码为 88123456,如果不是这个账号密码,需要修改 /home/n9e/etc/mysql.yml(sed -i "s/1234/88123456/g" /home/n9e/etc/mysql.yml)

cd /home/n9e/sql

mysql -uroot -p88123456 < n9e_ams.sql

mysql -uroot -p88123456 < n9e_hbs.sql

mysql -uroot -p88123456 < n9e_job.sql

mysql -uroot -p88123456 < n9e_mon.sql

mysql -uroot -p88123456 < n9e_rdb.sql

3、redis配置

如果redis设置了密码,需要修改/home/n9e/etc/server.yml,把密码改对

4、下载前端静态资源文件

放到/home/n9e下,请不要随意更换目录结构,否则还要自行修改nginx.conf,徒增烦恼

cd /home/n9e

wget http://116.85.64.82/pub-3.5.2.tar.gz

tar zxvf pub-3.5.2.tar.gz

5、覆盖nginx.conf

如果静态资源文件不是放到/home/n9e下的,就要先修改nginx.conf了

mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

cp /home/n9e/etc/nginx.conf  /usr/local/nginx/conf/nginx.conf

nginx.conf里面一些日志和pid目录可能要更改下,然后reload进程:/usr/local/nginx/sbin/nginx -s reload

6、时序数据存储部署

这里选择使用单机版本的m3db

mkdir -p /home/m3db

cd /home/m3db

wget https://s3-gz01.didistatic.com/n9e-pub/tarball/m3dbnode-single-v0.0.1.tar.gz

tar zxvf m3dbnode-single-v0.0.1.tar.gz

cd m3dbnode-single

./scripts/install.sh

# 使用下面的curl初始化M3DB,这一步千万不能少!!!

# retentionTime 表示历史监控数据存储时长,使用m3一般建议最长不要超过3个月

curl -X POST http://localhost:7201/api/v1/database/create -d '{
  "type": "local",
  "namespaceName": "default",
  "retentionTime": "48h"
}'

7、最后一步,启动相关进程。即可访问nginx看效果了

cd /home/n9e

./control start server

./control start prober

./control start agentd

# 其中server如果正常启动,会监听在8000和8001两个端口上,查看端口是否在监听可以用下面的命令

ss -tlnp|grep n9e-server

# 正常应该展示下面的输出

LISTEN     0      4096        :::8000                    :::*                   users:(("n9e-server",pid=2848,fd=67))
LISTEN     0      4096        :::8001                    :::*                   users:(("n9e-server",pid=2848,fd=66))

Web的默认用户是root,密码是root.2020

8、可能遇到的问题

Q1.系统安装好了,也能看到指标,但是点击指标看不到图。

很可能是系统时间没有校准,与本地PC时间不一致

Q2.server模块进程虽然在,但是server的两个端口都没有在监听

这说明server模块没有正常启动,可以查看logs/server/stdout.log查看是否有一些有用的信息,大概率是m3没有安装好,或者m3没有用那个curl指令初始化。另外如果用的pve,可能会因为指令集导致m3进程起来,过一会就挂了,所以不要用pve

Q3.设备管理的列表里缺少了本机设备

说明agentd没有成功注册到server,需要检查agentd和server的日志来排查

五、夜莺agent 安装

登陆到服务端的机器打包一些文件到客户端即可:

vi /home/n9e/etc/server.yml,tokens 加入 ams-builtin-token 验证方式

cd /home/n9e

tar -zcvf agentd.tar.gz n9e-agentd control etc/agentd.yml etc/identity.yml etc/address.yml

打包后传递到客户端机器。然后客户端机器操作解压配置:

mkdir -p /home/n9e

cd /home/n9e/

tar -zvxf agentd.tar.gz

vi address.yml ,修改serverer 下面的addresses为服务端IP

 

 

相关链接:

夜莺Github

夜莺手册

夜莺文档

视频教程

分类: Linux 标签:
  1. 本文目前尚无任何评论.