精华内容
下载资源
问答
  • Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 特性 批量执行:主机命令在线批量执行 ...
  • 为您提供Spug自动化运维平台下载,Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。...
  • Spug是一款使用Python Flask Vue Element组件开发的开源运维管理系统,系统前后端分离,帮助中小型企业完成主机、任务、发布部署、配置文件、监控、报警等管理。
  • spug.tar服务器资源包

    2020-09-25 11:55:32
    Spug是一个轻量自动化运维平台。 特性:开源免费,简单好用,不需要安装Agent,功能包含主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、进程端口站点监控、微信...
  • 自动化运维平台Spug介绍

    千次阅读 2021-12-22 19:06:43
    Spug是一款使用Python+Flask+Vue+Element组件开发的开源运维管理系统,系统前后端分离,项目创建于2017年,2018 年 2 月第一个开源运维平台版本发布,设计为面向中小型企业设计的轻量级无Agent的自动化运维平台,UI...

    一、概要

    在这里插入图片描述
    Spug是一款使用Python+Flask+Vue+Element组件开发的开源运维管理系统,系统前后端分离,项目创建于2017年,2018 年 2 月第一个开源运维平台版本发布,设计为面向中小型企业设计的轻量级无Agent的自动化运维平台,UI基于Ant Design设计,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能,且二次开发很方便。它采用授权协议AGPL-3.0,使用开发语言Python JavaScript;软件采用无 Agent 设计,只需简单部署就可完成。

    Spug 主要特性:

    批量执行: 命令在线批量执行
    文件管理: 主机文件在线上传下载
    在线终端: 主机支持浏览器在线终端登录
    任务计划: 灵活的任务计划,支持间隔执行,一次性执行,Crontab 风格执行
    发布部署: 支持自动创建应用,支持工单流程发布,标准发布、自定义发布等
    配置中心: 支持 KV、文本、Json 等格式的配置
    监控中心: 支持站点、端口、进程、自定义脚本等监控方式
    报警中心: 支持短信、邮件、钉钉、微信等报警方式
    优雅美观: 基于 Ant Design 的 UI 界面
    开源免费: 前后端代码完全开源

    官网:https://spug.dev;官方用户使用手册:https://www.spug.dev/docs/

    Demo:https://demo.spug.dev
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    开源地址:Github: https://github.com/openspug/spug; Gitee: https://gitee.com/openspug/spug
    更新日志:https://www.spug.dev/docs/change-log/
    常见问题:https://www.spug.dev/docs/faq/

    二、部署

    1)环境依赖

    Python 3.6+
    Django 2.2
    Node 12.14
    React 16.11
    Docker
    Mysql 5.6及以上
    自 v2.3.9 开始 Git 版本需要 2.17.0+ (影响新建常规发布申请单)

    2)Docker方式部署( Centos7.x为例)

    #Docker安装
    $ yum install -y yum-utils
    $ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    $ yum install docker-ce docker-ce-cli containerd.io
    $ systemctl start docker
    
    #拉取/下载阿里云项目镜像,阿里云的镜像与 Docker hub 同步更新,国内用户建议使用阿里云的镜像。官方镜像内置了 Mysql 数据库,也可以使用外部数据库(Mysql 5.6+)
    $ docker pull registry.aliyuncs.com/openspug/spug
    
    #启动容器
    # 第一种:持久化存储启动容器
    # 其中,/spug 指的是映射宿主机本地的磁盘路径,/data是容器内代码和数据初始化存储的路径,使用-v /spug:/data制定映射到容器外,进行持久化
    $ docker run -d --restart=always --name=spug -p 80:80 -v /spug:/data registry.aliyuncs.com/openspug/spug
    # 如果需要在spug内使用docker命令则需要添加额外的参数
    $ docker run -d --restart=always --name=spug -p 80:80 -v /spug/:/data -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker registry.aliyuncs.com/openspug/spug
    
    #进入容器,完成项目初始化;该过程会创建一个用户名为 admin 密码为 spug.dev 的管理员账户,可自行替换管理员账户。
    $ docker exec spug init_spug admin spug.dev  #如果提示连接数据失败,再次执行尝试
    # 执行完毕后需要重启容器
    $ docker restart spug
    
    ##使用外部 Mysql
    
    $ docker exec -it spug bash  #进入容器
    
    #修改配置文件使----->访问外部数据库
    $ vi /data/spug/spug_api/spug/overrides.py  #如下所示:
    
    DATABASES = {
        'default': {
            'ATOMIC_REQUESTS': True,
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'spug',
            'USER': 'spug',  # 修改为外部数据库的用户
            'PASSWORD': 'spug.dev',  # 修改为外部数据的用户密码
            'HOST': 'localhost',    # 修改为外部数据的ip
            'OPTIONS': {
                'unix_socket': '/var/lib/mysql/mysql.sock',   # !!!删除该行
                'charset': 'utf8mb4',
                'sql_mode': 'STRICT_TRANS_TABLES',
            }
        }
    }
    
    #停止容器内的数据库服务
    $ vi /etc/supervisord.d/spug.ini
    # 找到如下行并删除
    [program:mariadb]
    command = /usr/libexec/mysqld --user=mysql
    autostart = true
    
    #退出并重启容器
    $ exit
    $ docker restart spug
    
    ## 默认更新到最新版本;spug 是容器名称,也可以替换为自己的容器ID
    
    $ docker exec -i spug python3 /data/spug/spug_api/manage.py update 
    
    # 更新完成后重启容器
    $ docker restart spug
    

    【使用一键部署脚本部署】:

    $ curl https://spug.dev/installer/spug-installer | bash
    

    注意:

    #默认代码安装路径:
    /data/spug
    /
    #默认创建的数据库账号
    用户:spug
    密码:spug.dev
    #默认创建的系统管理员
    账户:admin
    密码:spug.dev

    3)访问测试

    在浏览器中输入 http://localhost:80 访问。默认用户名: admin 密码: spug.dev
    在这里插入图片描述
    可以在 系统管理/系统设置/关于 中查看当前运行的 Spug 版本,可以在 更新日志 查看当前最新版本。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1>部署登陆常见问题,单击参看

    4)手动部署

    #拉取项目
    $ git clone https://github.com/openspug/spug /data/spug
    或git clone https://gitee.com/openspug/spug
    $ cd /data/spug
    $ git checkout x.x.x   # x.x.x 为指定的发行版本,例如:git checkout v2.2.2 
    
    #将下载好的前端压缩包解压到指定目录,假设web_x.y.z.tar.gz
    $ tar xf web_x.y.z.tar.gz -C /data/spug/spug_web/
    
    #创建运行环境
    # 安装依赖,如需要使用常规发布功能,则需要安装 git v2.17.0+
    $ yum install mariadb-devel python3-devel gcc openldap-devel redis nginx supervisor
    # 创建虚拟环境
    $ cd /data/spug/spug_api
    $ python3 -m venv venv
    $ source venv/bin/activate
    # 安装python包
    $ pip install -U pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
    $ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
    $ pip install gunicorn mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple/
    
    #修改后端配置;后端默认使用的 Sqlite 数据库,通过修改配置使用 MYSQL 作为后端数据库;
    #在 spug_api/spug/ 目录下创建 overrides.py 文件,启动后端服务后会自动覆盖默认的配置,避免直接修改 settings.py 以便于后期获取新版本
    $ vi spug_api/spug/overrides.py
    
    DEBUG = False
    
    DATABASES = {
        'default': {
            'ATOMIC_REQUESTS': True,
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'spug',             # 替换为自己的数据库名,请预先创建好编码为utf8mb4的数据库
            'USER': 'spug_user',        # 数据库用户名
            'PASSWORD': 'spug_passwd',  # 数据库密码
            'HOST': '127.0.0.1',        # 数据库地址
            'OPTIONS': {
                'charset': 'utf8mb4',
                'sql_mode': 'STRICT_TRANS_TABLES',
                #'unix_socket': '/opt/mysql/mysql.sock' # 如果是本机数据库,且不是默认安装的Mysql,需要指定Mysql的socket文件路径
            }
        }
    }
    
    #初始化数据库
    $ cd /data/spug/spug_api
    $ python manage.py updatedb
    
    #创建默认管理员账户
    $ python manage.py user add -u admin -p spug.dev -s -n 管理员  #-s 超级管理员,-n 用户昵称
    
    # 创建启动服务脚本
    $ vi /etc/supervisord.d/spug.ini
    
    [program:spug-api]
    command = bash /data/spug/spug_api/tools/start-api.sh
    autostart = true
    stdout_logfile = /data/spug/spug_api/logs/api.log
    redirect_stderr = true
    
    [program:spug-ws]
    command = bash /data/spug/spug_api/tools/start-ws.sh
    autostart = true
    stdout_logfile = /data/spug/spug_api/logs/ws.log
    redirect_stderr = true
    
    [program:spug-worker]
    command = bash /data/spug/spug_api/tools/start-worker.sh
    autostart = true
    stdout_logfile = /data/spug/spug_api/logs/worker.log
    redirect_stderr = true
    
    [program:spug-monitor]
    command = bash /data/spug/spug_api/tools/start-monitor.sh
    autostart = true
    stdout_logfile = /data/spug/spug_api/logs/monitor.log
    redirect_stderr = true
    
    [program:spug-scheduler]
    command = bash /data/spug/spug_api/tools/start-scheduler.sh
    autostart = true
    stdout_logfile = /data/spug/spug_api/logs/scheduler.log
    redirect_stderr = true
    
    #创建前端nginx配置文件;、如果没有在 spug.conf 中指定 server_name 则需要把 /etc/nginx/nginx.conf 中默认的 server 块注释或删除后才能正常访问, 否则会打开 Nginx 默认页面
    $ vi /etc/nginx/conf.d/spug.conf
    
    server {
            listen 80;
            server_name _;     # 修改为自定义的访问域名
            root /data/spug/spug_web/build/;
            client_max_body_size 20m;   # 该值会影响文件管理器可上传文件的大小限制,请合理调整
    
            gzip  on;
            gzip_min_length  1k;
            gzip_buffers     4 16k;
            gzip_http_version 1.1;
            gzip_comp_level 7;
            gzip_types       text/plain text/css text/javascript application/javascript application/json;
            gzip_vary on;
    
            location ^~ /api/ {
                    rewrite ^/api(.*) $1 break;
                    proxy_pass http://127.0.0.1:9001;
                    proxy_read_timeout 180s;
                    proxy_redirect off;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            location ^~ /api/ws/ {
                    rewrite ^/api(.*) $1 break;
                    proxy_pass http://127.0.0.1:9002;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "Upgrade";
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            location / {
                    try_files $uri /index.html;
            }
    }
    
    #启动服务
    # 设置开机启动
    $ systemctl enable nginx
    $ systemctl enable redis
    $ systemctl enable supervisord
    $ systemctl restart nginx
    $ systemctl restart redis  #请确保Redis仅监听在 127.0.0.1
    $ systemctl restart supervisord
    
    ## 默认更新到最新版本
    $ cd spug_api
    $ source venv/bin/activate
    $ python manage.py update
    # 重启服务
    $ supervisorctl restart all
    

    注意:确保服务端接收到请求 HTTP Header 的 X-Real-IP 为真实的客户端地址,Spug 会使用该 IP 提高安全性(当登用户的 IP 发生变化时 Token 自动失效。

    更多参见官网文档介绍
    https://github.com/openspug/spug/issues/38

    5)平台功能概览

    1>主机管理:可以对主机进行管理、主机也可以通过表格批量导入
    在这里插入图片描述
    2>批量在线执行:可以执行模版命令和临时命令,例如经常执行的安装、更新、初始化的脚本或者命令就可以保存成模版来方便的快速批量执行。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    3>文件在线上传下载:可以很方便的在执行命令过程中上传或者下载需要的文件
    在这里插入图片描述
    4>在线终端:在线终端方便平台远程调试,跟本地执行一样
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    5>应用部署:可以快速部署任意开发语言的的应用,例如PHP、Java、Nodejs、Go等
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    6>监控报警:支持常见的网站监控,也可以针对主机的进程、端口进行监控,如果端口、进程监控满足不了需要,可以自己写脚本进行监控,报警支持钉钉、微信、邮件、企业微信、(短信报警下个版本支持)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    7>配置管理:(支持KV,txt,json等格式)
    在这里插入图片描述
    在这里插入图片描述

    8>任务计划:
    在这里插入图片描述

    展开全文
  • Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 特性 批量执行:主机命令在线批量执行...
  • 进入spug容器内部,直接改数据库spug user表 的admin的is_active=1即可。 1、进入容器内部: docker exec -it spug bash 2、改数据库流程: [root@bb001c1db674 /]# mysql -uspug -pspug.dev Welcome to the MariaDB...

    前置文章:
    Spug发布前端项目实战全过程https://blog.csdn.net/wdy_2099/article/details/120215392

    Spug设置报警提醒功能(钉钉、微信、邮箱)落地详细https://blog.csdn.net/wdy_2099/article/details/120224867
    问题:未知原因导致“账户已被系统禁用”
    在这里插入图片描述
    处理方式:
    进入spug容器内部,直接改数据库spug user表 的admin的is_active=1即可。

    [root@nb1 bin]# docker ps
    CONTAINER ID   IMAGE                                 COMMAND                  CREATED       STATUS          PORTS                                                  NAMES
    bb001c1db674   registry.aliyuncs.com/openspug/spug   "/entrypoint.sh"         4 weeks ago   Up 37 minutes   0.0.0.0:8082->80/tcp, :::8082->80/tcp                  spug
    

    1、进入容器内部:

    docker exec -it spug bash
    

    2、改数据库流程:

    [root@bb001c1db674 /]# mysql -uspug -pspug.dev
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 47
    Server version: 5.5.68-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB [(none)]> 
    MariaDB [(none)]> 
    MariaDB [(none)]> 
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | spug               |
    | test               |
    +--------------------+
    3 rows in set (0.00 sec)
    
    MariaDB [(none)]> use spug
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    MariaDB [spug]> 
    MariaDB [spug]> 
    MariaDB [spug]> show tables;
    +-------------------+
    | Tables_in_spug    |
    +-------------------+
    | alarm_contacts    |
    | alarm_groups      |
    | alarms            |
    | apps              |
    | config_histories  |
    | configs           |
    | deploy_extend1    |
    | deploy_extend2    |
    | deploy_requests   |
    | deploys           |
    | detections        |
    | django_migrations |
    | environments      |
    | exec_templates    |
    | host_extend       |
    | host_groups       |
    | host_groups_hosts |
    | hosts             |
    | login_histories   |
    | navigations       |
    | notices           |
    | notifies          |
    | repositories      |
    | roles             |
    | services          |
    | settings          |
    | task_histories    |
    | tasks             |
    | user_role_rel     |
    | users             |
    +-------------------+
    30 rows in set (0.00 sec)
    
    MariaDB [spug]> select * from users;
    +----+----------+-----------+--------------------------------------------------------------------------------+---------+-----------+-----------+----------------------------------+---------------+---------------------+---------------+----------+---------------------+------------+---------------+---------------+
    | id | username | nickname  | password_hash                                                                  | type    | is_supper | is_active | access_token                     | token_expired | last_login          | last_ip       | wx_token | created_at          | deleted_at | created_by_id | deleted_by_id |
    +----+----------+-----------+--------------------------------------------------------------------------------+---------+-----------+-----------+----------------------------------+---------------+---------------------+---------------+----------+---------------------+------------+---------------+---------------+
    |  1 | admin    | 管理员    | pbkdf2_sha256$150000$6pMX0lbZ1gP0$FOkYC42nLZI8Qdl6zF0wqaFdfKsUH1iMwD69Db85160= | default |         1 |         0 | ff2a325e650644f5a02e95315008d38a |    1633974335 | 2021-10-11 13:14:05 | 192.168.1.127 | NULL     | 2021-09-08 17:07:57 | NULL       |          NULL |          NULL |
    +----+----------+-----------+--------------------------------------------------------------------------------+---------+-----------+-----------+----------------------------------+---------------+---------------------+---------------+----------+---------------------+------------+---------------+---------------+
    1 row in set (0.00 sec)
    
    MariaDB [spug]> update users set is_active =1 ;
    Query OK, 1 row affected (0.06 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    MariaDB [spug]> exit
    

    这样就解决了这个问题,好!
    在这里插入图片描述
    注意:spug不只是docker部署一种方法,所以根据自己的来。思路是一样的。
    此外,还可以接外部数据库,如果是外部的话,就直接在外部对应的数据库内进行改动即可。

    END

    展开全文
  • spug上线服务踩坑记

    2021-07-08 17:10:12
    spug是一款优秀的自动化运维平台, 这让我们想自动化又向前迈了一步. 在过程中遇到的问题,记录在这里供各位看官参考. 一、远程执行命令问题 利用spug打好包之后,如何分发到应用最终跑的那台主机上去。 这里...

    spug是一款优秀的自动化运维平台,  这让我们想自动化又向前迈了一步.

    在过程中遇到的问题,记录在这里供各位看官参考.

    目录

    一、远程执行命令问题

    二、软连接的问题

    三、jdk 版本问题


    一、远程执行命令问题

    利用spug打好包之后,如何分发到应用最终跑的那台主机上去。

    这里有三个想法:

    1、ssh 发布主机后 执行命令,

    例如:

    ssh 10.50 "ln -snf /opt/qwert-$SPUG_GIT_TAG.war /opt/eqwe_fi_-spug.war"

    对于内置命令不需要写命令的绝对路径,

    ssh 10.50 "setsid /usr/lcal/jdk1.8.0_121/bin/java -Xms512m -Xmx1024m ....

     对非内置命令需要写绝对路径,这是为何? 这是和 环境变量有关的

    2、ssh之后去执行命令

     

    在spug 常规发布中,在目标主机上ssh 发布主机,ssh IP "ls /opt"  这个可以执行出来 。但是 先ssh IP 再执行其他命令就不行

    这是在非登录SHELL里执行的。

    尝试使用ssh -tt 强制分配一个tty也不行

    3、EOT End Of Text. 

    看下面这个例子,登录到目标主机上去,执行完命令后退出,使用这种方式在需要发布的主机上把打好的包copy过去,然后开始启动流程

    ssh user@server /bin/bash <<'EOT'
    echo "These commands will be run on: $( uname -a )"
    echo "They are executed by: $( whoami )"
    EOT

    这段shell 写的不是很好,硬编码严重,逻辑也有不严谨的地方。后续持续改进 

    echo "开始修改包名..............:"
    
    
    mv /opt/MPP/target/MPP.jar /opt/MPP/target/MPP_array_fi_$SPUG_GIT_TAG.jar
    echo "修改中..............:"
    sleep 1s
    if [ $? -eq 0 ]
    then
    echo "修改成功.............."
    else 
    echo "修改失败,请确认.............."
    fi
    
    
    echo "开始移动包到指定服务器..............:"
    #todo  2021年7月6日10:03:21 自动免密验证
    # ssh 192.168.10.168 /bin/bash << 'EOT'
    
    # if [ -d /opt/servers/MPP4 ];then
    # echo "目录已存在"
    # else
    # mkdir -p /opt/servers/MPP4/
    # echo "目录创建成功"
    # fi
    # EOT
    
    scp /opt/MPP/target/MPP_array_fi_$SPUG_GIT_TAG.jar 192.168.10.168:/opt/servers/MPP4
    
    ssh 192.168.10.168 "ln -snf /opt/servers/MPP4/MPP_array_fi_$SPUG_GIT_TAG.jar /opt/servers/MPP4/MPP-spug.jar"
     
     
    # --------------------------------------------- ssh by sscripts start 2021年7月27日09:01:05 
    ssh root@192.168.10.168 /bin/bash <<'EOT'
    
    cd /opt/servers/MPP4/
    
    echo "当前目录为:"
    pwd
    
    PID=$(ps -ef|egrep "MPP"|grep -v egrep|awk '{print $2}')
     
    PID_CNT=$(ps -ef|egrep "MPP"|grep -v egrep|awk '{print $2}'|wc -l)
     
    if [ $PID_CNT -eq 1 ];then
    echo "进程已存在,pid: $PID..............:"
    echo "重启中..............:"
    ps -ef|egrep "MPP"|grep -v egrep|awk '{print $2}'|xargs kill -9
    sleep 10s
    date +%H:%M:%S
    PID_CNT1=$(ps -ef|egrep "MPP"|grep -v egrep|awk '{print $2}'|wc -l)
       if [ $PID_CNT1 -eq 0 ];then
       echo "......启动命令$$........:"
           setsid /usr/local/jdk1.8.0_191/bin/java -Djava.rmi.server.hostname=192.168.10.168 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Xms1024m -Xmx4096m -jar -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:/aplog/MPP/agc.log -Dspring.profiles.active=prod /opt/servers/MPP4/MPP-spug.jar --server.port=8066 --mq.quartzFlg=Y --etl.quartzFlg=N --mq.alarmQuartzFlg=N --mq.shopId=QQQ >/dev/null &
            PID1=$(ps -ef|egrep "MPP"|grep -v egrep|awk '{print $2}')
            echo "重启成功,pid: $PID1..............:"
       fi
    else
    date +%H:%M:%S
    echo "当前目录为:"
    pwd
    echo "启动中..............:"
    date +%H:%M:%S
         setsid /usr/local/jdk1.8.0_191/bin/java -Djava.rmi.server.hostname=192.168.10.168 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Xms1024m -Xmx4096m -jar -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:/aplog/MPP/agc.log -Dspring.profiles.active=prod /opt/servers/MPP4/MPP-spug.jar --server.port=8066 --mq.quartzFlg=Y --etl.quartzFlg=N --mq.alarmQuartzFlg=N --mq.shopId=QQQ >/dev/null &
    PID2=$(ps -ef|egrep "MPP"|grep -v egrep|awk '{print $2}')
    date +%H:%M:%S
    echo "启动成功,PID为 $PID2..............:"
    fi
    EOT
    date +%H:%M:%S

    二、软连接的问题

    进入一个软连接目录,如果该目录被重新指向新的链接。

    此时在当前目录看到的文件仍旧是旧文件.

    cd出去,重新进入该目录文件才更新.

      

    参考:

    https://stackoverflow.com/questions/7114990/pseudo-terminal-will-not-be-allocated-because-stdin-is-not-a-terminal

    三、jdk 版本问题

    启动java程序时报如下错误

    Exception in thread "main" java.lang.UnsupportedClassVersionError: com/navi/RtmApplication : Unsupported major.minor version 52.0
    	at java.lang.ClassLoader.defineClass1(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    	at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
    	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

    打包机器的的JDK版本和AP服务器的JDK版本不一致导致的

    打包环境: /usr/local/jdk1.8.0_144/bin/java

    运行环境: /usr/local/jdk1.8.0_191/bin/java

    打包环境jdk版本是向下兼容,如果运行环境的版本比打包的新则会报如上错误.

    参考: https://blog.csdn.net/qq_37499840/article/details/89041335?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

    展开全文
  • 自动化运维平台Spug测试

    千次阅读 2020-09-29 11:20:46
    **前言:**在之前的文章批量执行crontab指定条目的注释和解注释提到过spug平台,本文具体的对该平台做详细介绍。 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机...

    **前言:**在之前的文章批量执行crontab指定条目的注释和解注释提到过spug平台,本文具体的对该平台做详细介绍。

    Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。

    环境说明:

    主机名操作系统版本ip地址docker版本Spug版本备注
    ansibleCentos 7.6.1810172.27.34.5118.09.9v2.3.8管理服务器

    一、特性

    • 批量执行: 主机命令在线批量执行
    • 在线终端: 主机支持浏览器在线终端登录
    • 文件管理: 主机文件在线上传下载
    • 任务计划: 灵活的在线任务计划
    • 发布部署: 支持自定义发布部署流程
    • 配置中心: 支持 KV、文本、json 等格式的配置
    • 监控中心: 支持站点、端口、进程、自定义等监控
    • 报警中心: 支持短信、邮件、钉钉、微信等报警方式
    • 优雅美观: 基于 Ant Design 的 UI 界面
    • 开源免费: 前后端代码完全开源

    本文会对‘批量执行’、‘在线终端’、‘文件管理’、‘任务计划’、‘监控中心’、‘报警中心’等功能。‘应用发布’和‘配置中心’下篇再做介绍。

    二、软件安装

    1.安装软件

    [root@ansible yaml]# docker pull registry.aliyuncs.com/openspug/spug
    [root@ansible yaml]# docker run -d --name=spug -p 80:80 -v /mydata/:/data registry.aliyuncs.com/openspug/spug
    [root@ansible yaml]#  docker exec spug init_spug admin spug.dev
    

    image-20200821172347258

    通过docker方式安装,docker安装请参考:k8s实践(一):Centos7.6部署k8s(v1.14.2)集群中docker安装章节。

    ‘-p 80:80’,spug的80端口映射端口为系统的80端口,‘-v /mydata/:/data’将容器的/data路径映射为系统的/mydata目录。

    初始化管理员账号admin,密码为spug.dev

    2.登陆

    http://172.27.34.51

    image-20200918154615369

    三、工作台

    image-20200918161814176

    工作台是一个概览,包含应用、主机任务、监控和报警等信息。

    四、主机管理

    1.新建主机

    image-20200918162405102

    '主机类别’为自定义类别,分别输入主机名和连接地址,单击验证

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHZKd1VJ-1601349537420)(https://i.loli.net/2020/09/24/G2JSr7cNjMFekD5.png)]

    输入root用户密码

    image-20200918162451768

    主机添加成功

    2.批量导入主机

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CrC8iMg2-1601349537432)(https://i.loli.net/2020/09/24/ITZzNetupjUs5Wy.png)]

    使用批量导入方式导入主机,可以先下载模板在更新上传。

    image-20200918163520497

    登陆密码一栏填写个主机密码,若为空则为默认密码’spug-default-keys’

    image-20200918163740084

    导入成功

    image-20200927095138906

    登陆密码为传输公钥时使用,系统不保存密码,下次可免密登陆访问。

    通信原理: 第一次在登录的时候会生产公私钥,密码只是用在第一次发送公钥上。

    image-20200918164015155

    公钥保存在各个被管理主机上,私钥存在于spug平台里(不是172.27.34.51服务里上面)。

    五、在线终端

    image-20200918164208432

    单机主机栏后面的’Console’即可免密进入终端

    image-20200918164347905

    进入终端,执行’df -h’命令

    六、文件管理

    进入在线终端后点击右上角的’文件管理器’即可进行文件上传下载操作

    image-20200918164609045

    image-20200918164551678

    spug可方便的进行文件上传下载,不用使用ftp工具或者繁琐的命令。

    七、批量执行

    该功能为spug核心功能之一,现从命令方式和模板方式演示。

    1.命令方式

    image-20200918165006138

    选择执行主机ansible、test162、test163,执行命令’df -h’和’echo “hello world”’

    执行结果:

    image-20200918165122193

    2.模板方式

    image-20200918165248650

    新建两个模板’注释crontab’和’解注释crontab’,模板内容其实也是shell脚本,比如’注释crontab’:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7WfHNu2c-1601349537459)(https://i.loli.net/2020/09/24/6qk3WOUjGp9f1Bu.png)]

    模板方式批量执行:

    image-20200918165511649

    执行完成,该模板内容为批量注释指定的crontab

    image-20200918165557753

    八、任务计划

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DrbHC0gP-1601349537468)(https://i.loli.net/2020/09/24/qE3afDp1dzscgJR.png)]

    新建任务计划date,任务类型可自定义,失败通知选钉钉,后面会有介绍,下一步

    image-20200924153432103执行对象选择test162和test163

    image-20200918171615712

    选择执行规则,UNIX Cron和linux的crontab类似,这里设置每分钟执行一次。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AkxrXi00-1601349537477)(https://i.loli.net/2020/09/24/E2ASjKqYNxIc7m4.png)]

    激活任务

    image-20200918172104322

    验证:

    image-20200918172427399

    每分钟向/tmp/date.txt文件输入当前时间。

    九、报警中心

    在介绍监控中心之前先介绍报警中心

    1.报警历史

    image-20200921100329614

    报警历史可以查看报警的历史信息,包括任务名、通知方式、通知对象和发生时间等。

    2.报警联系人

    以添加联系人loong576说明

    2.1 报警联系人概览

    image-20200921101210081

    告警方式包括邮箱、微信、钉钉和企业微信。

    2.2 获取微信Token

    关注微信公众号’Spug运维’,点击’我的’菜单获取

    image-20200921101607742

    2.3 获取钉钉webhook

    image-20200921102309212

    首先新建群聊

    image-20200921165532908

    选择接收的联系人,创建群‘spug告警接收’

    image-20200921165827672

    image-20200921165939988

    image-20200921170026675

    image-20200921170141108

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PwXT576R-1601349537496)(https://i.loli.net/2020/09/24/WEA3lXfLoGyDNvk.png)]

    image-20200921170218316

    点击群聊窗口右边的‘群设置’,‘智能群助手’,‘添加机器人’,‘自定义’,单击‘添加’

    image-20200921170449444

    根据实际情况填写安全设置,我这里填的是‘自定义关键词’,最多匹配10个,任意一个关键词被匹配到就会接收消息。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZne604a-1601349537508)(https://i.loli.net/2020/09/24/a4RmMQnWNXwclE9.png)]

    完成机器人添加,复制webhook。

    2.4 获取企业微信webhook

    企业微信获取webhook方式和钉钉有些类似,也是先建群,然后添加机器人。

    image-20200923154249811

    建群,选中群,添加群机器人

    image-20200923154259574

    image-20200923154336795

    创建一个机器人

    image-20200923154414611

    image-20200923154445961

    复制webhook地址

    3.报警联系人组

    image-20200923154828360

    告警是以组的方式发送的,新建告警组test_team,将告警联系人loong576加入改组。

    image-20200923154924773

    十、监控中心

    1.监控中心概览

    image-20200923155021034

    监控方式有四种:站点监控、端口监控、站点监控和自定义监控。这里以端口监控和自定义监控做说明。

    2.端口监控

    image-20200923160107117

    新建端口监控,监控地址为172.27.34.51,监控端口为8808

    image-20200923160232920

    监控频率为1分钟,即1分钟检查一次;报警阀值为3次,即检查3次不成功才发出报警;报警联系人组为test_team;报警方式为微信、钉钉、邮件和企业微信;通道沉默为5分钟,表示每5分钟发送一次报警消息。

    image-20200923160438695

    提交后等待检测

    image-20200923160751763

    发现8808端口检测异常

    2.1 微信告警

    image-20200923161204956

    2.2 钉钉告警

    image-20200923161300810

    2.3 邮件告警

    image-20200923161331167

    image-20200923161340884

    2.4 企业微信告警

    image-20200923161411558

    3. 自定义监控

    以监控文件系统使用率为例,超过5%即报警,监控脚本如下:

    #!/bin/bash
    num=5
    df -h|grep -vE 'tmpfs|cdrom'| awk -F '[ %]+' 'NR == 1 {next} {print $6 "     "  $5}' |while read df_file;
    do 
      value=$(echo $df_file | awk '{ print $2}')
      name=$(echo $df_file | awk '{ print $1 }')
      if [ $value -ge $num ]
      then
      echo "主机`hostname`文件系统 $name 使用率为 $value% "
      fi
    done
    
    for i in $(df -h| awk -F '[ %]+' 'NR == 1 {next} {print $5}'|xargs) 
    do 
      if [ $i -ge $num ]
      then
      exit $i 
      fi
    done
    

    image-20200923162442880

    脚本逻辑:首先设置阀值为’num=5’,通过’df -h’获取文件系统使用率所在的列,然后与阀值循环比较,如果大于阀值则输出告警信息’主机hostname文件系统 $name 使用率为 $value% '。

    自定义告警的原理:通过脚本判断监控项,脚本执行退出状态码为 0 则判定为正常,其他为异常。

    3.1 报警信息

    微信:

    image-20200923162416094

    钉钉:

    image-20200923162503570

    邮件:

    image-20200923162527846

    企业微信:

    image-20200923162548995

    十一、系统管理

    1.角色管理

    image-20200923163513658

    新建角色test_role

    image-20200923163613674

    分配权限如图

    2.账户管理

    image-20200923163715896

    新建账户loong576,分配角色test_role

    image-20200927093659364

    2.1 账户禁用问题

    现象:

    image-20200917101915977

    解决:

    [root@ansible ~]# docker exec spug python3 /data/spug/spug_api/manage.py user enable -u admin
    

    image-20200917101612841

    2.2 重置密码

    现象:

    image-20200917101440925

    解决:

    [root@ansible ~]# docker exec spug python3 /data/spug/spug_api/manage.py user reset -u admin -p Admin01!
    

    image-20200917101459190

    3.系统设置

    3.1 秘钥设置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUyD4fWm-1601349537560)(https://i.loli.net/2020/09/24/7gz68qC91JGmjbW.png)]

    spug 有自己的密钥对,公钥保存在被管理的主机内,私钥保存在spug平台内(不是管理主机172.27.34.51里)。通过

    十二、其它问题

    1.root无法直接登录问题

    1.1 问题说明

    由于root用户禁止直接登录,新建主机时登录用户不能设置为root,否则会报错,此时如果需要执行需要root权限的命令时,需要加sudo,但是运行sudo时需要输入密码确认,spug平台批量执行时没有交互窗口,运行命令会报错,此时则需要进行提权操作且免密。

    [monitor@work01 /]$ id
    uid=1002(monitor) gid=1002(monitor)=1002(monitor)
    [monitor@work01 /]$ more /etc/sudoers
    /etc/sudoers: 权限不够
    [monitor@work01 /]$ sudo more /etc/sudoers|grep monitor
    monitor    ALL=(ALL)   NOPASSWD:    ALL
    

    修改文件’/etc/sudoers’,新增:‘monitor ALL=(ALL) NOPASSWD: ALL’

    1.2 monitor用户获取root权限运行示例

    不使用sudo情况:

    image-20200826155136289

    使用sudo:

    image-20200826155158912

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13fHvTtm-1601349537563)(https://i.loli.net/2020/09/24/eHYILDZngG153td.png)]

    使用sudo运行需要root权限的额命令,直接运行,不需要二次输入密码。

    2.打通网络

    如果是生产环境无法联网的话,发送告警信息则需要打通网络

    到微信:http://spug-wx.qbangmang.com 80
    到钉钉:https://oapi.dingtalk.com 443
    到企业微信:https://qyapi.weixin.qq.com 443
    

    3.设置容器自启动

    [root@ansible ~]# docker update --restart=always spug
    spug
    

    设置后若主机重启容器spug会自动启动,无需手动在拉起来

    4.更换平台ip

    如需更换ip,则直接修改,然后重启主机即可。

    十三、总结

    轻量、快捷、好用是spug的特点,部署简单,安全可靠、无agent、可视化,可以快速高效的批量对主机进行命令分发、监控等,非常适用于日常变更上线操作。spug平台既可当跳板机,也可以替代堡垒机部分功能,如进入console、文件上传下载等。

    参考

    官网:https://www.spug.dev/

    github:https://github.com/openspug/spug

    文档:https://www.spug.dev/docs/about-spug

     
     
     

     

     

    image-20200309002139092

    展开全文
  • Spug发布前端项目实战全过程

    千次阅读 2021-09-10 09:47:48
    Spug官网 一、Spug Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。...
  • Linux之spug安装及使用

    千次阅读 2021-02-05 10:16:59
    Spug面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。
  • Spug - 轻量级自动化运维平台 对于中小型企业而言,进行主机和应用的管理是比较麻烦的,应用部署往往需要直接连接服务器,再进行手动的环境配置、代码拉取、应用构建和部署发布等工作,容易出错,且耗时费力。一个好...
  • docer 部署步骤参考官方文档:https://www.spug.dev/docs/install-docker/ 如果没有外网可以先在一台有外网的机器上把镜像build好并save,然后把镜像传到局域网的机器。 这里为了方面直接用官方的镜像,官方的image...
  • 基于开源运维平台Spug的后台,使用Vue Element组件库开发的脚手架
  • docker-compose Install Spug

    2020-11-20 17:42:41
    什么是Spug Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 创建spug网络 docker...
  • 扫描上述二维码,关注Spug官方公众号,点击我的,就可以得到token: 2、钉钉通知:需要获取钉钉群的Webhook 1)新建一个钉钉群 2)群设置---->智能群助手---->添加机器人 点击添加按钮icon 点击:自定义 ...
  • 官网地址:· 灵活、强大、... $ docker exec spug init_spug admin spug.dev # 执行完毕后需要重启容器 $ docker restart spug 5. 访问测试 在浏览器中输入 http://localhost:80 访问。 用户名: admin 密码: spug.dev
  • Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 Spug的特性 批量...
  • Spug 介绍 Spug 是面向中小型企业设计的无Agent的自动化运维平台,功能包含主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、进程端口站点监控、微信钉钉邮件报警等...
  • Spug部署平台使用

    千次阅读 2020-11-19 18:14:39
    GitHub 内网地址 主机管理 新建主机 只支持ssh账户 + 密码方式登录(现在已经有其他认证方式...删除主机,删除之前确认该主机下没有定时任务,如果有定时任务存在,删除不成功,需要先去监控中心删除掉监控任务。...
  • 什么是Spug Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 查看容器名称 docker...
  • Spug介绍Spug 面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。界面UI基于...
  • 参考URL: https://spug.dev/docs/example-java/ https://www.spug.dev/docs/host-manage/ https://spug.dev/docs/deploy-config/ 概览 以 若依管理系统 https://gitee.com/y_project/RuoYi 作为例子,最终大概...
  • Spug简介 Spug面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 ...
  • Spug面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。 特性 批量...
  • Linux Centos8手动部署Spug服务器项目监控管理平台安装1.安装docker2.拉取镜像3.启动容器4.初始化5.访问测试 安装 1.安装docker 2.拉取镜像 国内用户建议使用阿里云的镜像。也可以不使用阿里云镜像。阿里云的镜像与 ...
  • Spug是一个轻量自动化运维平台Spug 特性:开源免费,简单好用,不需要安装Agent,功能包含主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、进程端口站点监控、...
  • Spug是一个开源的运维平台,平台简单好用,不需要安装 Agent,功能包含主机管理、主机批量执行、主机在线终端、应用发布、任务计划、配置中心、监控、报警等一系列功能。 近期Spug开源运维平台发布了V2.3 版本,新...
  • 现在越来越多的项目运维都更加趋向于自动化,可以让运维人员更快的实现项目的发布、主机监控、告警等功能,那么spug是一款开源的轻量级的自动化运维平台。不需要安装Agent,功能包含主机管理、主机批量执行、主机...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 314
精华内容 125
关键字:

Spug

友情链接: apache-jmeter源码.zip