热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[系统集成]基于elasticsearch的企业监控方案

注:2017年10月16日:使用中发现es查询时序数据的性能较差,且watch脚本的编写比较麻烦,因此已将监控系统切换到了i

注:

2017年10月16日:

使用中发现 es 查询时序数据的性能较差,且 watch 脚本的编写比较麻烦,因此已将监控系统切换到了 influxdb+grafana平台。新监控系统各方面情况比较满意。

 

---------------

在企业监控领域,nagios 和 zabbix 一直是使用率比较高的工具。最近几年,业界又出现了新的工具和架构,比如:telegraf(数据抓取工具,还有 collectd, logstash,heapster) + influxdb(数据存储和搜索工具,还有 elasticsearch、opentsd) + kapacitor(数据处理和报警工具,还有 elastAlert,watch) + grafana(数据展示工具)。新的监控工具和架构具有分布式架构、组件独立、松耦合、易于扩展、插件丰富、适用范围广等优点,从容器监控到传统的服务器、虚拟机监控都适用。

 

在数据存储和搜索方面,influxdb 正在快速发展中,目前免费版没有集群功能;而elasticsearch 是一种健壮、高效、使用广泛的大数据全文搜索引擎,将监控数据存储在 es里,能与大数据平台结合,发挥更大作用。

