運維工程師需要掌握的技能其實比較繁雜,因為很多公司對運維工程師的定義不太一樣,恰巧我也是做運維相關工作的,這幾年基本上一直在大型製造業和一些外包互聯網公司做運維工作。從這幾年的工作經驗接觸過的東西來談談大致需要哪些技能:

PS: 本人水平一般,沒去過什麼大廠,所以接觸的東西比較雜。不專業的地方還請大佬指點。

首先系統運維工程師的工作以實操為主,這就需要很多東西你要實際去操作去練。大致需要的技能有以下幾個:

網路技術:

常見的網路基礎知識,包括基礎架構,路由和交換,常用的路由協議,如ospf ,rip ,之類的,熟悉三層和二層交換,常見廠商的網路設備命令需要熟悉一兩家,比如思科,華為。 有條件的話可以去考個CCNP或者HCNP。

Windows server :

windows server常見的各種環境配置和管理,最基礎的比如AD ,組策略,IIS,hyper-V之類的。

linux :

linux可以說是運維工程師必備技能,你可以不回windows server,但是linux必須會,而且越精通越好,基礎的命令操作,查看日誌,監控,中間件,甚至虛擬化,docker,,k8s 技術,反正只要涉及linux會的越多越好。最好能去考個RHCA什麼的。

資料庫:

不需要太精通,會配置環境,簡答的語句查詢,調優就可以 。

腳本語言:

shell ,powershell,Python,等可以用於自動化運維的腳本語言,至少熟練運行一種。

存儲:

需要懂不同的存儲的應用場景和區別,至少熟悉一到兩家存儲的設備各種調試。

簡單的計算機軟硬體知識:

不同的公司對系統運維工程師的定義不一樣,有些公司可能只需要搞linux就可以 ,有些公司則需要身兼數職,甚至除了開發之外的活你都要管,所以helpdesk可能也是日常工作中的一環,需要會點處理電腦日常故障。

各種小型機,堡壘機,超融合設備:

這個看企業和行業,但是如果有可以解除到這些設備的機會,就抓緊機會熟悉。這家沒有下家有,有的公司招聘非常憨批,他壓根不知道技術基礎原來什麼的,只會問你用過沒用過相關設備。所有如果有可以解除到這些設備的機會,抓緊時間熟悉。

必要的甩鍋,扯皮,踢皮球技能:

不要覺得這是不負責任的表現,很多時候運維絕對是背鍋最大的冤大頭,什麼狗屁問題都往運維身上甩,系統一旦有問題,開發和產品往往第一時間會問你說是不是操作系統啊,設備啊,環境啊啥啥的出問題了。所以學會扯皮甩鍋必要的時候把自己規避在問題之外是非常重要的。


運維工程師掌握的技能是要用來去解決問題的 基於這個出發點 從日常的工作當中遇到的問題 來看運維需要掌握的技能大概有如下幾點

linux基礎

這個是基礎中的基礎 現在絕大部分 應用是跑在linux主機上的 那麼操作系統的知識你要了解了 日常的一些系統性能優化的點需要知道 基本的命令要熟悉 比如說 看系統的負載情況哪些命令可以看到 有何區別等 這個建議可以看下 鳥哥私房菜 很基礎

中間件

現在有很多的開源中間件 業務場景不一樣 使用的中間價就多 就消息隊列 就有kafka rabbitmq rocketmq 等 對於這些中間件 消息的流轉過程需要知道吧 數據是否落盤 dan掉後 重啟數據是否會丟失 也需要知道 還有tomcat zk es nacos nginx等中間件的配置 及調優

監控

監控也是運維領域一個重要的點 服務起來了 後續的維穩 關鍵還要看你的監控是否完善 是否只覆蓋了主機層面 日誌是否有配監控 關鍵的業務功能點是否監控 是否有鏈路監控 這其中涉及到了 很多開源組件的使用 是否掌握了一比如 zabbix elk pinpoint grafana influxdb等等

pythonshell

很多時候 需要一些編程能力來輔助運維的 所以也需要掌握的 很多的監控 是需要自己去寫腳本來獲取信息的 比如說 rabbitmq調用api的監控

另外有些工作也是需要腳本能力來 簡化自己的工作量的

運維日常工作 部署 排錯 調優 還有一個關鍵的點就是要有負責的精神 生產無小事兒

地鐵上寫的 有錯諒解

