Beats:为 Heartbeat 监控添加 geo 信息

Posted Elastic 中国社区官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Beats:为 Heartbeat 监控添加 geo 信息相关的知识,希望对你有一定的参考价值。

在我之前的文章 “使用 Heartbeat 进行 Uptime 监控” 中,我详细地讲述了如何使用 Heartbeat 来对一个服务或者网站进行监控。在实际的很多监控中,如果我们能对监控的服务或者网站添加一个位置的信息,那么我们可以针对这个服务使用 Maps 来进行显示是非常好的。我们可以在地图上清楚地看到哪些网站或者服务是运行良好的。在今天的文章中,我将展示如何为 Heartbeat 的监控提供一个 geo 的信息。

启动 hello-app 服务

首先,我们来启动一个简单的服务。我们下载如下的一个 hello-app 服务:

docker pull phozzy/hello-app

它的源码位于:https://github.com/phozzy/hello-app

我们通过如下的命令来查看已经下载的 docker image:

$ docker images | grep hello-app
phozzy/hello-app                      latest          ccc079c68c8d   16 months ago   11.5MB

我们在 Docker 下运行该服务:

docker run --name hello-app-1 -p 8888:8080 -d phozzy/hello-app:latest

我们可以使用如下的命令来查看 container:

docker ps
CONTAINER ID   IMAGE                     COMMAND         CREATED             STATUS             PORTS                                       NAMES
f79744b317d4   phozzy/hello-app:latest   "./hello-app"   About an hour ago   Up About an hour   0.0.0.0:8888->8080/tcp, :::8888->8080/tcp   hello-app

我们看到一个 container 已经运行起来了。我们在浏览器中打入如下的地址 http://localhost:8888/hello

 

使用 Heartbeat 来监控服务

我们知道如果我们使用 HTTP 协议来监控这个服务时,我们必须很清楚地在 heartbeat.yml 文件中定义出来,比如:

heartbeat.yml

heartbeat.monitors:
- type: http
  enabled: true
  id: my-monitor
  name: My Monitor
  urls: ["http://localhost:8888/hello"]
  schedule: '@every 10s'
 
output.elasticsearch:
  hosts: ["192.168.0.3:9200"]

那么,我们使用如下的命令来对这个服务进行监控:

./heartbeat -e

我们可以在 Uptime 应用中看到如下的显示:

 

为 Heartbeat 添加位置信息

我们可以参考我之前的文章 “Elastic SIEM - 适用于家庭和企业的安全防护 ( 二)”。我们使用同样的方法为 Heartbeat 添加位置信息。为此,我们创建一个新的配置文件 geo_heartbeat.yml。

geo_heartbeat.yml

heartbeat.config.monitors:
  path: ${path.config}/monitors.d/*.yml
  reload.enabled: false
  reload.period: 5s

# Configure monitors inline
heartbeat.monitors:
- type: http
  enabled: true
  id: my-monitor
  name: My Monitor
  urls: ["http://localhost:8888/hello"]
  schedule: '@every 5s'

processors:
  - add_observer_metadata:
      cache.ttl: 5m
      geo:
        name: liuxg-hello-app
        location: 39.931854, 116.470528
        continent_name: Asia
        country_iso_code: CN
        region_name: Beijing
        region_iso_code: BJ
        city_name: Beijing

setup.kibana:
  host: "localhost:5601"

output.elasticsearch:
  hosts: ["localhost:9200"]

请注意上面的 processors 这个部分。我们添加了 geo 字段。

我们可以使用如下的命令来运行 Heartbeat:

./heartbeat -c geo_heartbeat.yml -e

为了能够在 Discover 中查看 Heartbeat 的索引,我们必须创建一个 index pattern:

 

 

这样我们就创建了一个叫做 heartbeat-* 的索引模式。

我们回到 Discoover 的界面:

我们可以看在 Observer 字段下的 geo 里含有位置信息。

我们回到 Uptime 应用:

现在在 Uptime 应用中,我们可以看到位置信息。这个位置信息是我们之前在 geo_heartbeat.yml 文件里定义的。


在地图应用中展示位置 

由于我们有有了位置信息,我们可以很方便地在 Maps 中展示这个服务:

  

以上是关于Beats:为 Heartbeat 监控添加 geo 信息的主要内容,如果未能解决你的问题,请参考以下文章

Beats:使用 Heartbeat 来检查 TLS 证书是否将要过期

Beats:使用 Heartbeat 来检查 TLS 证书是否将要过期

Beats:使用 Autodiscover 监控 Docker 容器

Beats:使用 Autodiscover 监控 Docker 容器

部署Heartbeat--Elastic Stack之十一

基于ELK+Beats进行系统监控