前言:在以前的文章批量執行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 | 管理服務器 |
本文會對‘批量執行’、‘在線終端’、‘文件管理’、‘任務計劃’、‘監控中心’、‘報警中心’等功能。‘應用發佈’和‘配置中心’下篇再作介紹。github
[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安裝章節。web
'-p 80:80',spug的80端口映射端口爲系統的80端口,‘-v /mydata/:/data’將容器的/data路徑映射爲系統的/mydata目錄。docker
初始化管理員帳號admin,密碼爲spug.devshell
工做臺是一個概覽,包含應用、主機任務、監控和報警等信息。後端
'主機類別'爲自定義類別,分別輸入主機名和鏈接地址,單擊驗證api
輸入root用戶密碼
主機添加成功
使用批量導入方式導入主機,能夠先下載模板在更新上傳。
登錄密碼一欄填寫個主機密碼,若爲空則爲默認密碼'spug-default-keys'
導入成功
登錄密碼爲傳輸公鑰時使用,系統不保存密碼,下次可免密登錄訪問。
通訊原理: 第一次在登陸的時候會生產公私鑰,密碼只是用在第一次發送公鑰上。
公鑰保存在各個被管理主機上,私鑰存在於spug平臺裏(不是172.27.34.51服務裏上面)。
單機主機欄後面的'Console'便可免密進入終端
進入終端,執行'df -h'命令
進入在線終端後點擊右上角的'文件管理器'便可進行文件上傳下載操做
spug可方便的進行文件上傳下載,不用使用ftp工具或者繁瑣的命令。
該功能爲spug核心功能之一,現從命令方式和模板方式演示。
選擇執行主機ansible、test16二、test163,執行命令'df -h'和'echo "hello world"'
執行結果:
新建兩個模板'註釋crontab'和'解註釋crontab',模板內容其實也是shell腳本,好比'註釋crontab':
模板方式批量執行:
執行完成,該模板內容爲批量註釋指定的crontab
新建任務計劃date,任務類型可自定義,失敗通知選釘釘,後面會有介紹,下一步
執行對象選擇test162和test163
選擇執行規則,UNIX Cron和linux的crontab相似,這裏設置每分鐘執行一次。
激活任務
驗證:
每分鐘向/tmp/date.txt文件輸入當前時間。
在介紹監控中心以前先介紹報警中心
報警歷史能夠查看報警的歷史信息,包括任務名、通知方式、通知對象和發生時間等。
以添加聯繫人loong576說明
告警方式包括郵箱、微信、釘釘和企業微信。
關注微信公衆號'Spug運維',點擊'個人'菜單獲取
首先新建羣聊
選擇接收的聯繫人,建立羣‘spug告警接收’
點擊羣聊窗口右邊的‘羣設置’,‘智能羣助手’,‘添加機器人’,‘自定義’,單擊‘添加’
根據實際狀況填寫安全設置,我這裏填的是‘自定義關鍵詞’,最多匹配10個,任意一個關鍵詞被匹配到就會接收消息。
完成機器人添加,複製webhook。
企業微信獲取webhook方式和釘釘有些相似,也是先建羣,而後添加機器人。
建羣,選中羣,添加羣機器人
建立一個機器人
複製webhook地址
告警是以組的方式發送的,新建告警組test_team,將告警聯繫人loong576加入改組。
監控方式有四種:站點監控、端口監控、站點監控和自定義監控。這裏以端口監控和自定義監控作說明。
新建端口監控,監控地址爲172.27.34.51,監控端口爲8808
監控頻率爲1分鐘,即1分鐘檢查一次;報警閥值爲3次,即檢查3次不成功才發出報警;報警聯繫人組爲test_team;報警方式爲微信、釘釘、郵件和企業微信;通道沉默爲5分鐘,表示每5分鐘發送一次報警消息。
提交後等待檢測
發現8808端口檢測異常
以監控文件系統使用率爲例,超過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
文件系統 $name 使用率爲 $value% '。
自定義告警的原理:經過腳本判斷監控項,腳本執行退出狀態碼爲 0 則斷定爲正常,其餘爲異常。
微信:
釘釘:
郵件:
企業微信:
新建角色test_role
分配權限如圖
新建帳戶loong576,分配角色test_role
現象:
解決:
[root@ansible ~]# docker exec spug python3 /data/spug/spug_api/manage.py user enable -u admin
現象:
解決:
[root@ansible ~]# docker exec spug python3 /data/spug/spug_api/manage.py user reset -u admin -p Admin01!
spug 有本身的密鑰對,公鑰保存在被管理的主機內,私鑰保存在spug平臺內(不是管理主機172.27.34.51裏)。經過
因爲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'
不使用sudo狀況:
使用sudo:
使用sudo運行須要root權限的額命令,直接運行,不須要二次輸入密碼。
若是是生產環境沒法聯網的話,發送告警信息則須要打通網絡
到微信:http://spug-wx.qbangmang.com 80 到釘釘:https://oapi.dingtalk.com 443 到企業微信:https://qyapi.weixin.qq.com 443
[root@ansible ~]# docker update --restart=always spug spug
設置後若主機重啓容器spug會自動啓動,無需手動在拉起來
如需更換ip,則直接修改,而後重啓主機便可。
輕量、快捷、好用是spug的特色,部署簡單,安全可靠、無agent、可視化,能夠快速高效的批量對主機進行命令分發、監控等,很是適用於平常變動上線操做。spug平臺既可當跳板機,也能夠替代堡壘機部分功能,如進入console、文件上傳下載等。
github:https://github.com/openspug/spug
文檔:https://www.spug.dev/docs/about-spug