热门标签 | 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



推荐阅读
  • 本文详细介绍了如何使用Heartbeat构建一个高可用性的Apache集群,包括安装、配置和测试步骤。 ... [详细]
  • 开发笔记:empireCMS 帝国cms功能总结 ... [详细]
  • Java中高级工程师面试必备:JVM核心知识点全面解析
    对于软件开发人员而言,随着技术框架的不断演进和成熟,许多高级功能已经被高度封装,使得初级开发者只需掌握基本用法即可迅速完成项目。然而,对于中高级工程师而言,深入了解Java虚拟机(JVM)的核心知识点是必不可少的。这不仅有助于优化性能和解决复杂问题,还能在面试中脱颖而出。本文将全面解析JVM的关键概念和技术细节,帮助读者全面提升技术水平。 ... [详细]
  • Flume 数据采集组件
    目录1、数据收集工具系统产生背景2、专业的数据收集工具2.1、Chukwa2.2、Scribe2.3、Fluentd2.4、Logstash2.5、ApacheFlu ... [详细]
  • 搞懂 ELK 并不是一件特别难的事
    点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!本篇文章主要介绍ELK的一些框架组成,原理和实践&#x ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • openGauss行存储核心架构及其页面组织详解
    行存储的核心架构和页面组织是实现DML操作、可见性判断及多种管理功能的基础。作为基于磁盘的存储引擎,行存储在设计上采用了段页式结构,以优化数据的存储和访问效率。这种设计不仅确保了数据的高效存储,还为行存储的各种高级功能提供了坚实的技术支持。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
  • 深入解析十大经典排序算法:动画演示、原理分析与代码实现
    本文深入探讨了十种经典的排序算法,不仅通过动画直观展示了每种算法的运行过程,还详细解析了其背后的原理与机制,并提供了相应的代码实现,帮助读者全面理解和掌握这些算法的核心要点。 ... [详细]
  • ELK+filebeat安装部署监控springboot日志
    ELK服务器端部署1.安装dockercompose,略2.配置docker-compose.ymlcdrootelkvidocker-compose.ymlversion:&am ... [详细]
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社区 版权所有