自动化运维平台Spug测试

**前言:**在之前的文章批量执行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

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SPUG是一个功能强大的在线任务计划工具,它能够帮助我们实现自动化配置、实时监控和实时报警。 首先,SPUG可以帮助我们进行在线的任务计划。我们可以通过SPUG来设置各种任务,并指定任务的执行时间、频率和相关参数。无论是定时执行的任务还是循环执行的任务,SPUG都能够准确地按照设定的计划来执行,并能够提供详细的执行日志和报告,方便我们随时查看任务的执行情况。 其次,SPUG可以帮助我们实现自动化配置。我们可以通过SPUG来集中管理服务器和应用程序的配置文件,并且可以对配置文件进行版本控制和追踪。这样,当我们需要修改配置时,只需要在SPUG上进行相应的修改,然后SPUG会自动将新的配置文件分发到指定的服务器上,实现配置的自动化部署和更新,大大减少了手动操作的工作量和错误发生的概率。 另外,SPUG还具备实时监控的功能。它可以监控服务器的运行状态、应用程序的性能指标和各种资源的使用情况。一旦发现异常或超过阈值的情况,SPUG会立即发出警报,通知相应的负责人员或群组。这样,我们可以及时发现问题并采取相应的措施,避免因问题而导致的服务中断或性能下降。 最后,SPUG还能够实时报警。除了通过监控来发现异常并发出警报外,SPUG还支持自定义的报警条件和动作。我们可以根据自己的需求来设置报警规则,例如当服务器的CPU使用率超过80%时发出警报,或者当应用程序的响应时间超过1秒时发出警报。一旦触发了报警条件,SPUG会立即发送通知给指定的人员,并提供相应的告警信息和处理建议,确保问题能够及时得到处理和解决。 综上所述,SPUG能够为我们提供方便实用的在线任务计划、自动化配置、实时监控和实时报警功能,帮助我们简化运维工作,提高系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值