【Linux】Devops的一些運維工具

1、Devops簡介

從手工編譯、上傳服務器文件、執行命令、啓動中止服務器、發現BUG再重複一遍流程,軟件開發的重複勞動愈來愈多,在Devops概念以前,所有要靠人工手動完成,也看到了不少運維人員半夜起來救急的狀況。java

Devops一詞來自於Development 和 Operations 的組合,從字面意思理解,就是讓軟件開發人員和運維人員更好的溝通合做,經過自動化流程讓軟件開發、測試、發佈更快捷。實際上,Devops是對敏捷和精益開發的傳承,是在整個IT價值流中實施精益的結果,Devops並非只一個新的工程師,也不是一個部門,而是一種文化,沒有什麼工具能夠把團隊直接變成Devops組織,這是一種觀念的轉變。ios

Devops在高效交付以及自動運維方面的好處讓其快速被市場承認並接受,可是在作Devops實踐中每每會遇到很大的阻力。web

Devops並非簡單的將開發部門和運維部門合併,而是經過自動化的基礎設施、合理的流程規範以及智能的自動運行系統測試使開發和運維之間的溝通協做獲得增強。shell

2、工具簡介

一、版本控制和協做開發工具

(1)版本控制系統Git編程

(2)代碼託管平臺 GitLabubuntu

(3)代碼評審工具 Gerritwindows

二、自動化構建和測試工具

(1)Apache Ant:Apache Ant是一個將軟件編譯、測試、部署等步驟聯繫在一塊兒加以自動化的一個工具,大多用於Java環境中的軟件開發。後端

(2)Maven:Maven 除了以程序構建能力爲特點以外,還提供 Ant 所缺乏的高級項目管理工具。因爲 Maven 的缺省構建規則有較高的可重用性,因此經常用兩三行 Maven 構建腳本就能夠構建簡單的項目,而使用 Ant 則須要十幾行。api

(3)Selenium集成測試工具bash

(4)Python單元測試框架

(5)QUnit 是 jQuery 的單元測試框架。

(6)JMeter功能和性能測試的工具,徹底用java實現。

(7)Gradle:Gradle 是可使用 Groovy 來書寫構建腳本的構建系統,支持依賴管理和多項目,相似 Maven。

(8)PHPUnit:PHPUnit 是一個輕量級的PHP測試框架。

3.、持續集成&交付

(1)Jenkins可擴展的持續集成引擎

(2)Capistrano:Capistrano 是用來並行在多臺機器上執行相同命令的工具,使用用來安裝一整批機器。

(3)BuildBot:BuildBot是進行系統自動化編譯/測試周期最須要的軟件,用於驗證代碼的變化。

(4)Fabric:fabric8 是開源 Java Containers(JVMs) 深度管理集成平臺。可以很方便的從 UI 和 UX 一致的中央位置進行自動操做,配置和管理。fabric8還提供了一些非功能性需求,好比配置管理,服務發現故障轉移,集中化監控,自動化等等。

(5)Tinderbox

(6)Travis CI:Travis CI 是一個基於雲的持續集成項目, 能夠支持大部分主流語言,好比:C,PHP,Ruby,Python, Nodejs等等。

(7)Continuum是最新的 CI 服務器之一,基於 Web 界面配置容易。

(8)LuntBuild自動構建工具。經過web接口能夠很容易地進行系統的持續構建。

(9)CruiseControl:CruiseControl 是一個針對持續構建程序(項目持續集成)的框架,包括email通知的插件,Ant和各類各樣的CVS工具,還提供了一個Web接口, 可隨時查看當前的編譯情況和歷史情況

(10)Gump:Gump 是 Apache 的整合工具。它以 Python 寫成、徹底支持 Apache Ant、Apache Maven 等等軟件組建工具。

4.、部署工具

4.1 容器平臺

(1)Docker:Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。

(2)Rocket:Rocket (也叫 rkt)是 CoreOS 推出的一款容器引擎,和 Docker 相似,幫助開發者打包應用和依賴包到可移植容器中,簡化搭環境等部署工做。

(3)Ubuntu(LXC):LXD 是 ubuntu 基於 LXC 技術的重構,容器自然支持非特權和分佈式。LXD 與 Docker 的思路不一樣,Docker 是 PAAS,LXD 是 IAAS。LXC 項目由一個 Linux 內核補丁和一些 userspace 工具組成。這些 userspace 工具使用由補丁增長的內核新特性,提供一套簡化的工具來維護容器。

4.2 配置管理

(1)Chef:Chef 是一個系統集成框架,爲整個架構提供配置管理功能。

(2)Puppet:Puppet,您能夠集中管理每個重要方面,您的系統使用的是跨平臺的規範語言,管理全部的單獨的元素一般彙集在不一樣的文件,如用戶, CRON做業,和主機一塊兒顯然離散元素,如包裝,服務和文件。

(3)CFengine:Cfengine(配置引擎)是一種 UNIX 管理工具,其目的是使簡單的管理的任務自動化,使困難的任務變得較容易。Cfengine 適用於管理各類環境,從一臺主機到上萬臺主機的機羣都可使用。

(4)Bash:bash 是大多數Linux系統以及Mac OS X v10.4默認的shell,它能運行於大多數Unix風格的操做系統之上,甚至被移植到了Microsoft Windows上的Cygwin系統中,以實現windows的POSIX虛擬接口。此外,它也被DJGPP項目移植到了MS-DOS上。