(转载请注明出处:http://www.cnblogs.com/hahp)

 

1. 系统结构图

注:我的测试环境数据不多,因此源数据由 heapster 和 telegraf 抓取后直接存到 elasticsearch。如果数据量很大、elasticsearch 的写操作出现瓶颈,可以在 elasticsearch前加 kafka 和 logstash。

 

 

2. 数据抓取

heapster:用于抓取 kubernetes 容器监控数据,直接存到elasticsearch(也支持存到kafka等其它地方);

telegraf:用于抓取非容器的其它监控数据,它的插件很多,几乎涵盖了各种数据源。

 

3. 数据存储和搜索

elasticsearch 集群,我采用的是两台虚拟机;

 

4. 告警

我采用的是 elastic x-pack中的 watch:

https://www.elastic.co/guide/en/x-pack/current/how-watcher-works.html 

 

目前 watch的action只支持 email、webhook、index、loggin、hipchat、slack、pagerduty、jira。如果想执行一个外部脚本,比如:shell、python、perl脚本,可以将这些脚本集成到一台 restful web service服务器中,watch 便能够通过 webhook 方式调用。

 

watch 的搜索、状态判断、数据转换部分都支持一种 plainless script 语言,比 一般的方式更灵活、功能更强:

https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-specification.html

5. 展示

grafana 的效果非常好,支持 elasticsearch。

 

 

附:x-pack watch 例子

下面的 watch 用于监控 k8s nodes 的可用磁盘容量,如果任意一台node的可用磁盘容量低于5G,或者2分钟内获取不到监控数据,watch就会发送短信和邮件报警。

我是把上述功能写到两个watch里,你也可以研究更好的方法精简这两个watch。

 

PUT _xpack/watcher/watch/k8s_node_filesystem_available_evaluate
{
"trigger" : { "schedule" : { "interval" : "10s" }},"input" : {"search" : {"request" : {"indices" : [ "", "" ],"body" : {"query" : {"bool" : {"must" : [{ "term": { "_type": "filesystem" }},{ "term": { "MetricsTags.resource_id": "/" }},{ "term": { "MetricsTags.type": "node" }}],"filter" : [{ "range": { "Metrics.filesystem/available.value": {"lt": 5000000000}} },{ "range": {"FilesystemMetricsTimestamp": {"gte": "now-70s"}} }]}},"aggs": {"group_by_host_id": {"terms": { "size": 20, "field": "MetricsTags.host_id" },"aggs" : {"group_by_available_value" : {"terms": { "script": "params['_source']['Metrics']['filesystem/available']['value']>0?params['_source']['Metrics']['filesystem/available']['value']/(1024*1024*1024):params['_source']['Metrics']['filesystem/available']['value']" }}}}}}}}},"condition" : {"compare" : { "ctx.payload.hits.total" : { "gt": 0 }}},"throttle_period" : "60m","actions" : {"send_sms" : {"webhook" : {"method" : "POST","host" : "sms.xxx.com","port" : 80,"path" : "/actions/sendsms","params" : {"phone": "1580000000","message": "【XXX】报警:k8s nodes filesytem available:{{#ctx.payload.aggregations.group_by_host_id.buckets}}{{key}} {{group_by_available_value.buckets.0.key}}GB, {{/ctx.payload.aggregations.group_by_host_id.buckets}}"}}},"send_email" : {"email" : {"to" : "AAAAAAA@xxx.com","subject" : "【XXX】报警:k8s nodes filesytem available","body" : "{{#ctx.payload.aggregations.group_by_host_id.buckets}}{{key}} {{group_by_available_value.buckets.0.key}}GB, {{/ctx.payload.aggregations.group_by_host_id.buckets}}"}}}
}

 

PUT _xpack/watcher/watch/k8s_node_filesystem_hava_data
{
"trigger" : { "schedule" : { "interval" : "10s" }},"input" : {"search" : {"request" : {"indices" : [ "", "" ],"body" : {"query" : {"bool" : {"must" : [{ "term": { "_type": "filesystem" }},{ "term": { "MetricsTags.resource_id": "/" }},{ "term": { "MetricsTags.type": "node" }},{ "exists": { "field": "Metrics.filesystem/available.value" }}],"filter" : [{ "range": {"FilesystemMetricsTimestamp": {"gte": "now-130s"}} }]}},"aggs": {"group_by_host_id": {"terms": { "size": 20, "field": "MetricsTags.host_id" }}}}}}},"condition" : {"script" : "if(ctx.payload.aggregations.group_by_host_id.buckets.length<12){ return true; } else{ return false;}" },"transform" : {"script" : "List host_all &#61; [&#39;172.31.17.31&#39;,&#39;172.31.17.32&#39;,&#39;172.31.17.33&#39;,&#39;172.31.17.34&#39;,&#39;172.31.17.35&#39;,&#39;172.31.17.36&#39;,&#39;172.31.17.37&#39;,&#39;172.31.17.38&#39;,&#39;172.31.17.39&#39;,&#39;172.31.17.71&#39;,&#39;172.31.17.72&#39;,&#39;172.31.17.73&#39;]; List host_ids &#61; []; for (int i &#61; 0; i "},"throttle_period" : "60m","actions" : {"send_sms" : {"webhook" : {"method" : "POST","host" : "sms.xxx.com","port" : 80,"path" : "/actions/sendsms","params" : {"phone": "1580000000","message": "【XXX】报警:k8s nodes filesytem no data:{{#ctx.payload.host_no_data}}{{key}},{{/ctx.payload.host_no_data}}"}}},"send_email" : {"email" : {"to" : "AAAAAAA&#64;xxx.com","subject" : "【XXX】报警:k8s nodes filesytem no data","body" : "{{#ctx.payload.host_no_data}}{{key}},{{/ctx.payload.host_no_data}}"}}}
}

  

转:https://www.cnblogs.com/hahp/p/7027195.html



推荐阅读
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文介绍了如何在GitHub上设置多个SSH Key,以解决原有Key失效的问题,并确保不同项目使用不同的私钥进行安全访问。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • Docker 中创建 CentOS 容器并安装 MySQL 进行本地连接
    本文详细介绍了如何在 Docker 中创建 CentOS 容器,并在容器中安装 MySQL 以实现本地连接。文章内容包括镜像拉取、容器创建、MySQL 安装与配置等步骤。 ... [详细]
  • 本文介绍了如何通过Sybase Central连接到示例数据库,并查看其中的表和其他对象。主要内容包括启动Sybase Central、建立连接、查看表列表及表的具体信息。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
author-avatar
兔子东大门一手批发
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有