色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

小團隊如何從零搭建一個自動化運維體系?

馬哥Linux運維 ? 來源:lq ? 2019-05-16 10:18 ? 次閱讀

行業內各巨頭的自動化運維架構都各種功能,各種酷炫,讓人可望不可及。

如下圖,現在行業內各巨頭自動化運維架構的最終樣子大家都知道了,但是如何根據自己團隊當前的情況一步步向這個目標演進?

筆者所在團隊,三個半開發,要維護幾十臺云機器,部署了十來個應用,這些應用 90% 都是遺留系統。

應用系統的編譯打包基本在程序員自己的電腦上。分支管理也清一色的 dev 分支開發,測試通過后,再合并到 master 分支。

生產環境的應用配置要登錄上具體的機器看才知道,更不用說配置中心及配置版本化了。對了,連基本的機器級別的基礎監控都沒有。

我平時的工作是 50% 業務開發,50% 運維。面對這么多問題,我就想,如何在低成本情況下實現自動化運維。

本文就是總結我在這方面一些經驗和實踐,希望對讀者有幫助。

別說話,先上監控和告警

事情有輕重緩急,監控和告警是我覺得一開始就要做的,即使業務開發被拖慢。只有知道了當前的情況,你才好做下一步計劃。

現在市面上監控系統很多:Zabbix、Open-Falcon、Prometheus,但是最終我選擇了 Prometheus。

原因有如下幾點:

它是拉模式的。

它方便使用文本方式來配置,有利于配置版本化。

插件多,想要監控什么,基本都會有現成的插件。

以上三者,我基本都要重新學,我為什么不學一個 Google SRE 書上推薦的呢?

之前我們已經介紹過,人少機器多,所以安裝 Prometheus 的過程也必須要自動化,同時版本化。我使用的是 Ansible + Git 實現。

最終樣子如下:

這里需要簡單介紹一下:

Prometheus Server 負責監控數據收集和存儲。

Prometheus Alert manager 負責根據告警規則進行告警,可集成很多告警通道。

node-exporter[1] 的作用就是從機器讀取指標,然后暴露一個 http 服務,Prometheus 就是從這個服務中收集監控指標。當然 Prometheus 官方還有各種各樣的 exporter。

使用 Ansible 作為部署工具的一個好處是太多現成的 role 了,安裝 Prometheus 時,我使用的是現成的:prometheus-ansble[2]。

有了監控數據后,我們就可以對數據進行可視化,Grafana 和 Prometheus 集成得非常好,所以我們又部署了 Grafana:

在 Grafana 上查看 nodex-exporter 收集的數據的效果圖大概如下:

可是,我們不可能 24 小時盯著屏幕看 CPU 負載有沒有超吧?這時候就要上告警了,Promehtues 默認集成了 N 多告警渠道,可惜沒有集成釘釘。

但也沒有關系,有好心的同學開源了釘釘集成 Prometheus 告警的組件:prometheus-webhook-dingtalk[3]。

接著,我們告警也上了:

完成以上工作后,我們基礎監控的架子就完成了,這為我們后期上 Redis 監控、JVM 監控等更上層的監控做好了準備。

配置版本化要從娃娃抓起

在搭建監控系統的過程中,我們已經將配置抽離出來,放到一個單獨的代碼倉庫進行管理。以后所有部署,我們都會將配置和部署邏輯分離。

關于如何使用 Ansible 進行配置管理,可以參考這篇文章:How to Manage Multistage Environments with Ansible[4] 。

我們就是使用這種方式來組織環境變量的。

├── environments/ # Parent directory for our environment-specific directories│ ││ ├── dev/ # Contains all files specific to the dev environment│ │ ├── group_vars/ # dev specific group_vars files│ │ │ ├── all│ │ │ ├── db│ │ │ └── web│ │ └── hosts # Contains only the hosts in the dev environment│ ││ ├── prod/ # Contains all files specific to the prod environment│ │ ├── group_vars/ # prod specific group_vars files│ │ │ ├── all│ │ │ ├── db│ │ │ └── web│ │ └── hosts # Contains only the hosts in the prod environment│ ││ └── stage/ # Contains all files specific to the stage environment│ ├── group_vars/ # stage specific group_vars files│ │ ├── all│ │ ├── db│ │ └── web│ └── hosts # Contains only the hosts in the stage environment│

