写点什么

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

  • 2020-02-07
  • 本文字数:2000 字

    阅读完需:约 7 分钟

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

很多公司已经开发了监控解决方案,解决了指标收集、展示、预警发送等一系列问题。


本文介绍的监控解决方案由高性能时序数据库 InfluxDB、时序分析监控工具 Grafana 及 Agentless 自动化工具 Ansible 构成:Ansible 负责不间断抓取服务器硬件指标数据,并将数据存储在数据库 InfluxDB 中;时序分析监控工具 Grafana 负责从 InfluxDB 中读取并展示指标数据,设定阈值,配置预警。

一、开发环境

通过三台本地虚机还原监控对象:一台为监控服务器(monitor),另两台为可接入监控服务的服务器(server1 和 server2)。使用 Vagrant 管理开发环境,执行 vagrant up monitor 命令,通过下方 Vagrantfile 开启并配置监控服务器。如果需要把 server1 和 server2 接入监控服务中,可以稍后启动这两台虚机服务器。


1567406553465000901.jpeg


Ansible 负责配置监控服务器,包括安装 InfluxDB、Grafana 及 Ansible 以及配置监控服务。为了保证代码整洁,结构清晰,每个工具的安装任务都保存在单独的 YML 文件夹中。include_tasks 可动态地将分组后的任务纳入整个流程中。


1567406560065004617.jpeg

二、监控服务配置

监控服务配置步骤如下方 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 配置,每分钟执行一次:每分钟采集、存储、显示一次指标数据;如发现问题,则发送预警。


1567406568259042988.jpeg


1567406575355040944.jpeg

三、采集指标数据

下方 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 格式,可使用点符号访问值。


1567406583126017673.jpeg

四、在监控服务中接入服务器

执行 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 的各项指标数据。


1567406590295025420.jpeg

五、结论

本文介绍的监控解决方案成本较低且易于实施,具有以下优势: Ansible 不需要在所有监控对象中安装 agent; 所有指标数据存储在高性能时序数据库 InfluxDB 中; 利用 Grafana 统一展示数据,并支持配置预警。


本文转载自宜信技术学院。


原文链接:http://college.creditease.cn/detail/294


2020-02-07 20:42524

评论

发布
暂无评论
发现更多内容

使用less/css 动态的切换主题色实现换肤功能

默默的成长

前端 Vue 3 10月月更

【LeetCode】 LRU 缓存机制Java题解

Albert

算法 LeetCode 10月月更

DTT第7期直播回顾 | 低代码应用构建流程和适用场景,与你想的一样吗?

华为云开发者联盟

云计算 低代码 华为云 企业号十月 PK 榜

软件测试 | 测试开发 | 一文搞定 Appium 环境配置

测吧(北京)科技有限公司

测试

页面中元素的吸顶

默默的成长

前端 Vue 3 10月月更

SparkSQL on K8s 在网易传媒的落地实践

网易数帆

大数据 spark Kubernetes Kyuubi 企业号十月 PK 榜

部署 SAP UI5 应用到 SAP BTP 时遇到的 fiori not found 错误消息

Jerry Wang

JavaScript 前端开发 Fiori SAP UI5 10月月更

美团前端手写面试题总结

helloworld1024fd

JavaScript

一步步实现React-Hooks核心原理

helloworld1024fd

JavaScript

pyside6 qml TableView列表 用QSortFilterProxyModel模糊查询

Mr_No爱学习

从零到一手写迷你版Vue

helloworld1024fd

JavaScript

NFT链游系统开发丨Alien Worlds异形世界链游系统开发成熟技术(Demo)

I8O28578624

华为云从入门到实战 | 云容器服务

TiAmo

华为 华为云 云开发 10月月更

在一个公司死磕了5-10年的程序员,最后都哪里去了?

源字节1号

一步步实现React-Hooks核心原理

helloworld1024fd

JavaScript

《SREWorks 云原生数智运维工程实践》电子书重磅来袭!(免费下载)

阿里云大数据AI技术

大数据 运维 云原生 电子书 企业号十月PK榜

探索智能化测试技术

华为云开发者联盟

软件 测试 开发 华为云 企业号十月 PK 榜

react源码中的生命周期和事件系统

flyzz177

React

页面中元素的锚点定位

默默的成长

前端 Vue 3 10月月更

从react源码看hooks的原理

flyzz177

React

2022昇腾AI创新大赛16地区域决赛圆满落幕 32支队伍角逐全国冠军

Geek_2d6073

CEF | VS2017+Qt5.14.2+cef 实现基于CEF框架的客户端

YOLO.

qt 10月月更 C++

深入react源码看setState究竟做了什么?

flyzz177

React

虚拟蜜罐:从信息模拟到实现虚拟蜜罐技术

郑州埃文科技

Linux IP地址 蜜罐

Agentless监控实践中的预警指标采集_新基建_编译_InfoQ精选文章