運(yùn)維管理工具常用的就是update ELK(日志采集、分析、報(bào)警)、update knockd (解決動(dòng)態(tài)IP防火墻設(shè)定)、update smokeping(網(wǎng)絡(luò)質(zhì)量監(jiān)控)、update vagrant(虛擬機(jī)外掛)TCPcopy這個(gè)神器,貌似很多人都還在用著ab模擬測(cè)壓力,TCPcopy能直接導(dǎo)入線上流量供上線前的風(fēng)險(xiǎn)測(cè)試。下面對(duì)使用過(guò)的工具會(huì)簡(jiǎn)單進(jìn)行功能及使用場(chǎng)景介紹,并提及一些所了解的工具。
統(tǒng)一賬號(hào)管理你還在自己寫腳本批量增加機(jī)器的用戶、分組和修改密碼或者同步主機(jī)的/etc/passwd嗎?你還在使用腳本批量對(duì)用戶設(shè)置權(quán)限嗎?如果有一臺(tái)賬號(hào)主機(jī)能夠提供所有服務(wù)器的賬號(hào)、密碼、權(quán)限控制,如此一來(lái),如果想要增加、修改、刪除用戶,只要到這臺(tái)服務(wù)器上面處理即可,這樣是不是很方便?
1.LDAP
1)統(tǒng)一管理各種平臺(tái)賬號(hào)和密碼,包括但不限于各種操作系統(tǒng)(Windows、Linux)認(rèn)證,Linux系統(tǒng)sudo集成(限制用戶的sudo權(quán)限以及使用sudo的主機(jī)),用戶可主機(jī)登入限制等
2)可與Apache,HTTP,F(xiàn)TP,SAMBA,ZABBIX,Jenkins等集成實(shí)現(xiàn)多個(gè)平臺(tái)用同一套賬號(hào)密碼
3)支持密碼策略定制(限制用戶密碼強(qiáng)度、密碼過(guò)期時(shí)間、強(qiáng)制修改、超過(guò)驗(yàn)證錯(cuò)誤次數(shù)鎖定賬號(hào))等支持插件式鑒別模塊PAM
4)不同平臺(tái)權(quán)限的設(shè)定、劃分
2.jumpserver
一款國(guó)內(nèi)開(kāi)源的由python編寫開(kāi)源的跳板機(jī)(堡壘機(jī))系統(tǒng),能夠?qū)崿F(xiàn)操作審計(jì)(包括文本命令,實(shí)時(shí)、事后用戶操作錄像回放),利用ansible批量對(duì)機(jī)器進(jìn)行操作。基于ssh協(xié)議來(lái)管理,客戶端無(wú)需安裝agent,能夠讓用戶通過(guò)網(wǎng)頁(yè)端或者shell操作有權(quán)限的機(jī)器。
一、自動(dòng)化部署
1. Fabric
優(yōu)點(diǎn):小巧,無(wú)需裝agent,基于SSH,可以在本地、遠(yuǎn)程主機(jī)上運(yùn)行所有的shell命令和python函數(shù)。主要提供運(yùn)行本地、遠(yuǎn)程命令,上傳、下載文件功能。適合用來(lái)寫不常用、碎片化的工具。
缺點(diǎn):內(nèi)置模塊較少,很多東西要自己編寫命令實(shí)現(xiàn)。
2. Ansible
優(yōu)點(diǎn):基于ssh實(shí)現(xiàn),無(wú)需agent日常部署需要的功能基本上有模塊支持,比如git、打包解壓、copy文件、yum安裝等等都已經(jīng)集成到了核心模塊里面,alternatives、xattr等模塊也有,當(dāng)然,理論上所有操作都能用命令模塊來(lái)完成。
缺點(diǎn):比較依賴網(wǎng)絡(luò)的健壯性,網(wǎng)絡(luò)不好的話經(jīng)常會(huì)有失敗的現(xiàn)象運(yùn)行ansible的主機(jī)需要能與遠(yuǎn)程主機(jī)ssh直連,不過(guò)可以用Proxycommand或者sshuttle來(lái)解決其他的還有SaltStack、Puppet、Chef、func等。
二、DNS
1. dnsmasq:提供DNS緩存,DNS重定向、記錄轉(zhuǎn)發(fā),DNS反向解析, DHCP服務(wù)功能,配置簡(jiǎn)單可以配置對(duì)上層DNS輪詢請(qǐng)求記錄配置支持通配符,不用批量修改hosts。
2. pdnsd:提供DNS緩存服務(wù)設(shè)置向上級(jí)DNS請(qǐng)求方式(TCP、UDP,Both)設(shè)置多個(gè)上級(jí)DNS并設(shè)置請(qǐng)求規(guī)則配置緩存保留時(shí)間。
3. namebench Google:自行研發(fā)的一款DNS測(cè)速工具。
三、壓力測(cè)試
1. ApacheBench:創(chuàng)建多并發(fā)線程模擬多用戶對(duì)URL訪問(wèn)進(jìn)行壓力測(cè)試。
Apache中有個(gè)自帶的,名為ab的程序,ab可以創(chuàng)建很多的并發(fā)訪問(wèn)線程,模擬多個(gè)訪問(wèn)者同時(shí)對(duì)某一URL地址進(jìn)行訪問(wèn)。
2. TCPcopy、UDPcopy:實(shí)時(shí)將TCP/UDP數(shù)據(jù)包c(diǎn)opy到另一機(jī)器進(jìn)行壓力測(cè)試。
提到壓力測(cè)試,可能大多數(shù)人首先想到的就是ApacheBench,但ab是模擬訪問(wèn),模擬畢竟是模擬,然而線上會(huì)遇到的錯(cuò)誤可能往往無(wú)法預(yù)知,其實(shí)國(guó)內(nèi)已經(jīng)有人開(kāi)發(fā)了一款線上流量copy的工具,就是TCPcopy、UDPcopy,能夠之間copy線上流量到測(cè)試環(huán)境,大大減少了上線前的風(fēng)險(xiǎn)。支持設(shè)置copy流量倍數(shù)放大、縮小,修改流量的客戶端IP源地址。
3. TCPburn:類似ApacheBenchtcpburn是由網(wǎng)易自主研發(fā)的能夠模擬千萬(wàn)級(jí)別并發(fā)用戶的一個(gè)軟件,目的是能夠用較少的資源來(lái)模擬出大量并發(fā)用戶,并且能夠更加真實(shí)地進(jìn)行壓力測(cè)試, 以解決網(wǎng)絡(luò)消息推送服務(wù)方面的壓力測(cè)試的問(wèn)題和傳統(tǒng)壓力測(cè)試的問(wèn)題。
4. goreplay:用于對(duì)HTTP壓力測(cè)試的實(shí)時(shí)流量復(fù)制。
四、安全
1. PortSentry:對(duì)端口掃描的機(jī)器做防御策略
特點(diǎn):1)給出虛假的路由信息,把所有的信息流都重定向到一個(gè)不存在的主機(jī);
2)自動(dòng)將對(duì)服務(wù)器進(jìn)行端口掃描的主機(jī)加到TCP-Wrappers的/etc/hosts.deny文件中利用Netfilter機(jī)制、包過(guò)濾程序,比如iptables和ipchain等,把所有非法數(shù)據(jù)包(來(lái)自對(duì)服務(wù)器進(jìn)行端口掃描的主機(jī))都過(guò)濾掉;
3)通過(guò)syslog()函數(shù)給出一個(gè)目志消息,甚至可以返回給掃描者一段警告信息。
2.fail2ban:對(duì)SSH密碼暴力破解的機(jī)器做防御策略
防御SSH服務(wù)器的暴力破解攻擊,對(duì)安全性要求過(guò)高的服務(wù)器還是建議禁止密碼登入,使用密鑰或者密鑰+密碼驗(yàn)證。
3. Google Authenticator:可以將第二部驗(yàn)證設(shè)置為通過(guò)短信或語(yǔ)音電話接收驗(yàn)證碼,同時(shí)也支持 Android、iPhone 或 BlackBerry 設(shè)備來(lái)生成驗(yàn)證碼
一款開(kāi)源的,可基于開(kāi)放規(guī)則(如 HMAP/基于時(shí)間)生成一次性密碼的軟件。Google公司同時(shí)也支持插件式鑒別模塊PAM,使其能和其他也適用PAM進(jìn)行驗(yàn)證的工具(如OpenSSH)協(xié)同工作。
4. knockd:害怕服務(wù)器被入侵,但是奈何經(jīng)常在不同的地方登入或者登入的IP經(jīng)常變動(dòng)?knock一下吧。在服務(wù)器端設(shè)置只有你知道的“暗語(yǔ)”來(lái)讓服務(wù)器給你芝麻開(kāi)門。
knockd可以讓server監(jiān)聽(tīng)特定的端口,如果client按指定的順序及協(xié)議(TCP/UDP)訪問(wèn)server指定端口,則運(yùn)行指定命令,于是我們就可以用它來(lái)做一些有趣的事,比如利用IPTABLES動(dòng)態(tài)增加防火墻等等。 另外,knock client也可以用來(lái)模擬發(fā)包探測(cè)網(wǎng)絡(luò)連通性。比如不確定本機(jī)到對(duì)端的某個(gè)端口是否可通,可以在遠(yuǎn)程用tcpdump監(jiān)聽(tīng)對(duì)應(yīng)端口,然后用knock客戶端模擬發(fā)包。
五、虛擬化
1.vagrant:每次用想要新建一個(gè)虛擬機(jī)是不是都得設(shè)置虛擬機(jī)名稱?設(shè)置虛擬機(jī)類型、版本、選擇鏡像、內(nèi)存大小、虛擬機(jī)CPU核心數(shù)量、設(shè)備等一堆東西,然后還要裝系統(tǒng)balabala。
然而我只需要在終端下面輸入一條vagrant up machine 就能新建一個(gè)預(yù)配置好的虛擬機(jī)哦,實(shí)為自己測(cè)試和給開(kāi)發(fā)人員創(chuàng)建統(tǒng)一編程環(huán)境的一個(gè)好選擇。
1)支持快速新建虛擬機(jī)
2)支持快速設(shè)置端口轉(zhuǎn)發(fā)
3)支持自定義鏡像打包(原始鏡像方式、增量補(bǔ)丁方式)
4)基本上日常能用到的基礎(chǔ)配置都能快速設(shè)置
5)支持開(kāi)機(jī)啟動(dòng)自動(dòng)運(yùn)行命令
6)可以自己寫擴(kuò)展
2.docker:每次搭建一套新環(huán)境是不是很麻煩?有兩個(gè)不同程序依賴于同一環(huán)境的不同版本怎么辦?在程序里指定絕對(duì)路徑?做軟鏈接? docker幫你解決了這個(gè)煩惱,鏡像打包好之后推送到register之后再到對(duì)應(yīng)機(jī)器上pull下來(lái),放上代碼,done。
六、日志采集
ELK Stack:平常我們可能需要對(duì)一些日志進(jìn)行分析、報(bào)警,比如nginx日志,我們想要統(tǒng)計(jì)http請(qǐng)求響應(yīng)碼的數(shù)量、統(tǒng)計(jì)請(qǐng)求IP的地域分布,對(duì)請(qǐng)求體的關(guān)鍵字及時(shí)報(bào)警等等。使用ELK能夠很容易地做到上述事情,還能結(jié)合zabbix等工具進(jìn)行報(bào)警。
七、監(jiān)控
smokeping:IDC選址很頭疼吧,不知道某一節(jié)點(diǎn)網(wǎng)絡(luò)質(zhì)量怎樣,不相信供應(yīng)商給的數(shù)據(jù)?試試smokeping吧,能夠測(cè)試某地、多地到某一節(jié)點(diǎn)的質(zhì)量情況(包括丟包率,速率)。
通過(guò)上述介紹,運(yùn)維管理工具有哪些相信您已經(jīng)知曉了吧,想了解更多IT運(yùn)維的知識(shí),請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。