Agentless监控实践中的预警指标采集


本文介绍的监控解决方案由高性能时序数据库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文件所示。首先,创建m免费云主机域名onitor数据库,生成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

相关推荐: ios基于linux还是unix开发

本篇内容主要讲解“ios基于linux还是unix开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ios基于linux还是unix开发”吧! IOS是基于UNIX开发的;IOS实际上是Darwin的ARM变体,源…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/01 13:02
下一篇 02/01 14:16