首页 > 其他分享 >轻量级无 Agent 的自动化运维平台--Spug

轻量级无 Agent 的自动化运维平台--Spug

时间:2024-03-15 13:11:54浏览次数:29  
标签:运维 -- spug 报警 admin 设置 主机 执行 轻量级

介绍

Spug 是一个开源的自动化运维管理平台,由 JavaScript 和 Python 编写,面向中小型企业设计,无需 Agent,非常轻量化。为运维人员提供了自动化部署、配置管理、任务编排、监控告警等一系列强大功能,帮助轻松管理大规模的服务器集群。

Spug 整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等多项功能,为我们提供了全面的运维解决方案。

官网

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

gitee https://gitee.com/openspug/spug

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

官方文档 https://www.spug.cc/docs/about-spug

功能特性

  • 批量执行: 主机命令在线批量执行 通过平台,用户可以轻松对主机上的命令进行批量执行,节省了操作时间和提高了效率。

  • 在线终端: 主机支持浏览器在线终端登录 用户可以方便地通过浏览器登录主机的在线终端,实时操作主机,无需额外的终端软件。

  • 文件管理: 主机文件在线上传下载 支持主机文件的在线上传和下载,便捷地进行文件传输和管理。

  • 任务计划: 灵活的在线任务计划 用户可以灵活设定在线任务计划,定时执行任务,提升工作自动化程度。

  • 发布部署: 支持自定义发布部署流程 用户可根据需求自定义发布部署流程,确保部署过程符合实际需求。

  • 配置中心: 支持 KV、文本、json 等格式的配置 方便用户进行统一配置管理。

  • 监控中心: 支持站点、端口、进程、自定义等监控 满足用户对主机状态的实时监控需求。

  • 报警中心: 支持短信、邮件、钉钉、微信等报警方式,及时通知用户主机状态异常。

  • 优雅美观: 基于 Ant Design 的 UI 界面 整体界面简洁清晰,操作体验良好。

  • 开源免费: 前后端代码完全开源 用户可以自由查看源码并永久免费使用平台。

安装

官方推荐docker compose安装

资源清单文件

version: "3.3"
services:
  db:
    image: mysql:8.0
    container_name: spug-db
    restart: always
    networks:
      - spug-net
    #command: --port 3306 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=spug
      - MYSQL_PASSWORD=spug.cc
      - MYSQL_ROOT_PASSWORD=spug.cc
  spug:
    image: openspug/spug-service
    container_name: spug
    privileged: true
    restart: always
    networks:
      - spug-net
    volumes:
      - ./service:/data/spug
      - ./repos:/data/repos
    ports:
      # 如果80端口被占用可替换为其他端口,例如: - "8000:80"
      - "80:80"
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=spug
      - MYSQL_PASSWORD=spug.cc
      - MYSQL_HOST=db
      - MYSQL_PORT=3306
    depends_on:
      - db
networks:
  spug-net:

启动容器

docker compose up -d

初始化

以下操作会创建一个用户名为 admin 密码为 spug.cc 的管理员账户,可自行替换管理员 账户/密码

docker exec spug init_spug admin spug.cc

访问测试

在浏览器中输入 http://<IP>:80 访问

用户名密码是 上面初始化创建的

例如以上面的初始化为例 用户名为 admin 密码为 spug.cc

功能

首页

可以设置公告和导航快捷方式

仪表盘

可以看到大致的信息

主机管理部分

如果是密钥验证,就上传私钥文件,如果想用密码验证,那就不要上传密钥,在点击验证的时候会要求输入密码

批量执行部分

执行任务可以直接输入对应的脚本,选择对应的主机,然后点击开始执行就好了

点击执行后,会显示执行结果

如果使用 nohup 或 & 启动后台进程页面一直在转圈不会结束怎么办,官方也给出了解决办法

在 批量执行 或 发布配置 等的执行脚本中以 nohup& 的方式启动后台子进程时需要 把命令的标准输出重定向至 /dev/null,例如以下启动 Tomcat 的命令:

cd web/WEB-INF/
nohup ./startup.sh &

把上述命令改为:

cd web/WEB-INF/
nohup ./startup.sh > /dev/null &

也可以在模板中事先定义好,然后通过模板来执行

然后在执行任务的时候添加一下

文件分发

可以是把本地的文件上传到主机,也可以是把主机的文件同步到另一个主机上

上传本地文件就不讲了

这里需要讲下的是把主机的文件同步到另一个主机上

