heapster) + influxdb(数据存储和找工具。heapster) + influxdb(数据存储和查找工具。

注:

注:

2017年10月16日:

2017年10月16日:

使受到发现 es 查询时序数据的性比差,且
watch 脚本的编写比较费心,因此都以监控网切换到了
influxdb+grafana平台。新监控系统各地方情况比较满意。

运用受到发觉 es 查询时序数据的习性于差,且
watch 脚本的编撰比较辛苦,因此曾经将监督系统切换到了
influxdb+grafana平台。新监控体系各级面情况比较满意。

 

 



每当商店监督世界,nagios 和 zabbix
一直是使用率较强的工具。最近几年,业界又起了新的工具及搭,比如:telegraf(数据抓取工具,还有
collectd, logstash,heapster) + influxdb(数据存储和寻找工具,还有
elasticsearch、opentsd) + kapacitor(数据处理与报警工具,还有
elastAlert,watch) +
grafana(数据展示工具)。新的监察工具及搭具有分布式架构、组件独立、松耦合、易于扩展、插件丰富、适用范围广等优点,从容器监控及传统的服务器、虚拟机监控都适用。

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

 

 

于数据存储和摸索方面,influxdb
正在快速前进遭受,目前免费版无集群效益;而elasticsearch
是如出一辙栽健康、高效、使用大规模的百般数据全文检索引擎,将督查数据存储于
es里,能与好数额平台做,发挥更老作用。

当多少存储和搜索方面,influxdb
正在飞速腾飞吃,目前免费版无集群效应;而elasticsearch
是平种健康、高效、使用大的老数额全文检索引擎,将监督数据存储在
es里,能跟好数目平台组成,发挥还充分作用。

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

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

 

 

1. 系统结构图

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

 

图片 1

 

1. 系统结构图

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

 

图片 2

 

2. 数码抓取

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

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

 

2. 数额抓取

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

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

 

3. 多少存储和查找

elasticsearch 集群,我下的是片宝虚拟机;

 

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

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。

图片 3

 

5. 展示

grafana 的作用十分好,支持 elasticsearch。

图片 4

 

附: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" : [ 
          "<heapster-{now}>", 
          "<heapster-{now-1h}>" 
        ],
        "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.kxjf.com",
        "port" : 80,
        "path" : "/actions/sendsms",
        "params" : {
          "phone": "1580000000",
          "message": "【开鑫贷】报警: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@kxjf.com",
        "subject" : "【开鑫贷】报警: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" : [ 
          "<heapster-{now}>", 
          "<heapster-{now-1h}>" 
        ],
        "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 = ['172.31.17.31','172.31.17.32','172.31.17.33','172.31.17.34','172.31.17.35','172.31.17.36','172.31.17.37','172.31.17.38','172.31.17.39','172.31.17.71','172.31.17.72','172.31.17.73']; List host_ids = []; for (int i = 0; i < ctx.payload.aggregations.group_by_host_id.buckets.length; ++i ){ host_ids.add(ctx.payload.aggregations.group_by_host_id.buckets[i].key); } List host_no_data = []; for(item in host_all){ if(!host_ids.contains(item)){ host_no_data.add(['key':item]); } } return ['host_no_data':host_no_data];"
  },
  "throttle_period" : "60m",
  "actions" : {
    "send_sms" : {
      "webhook" : {
        "method" : "POST",
        "host" : "sms.kxjf.com",
        "port" : 80,
        "path" : "/actions/sendsms",
        "params" : {
          "phone": "1580000000",
          "message": "【开鑫贷】报警:k8s nodes filesytem no data:{{#ctx.payload.host_no_data}}{{key}},{{/ctx.payload.host_no_data}}"
        }
      }
    },
    "send_email" : {
      "email" : {
        "to" : "AAAAAAA@kxjf.com",
        "subject" : "【开鑫贷】报警:k8s nodes filesytem no data",
        "body" : "{{#ctx.payload.host_no_data}}{{key}},{{/ctx.payload.host_no_data}}"
      }
    }
  }
}

 

  • 邮件告警信息

图片 5

 

  • 短信告警信息

图片 6

 

附: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" : [ 
          "<heapster-{now}>", 
          "<heapster-{now-1h}>" 
        ],
        "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.kxjf.com",
        "port" : 80,
        "path" : "/actions/sendsms",
        "params" : {
          "phone": "1580000000",
          "message": "【开鑫贷】报警: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@kxjf.com",
        "subject" : "【开鑫贷】报警: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" : [ 
          "<heapster-{now}>", 
          "<heapster-{now-1h}>" 
        ],
        "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 = ['172.31.17.31','172.31.17.32','172.31.17.33','172.31.17.34','172.31.17.35','172.31.17.36','172.31.17.37','172.31.17.38','172.31.17.39','172.31.17.71','172.31.17.72','172.31.17.73']; List host_ids = []; for (int i = 0; i < ctx.payload.aggregations.group_by_host_id.buckets.length; ++i ){ host_ids.add(ctx.payload.aggregations.group_by_host_id.buckets[i].key); } List host_no_data = []; for(item in host_all){ if(!host_ids.contains(item)){ host_no_data.add(['key':item]); } } return ['host_no_data':host_no_data];"
  },
  "throttle_period" : "60m",
  "actions" : {
    "send_sms" : {
      "webhook" : {
        "method" : "POST",
        "host" : "sms.kxjf.com",
        "port" : 80,
        "path" : "/actions/sendsms",
        "params" : {
          "phone": "1580000000",
          "message": "【开鑫贷】报警:k8s nodes filesytem no data:{{#ctx.payload.host_no_data}}{{key}},{{/ctx.payload.host_no_data}}"
        }
      }
    },
    "send_email" : {
      "email" : {
        "to" : "AAAAAAA@kxjf.com",
        "subject" : "【开鑫贷】报警:k8s nodes filesytem no data",
        "body" : "{{#ctx.payload.host_no_data}}{{key}},{{/ctx.payload.host_no_data}}"
      }
    }
  }
}

 

  • 邮件告警信息

图片 7

 

  • 短信告警信息

图片 8

 

相关文章