自動化運維平台Spug測試


前言:在之前的文章批量執行crontab指定條目的注釋和解注釋提到過spug平台,本文具體的對該平台做詳細介紹。

Spug 面向中小型企業設計的輕量級無 Agent 的自動化運維平台,整合了主機管理、主機批量執行、主機在線終端、文件在線上傳下載、應用發布部署、在線任務計划、配置中心、監控、報警等一系列功能。

環境說明:

主機名 操作系統版本 ip地址 docker版本 Spug版本 備注
ansible Centos 7.6.1810 172.27.34.51 18.09.9 v2.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

'主機類別'為自定義類別,分別輸入主機名和連接地址,單擊驗證

image-20200918162427616

輸入root用戶密碼

image-20200918162451768

主機添加成功

2.批量導入主機

image-20200918162651704

使用批量導入方式導入主機,可以先下載模板在更新上傳。

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':

image-20200918165410058

模板方式批量執行:

image-20200918165511649

執行完成,該模板內容為批量注釋指定的crontab

image-20200918165557753

八、任務計划

image-20200918171349009

新建任務計划date,任務類型可自定義,失敗通知選釘釘,后面會有介紹,下一步

image-20200924153432103執行對象選擇test162和test163

image-20200918171615712

選擇執行規則,UNIX Cron和linux的crontab類似,這里設置每分鍾執行一次。

image-20200918171711242

激活任務

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

image-20200921170119747

image-20200921170218316

點擊群聊窗口右邊的‘群設置’,‘智能群助手’,‘添加機器人’,‘自定義’,單擊‘添加’

image-20200921170449444

根據實際情況填寫安全設置,我這里填的是‘自定義關鍵詞’,最多匹配10個,任意一個關鍵詞被匹配到就會接收消息。

image-20200921170625946

完成機器人添加,復制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 秘鑰設置

image-20200923163915578

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

image-20200826155221773

使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM