美文网首页
基于 ELK 天气指标监控在线实时监控案例

基于 ELK 天气指标监控在线实时监控案例

作者: you的日常 | 来源:发表于2021-04-15 16:07 被阅读0次

本文将系统地介绍 ELK(Elasticsearch、Logstash、Kibana)在项目中的应用,各自扮演了什么样的角色,以及如何配置索引、Logstash 等。

Logstash

我们将用 Logstash 模拟整个天气指标数据的采集过程,首先我们将会对 Logstash 做一个简单的讲解,然后举几个例子,最后应用到天气数据采集过程中。

Logstash 是一款开源优秀的数据采集工具,数据源可以是控制台的标准输入、日志文件、Kafka 等,中间由过滤器对采集的数据进一步处理,然后由输出插件将结果输出到 ES,或者 Kafka。

Logstash 采集数据基本流程如下:

# 输入
input {
  ...
}

# 过滤器
filter {
  ...
}

# 输出
output {
  ...
}

同样我们使用 Docker 作为平台来运行测试 Logstash。因为 Docker 跨平台,所以你不需要学习如何在 Linux、Windows、Mac 上配置,另外还不会污染了当前系统的环境。使用 Docker 随用随启动,不用就丢掉。也不用刻意去学习 Docker,当做一个方便的虚拟机使用就是了,言归正传。

进入到控制台,拉取 Logstash 镜像:

docker pull docker.elastic.co/logstash/logstash:7.1.1

查看镜像 ID 启动容器:

image-20200524170523288

启动容器,并使用 bash 命令进入:

docker run  --rm -it  --name logstash   b0cb1543380d  bash

进入到容器中,可以看到 Logstash 的目录结构:

bash-4.2$ ls -l
total 888
drwxrwsr-x 2 logstash root   4096 May 23  2019 bin
drwxrwsr-x 1 logstash root   4096 May 23  2019 config
-rw-rw-r-- 1 logstash root   2276 May 23  2019 CONTRIBUTORS
drwxrwsr-x 2 logstash root   4096 May 23  2019 data
-rw-rw-r-- 1 logstash root   4119 May 23  2019 Gemfile
-rw-rw-r-- 1 logstash root  22491 May 23  2019 Gemfile.lock
drwxrwsr-x 6 logstash root   4096 May 23  2019 lib
-rw-rw-r-- 1 logstash root  13675 May 23  2019 LICENSE.txt
drwxrwsr-x 4 logstash root   4096 May 23  2019 logstash-core
drwxrwsr-x 3 logstash root   4096 May 23  2019 logstash-core-plugin-api
drwxrwsr-x 4 logstash root   4096 May 23  2019 modules
-rw-rw-r-- 1 logstash root 808305 May 23  2019 NOTICE.TXT
drwxr-sr-x 1 logstash root   4096 May 23  2019 pipeline
drwxrwsr-x 3 logstash root   4096 May 23  2019 tools
drwxrwsr-x 4 logstash root   4096 May 23  2019 vendor
drwxrwsr-x 9 logstash root   4096 May 23  2019 x-pack

pipeline 目录是用来配置,输出 -> 过滤 -> 输出插件,这里我们将配置一个控制台输入输出作为一个简单使用的 Demo。

进入到 pipeline 目录,修改 logstash.conf 文件,配置输入是 stdin,输出是 stdout。

/usr/share/logstash/pipeline

input {
  stdin {

  }
}

output {
  stdout {

  }
}

进入到 bin 目录执行 ./logstash 启动完成之后,就会提示输出,输出 hello word 后,黄色部分为输出。这是一个简单的 Logstash pipeline 案例。

image-20200524175241833

Elasticsearch

weather_monitor 索引 Mapping 关系如下。我们要根据需求对 Mapping 进行修改,目的是优化 ES 内存,让 mapping 变的更简单。首先 city、weather 配置成 keyword,去掉 text 类型节约内存。另外最好把 dynamic 设置成 false。

{
  "mapping": {
    "properties": {
      "city": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "temperature": {
        "type": "long"
      },
      "timestamp": {
        "type": "date"
      },
      "weather": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  }
}

新建一个索引 weather_monitor_new,如果要重新建 mapping 必须要新建一个索引,然后通过 reindex 接口进行重新把数据索引起来,这里我们不使用 reindex,将会结合 Logstash 重新将数据导入。

相关文章

网友评论

      本文标题:基于 ELK 天气指标监控在线实时监控案例

      本文链接:https://www.haomeiwen.com/subject/xuxybktx.html