(5)Rudder:Rudder 已更名爲Flannel,爲每一個使用 Kubernetes 的機器提供一個子網。也就是說 Kubernetes 集羣中的每一個主機都有本身一個完整的子網,例如機器 A 和 B 能夠有 10.0.1.0/24 和 10.0.2.0/24 子網。

(6)RunDeck:RunDeck 是用 Java/Grails 寫的開源工具,幫助用戶在數據中心或者雲環境中自動化各類操做和流程。經過命令行或者web界面,用戶能夠對任意數量的服務器進行操做,大大下降了對服務器自動化的門檻。

(7)Saltstack:Saltstack 能夠看作是func的加強版+Puppet的弱化版。使用Python編寫。很是好用,快速能夠基於EPEL部署。Salt 是一個開源的工具用來管理你的基礎架構,可輕鬆管理成千上萬臺服務器。

(8)Ansible:Ansible 是用於發佈、管理和編排計算機系統的工具,Ansible 是一個模型驅動的配置管理器,支持多節點發布、遠程任務執行。默認使用 SSH 進行遠程鏈接。無需在被管理節點上安裝附加軟件,可以使用各類編程語言進行擴展。

 

4.3 微服務平臺

(1)OpenShift:OpenShift 是由紅帽推出的一款面向開源開發人員開放的平臺即服務(PaaS)。 OpenShift經過爲開發人員提供在語言、框架和雲上的更多的選擇,使開發人員能夠構建、測試、運行和管理他們的應用。

(2)Cloud Foundry:Cloud Foundry 是VMware於2011年4月12日推出的業界第一個開源PaaS雲平臺,它支持多種框架、語言、運行時環境、雲平臺及應用服務,使開發 人員可以在幾秒鐘內進行應用程序的部署和擴展,無需擔憂任何基礎架構的問題。

(3)Kubernetes:Kubernetes 是來自 Google 雲平臺的開源容器集羣管理系統。基於 Docker 構建一個容器的調度服務。該系統能夠自動在一個容器集羣中選擇一個工做容器供使用。其核心概念是 Container Pod。

(4)Mesosphere:Apache Mesos 是一個集羣管理器,提供了有效的、跨分佈式應用或框架的資源隔離和共享,能夠運行Hadoop、MPI、Hypertable、Spark。

4.4 服務開通

(1)Puppet:Puppet,您能夠集中管理每個重要方面,您的系統使用的是跨平臺的規範語言,管理全部的單獨的元素一般彙集在不一樣的文件,如用戶, CRON做業,和主機一塊兒顯然離散元素,如包裝,服務和文件。

(2)Razor

(3)Docker Swarm:Docker Swarm 是一個Dockerized化的分佈式應用程序的本地集羣,它是在Machine所提供的功能的基礎上優化主機資源的利用率和容錯服務。具體來 說,Docker Swarm支持用戶建立可運行Docker Daemon的主機資源池,而後在資源池中運行Docker容器。Docker Swarm能夠管理工做負載並維護集羣狀態。

(4)Vagrant:Vagrant 是一個基於 Ruby 的工具,用於建立和部署虛擬化開發環境。它使用 Oracle 的開源 VirtualBox 虛擬化系統,使用 Chef 建立自動化虛擬環境。

(5)OpenStack Heat

5.、日誌管理

(1)Logstash:Logstash 是一個應用程序日誌、事件的傳輸、處理、管理和搜索的平臺。你能夠用它來統一對應用程序日誌進行收集管理,提供 Web 接口用於查詢和統計。

(2)CollectD:Collectd 是一個守護(daemon)進程,用來收集系統性能和提供各類存儲方式來存儲不一樣值的機制。好比以RRD 文件形式。

(3)StatsD:StatsD 是一個簡單的網絡守護進程,基於 Node.js 平臺,經過 UDP 或者 TCP 方式偵聽各類統計信息,包括計數器和定時器,併發送聚合信息到後端服務,例如 Graphite。

6.、監控,警告&分析

(1)Nagios:Nagios 是一個監視系統運行狀態和網絡信息的監視系統。Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。

(2)Ganglia:Ganglia 是一個跨平臺可擴展的,高 性能計算系統下的分佈式監控系統,如集羣和網格。它是基於分層設計,它使用普遍的技術,如XML數據表明,便攜數據傳輸,RRDtool用於數據存儲和可視化。

(3)Sensu:Sensu 是開源的監控框架。主要特性:高度可組合;提供一個監控代理,一個事件處理器和文檔 APIs;爲雲而設計;Sensu 的現代化架構容許監控大規模的動態基礎設施,可以經過複雜的公共網絡監控幾千個全球分佈式的機器和服務;熱情的社區。

(4)Zabbix:Zabbix 是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。

(5)ICINGA:ICINGA 項目是 由Michael Luebben、HendrikB?cker和JoergLinge等人發起的,他們都是現有的Nagios項目社區委員會的成員,他們承諾,新的開源項 目將徹底兼容之前的Nagios應用程序及擴展功能。

(6)Graphite:Graphite 是一個用於採集網站實時信息並進行統計的開源項目,可用於採集多種網站服務運行狀態信息。Graphite服務平均每分鐘有4800次更新操做。

(7)Kibana:Kibana 是一個爲 Logstash 和 ElasticSearch 提供的日誌分析的 Web 接口。可以使用它對日誌進行高效的搜索、可視化、分析等各類操做

相關文章
相關標籤/搜索