这里数据源的路径一定是目录,而不是文件

执行的结果是,把数据源指定的目录中的文件上传到目标主机的目标路径中,是不上传数据源目录的

计划任务

这个真的好用

创建任务

还可以选择失败后的通知方式

选择主机

设置执行触发器

可以设置普通间隔

也可以设置一次性任务,选择哪个时间点

还可以设置系统的cron

激活任务

刚创建的任务是处于未激活的状态

可以先执行测试,先测试一下看看

会显示执行结果

可以激活任务

激活后会显示待调度

需要手动刷新才能刷新状态

查看结果

查看历史执行记录

监控中心

可以创建 站点检测、端口检测、Ping检测、进程检测和自定义脚本

站点检测

通过 GET 请求指定的 url 匹配返回的状态码来确定站点是否异常,目前200 - 399之间状态码均为正常,否则为异常,默认超时时间为 10 秒。

端口检测

检测指定目标主机的 TCP 端口是否可以正常建立接连。

Ping 检测

使用 Ping 检测目标主机是否存活,默认超时时间为 3 秒。

进程检测

检测指定目标主机的某个进程是否存活。

自定义脚本检测

在指定主机上运行自定义的脚本,通过判断返回的退出状态码是否为 0 来确定是否有异常。脚本执行中输出的内容将作为报警的描述信息,可利用此特性来灵活控制 报警的规则和报警的内容。

执行测试

会返回结果

设置规则

配置说明

  • 监控频率: 每隔多长时间检测一次

  • 报警阈值: 连续指定次数检测失败后才会触发报警,例如:报警阈值设置为3,则表示当出现故障时连续3次检测都为失败的情况才触发报警

  • 报警联系人组: 报警联系人的集合,可以包含一个或多个报警联系人

  • 通道沉默: 相同的检测失败事件在通道沉默周期内只触发一次报警,避免过于频繁重复的报警信息。例如:通道沉默设置为 5 分钟,第一次触发报警后,5分钟内再次触发相同的报警信息则不会发送。

  • 报警方式 目前支持微信、钉钉和邮件三种报警方式,内置开箱即用的微信和邮件报警服务,需要关注下官方的公众号获取调用凭据,将调用凭据配置至系统设置 / 报警服务设置 中的调用凭据中。

    • 微信报警,需要设置报警联系人的微信 Token,获取方式与获取调用凭据相同

    • 钉钉报警,需要设置报警联系人的钉钉机器人 URL,请在钉钉群-安全设置里面添加部署服务器的外网 IP,或者设置关键字 通知

    • 邮件报警,需要设置报警联系人的邮箱地址

这里就不太好了,就一定要设置告警,但是我有的监控其实并不想告警,只是希望获取下对应的信息,就是打开监控中心能够查看到这些监控项的值
所以感觉还有待改进,可以将监控和告警分离开,需要告警的时候再关联

报警中心

可以添加联系人,在添加监控的时候关联起来

系统配置

查看登录日志

设置角色

这里的逻辑是通过角色来设置权限,是没办法给用户单独设置权限的

先创建角色

修改页面的功能权限


添加主机权限

设置允许这个用户操作哪些主机

添加发布权限

这里还有个发布权限

这个就是指定这个用户有哪些环境或者应用的操作权限

新建用户

新建用户,绑定角色

除了页面上对普通用的管理,Spug 还提供了 manage.py user 命令可用于管理员账户的管理操作。

通过命令行的方式操作

创建用户

创建账户使用 manage.py user add 命令,用法示例如下

cd spug/spug_api
source venv/bin/activate
python manage.py user add -u admin -p 123 -n 张三丰 -s

Docker 安装的可以执行如下命令

docker exec spug python3 /data/spug/spug_api/manage.py user add -u admin -p 123 -n 张三丰 -s

以上命令会创建个登录名为 admin 密码为 123 昵称为 张三丰 的管理员账户,注意最后的 -s 参数,如果携带了这个参数意味着该账户为管理员账户, 管理员账户可以不受任何限制的访问所有功能模块。

重置密码

使用 manage.py user reset 命令来重置账户密码,用法示例如下

cd spug/spug_api
source venv/bin/activate
python manage.py user reset -u admin -p abc

Docker 安装的可以执行如下命令

docker exec spug python3 /data/spug/spug_api/manage.py user reset -u admin -p abc

上述操作会重置登录名为 admin 的账户的密码为 abc

