自动化运维平台Spug介绍

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

大家好,又见面了,我是你们的朋友全栈君。

一、概要

在这里插入图片描述
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>监控报警:支持常见的网站监控,也可以针对主机的进程、端口进行监控,如果端口、进程监控满足不了需要,可以自己写脚本进行监控,报警支持钉钉、微信、邮件、企业微信、(短信报警下个版本支持)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

:可查询最近30天内的报警记录,超过30天的报警记录会被自动删除,且通道沉默期发送的报警信息不会被记录。另外,监控实例删除后,告警信息不会同步删除;

7>配置管理:(支持KV,txt,json等格式)
在这里插入图片描述
在这里插入图片描述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145246.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • QT——开发入门简介

    QT——开发入门简介1、你了解Qt吗?Qt是一种基于C++的跨平台图形用户界面应用程序开发框架。如何跨平台?上到服务器上位机,下到嵌入式GUI,上天入地无所不能。Qt最早是由1991年由QtCompany开发,但是到2008年,QtCompany科技被诺基亚公司收购,是的,就是拥有着我们很多情怀的诺基亚。但在2012年,Qt又被Digia收购。等到了2014年,跨平台集成开发环境QtCreator3.1….

    2022年5月17日
    33
  • json文件的读取_c语言文件读取

    json文件的读取_c语言文件读取JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。有关于json的相关信息,可参考:json百度百科。1、HTML文档<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>R

    2022年10月11日
    2
  • c语言函数指针的用法_函数指针作为形参

    c语言函数指针的用法_函数指针作为形参前言函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。今天这里只讲两…

    2022年8月18日
    6
  • vue中watch监听对象的变化_远程监听器用法

    vue中watch监听对象的变化_远程监听器用法官方解释:一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue实例将会在实例化时调用watch,遍历watch对象的每一个属性。示例:滴哟<template> <el-cardclass=”box-card”><el-inputv-model=”name”style=”width:30%;”></el-input></el-card></template.

    2025年7月5日
    4
  • 小米手机抓包教程

    小米手机抓包教程小米手机抓包教程

    2022年6月20日
    37
  • 6个Python工程师必考的面试题「建议收藏」

    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要给大家介绍6个Python工程师必考的面试题。

    2022年1月18日
    74

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号