您好,登錄后才能下訂單哦!
本文介紹的監控解決方案由高性能時序數據庫InfluxDB、時序分析監控工具Grafana及Agentless自動化工具Ansible構成:Ansible負責不間斷抓取服務器硬件指標數據,并將數據存儲在數據庫InfluxDB中;時序分析監控工具Grafana負責從InfluxDB中讀取并展示指標數據,設定閾值,配置預警。
通過三臺本地虛機還原監控對象:一臺為監控服務器(monitor),另兩臺為可接入監控服務的服務器(server1和server2)。
使用Vagrant管理開發環境,執行vagrant up monitor命令,通過下方Vagrantfile開啟并配置監控服務器。如果需要把server1和server2接入監控服務中,可以稍后啟動這兩臺虛機服務器。
Ansible負責配置監控服務器,包括安裝InfluxDB、Grafana及Ansible以及配置監控服務。為了保證代碼整潔,結構清晰,每個工具的安裝任務都保存在單獨的YML文件夾中。include_tasks可動態地將分組后的任務納入整個流程中。
監控服務配置步驟如下方monitoring-configuration.yml文件所示。首先,創建monitor數據庫,生成API,用于完成各項數據庫操作。通過Ansible URI與網頁服務交互。從監控對象服務器中提取的所有指標均存儲在監控數據庫中。
接下來創建Grafana數據源,對接數據庫InfluxDB,讀取全部指標數據。Grafana提供API,支持通過json格式的內容最大限度地利用配置。除數據源外,還創建了Slack通知渠道和第一個面板。
Slack通知渠道指向測試版Slack工作區。用戶可創建自己的工作區,并邀請運維人員加入。同時創建傳入webhook,取代json URL字段值。
初始面板會顯示已使用內存百分比。用戶可以添加其他指標或創建新面板。可將閾值設定為95%,這樣便能直觀地查看展示結果;同時配置預警:當最后五個指標值大于等于95%時,則向Slack渠道發送通知。
Ansible支持在多個服務器上同時執行任務。此外,Ansible可通過清單文件(/etc/ansible/hosts)了解目標服務器的分組情況。在監控服務配置期間,在庫存文件中創建 monitored_servers分組。該組內的所有服務器會被自動監控。
服務器接入監控服務后,為防止Ansible核驗SSH密鑰,需禁用Ansible配置文件(/etc/ansible/ansible.cfg)中的默認功能,以便采集新增服務器的指標。
通過Ansible playbook(playbook-get-metrics.yml)連接所有監控對象,提取所有相關指標。Ansible playbook位于 /etc/ansible/playbooks目錄下,通過CRON配置,每分鐘執行一次:每分鐘采集、存儲、顯示一次指標數據;如發現問題,則發送預警。
下方playbook-get-metrics.yml文件負責從monitored_servers中提取所有重要指標,并將采集到的數據存儲在monitor數據庫中。初始面板僅采集內存占用比例。用戶可在playbook中添加任務,采集其他指標。
InfluxDB數據存儲API用于存儲監控數據庫中的指標數據。192.168.33.10為監控服務器的IP地址,8086為InfluxDB端口號。數據庫中,已使用內存的key為used_mem_pct。用戶需為每個指標配置合適的key。
Ansible默認會采集目標主機信息,用于執行任務。例如,根據主機名稱(ansible_hostname)可以判斷指標從哪個服務器上采集的。
此外,通過Ansible采集到的實際使用內存(ansible_memory_mb.real.used)和累計實際使用內存(ansible_memory_mb.real.total)可以計算出內存消耗百分比。掌握這些數據后,可以執行ansible monitor -m setup -uvagrant -k -i hosts命令。彈出SSH密碼時,輸入vagrant。前述信息均為json格式,可使用點符號訪問值。
執行vagrant up monitor命令,啟動監控服務器。
然后在瀏覽器中輸入http://192.168.33.10:3000,訪問Grafana。用戶名和密碼均為admin。點擊used_mem_pct面板鏈接,查看折線圖中監控服務器的數值。
接入其他服務器,查看折線圖中的數值。啟動接入其他服務器,查看折線圖中的數值。啟動server1,執行vagrant up server1命令,繼續執行ansible-playbookplaybook-add-server.yml -u vagrant -k -i hosts命令。-u參數用于定義SSH用戶,-k參數提示輸入密碼,-i用于定義監控服務器。
獲取新服務器IP地址和SSH證書后,便可實現Ansible與服務器對接。在監控服務器/etc/ansible/hosts文件中插入一行代碼后,便可將服務器接入監控服務中。CRON再次執行playbook-get-metrics.yml時,server1便會成為監控對象。這樣就可以采集、存儲、展示server1的各項指標數據。
本文介紹的監控解決方案成本較低且易于實施,具有以下優勢:
作者:Gustavo Carmo
編譯自:How to Get Metrics for Advance Alerting to Prevent Trouble
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。