感興趣的 可以看下 這篇文章 介紹了一些 運維可以看看的書

gzcheng:運維書籍推薦?

zhuanlan.zhihu.com圖標


運維工程師對個人的技術面要求比較廣,同時也需要一定深度。

萬事開頭難,每一項技術,紮實的基礎是入門的第一關。而所有的學習最終都是為了能夠掌握核心技術,從而應用到實際項目中。

一份系統、全面且規範化地學習的學習路線是非常重要的,讓你面向企業真實的運維環境、快速入門Linux系統、掌握企業職位所需技能!

民工哥根據自己的經驗羅列了一些相關技術點:

1)最基礎的服務

如SSH服務、NFS網路文件系統、DHCP/DNS、數據同步服務等。

2)LAMP/LNMP架構

各組件的基礎知識

各組件的安裝與配置

各組件的常用優化與排錯

3)資料庫

在互聯網企業中,最常用資料庫就是MySQL,這是必須要掌握的。除此之外,還需要了解、掌握常用的NOSQL資料庫,如Redis、MongoDB等。

下面以MySQL資料庫為例,介紹我們需要掌握哪些技術點:

多種安裝方式:源碼、二進位、Yum

優化:硬體、配置文件優化

常用管理與操作:多實例,許可權配置,庫、表數據的管理

備份與恢復:增量、全量備份與恢復,基於第三方工具的備份與恢復

常用的架構:主從同步,讀寫分離(基於官方或第三方組件)

故障排錯:啟動故障、數據不同步,誤操作等

4)常用服務

對運維來說,常用的服務不少,如Java Web服務Tomcat、Jboss、Weblogic等。民工哥日常使用最多的是Tomcat,接觸比較多的中間件服務,如Kafaka、RabbitMQ,但不需要掌握源碼,只要求掌握日常的配置、優化、排錯,以及一些與業務相關的架構調整等。

5)系統監控與報警

這是運維工作中的重點之一,監控服務軟體有開源的、商業的,大部分開源軟體能基本滿足常用需求,像我們工作中常用的開源監控軟體:早期有Nagios、Cacti,後來Zabbix逐漸取代了前兩種,還會有一些專門針對某個方面開發的監控軟體,如:資料庫監控軟體Lepus。但是,最終的選擇還要以需求為主。

6)容器

容器技術是近年來企業招聘的硬性要求,越來越多的企業在容器化發展的路上,所以這方面的技術過硬,對於提升求職過程中的競爭力是非常有力的。

7)其它

對運維工作來說,在從業一定階段後必須考慮的一個問題是:如何實現重複的工作自動化?這需要掌握一些自動化的基礎理論與工具的使用,現在是全民上雲時代,因此必須要熟悉與掌握第三方雲產品的各類操作。

有興趣的夥伴們,也可以看一看我總結的《運維工程師打怪升級進階指南》。

我慢慢將自己的自學過程與經驗總結出來,和人民郵電出版社一起出了一本書叫《Linux系統運維指南 從入門到企業實戰》。

本書系統全面、由淺入深地介紹了Linux系統運維的知識,以及在企業實際環境中用到的各類服務、架構和運維管理。本書分基礎篇、LAMP/LNMP架構篇、應用服務篇和架構運用篇。基礎篇詳細介紹Linux系統的基礎知識,LAMP/LNMP架構篇介紹時下企業中最常見的兩種架構的部署與配置,應用服務篇以企業實際運維環境為出發點詳細介紹當下企業用到的各類開源軟體服務,架構運用篇對前三篇的知識進行總結,並結合企業的實際場景加以實踐。


運維工程師的工作職能:

1、平臺架構組建:這是運維工程師的基本工作之一,主要負責參與並審核架構設計的合理性和可運維性,以確保系統上線後,安全、高效、穩定運行。保障並不斷提升服務的可用性和數據安全性,提升用戶體驗。

2、日常運營保障:一般初級運維主要從事這方面的工作,負責運用運維技術,運維平臺,確保入網設備的全面納管和全生命週期管理,確保設備、業務及安全等狀態可監可控。負責制定應急預案並組織演練,負責保障業務7*24小時穩定運行,在此期間對出現的各種問題,可以快速定位並解決。

3、系統優化:對於高級運維工程師則需要考慮系統的優化問題。高水平的雲計算運維工程師對系統長期穩定運行至關重要。linux伺服器本身架構的侷限,系統運行故障不可避免,但通過合理的設計,有效的運維,可以大幅降低故障發生的頻率,提高業務恢復的效率。

