自動化運維平臺Spug測試

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

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

環境說明:linux

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

1、特性

  • 批量執行: 主機命令在線批量執行git

  • 在線終端: 主機支持瀏覽器在線終端登陸github

  • 文件管理: 主機文件在線上傳下載web

  • 任務計劃: 靈活的在線任務計劃docker

  • 發佈部署: 支持自定義發佈部署流程shell

  • 配置中心: 支持 KV、文本、json 等格式的配置json

  • 監控中心: 支持站點、端口、進程、自定義等監控後端

  • 報警中心: 支持短信、郵件、釘釘、微信等報警方式

  • 優雅美觀: 基於 Ant Design 的 UI 界面

  • 開源免費: 先後端代碼徹底開源

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

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

經過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

3、工做臺

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

4、主機管理

1.新建主機

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

輸入root用戶密碼

主機添加成功

2.批量導入主機

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

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

導入成功

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

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

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

5、在線終端

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

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

6、文件管理

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


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

7、批量執行

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

1.命令方式

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

執行結果:

2.模板方式

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

模板方式批量執行:

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

8、任務計劃

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

執行對象選擇test162和test163


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

激活任務

驗證:

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

9、報警中心

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

1.報警歷史

報警歷史能夠查看報警的歷史信息,包括任務名、通知方式、通知對象和發生時間等。

2.報警聯繫人

以添加聯繫人loong576說明

2.1 報警聯繫人概覽

告警方式包括郵箱、微信、釘釘和企業微信。

2.2 獲取微信Token

關注微信公衆號'Spug運維',點擊'個人'菜單獲取

2.3 獲取釘釘webhook

首先新建羣聊

選擇接收的聯繫人,建立羣‘spug告警接收’

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

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

完成機器人添加,複製webhook。

2.4 獲取企業微信webhook

企業微信獲取webhook方式和釘釘有些相似,也是先建羣,而後添加機器人。

建羣,選中羣,添加羣機器人

建立一個機器人

複製webhook地址

3.報警聯繫人組

告警是以組的方式發送的,新建告警組test_team,將告警聯繫人loong576加入改組。

10、監控中心

1.監控中心概覽

監控方式有四種:站點監控、端口監控、站點監控和自定義監控。這裏以端口監控和自定義監控作說明。

2.端口監控

新建端口監控,監控地址爲172.27.34.51,監控端口爲8808

監控頻率爲1分鐘,即1分鐘檢查一次;報警閥值爲3次,即檢查3次不成功才發出報警;報警聯繫人組爲test_team;報警方式爲微信、釘釘、郵件和企業微信;通道沉默爲5分鐘,表示每5分鐘發送一次報警消息。

提交後等待檢測

發現8808端口檢測異常

2.1 微信告警

2.2 釘釘告警

2.3 郵件告警

2.4 企業微信告警

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

腳本邏輯:首先設置閥值爲'num=5',經過'df -h'獲取文件系統使用率所在的列,而後與閥值循環比較,若是大於閥值則輸出告警信息'主機hostname文件系統 使 value% '。

自定義告警的原理:經過腳本判斷監控項,腳本執行退出狀態碼爲 0 則斷定爲正常,其餘爲異常。

3.1 報警信息

微信:

釘釘:

郵件:

企業微信:

11、系統管理

1.角色管理

新建角色test_role

分配權限如圖

2.帳戶管理

新建帳戶loong576,分配角色test_role

2.1 帳戶禁用問題

現象:

解決:

[root@ansible ~]# docker exec spug python3 /data/spug/spug_api/manage.py user enable -u admin

2.2 重置密碼

現象:

解決:

[root@ansible ~]# docker exec spug python3 /data/spug/spug_api/manage.py user reset -u admin -p Admin01!

3.系統設置

3.1 祕鑰設置

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狀況:

使用sudo:

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

   

 

 


本文分享自微信公衆號 - Linux運維實踐(gh_11cec8ef4c61)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索