专栏首页PHP专享栏Elasticsearch Service 数据接入

Elasticsearch Service 数据接入

Elasticsearch 服务提供在用户 VPC 内通过私有网络 VIP 访问集群的方式,用户可以通过 Elasticsearch REST client 编写代码访问集群并将自己的数据导入到集群中,当然也可以通过官方提供的组件(如 logstash 和 beat)接入自己的数据。 本文以官方的 logstash 和 beats 为例,介绍不同类型的数据源接入 ES 的方式。

准备工作

因访问 ES 集群需要在用户 VPC 内进行,因此用户需要创建一台和 ES 集群相同 VPC 下的 CVM 实例或者 Docker 集群。

使用 logstash 接入 ES 集群

CVM 中访问 ES 集群

  1. 安装部署 logstash 与 java8。 wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.4.tar.gz tar xvf logstash-5.6.4.tar.gz yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y 说明: 请注意 logstash 版本,建议与 Elasticsearch 版本保持一致。
  2. 根据数据源类型自定义配置文件 *.conf,配置文件内容可参考 数据源配置文件说明。
  3. 执行 logstash。 nohup ./bin/logstash -f ~/*.conf 2>&1 >/dev/null &

Docker 中访问 ES 集群

自建 Docker 集群

  1. 拉取 logstash 官方镜像。 docker pull docker.elastic.co/logstash/logstash:5.6.9
  2. 根据数据源类型自定义配置文件 *.conf,放置在 /usr/share/logstash/pipeline/目录下,目录可自定义。
  3. 运行 logstash。 docker run --rm -it -v ~/pipeline/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:5.6.9

使用腾讯云容器服务

腾讯云 Docker 集群运行于 CVM 实例上,所以需要先在容器服务控制台上创建 CVM 集群。

  1. 登录 容器服务控制台,选择左侧菜单栏【集群】>【新建】创建集群。
  1. 选择左侧菜单栏【服务】,单击【新建】创建服务。
  1. 选取 logstash 镜像。 本例中使用 TencentHub 镜像仓库提供的 logstash 镜像,用户也可以自行创建 logstash 镜像。
  1. 创建数据卷。 创建存放 logstash 配置文件的数据卷,本例中在 CVM 的/data/config目录下添加了名为 logstash.conf 的配置文件,并将其挂在到 Docker 的/data目录下,从而使得容器启动时可以读取到 logstash.conf 文件。
  1. 配置运行参数。
  1. 根据需要配置服务参数并创建服务。

配置文件说明

File 数据源

input {
    file {
        path => "/var/log/nginx/access.log" 
        }
}
filter {
}
output {
  elasticsearch {
    hosts => ["http://172.16.0.89:9200"]
    index => "nginx_access-%{+YYYY.MM.dd}" 
 }
}

更多有关 File 数据源的接入,请参见官方文档 file input plugin。

Kafka 数据源

input{
      kafka{
        bootstrap_servers => ["172.16.16.22:9092"]
        client_id => "test"
        group_id => "test"
        auto_offset_reset => "latest" 
        consumer_threads => 5
        decorate_events => true 
        topics => ["test1","test2"]
        type => "test" 
      }
}

output {
  elasticsearch {
    hosts => ["http://172.16.0.89:9200"]
    index => "test_kafka"
 }
}

更多有关 kafka 数据源的接入,请参见官方文档 kafka input plugin。

JDBC 连接的数据库数据源

input {
    jdbc {
      
      jdbc_connection_string => "jdbc:mysql://172.16.32.14:3306/test"
      
      jdbc_user => "root"
      jdbc_password => "Elastic123"
      
      jdbc_driver_library => "/usr/local/services/logstash-5.6.4/lib/mysql-connector-java-5.1.40.jar"
      
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      
      
      
      statement => "select * from test_es"
      
      schedule => "* * * * *"
      type => "jdbc"
    }
}

output {
    elasticsearch {
        hosts => ["http://172.16.0.30:9200"]
        index => "test_mysql"
        document_id => "%{id}"
    }
}

更多有关 JDBC 数据源的接入,请参见官方文档 jdbc input plugin。

使用 Beats 接入 ES 集群

Beats 包含多种单一用途的的采集器,这些采集器比较轻量,可以部署并运行在服务器中收集日志、监控等数据,相对 logstashBeats 占用系统资源较少。 Beats 包含用于收集文件类型数据的 FileBeat、收集监控指标数据的 MetricBeat、 收集网络包数据的 PacketBeat 等,用户也可以基于官方的 libbeat 库根据自己的需求开发自己的 Beat 组件。

CVM 中访问 ES 集群

  1. 安装部署 filebeat。 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.4-linux-x86_64.tar.gz tar xvf filebeat-5.6.4.tar.gz
  2. 配置 filebeat.yml。
  3. 执行filebeat。 nohup ./filebeat 2>&1 >/dev/null &

Docker 中访问 ES 集群

自建 Docker 集群

  1. 拉取 filebeat 官方镜像。 docker pull docker.elastic.co/beats/filebeat:5.6.9
  2. 根据数据源类型自定义配置文件 *.conf, 放置在/usr/share/logstash/pipeline/目录下,目录可自定义。
  3. 运行 filebeat。 docker run docker.elastic.co/beats/filebeat:5.6.9

使用腾讯云容器服务

使用腾讯云容器服务部署 filebeat 的方式和部署 logstash 类似,镜像可以使用腾讯云官方提供的 filebeat 镜像。

配置文件说明

配置 filebeat.yml 文件,内容如下:

// 输入源配置
filebeat.prospectors:
- input_type: log
    paths:
    - /usr/local/services/testlogs/*.log

// 输出到ES
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["172.16.0.39:9200"]

本文分享自微信公众号 - 风帆(wdswhf),作者:风帆money

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ThinkPHP5配置Config

    Config文件包含:2个属性,7个方法。其中2个属性为私有静态属性,外部不可访问。7个方法为公有静态方法,外部可以直接用类名访问,不需要实例化。

    php007
  • TeamViewer的漏洞是谁的错

    10月11日,各大微信群里流传起一份官方文件,疑似为深圳市网络与信息安全信息通报中心的紧急通告。

    php007
  • PHP之AES加密算法

    1) 确保都使用MCRYPT_MODE_CBC; 2) 确保明文填充都使用的是Pkcs5; 3) 加密key在AES_128长度必须是16, 24, 或者 32...

    php007
  • 网站服务器修改SSH默认22端口

    慕白
  • 数据科学工具 Jupyter Notebook教程 in Python

    本文主要内容为:如何安装,运行和使用 IPython 进行交互式 matplotlib 绘图,数据分析,还有发布代码。

    张耀琦
  • ORACLE物化视图解决CMS数据同步一例 与 来不及的DATA PIPLELINE

    为啥要牵扯仅DataPiple Line, 因为如果有DataPipe Line,我下面的故事就不用写了。所以一项新技术和软件的开发可以解决不少头疼的问题。那下...

    AustinDatabases
  • WinForm通用自动更新器AutoUpdater项目实战

    3.3、问:WinForm通用自动更新器AutoUpdater是以什么方式进行文件下载的呢?

    跟着阿笨一起玩NET
  • 高可用 kubernetes 集群部署实践

    Kubernetes(k8s) 凭借着其优良的架构,灵活的扩展能力,丰富的应用编排模型,成为了容器编排领域的事实标准。越来越多的企业拥抱这一趋势,选择 k8s ...

    kubernetes中文社区
  • 009.Kubernetes二进制部署kube-apiserver

    kube-apiserver、kube-scheduler 和 kube-controller-manager 均以多实例模式运行:

    木二
  • html嵌入2d动图

    sofu456

扫码关注云+社区

领取腾讯云代金券