夜莺V4监控安装教程
一、演进背景
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
相关链接: