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 容器