启用账户

当页面上登录连续错误数次超过3次后账户自动转为禁用状态,普通用户可以通过 系统管理 / 账户管理 在页面是启用账户即可,但管理员账户需要使用如下命令来启用

cd spug/spug_api
source venv/bin/activate
python manage.py user enable -u admin

Docker 安装的可以执行如下命令

docker exec spug python3 /data/spug/spug_api/manage.py user enable -u admin

标签:运维,--,spug,报警,admin,设置,主机,执行,轻量级
From: https://www.cnblogs.com/guangdelw/p/18075181

相关文章

  • HDU 2036:改革春风吹满地(多边形面积计算)
    一、原题链接Problem-2036(hdu.edu.cn)参考:如何编程计算任意多边形的面积?理解了之后发现好简单!_哔哩哔哩_bilibili二、题面“改革春风吹满地,不会AC没关系;实在不行回老家,还有一亩三分地。谢谢!(乐队奏乐)”话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题......
  • 【LeetCode 2312】卖木头块
    题目描述原题链接:2312卖木头块解题思路每次切割只能完全横切或者竖切,即切成更矮或者更窄的木块;每次切割后剩余的两部分木块都是更小规模的同类问题,典型的可以用动态规划求解的问题;具体到单个问题,高x宽y的木块能卖的最多钱数有三种情况:prices数组中正好有对应宽高的价格......
  • Npm使用教程
    简介npm,全名nodepackagemanger,是node的开放式模块登记和管理系统,是node.js包的标准发布平台。npm如何使用npm在按照Node.js时会连带被安装。但有可能不是最新版本,需要npminstallnpm@latest-g升级到最新版本。基本命令:#查看npm命令列表$npmhelp#查看各个......
  • 创建Vue项目的三种方式
    1、vuecreate(首选)createanewprojectpoweredbyvue-cli-service以这种方式创建的项目,vue版本是当前最稳定的版本,不是最新的。首先打开控制台,输入下面的命令。vuecreate项目名称按键盘上的上下键,选择Manuallyselectfeatures(手动配置)。通过↑↓箭头选择你......
  • CF575H Bots 题解 组合数学
    Bots传送门SashaandIraaretwobestfriends.Buttheyaren’tjustfriends,theyaresoftwareengineersandexpertsinartificialintelligence.Theyaredevelopinganalgorithmfortwobotsplayingatwo-playergame.Thegameiscooperativeandturn......
  • C语言小游戏:猜数字
    //猜数字#include<stdio.h>#include<stdlib.h>intmain(){ inta,x,y,n,b=0; printf("请输入范围1~n中n的值:"); scanf("%d",&n); a=rand()%n+1; while(1) { printf("请输入一个整数:"); scanf("%d",&x); if(x&......
  • 【若依前后端分离+app】app页面首页添加动态轮播图
    首页文件路径:pages/work/index.vue1. Vue组件的模板部分包括创建模板、视图容器、视图、轮播图组件以及相关的属性和事件监听器。以下部分为轮播图代码:<template><viewclass="work-container"><view><!--轮播图--><uni-swiper-dotclass="uni-s......
  • 为什么Java不支持多继承
    1、典型回答在Java语言中,不支持多继承的主要原因是为了简化语言设计和避免潜在的问题(如菱形继承)以及避免多重继承的层次膨胀,同时又因为在实际工作中,确实很少用到多继承,所以在Java语言中,并不支持多继承。而且,虽然Java中不支持多继承,但也给了一些功能上的替代方案,比如实现多......
  • 【数据挖掘】实验2:R入门2
    实验2:R入门2一:实验目的与要求1:熟悉和掌握R数据类型。2:熟悉和掌握R语言的数据读写。二:实验内容1:R数据类型【基本赋值】Eg.1代码:x<-8x Eg.2代码:a='city'a【缺省值】Eg.1代码:(1)生成向量z;(2)返回z的结果;(3)识别z的值是否有缺失值。z<-c(1:5,NA)zis.na(......
  • 【数据挖掘】实验1:R入门(内含详细R和RStudio安装教程)
    实验1:R入门一:实验目的与要求1:根据上课PPT内容,掌握课堂知识并进行代码练习操作,提供练习过程和结果。2:可COPY代码运行结果直接提交,如涉及到输出图等可截图。二:实验内容1:R语言的下载与安装1.1:安装R语言从清华镜像网站(TheComprehensiveRArchiveNetwork)处下载Windows版......