現階段,我們所有的配置都以文本的方式存儲,將來要切換成使用 Consul 做配置中心,也非常的方便,因為 Ansible 2.0 以上的版本已經原生集成了Consul:consul_module[5]。

Tips:Ansible 的配置變量是有層次的,這為我們的配置管理提供了非常大的靈活性。

Jenkins 化:將打包交給 Jenkins

我們要將所有項目的打包工作交給 Jenkins。當然,現實中我們是先將一些項目放到 Jenkins 上打包,然后逐步將項目放上 Jenkins。

首先我們要有 Jenkins,搭建 Jenkins 同樣有現成的 Ansible 腳本:ansible-role-jenkins[6]。

注意了,在網上看到的大多文章告訴你 Jenkins 都是需要手工安裝插件的,而我們使用的這個 ansible-role-jenkins 實現了自動安裝插件,你只需要加一個配置變量 jenkins_plugins 就可以了。

官方例子如下:

---- hosts: all vars: jenkins_plugins: - blueocean - ghprb - greenballs - workflow-aggregator jenkins_plugin_timeout: 120 pre_tasks: - include_tasks: java-8.yml roles: - geerlingguy.java - ansible-role-jenkins

搭建好 Jenkins 后,就要集成 Gitlab 了。我們原來就有 Gitlab ,所以不需要重新搭建。

最終 Jenkins 搭建成以下這個樣子:

關于 Jenkins master 與 Jenkins agent 的連接方式,由于網絡環境各不相同,網上也有很多種方式,大家自行選擇適合的方式。

現在我們需要告訴 Jenkins 如何對我們的業務代碼進行編譯打包,有兩種方法:

界面上設置

使用 Jenkinsfile:類似于 Dockerfile 的一種文本文件,具體介紹:Using a Jenkinsfile[7]

我毫不猶豫地選擇了第二種,因為一是利于版本化;二是靈活。

Jenkinsfile 類似這樣:

pipeline { agent any stages { stage('Build') { steps { sh './gradlew clean build' archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true } } }}

那么 Jenkinsfile 放哪里呢?答案是和業務代碼放在一起,類似這樣每個工程各自管理自己的 Jenkinsfile:

這時,我們就可以在 Jenkins 上創建一個 pipleline Job了。關于分支管理,我們人少,所以,建議所有項目統一在 master 分支進行開發并發布。

讓 Jenkins 幫助我們執行 Ansible

之前我們都是在程序員的電腦執行 Ansible 的,現在我們要把這項工作交給 Jenkins。

具體操作:

在 Jenkins 安裝 Ansible 插件[8]

在 Jenkinsfile 中執行

withCredentials([sshUserPrivateKey(keyFileVariable:"deploy_private",credentialsId:"deploy"),file(credentialsId: 'vault_password', variable: 'vault_password')]) { ansiblePlaybook vaultCredentialsId: 'vault_password', inventory: "environments/prod", playbook: "playbook.yaml", extraVars:[ ansible_ssh_private_key_file: [value: "${deploy_private}", hidden: true], build_number: [value: "${params.build_number}", hidden: false] ]}

這里需要解釋下:

ansiblePlaybook 是 Jenkins ansible 插件提供的 pipeline 語法,類似手工執行:ansible-playbook 。

withCredentials 是 Credentials Binding[9] 插件的語法,用于引用一些敏感信息,比如執行 Ansible 時需要的 ssh key 及 Ansible Vault 密碼。

一些敏感配置變量,我們使用 Ansible Vault[10] 技術加密。

Ansible 腳本應該放哪?

我們已經知道各個項目各自負責自己的自動化構建,所以 Jenkinfile 就放到各自項目中。

