溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Agentless監(jiān)控實(shí)踐中的預(yù)警指標(biāo)采集

發(fā)布時(shí)間:2020-08-10 14:39:55 來(lái)源:ITPUB博客 閱讀:155 作者:宜信技術(shù)學(xué)院 欄目:網(wǎng)絡(luò)管理

很多公司已經(jīng)開(kāi)發(fā)了監(jiān)控解決方案,解決了指標(biāo)收集、展示、預(yù)警發(fā)送等一系列問(wèn)題。

本文介紹的監(jiān)控解決方案由高性能時(shí)序數(shù)據(jù)庫(kù)InfluxDB、時(shí)序分析監(jiān)控工具Grafana及Agentless自動(dòng)化工具Ansible構(gòu)成:Ansible負(fù)責(zé)不間斷抓取服務(wù)器硬件指標(biāo)數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)InfluxDB中;時(shí)序分析監(jiān)控工具Grafana負(fù)責(zé)從InfluxDB中讀取并展示指標(biāo)數(shù)據(jù),設(shè)定閾值,配置預(yù)警。

一、開(kāi)發(fā)環(huán)境

通過(guò)三臺(tái)本地虛機(jī)還原監(jiān)控對(duì)象:一臺(tái)為監(jiān)控服務(wù)器(monitor),另兩臺(tái)為可接入監(jiān)控服務(wù)的服務(wù)器(server1和server2)。

使用Vagrant管理開(kāi)發(fā)環(huán)境,執(zhí)行vagrant up monitor命令,通過(guò)下方Vagrantfile開(kāi)啟并配置監(jiān)控服務(wù)器。如果需要把server1和server2接入監(jiān)控服務(wù)中,可以稍后啟動(dòng)這兩臺(tái)虛機(jī)服務(wù)器。

Agentless監(jiān)控實(shí)踐中的預(yù)警指標(biāo)采集

Ansible負(fù)責(zé)配置監(jiān)控服務(wù)器,包括安裝InfluxDB、Grafana及Ansible以及配置監(jiān)控服務(wù)。為了保證代碼整潔,結(jié)構(gòu)清晰,每個(gè)工具的安裝任務(wù)都保存在單獨(dú)的YML文件夾中。include_tasks可動(dòng)態(tài)地將分組后的任務(wù)納入整個(gè)流程中。

Agentless監(jiān)控實(shí)踐中的預(yù)警指標(biāo)采集

二、監(jiān)控服務(wù)配置

監(jiān)控服務(wù)配置步驟如下方monitoring-configuration.yml文件所示。首先,創(chuàng)建monitor數(shù)據(jù)庫(kù),生成API,用于完成各項(xiàng)數(shù)據(jù)庫(kù)操作。通過(guò)Ansible URI與網(wǎng)頁(yè)服務(wù)交互。從監(jiān)控對(duì)象服務(wù)器中提取的所有指標(biāo)均存儲(chǔ)在監(jiān)控?cái)?shù)據(jù)庫(kù)中。

接下來(lái)創(chuàng)建Grafana數(shù)據(jù)源,對(duì)接數(shù)據(jù)庫(kù)InfluxDB,讀取全部指標(biāo)數(shù)據(jù)。Grafana提供API,支持通過(guò)json格式的內(nèi)容最大限度地利用配置。除數(shù)據(jù)源外,還創(chuàng)建了Slack通知渠道和第一個(gè)面板。

Slack通知渠道指向測(cè)試版Slack工作區(qū)。用戶可創(chuàng)建自己的工作區(qū),并邀請(qǐng)運(yùn)維人員加入。同時(shí)創(chuàng)建傳入webhook,取代json URL字段值。

初始面板會(huì)顯示已使用內(nèi)存百分比。用戶可以添加其他指標(biāo)或創(chuàng)建新面板??蓪㈤撝翟O(shè)定為95%,這樣便能直觀地查看展示結(jié)果;同時(shí)配置預(yù)警:當(dāng)最后五個(gè)指標(biāo)值大于等于95%時(shí),則向Slack渠道發(fā)送通知。

Ansible支持在多個(gè)服務(wù)器上同時(shí)執(zhí)行任務(wù)。此外,Ansible可通過(guò)清單文件(/etc/ansible/hosts)了解目標(biāo)服務(wù)器的分組情況。在監(jiān)控服務(wù)配置期間,在庫(kù)存文件中創(chuàng)建 monitored_servers分組。該組內(nèi)的所有服務(wù)器會(huì)被自動(dòng)監(jiān)控。

服務(wù)器接入監(jiān)控服務(wù)后,為防止Ansible核驗(yàn)SSH密鑰,需禁用Ansible配置文件(/etc/ansible/ansible.cfg)中的默認(rèn)功能,以便采集新增服務(wù)器的指標(biāo)。

