grafana 夜莺数据源_mysql

grafana 夜莺数据源_mysql_02

方法一:

简单快捷,直接使用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

grafana 夜莺数据源_grafana 夜莺数据源_03

 

方法二:

准备一台系统为 CentOS7.X 的虚拟机或物理机,并安装完成 mysqlredisnginx软件,简单 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


grafana 夜莺数据源_grafana 夜莺数据源_04


 

mariadb开机自启

systemctl enable mariadb
 

启动服务mariadb

systemctl start mariadb

grafana 夜莺数据源_mysql_05

查询进程mysql

ps aux |grep mysql


grafana 夜莺数据源_grafana 夜莺数据源_06


 

数据库初始化

[root@localhost ~]# mysql_secure_installation



grafana 夜莺数据源_sql_07


 

grafana 夜莺数据源_nginx_08

redis开机自启

systemctl enable redis
 

启动服务redis

systemctl start redis
 

查询进程redis

ps aux |grep redis


grafana 夜莺数据源_mysql_09


 

nginx开机自启

systemctl enable nginx
 

启动服务nginx

systemctl start nginx
 

查询进程nginx

ps aux |grep nginx


grafana 夜莺数据源_grafana 夜莺数据源_10




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


grafana 夜莺数据源_grafana 夜莺数据源_11




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


grafana 夜莺数据源_sql_12

修改配置文件mysql.yml中的密码,通过sed或者手动都可以

vi /usr/local/n9e/etc/mysql.yml

 

grafana 夜莺数据源_nginx_13

 

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


grafana 夜莺数据源_grafana 夜莺数据源_14




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


grafana 夜莺数据源_grafana 夜莺数据源_15



查看进程


./control status


grafana 夜莺数据源_mysql_16




10、登录web,账号root,密码root.2020,进来第一步一定要修改密码,如果nginx报权限类的错误,检查selinux是否关闭了,如下命令可关闭


setenforce 0

浏览器访问IP地址

Web

使用浏览器访问 http://ip 即可看到 n9e 的 web 页面,默认账号:root 密码:root.2020 即可登录系统,至此安装完成。

grafana 夜莺数据源_sql_17

grafana 夜莺数据源_sql_18

grafana 夜莺数据源_sql_19

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   //修改为夜莺服务器IPtransfer:
   http: 0.0.0.0:5810
   rpc: 0.0.0.0:5811
   addresses:
     - 127.0.0.1   //修改为夜莺服务器IPtsdb:
   http: 0.0.0.0:5820
   rpc: 0.0.0.0:5821
   addresses:
     - 127.0.0.1index:
   http: 0.0.0.0:5830
   rpc: 0.0.0.0:5831
   addresses:
     - 127.0.0.1judge:
   http: 0.0.0.0:5840
   rpc: 0.0.0.0:5841
   addresses:
     - 127.0.0.1collector:
   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=rootType=simple
 ExecStart=/home/n9e/n9e-collector    
 WorkingDirectory=/home/n9eRestart=always
 RestartSec=1
 StartLimitInterval=0[Install]
 WantedBy=multi-user.target

 

3、启动、查看、重启Nightingale服务

systemctl  start  n9e-collector
systemctl  enable  n9e-collector
systemctl  status  n9e-collector