那項目的部署呢?同樣的道理,我們覺得也應該由各個項目自行負責,所以我們的每個要進行部署的項目下都會有一個 Ansible 目錄,用于存放 Ansible 腳本。

類似這樣:

但是,怎么用呢?我們會在打包階段將 Ansible 目錄進行 zip 打包,到真正部署時,再解壓執行里面的 playbook。

快速為所有的項目生成 Ansible 腳本及Jenkinsfile

上面,我們將一個項目進行 Jenkins 化和 Ansible 化,但是我們還有很多項目需要進行同樣的動作。

考慮到這是體力活,而且以后我們還會經常做這樣事,所以我決定使用 cookiecutter[11] 技術自動生成 Jenkinsfile 及 Ansible 腳本,創建一個項目,像這樣:

小結

總結下來,我們小團隊的自動化運維實施的順序大概為:

上基礎監控

上 Gitlab

上 Jenkins,并集成 Gitlab

使用 Jenkins 實現自動編譯打包

使用 Jenkins 執行 Ansible

以上只是一個架子,基于這個“架子”,就可以向那些大廠高大上的架構進行演進了,比如:

CMDB 的建設:我們使用 ansible-cmdb[12] 根據 inventory 自動生成當前所有機器的情況。

發布管理:Jenkins 上可以對發布的每個階段進行定制。藍綠發布等發布方式可以通過修改 Ansible 腳本和 Inventory 實現。

自動擴縮容:通過配置 Prometheus 告警規則,調用相應 webhook 就可以實現。

ChatOps:ChatOps 實戰[13]。

以上就是我關于自動化運維的一些實踐,但是還在演進的路上,希望能與大家交流。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 監控系統
    +關注

    關注

    21

    文章

    3904

    瀏覽量

    174420
  • 自動化
    +關注

    關注

    29

    文章

    5562

    瀏覽量

    79239
  • 機器
    +關注

    關注

    0

    文章

    780

    瀏覽量

    40711