通過(guò)Ansible playbook(playbook-get-metrics.yml)連接所有監(jiān)控對(duì)象,提取所有相關(guān)指標(biāo)。Ansible playbook位于 /etc/ansible/playbooks目錄下,通過(guò)CRON配置,每分鐘執(zhí)行一次:每分鐘采集、存儲(chǔ)、顯示一次指標(biāo)數(shù)據(jù);如發(fā)現(xiàn)問(wèn)題,則發(fā)送預(yù)警。

Agentless監(jiān)控實(shí)踐中的預(yù)警指標(biāo)采集

Agentless監(jiān)控實(shí)踐中的預(yù)警指標(biāo)采集

三、采集指標(biāo)數(shù)據(jù)

下方playbook-get-metrics.yml文件負(fù)責(zé)從monitored_servers中提取所有重要指標(biāo),并將采集到的數(shù)據(jù)存儲(chǔ)在monitor數(shù)據(jù)庫(kù)中。初始面板僅采集內(nèi)存占用比例。用戶可在playbook中添加任務(wù),采集其他指標(biāo)。

InfluxDB數(shù)據(jù)存儲(chǔ)API用于存儲(chǔ)監(jiān)控?cái)?shù)據(jù)庫(kù)中的指標(biāo)數(shù)據(jù)。192.168.33.10為監(jiān)控服務(wù)器的IP地址,8086為InfluxDB端口號(hào)。數(shù)據(jù)庫(kù)中,已使用內(nèi)存的key為used_mem_pct。用戶需為每個(gè)指標(biāo)配置合適的key。

Ansible默認(rèn)會(huì)采集目標(biāo)主機(jī)信息,用于執(zhí)行任務(wù)。例如,根據(jù)主機(jī)名稱(ansible_hostname)可以判斷指標(biāo)從哪個(gè)服務(wù)器上采集的。

此外,通過(guò)Ansible采集到的實(shí)際使用內(nèi)存(ansible_memory_mb.real.used)和累計(jì)實(shí)際使用內(nèi)存(ansible_memory_mb.real.total)可以計(jì)算出內(nèi)存消耗百分比。掌握這些數(shù)據(jù)后,可以執(zhí)行ansible monitor -m setup -uvagrant -k -i hosts命令。彈出SSH密碼時(shí),輸入vagrant。前述信息均為json格式,可使用點(diǎn)符號(hào)訪問(wèn)值。

Agentless監(jiān)控實(shí)踐中的預(yù)警指標(biāo)采集

四、在監(jiān)控服務(wù)中接入服務(wù)器

執(zhí)行vagrant up monitor命令,啟動(dòng)監(jiān)控服務(wù)器。

然后在瀏覽器中輸入http://192.168.33.10:3000,訪問(wèn)Grafana。用戶名和密碼均為admin。點(diǎn)擊used_mem_pct面板鏈接,查看折線圖中監(jiān)控服務(wù)器的數(shù)值。

接入其他服務(wù)器,查看折線圖中的數(shù)值。啟動(dòng)接入其他服務(wù)器,查看折線圖中的數(shù)值。啟動(dòng)server1,執(zhí)行vagrant up server1命令,繼續(xù)執(zhí)行ansible-playbookplaybook-add-server.yml -u vagrant -k -i hosts命令。-u參數(shù)用于定義SSH用戶,-k參數(shù)提示輸入密碼,-i用于定義監(jiān)控服務(wù)器。

獲取新服務(wù)器IP地址和SSH證書(shū)后,便可實(shí)現(xiàn)Ansible與服務(wù)器對(duì)接。在監(jiān)控服務(wù)器/etc/ansible/hosts文件中插入一行代碼后,便可將服務(wù)器接入監(jiān)控服務(wù)中。CRON再次執(zhí)行playbook-get-metrics.yml時(shí),server1便會(huì)成為監(jiān)控對(duì)象。這樣就可以采集、存儲(chǔ)、展示server1的各項(xiàng)指標(biāo)數(shù)據(jù)。

Agentless監(jiān)控實(shí)踐中的預(yù)警指標(biāo)采集

五、結(jié)論

本文介紹的監(jiān)控解決方案成本較低且易于實(shí)施,具有以下優(yōu)勢(shì):

  • Ansible不需要在所有監(jiān)控對(duì)象中安裝agent;
  • 所有指標(biāo)數(shù)據(jù)存儲(chǔ)在高性能時(shí)序數(shù)據(jù)庫(kù)InfluxDB中;
  • 利用Grafana統(tǒng)一展示數(shù)據(jù),并支持配置預(yù)警。

作者:Gustavo Carmo

編譯自:How to Get Metrics for Advance Alerting to Prevent Trouble

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI