自動化運維平臺Spug測試

前言:在以前的文章批量執行crontab指定條目的註釋和解註釋提到過spug平臺,本文具體的對該平臺作詳細介紹。python

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

環境說明:git

主機名 操做系統版本 ip地址 docker版本 Spug版本 備註
ansible Centos 7.6.1810 172.27.34.51 18.09.9 v2.3.8 管理服務器

1、特性

  • 批量執行: 主機命令在線批量執行
  • 在線終端: 主機支持瀏覽器在線終端登陸
  • 文件管理: 主機文件在線上傳下載
  • 任務計劃: 靈活的在線任務計劃
  • 發佈部署: 支持自定義發佈部署流程
  • 配置中心: 支持 KV、文本、json 等格式的配置
  • 監控中心: 支持站點、端口、進程、自定義等監控
  • 報警中心: 支持短信、郵件、釘釘、微信等報警方式
  • 優雅美觀: 基於 Ant Design 的 UI 界面
  • 開源免費: 先後端代碼徹底開源

本文會對‘批量執行’、‘在線終端’、‘文件管理’、‘任務計劃’、‘監控中心’、‘報警中心’等功能。‘應用發佈’和‘配置中心’下篇再作介紹。github

2、軟件安裝

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安裝章節。web

'-p 80:80',spug的80端口映射端口爲系統的80端口,‘-v /mydata/:/data’將容器的/data路徑映射爲系統的/mydata目錄。docker

初始化管理員帳號admin,密碼爲spug.devshell

2.登錄

http://172.27.34.51json

image-20200918154615369

3、工做臺

image-20200918161814176

工做臺是一個概覽,包含應用、主機任務、監控和報警等信息。後端

4、主機管理

1.新建主機

image-20200918162405102

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

image-20200918162427616

輸入root用戶密碼

image-20200918162451768

主機添加成功

2.批量導入主機

image-20200918162651704

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

image-20200918163520497

登錄密碼一欄填寫個主機密碼,若爲空則爲默認密碼'spug-default-keys'

image-20200918163740084

導入成功

image-20200927095138906

登錄密碼爲傳輸公鑰時使用,系統不保存密碼,下次可免密登錄訪問。

通訊原理: 第一次在登陸的時候會生產公私鑰,密碼只是用在第一次發送公鑰上。

image-20200918164015155

公鑰保存在各個被管理主機上,私鑰存在於spug平臺裏(不是172.27.34.51服務裏上面)。

5、在線終端

image-20200918164208432

單機主機欄後面的'Console'便可免密進入終端

image-20200918164347905

進入終端,執行'df -h'命令

6、文件管理

進入在線終端後點擊右上角的'文件管理器'便可進行文件上傳下載操做

image-20200918164609045

image-20200918164551678

spug可方便的進行文件上傳下載,不用使用ftp工具或者繁瑣的命令。

7、批量執行

該功能爲spug核心功能之一,現從命令方式和模板方式演示。

1.命令方式

image-20200918165006138

選擇執行主機ansible、test16二、test163,執行命令'df -h'和'echo "hello world"'

執行結果:

image-20200918165122193

2.模板方式

image-20200918165248650

新建兩個模板'註釋crontab'和'解註釋crontab',模板內容其實也是shell腳本,好比'註釋crontab':

image-20200918165410058

模板方式批量執行:

image-20200918165511649

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

image-20200918165557753

8、任務計劃

image-20200918171349009

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

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

image-20200918171615712

選擇執行規則,UNIX Cron和linux的crontab相似,這裏設置每分鐘執行一次。

image-20200918171711242

激活任務

image-20200918172104322

驗證:

image-20200918172427399

每分鐘向/tmp/date.txt文件輸入當前時間。

9、報警中心

在介紹監控中心以前先介紹報警中心

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

10、監控中心

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

11、系統管理

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裏)。經過

12、其它問題

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,則直接修改,而後重啓主機便可。

十3、總結

輕量、快捷、好用是spug的特色,部署簡單,安全可靠、無agent、可視化,能夠快速高效的批量對主機進行命令分發、監控等,很是適用於平常變動上線操做。spug平臺既可當跳板機,也能夠替代堡壘機部分功能,如進入console、文件上傳下載等。

參考

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

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

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

 
 
   
  
  
  
 

image-20200309002139092

相關文章
相關標籤/搜索