原文標題:超實用:小團隊如何從零搭建一個自動化運維體系?

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    普及跑腿到云一體化IT管理的常識

    普及跑腿到云一體化IT管理的常識
    發表于 06-22 14:28

    誠聘高級自動化工程師

    、熟悉大型互聯網企業自動化體系,了解包含CMDB、監控、部署、自動化檢查等各類系統的架構和常見解決方案,有實際規劃
    發表于 12-12 10:37

    銳捷助互聯網數據中心網絡自動化、可視

    吉朋表示,集中在網絡虛擬,以及自動化、可視上。當前,互聯網業務快速發展,服務器數量激增,要求基礎網絡快速交付,支撐業務快速上線,同時
    發表于 01-25 09:42

    【深圳】誠聘開發工程師

    、自動化平臺、負載均衡、調度系統開發經驗者優先;6. 理解HTTP/HTTPS、DNS、LDAP等常見服務原理;7. 熟悉Ansible等自動化配置工具的使用和擴展開發;8. 積極
    發表于 07-04 14:34

    虛擬故障怎么辦?虛擬怎么解決?

    人員的投入。業務健康以最終用戶體驗和應用響應時間的形式來衡量。如果最終用戶不斷抱怨應用運行緩慢,那就是問題。云安的可視窗口,透視虛擬架構,可以讓
    發表于 02-21 21:32

    ansible-first-book 自動化工具

    ansible-first-book 自動化工具
    發表于 09-08 09:31 ?5次下載

    配電自動化實用指標研究

    根據《配電自動化實用化驗收細則》中對配電自動化考核要求,重點圍繞終端在線率、遙信動作正確率、遙控使用率與遙控成功率四項指標進行考核。目前對配電
    發表于 03-05 14:55 ?0次下載

    厲害了!山東電力自動化平臺正式投

    日前,國網山東省電力集團公司通過了山東信息通信技術監督裝備及支撐工具開發實施項目的驗收,代表著自動化平臺正式投
    發表于 04-30 11:18 ?4449次閱讀

    Ansible企業級自動化探索的詳細資料說明

    本文檔的主要內容詳細介紹的是Ansible企業級自動化探索的詳細資料說明主要內容包括了:場景自動化
    發表于 06-03 08:00 ?2次下載
    Ansible企業級<b class='flag-5'>自動化</b><b class='flag-5'>運</b><b class='flag-5'>維</b>探索的詳細資料說明

    城域網自動化實現的關鍵點、難點和解決方案研究

      針對城域網自動化水平較低、人工成本高且無法擺脫重復勞動的現狀,本文探討了當前城域網自動化
    發表于 10-28 09:09 ?2600次閱讀
    城域網<b class='flag-5'>自動化</b><b class='flag-5'>運</b><b class='flag-5'>維</b>實現的關鍵點、難點和解決方案研究

    城域網是什么,其生命周期和自動化應用有哪些特點

    Labs 摘? 要針對城域網自動化水平較低、人工成本高且無法擺脫重復勞動的現狀,本文探討了當前城域網
    的頭像 發表于 12-25 14:24 ?1104次閱讀

    使用Python腳本實現自動化任務

    許多運工程師會使用 Python 腳本來自動化任務。Python 是種流行的編程語言,具有豐富的第三方庫和強大的
    的頭像 發表于 04-08 10:36 ?1680次閱讀

    DevOps流水線自動化和優化

    JFrogPipelines 通過在所有團隊和工具中以持續簡化和安全的方式實現DevOps 自動化流程,使軟件團隊能夠更快地發布更新情況
    的頭像 發表于 04-21 10:23 ?1485次閱讀

    網絡設備自動化工具—ansible入門筆記介紹

    Ansible是自動化工具,基于Python開發,集合了眾多運工具 (Puppet、CFengine、Chef、SaltStack
    的頭像 發表于 01-15 13:46 ?1888次閱讀
    網絡設備<b class='flag-5'>自動化</b><b class='flag-5'>運</b><b class='flag-5'>維</b>工具—ansible入門筆記介紹

    人工到自動化到AIOps再到ChatOps:大模型在運領域的應用

    、引言 在信息技術飛速發展的今天,工作已經最初的人工操作,逐步演變為自動化、AIOps(人工智能
    的頭像 發表于 07-01 18:00 ?510次閱讀
    <b class='flag-5'>從</b>人工到<b class='flag-5'>自動化</b>到AIOps再到ChatOps:大模型在運<b class='flag-5'>維</b>領域的應用
    主站蜘蛛池模板: 日本高清天码一区在线播放| 久久精品国产亚洲AV影院| 欧美18在线| free乌克兰性xxxxhd| 亲胸摸下面激烈免费网站| 啊好深啊别拔就射在里面| 祺鑫WRITEAS流出来了| 成年人免费观看视频网站| 人妻精品久久无码专区| 哺乳期妇女挤奶水36d| 思思re热免费精品视频66| 国产精品国产三级国产an| 亚洲精品国产精品精| 久久精品中文字幕有码日本| 97精品视频在线观看| 日本亚洲精品色婷婷在线影院| 国产免费久久爱久久啪| 中文字幕成人| 色橹橹欧美在线观看视频高| 国产自啪偷啪视频在线| 9277高清在线观看视频| 少妇仑乱A毛片| 久色乳综合思思在线视频| 超碰高清熟女一区二区| 小黄文污到你湿| 乱辈通奷XXXXXHD猛交| 国产高清在线观看视频| 自拍 偷拍 亚洲 经典| 深夜草逼逼| 欧美精品久久久久性色AV苍井| 国产成人在线视频免费观看| 在线亚洲色拍偷拍在线视频| 欧美性动漫3d在线观看完整版| 果冻传媒 在线播放观看| xxxx69日本| 99久久精品毛片免费播放| 亚洲精品久久7777777| 色多多涩涩屋下载软件| 免费又黄又硬又爽大片| 久久久久久久久女黄9999| 国产精品外围在线观看|