平台分为4台机器部署。
备注:H1-H4 均安装 Java 和 CDH,数据库MySql安装在H1。
一台机器开发机 H5
安装 java环境,nginx, 部署应用服务
非实时数据存在开发机MySQL库(实时数据存于ES)
1. Java程序数据写入ES
数据流入:
终端数据 –>
开发机nginx->
H4 nginx ( lua 获取http的body ) –> nginx log -> H4 logstash -> kafka消息 -> H2 logstash (Ruby过滤) –> H1 ES
数据流出:
终端请求 –>
webService - > Java应用服务 –> ES取数据 –> 回传
2. 实时数据写入ES
Sdk –>log –> logstash推 -> kafka –> H2 logstash拉 -> es
[root@elk-node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@elk-node1 ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
[root@elk-node1 ~]# yum install -y elasticsearch //执行目录在/usr/share/elasticsearch
[root@elk-node1 ~]# mkdir -p /data/es-data
[root@elk-node1 ~]# vim /etc/elasticsearch/elasticsearch.yml 配置下面内容
cluster.name: my-application # 组名(同一个组,组名必须一致)
node.name: h1.hadoop # 节点名称,建议和主机名一致
path.data: /data/es-data # 数据存放的路径
path.logs: /var/log/elasticsearch/ # 日志存放的路径
bootstrap.mlockall: true # 锁住内存,不被使用到交换分区去
network.host: 0.0.0.0 # 网络设置(可以为机器ip)(能在局域网访问)
http.port: 9200 # 端口
(以上各行,必须顶头写,冒号后必须有空格)
[root@elk-node1 ~]# chown -R elasticsearch.elasticsearch /data/ (重要)
[root@elk-node1 ~]# /etc/init.d/elasticsearch start (yum安装,需要这么启动。。。)
关闭 /etc/init.d/elasticsearch stop
;重启 /etc/init.d/elasticsearch restart
错误:Exception in thread “main” ElasticsearchException[Failed to load logging configuration]; nested: NoSuchFileException[/usr/share/elasticsearch/config];
使用 ./elasticsearch -d -Des.insecure.allow.root=true
若不能使用 ./bin/elasticsearch &
启动。 需要用 /etc/init.d/elasticsearch start
。
访问es集群,192.168.x.x:9200 访问后,文件内容如下:
每一台机器,类似配置, 文件为 /etc/elasticsearch/elasticsearch.yml
,内容如:
cluster.name: my-application
path.logs: /var/log/elasticsearch
index.number_of_shards: 8
index.number_of_replicas: 1
path.data: /data/es-data
network.host: 192.168.19.131
http.port: 9200
#discovery.zen.ping.multicast.enabled: false
#discovery.zen.ping.unicast.hosts: [h1.hadoop]
node.name: h1.hadoop
node.master: true
node.data: false
若使用tar包,就不能使用root用户启动es服务,报错:
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
解决方式:
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
chown -R elsearch:elsearch /opt/soft/elasticsearch-2.4.6
chown -R elsearch:elsearch /opt/soft/elasticsearch-2.4.6
chown -R elsearch:elsearch /opt/logs/es/
chown -R elsearch:elsearch /esdata
su elsearch
/opt/soft/elasticsearch-2.4.6/bin/elasticsearch -d
最好先直接用非root用户安装es。注意:若使用 h1-h3.hadoop, 需要在hosts文件中描述。
访问es集群的客户端主机安装即可,访问图形界面
cd /usr/share/elasticsearch (yum安装)
// cd /opt/soft/elasticsearch-2.4.6 (源码安装)
./bin/plugin install mobz/elasticsearch-head
安装成功之后,启动三台es服务可通过 host:9200/_plugin/head/
访问图形界面,如下:
或者直接使用浏览器的插件亦可。
例如要删除标记框数据
在“符合查询”中,提交一下请求
restful风格查询内容为http://192.168.19.131:9200/logstash-test-filelog-h1.hadoop/filelog/AWSojv2XYH9a3EHNbD-6
,提交请求之后,会有反馈,如下。
再刷新数据浏览界面,已经删除。
删除过程中,也可以仅指定_index,那么会将符合该_index的记录全部删除。