https://gitee.com/xuhanga/Nightingale#22-%E8%B5%84%E4%BA%A7%E7%AE%A1%E7%90%86%E4%B8%AD%E5%BF%83
方法一:
简单快捷,直接使用all-in-one来安装部署夜莺的这套监控系统~
步骤
下载n9e-1.3.0-438ec4a.el7.x86_64.rpm-bundle.tar.gz并进行解压和安装
wget https://dl.cactifans.com/n9e/1.3.0/n9e-1.3.0-438ec4a.el7.x86_64.rpm-bundle.tar.gz && tar -zxvf n9e-1.3.0-438ec4a.el7.x86_64.rpm-bundle.tar.gz && yum install n9e-* -y
安装相应的nginx和mysql
推荐使用oneinstack直接一键安装~
wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --db_option 2 --dbinstallmethod 1 --dbrootpwd oneinstack --memcached --reboot
mysql 导入表结构并创建相应的用户
mysql -uroot -p </usr/local/n9e/sql/n9e_hbs.sql
mysql -uroot -p </usr/local/n9e/sql/n9e_mon.sql
mysql -uroot -p </usr/local/n9e/sql/n9e_uic.sql
安全考虑,建议为 n9e 独立建立 mysql 用户,在 mysql 里创建 n9e 用户并授权
mysql>create user n9e@127.0.0.1 identified by '你的密码';
mysql>grant all on n9e_hbs.* to n9e@127.0.0.1;
mysql>grant all on n9e_mon.* to n9e@127.0.0.1;
mysql>grant all on n9e_uic.* to n9e@127.0.0.1;
mysql> flush privileges;
修改配置文件mysql.yml中的密码,通过sed或者手动都可以
vi /usr/local/n9e/etc/mysql.yml
---
uic:
addr: "n9e:你的密码@tcp(127.0.0.1:3306)/n9e_uic?charset=utf8&parseTime=True&loc=Asia%2FShanghai"
max: 16
idle: 4
debug: false
mon:
addr: "n9e:你的密码@tcp(127.0.0.1:3306)/n9e_mon?charset=utf8&parseTime=True&loc=Asia%2FShanghai"
max: 16
idle: 4
debug: false
hbs:
addr: "n9e:你的密码@tcp(127.0.0.1:3306)/n9e_hbs?charset=utf8&parseTime=True&loc=Asia%2FShanghai"
max: 16
idle: 4
debug: false
修改Nginx的配置文件
cat /usr/local/n9e/etc/nginx.conf
#放到http中
proxy_connect_timeout 500ms;
proxy_send_timeout 1000ms;
proxy_read_timeout 3000ms;
proxy_buffers 64 8k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 64k;
proxy_redirect off;
proxy_next_upstream error invalid_header timeout http_502 http_504;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# server内容
upstream n9e.monapi {
server 127.0.0.1:5800;
keepalive 10;
}
upstream n9e.index {
server 127.0.0.1:5830;
keepalive 10;
}
upstream n9e.transfer {
server 127.0.0.1:5810;
keepalive 10;
}
server {
listen 52000; #监听端口改成自己对外的接口
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
location / {
root /usr/local/n9e/pub;
}
location /api/portal {
proxy_pass http://n9e.monapi;
}
location /api/index {
proxy_pass http://n9e.index;
}
location /api/transfer {
proxy_pass http://n9e.transfer;
}
}
nginx的完整配置
cat /usr/local/nginx/conf/nginx.conf
user www www;
worker_processes auto;
error_log /data/wwwlogs/error_nginx.log crit;
pid /var/run/nginx.pid;
worker_rlimit_nofile 51200;
events {
use epoll;
worker_connections 51200;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 1024m;
client_body_buffer_size 10m;
sendfile on;
tcp_nopush on;
keepalive_timeout 120;
server_tokens off;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;
proxy_connect_timeout 500ms;
proxy_send_timeout 1000ms;
proxy_read_timeout 3000ms;
proxy_buffers 64 8k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 64k;
proxy_redirect off;
proxy_next_upstream error invalid_header timeout http_502 http_504;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#Gzip Compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
text/javascript application/javascript application/x-javascript
text/x-json application/json application/x-web-app-manifest+json
text/css text/plain text/x-component
font/opentype application/x-font-ttf application/vnd.ms-fontobject
image/x-icon;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
##Brotli Compression
#brotli on;
#brotli_comp_level 6;
#brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
##If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.
#open_file_cache max=1000 inactive=20s;
#open_file_cache_valid 30s;
#open_file_cache_min_uses 2;
#open_file_cache_errors on;
######################## default ############################
server {
listen 80;
server_name _;
access_log /data/wwwlogs/access_nginx.log combined;
root /data/wwwroot/default;
index index.html index.htm index.php;
#error_page 404 /404.html;
#error_page 502 /502.html;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
deny all;
}
}
######################## nightingale ############################
upstream n9e.monapi {
server 127.0.0.1:5800;
keepalive 10;
}
upstream n9e.index {
server 127.0.0.1:5830;
keepalive 10;
}
upstream n9e.transfer {
server 127.0.0.1:5810;
keepalive 10;
}
server {
listen 52000;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
location / {
root /usr/local/n9e/pub;
}
location /api/portal {
proxy_pass http://n9e.monapi;
}
location /api/index {
proxy_pass http://n9e.index;
}
location /api/transfer {
proxy_pass http://n9e.transfer;
}
}
########################## vhost #############################
include vhost/*.conf;
}
验证配置是否正确
nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
重新载入nginx
service nginx reload
启动所有组件服务
systemctl enable --now n9e-collector n9e-tsdb n9e-transfer n9e-monapi n9e-judge n9e-index
查看服务状态
cd /usr/local/n9e/
#查看有哪些命令
./control -h
Usage: ./control {start|stop|restart|status|build|pack} <module>
#查看所有服务状态(一共6个) | 全部启动后就可以进行下一步, 若某一个没启动可到/usr/local/n9e/logs中去查看相关服务的日志
./control status
root 18322 0.1 0.1 996288 25792 ? Sl May08 2:27 /usr/local/n9e/n9e-index
root 18351 0.1 0.1 1069996 22916 ? Sl May08 2:50 /usr/local/n9e/n9e-judge
root 18381 0.2 0.1 1152172 28780 ? Sl May08 5:28 /usr/local/n9e/n9e-collector
n9e 66032 0.1 0.1 1408048 28484 ? Ssl May08 2:53 /usr/local/n9e/n9e-tsdb
n9e 66116 0.6 0.1 1061668 23156 ? Ssl May08 13:21 /usr/local/n9e/n9e-transfer
n9e 66131 0.6 0.1 1070460 29588 ? Ssl May08 13:13 /usr/local/n9e/n9e-monapi
#启动(单个模块/所有模块 )
./control start collector
./control start all
访问
使用浏览器打开http://公网ip 即可访问,默认账号 root 密码 root
方法二:
准备一台系统为 CentOS7.X 的虚拟机或物理机,并安装完成
mysql
、redis
、nginx
软件,简单yum
安装即可,生产环境可寻求运维或DBA同学帮忙部署。
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y mariadb* redis nginx
安装步骤
1、找个干净的CentOS7,准备好mysql、redis、nginx,简单yum安装一下即可,生产环境mysql建议找dba帮忙来搞
yum install -y mariadb* redis nginx
mariadb开机自启
systemctl enable mariadb
启动服务mariadb
systemctl start mariadb
查询进程mysql
ps aux |grep mysql
数据库初始化
[root@localhost ~]# mysql_secure_installation
redis开机自启
systemctl enable redis
启动服务redis
systemctl start redis
查询进程redis
ps aux |grep redis
nginx开机自启
systemctl enable nginx
启动服务nginx
systemctl start nginx
查询进程nginx
ps aux |grep nginx
2、下载我们编译好的二进制到/home/n9e目录,如果要更换目录,要注意修改nginx.conf,建议先用这个目录,玩熟了再说
mkdir -p /home/n9e
cd /home/n9e
wget http://116.85.64.82/n9e.tar.gz
tar zxvf n9e.tar.gz
3、初始化数据库,这里假设使用root账号,密码1234,如果不是这个账号密码,注意修改/home/n9e/etc/mysql.yml
cd /home/n9e/sql
mysql -uroot -p1234 < n9e_ams.sql
mysql -uroot -p1234 < n9e_hbs.sql
mysql -uroot -p1234 < n9e_job.sql
mysql -uroot -p1234 < n9e_mon.sql
mysql -uroot -p1234 < n9e_rdb.sql
修改配置文件mysql.yml中的密码,通过sed或者手动都可以
vi /usr/local/n9e/etc/mysql.yml
4、redis配置修改,默认配置的6379端口,密码为空,如果默认配置不对,可以执行如下命令,看到多个配置文件里有redis相关配置,挨个检查修改下
cd /home/n9e/etc
grep redis -r .
5、下载前端静态资源文件,放到默认的/home/n9e目录下,如果要改目录,需要修改后面提到的nginx.conf
cd /home/n9e
wget http://116.85.64.82/pub.tar.gz
tar zxvf pub.tar.gz
6、覆盖nginx.conf,建议大家还是看一下这个配置,熟悉一下nginx配置,夜莺不同web侧组件就是通过nginx的不同location区分的。覆盖完了配置记得reload一下或者重启nginx
cp etc/nginx.conf /etc/nginx/nginx.conf
重启nginx服务
systemctl restart nginx
7、检查identity.yml,要保证这个shell可以正常获取本机ip,如果实在不能正常获取,自己又不懂shell不会改,在specify字段写死也行
# 用来做心跳,给服务端上报本机ip
ip:
specify: ""
shell: ifconfig `route|grep '^default'|awk '{print $NF}'`|grep inet|awk '{print $2}'|head -n 1
# MON、JOB的客户端拿来做本机标识
ident:
specify: ""
shell: ifconfig `route|grep '^default'|awk '{print $NF}'`|grep inet|awk '{print $2}'|head -n 1
8、检查/home/n9e/etc/agent.yml的几个shell,挨个检查是否可以跑通,跑不通就改成适合自己的,实在是不会改,直接写死,比如disk部分,写死80Gi直接写:disk: echo 80Gi即可
report:
# ...
sn: dmidecode -s system-serial-number | tail -n 1
fields:
cpu: cat /proc/cpuinfo | grep processor | wc -l
mem: cat /proc/meminfo | grep MemTotal | awk '{printf "%dGi", $2/1024/1024}'
disk: df -m | grep '/dev/' | grep -v '/var/lib' | grep -v tmpfs | awk '{sum += $2};END{printf "%dGi", sum/1024}'
9、启动各个进程,包括mysql、redis、nginx,夜莺的各个组件直接用control脚本启动即可,后续上生产环境,可以用systemd之类的托管
cd /home/n9e
./control start all
查看进程
./control status
10、登录web,账号root,密码root.2020,进来第一步一定要修改密码,如果nginx报权限类的错误,检查selinux是否关闭了,如下命令可关闭
setenforce 0
浏览器访问IP地址
Web
使用浏览器访问 http://ip 即可看到 n9e 的 web 页面,默认账号:root 密码:root.2020 即可登录系统,至此安装完成。
Debug
如组件启动失败,建议检查 etc 下配置文件,并查看 logs 文件夹下的日志排错。
配置客户端
wget http://116.85.64.82/n9e.tar.gz
tar -xf n9e.tar.gz
将 control n9e-agent /etc/address.yml /etc/agent.yml /etc/identity.yml 打包 拷贝到/home/n9e/
在解压目录下etc/address.yml
修改配置文件vim address.yml将全局172.0.0.1改成master节点的主机的ip
:%s/172.0.0.1/ip/g
配置开机自启服务
vim /usr/lib/systemd/system/agent.service
Description=n9e agent
After=network-online.target
Wants=network-online.target
[Service]
# modify when deploy in prod env
User=root
Group=root
Type=simple
Environment="GIN_MODE=release"
ExecStart=/home/n9e/n9e-agent
WorkingDirectory=/home/n9e
Restart=always
RestartSec=1
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
重启服务
systemctl restart agent
开机自启
systemctl enable agent
检查服务是否正常
systemctl status agent
一、夜莺服务器操作
1、进入夜莺的安装目录
cd /root/nightingale/
mkdir -p tmp/etc //创建用于打包的临时问文件
cp etc/collector.yml tmp/etc
cp etc/address.yml tmp/etc
cp n9e-collector tmp
cp etc/service/n9e-collector.service tmp/etc/
//选取需要的文件
hostname -I //查看本机IP
2、修改address.yml,collector需要monapi,transfer这两个地址,其余的地方不需要改动
vim etc/address.yml
---
monapi:
http: 0.0.0.0:5800
addresses:
- 127.0.0.1 //修改为夜莺服务器IP
transfer:
http: 0.0.0.0:5810
rpc: 0.0.0.0:5811
addresses:
- 127.0.0.1 //修改为夜莺服务器IP
tsdb:
http: 0.0.0.0:5820
rpc: 0.0.0.0:5821
addresses:
- 127.0.0.1
index:
http: 0.0.0.0:5830
rpc: 0.0.0.0:5831
addresses:
- 127.0.0.1
judge:
http: 0.0.0.0:5840
rpc: 0.0.0.0:5841
addresses:
- 127.0.0.1
collector:
http: 0.0.0.0:2058
3、将刚刚拷贝的文件进行打包并作为前端资源进行分发
tar zcvf collector.tar.gz *
mv collector.tar.gz /root/nightingale/pub/ //将打包的文件提供分
二、监控服务器(agent端)
1、创建/home/n9e并进入
cd /home/n9e
#拉取服务器资源并解压在n9e目录下
wget http://Nightingale服务器的IP地址:端口号/collector.tar.gz
2、将agent添加至系统服务中
cp etc/n9e-collector.service /usr/lib/systemd/system
//cat n9e-collector.service
[root@localhost etc]# cat n9e-collector.service
[Unit]
Description=Nightingale collector
After=network-online.target
Wants=network-online.target
[Service]
# modify when deploy in prod env
User=root
Group=root
Type=simple
ExecStart=/home/n9e/n9e-collector
WorkingDirectory=/home/n9e
Restart=always
RestartSec=1
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
3、启动、查看、重启Nightingale服务
systemctl start n9e-collector
systemctl enable n9e-collector
systemctl status n9e-collector