那運維工程師應該掌握哪些技能呢?

首先是主機、網路及操作系統基本知識。在出現問題時,懂得在各個網路位置抓包,來確認故障設備或線路,會使用Linux的tcpdump抓包或者ethreal、sniffer、Wireshark等抓包軟體,會在網路設備上配置鏡像,將關心的流量抓出來進行分析。

懂開發,能實現自動化運維。比如使用Shell、Python、Perl等腳本語言做一些自動化運行腳本、診斷故障的腳本,使用這些腳本可以提升工作效率,將重複性的簡單工作交給腳本程序處理,也可以通過這些腳本判斷故障發生的位置和原因,高效的運維將不再需要人工去逐個字元地去輸入各種命令。

未來雲計算與大數據勢必成為整個互聯網行業的支撐。所有雲計算運維工程師以及大數據工程師的作用就越來與明顯,同時雲計算以及大數據相關高端人才的需求量也會越來越大。


大數據運維可能是「技術含量最高」的職位之一,這裡說的大數據運維主要是指hadoop生態體系方面的運維,在一些小公司或者傳統行業的大公司也會使用oracle、db2等技術棧,在互聯網行業數據量稍微大點的公司基本都是使用hadoop技術棧,像在電信或者銀行領域基本上是oracle/db2、hadoop同時使用。

運維職位的發展和趨勢

根據不同的運維領域和技術面以及分工流程三個方面來瞭解下2019年運維職位的發展趨勢。

1、按領域來劃分

1)、基礎設施運維:IDC/網路運維、伺服器/存儲設備運維

2)、系統運維:系統中間件運維、雲計算平臺運維

3)、數據運維:資料庫運維、大數據技術平臺運維

4)、應用運維:應用軟體系統

5)、雲平臺運維:公有雲平臺運維

6)、容器運維:基於容器服務的運維

2、按技術切面來分

1)、安全運維

2)、性能運維

3)、數據運維

4)、集成運維

3、按流程來劃分

1)、構建/持續集成、發布

2)、安裝部署、升級、遷移、合併、擴展

3)、配置、初始化、配置變更

4)、備份、傳輸、恢復

5)、日誌、監控、預警

6)、診斷排查、優化


一、日常工作內容:

  1. 看監控、網站流量、CDN流量,看郵件有沒有普通業務監控報警,看有家中有沒有其他需要做的工作
  2. 處理報警,查看報警的原因,和開發一起解決,並且盡量找出避免再次發生的方法,例如添加一些定時清理腳本
  3. 處理髮布,基本都是自動化,但是總有發布不成功或者需要回滾的時候,這時候就需要手工介入,找到原因,並跟開發一起討論最後是否撤銷還是重上
  4. 日常一起能夠自動化的工作盡量找到自動化的方法
  5. 配合開發搭建測試環境,線上環境,上線代碼,以及日常開個許可權
  6. 定期機房巡檢
  7. 災備演練計劃
  8. 運維流程的設定與標準化
  9. 運維知識庫文檔的建立
  10. 新技術的學習與研究

二、運維應該具備哪些技能:

  1. 瞭解運維技術的分類:趙班長寫的運維知識體系:https://www.unixhot.com/page/ops
  2. 熟悉常見Linux系統(以CentOS/Redhat為主)和故障處理
  3. 熟練shell腳本,熟悉php、perl、python、ruby等至少一種開發語言
  4. 熟悉常見應用服務(如:Nginx、Tomcat、HAProxy、Redis、RabbitMQ等)的配置維護及優化(比如NGINX代理,負載均衡)
  5. 熟悉MySQL資料庫的部署配置和優化(讀寫分析,負載均衡,分散式資料庫
  6. 熟悉任意一種自動化管理工具的使用(如:SaltStack、Puppet或Ansible等)
  7. 熟悉任意一種常見監控系統的使用(如:Zabbix、Nagions、Ganglia
  8. 瞭解基本的網路知識
  9. 對常見對雲服務有一定了解,有過阿里雲、亞馬遜等雲主機維護經驗者優先
  10. 熟悉各種虛擬化技術,比如 KVM、XEN等。並有在虛擬化平臺上面維護或開發的經驗

聲明:以上內容部分參考網路

鏈接:https://blog.51cto.com/molewan/1936482


先上wgcloud再說


推薦閱讀:
相關文章