总结:logstash 太麻烦搞不定 决定将其换为file beat
file beat入门: https://blog.51cto.com/zero01/2082794
整体架构:elastic search 做数据库 和检索 kinaba做ui file beat收集日志直接转发给file beat。
1、elasticsearch
1.1安装elasticsearch
https://blog.csdn.net/weixin_41615494/article/details/79591335 很详细基本上涵盖所有问题
补充:所有配置之前要有一个空格 冒号前后都要有空格 否则会报错
1.2连接客户端
1.2.1maven依赖 (版本要和客户端版本保持一致)
1.客户端依赖,官方说只需要这一个就行。
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.4.1</version> </dependency>
2.elasticsearch依赖(不加的话InetSocketTransportAddress类找不到)
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>5.4.1</version> </dependency>
3.不加这个依赖启动时会有异常 (java.lang.NoClassDefFoundError: org/elasticsearch/transport/TcpChannel)
<dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>transport-netty4-client</artifactId> <version>5.4.1</version> </dependency>
1.2.2连接客户端
public static TransportClient getClient() throws UnknownHostException { //设置连接属性,可以设置很多。 Settings settings = Settings.builder().put("client.transport.ping_timeout", "10s").build(); //连接客户端 TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.226.128"), 9300)); return client; }
1.3 使用
1.3.1安装nodejs
1、官网下载:http://nodejs.cn/download/
2、解压
3、配置环境变量(需要root权限)
[root@bogon elasticsearch-head-master]# source /etc/profile [root@bogon elasticsearch-head-master]# source /etc/profile
4、查看是否安装成功
[root@bogon elasticsearch-head-master]# npm -v 6.4.1 [root@bogon elasticsearch-head-master]# node -v v10.15.1
1.3.2安装 elasticsearch-head
1、下载zip包 https://github.com/mobz/elasticsearch-head
2、解压
3、npm安装 cd 到解压以后的目录 执行 npm install
【可能会报错:解决方法 : 】 【解决方法来源:https://my.oschina.net/shxjinchao/blog/2878083】
yum -y install epel-release
cd 解压目录
npm install cnpm -g --registry=https://registry.npm.taobao.org
cnpm install -g
4、修改配置参数
cd /usr/local/es/elasticsearch-head/
vim ./Gruntfile.js
connect: { server: { options: { hostname:'*', port: 9100, base: '.', keepalive: true } } }
修改elasticsearch配置文件
##使用head等插件监控集群信息,需要打开以下配置 http.cors.enabled:true http.cors.allow-origin:"*" http.cors.allow-credentials:true
5、重启 elasticsearch 启动 elastic search -head
重启elastic search [es@bogon root]$ jps 5255 Jps 4684 Elasticsearch [es@bogon root]$ kill -9 4684 [es@bogon root]$ ~/ELK/elasticsearch/6.6.0/elasticsearch-6.6.0/bin/elasticsearch 启动 dead [root@bogon elasticsearch-head-master]# grunt server
6、浏览器访问
7、第一次打开无法连接,将localhost改为elasticsearch所在服务器ip连接正常
2.基本api
1.添加数据
/** * @Description: add 向elasticsearch添加一个list * @Param: [client elasticsearch客户端 获取方法前面已经写了, userList 要添加的数据] * @return: void * @Author: liucanhui * @Date: 2019/2/26 */ public void add(TransportClient client, List<User> userList) throws IOException { for (User user :userList) { XContentBuilder xContentBuilder=null;//elasticsearch自带json构造器 xContentBuilder= XContentFactory.jsonBuilder().startObject().field("id", user.getId()) .field("name", user.getName()) .field("age", user.getAge()) .field("sex",user.getSex()).endObject();//生成一个json对象 //创建索引 IndexResponse response = client.prepareIndex("test1", "user").setSource(xContentBuilder).get();//"test1" 索引,相当于数据库 user 类型,相当于表吧 "user"后可以自己添加id也可以由系统自动分配id id就是唯一标识了。id , type,index 唯一确定一条记录 System.out.println("索引: "+response.getIndex()+"\t类型: "+response.getType()+"\t 结果"+response.getResult()+"\t状态: "+response.status()); System.out.println("============================================================="); } client.close(); }
?关系对照表 便于理解(图片来源:https://blog.csdn.net/zgahlibin/article/details/78436616)
2.访问userList-head页面查看数据是否添加 http://your ip :9100/
3、查询(基本查询 根据 id,type和 index)中文搜索时最好使用单字搜索。否则可能查不到结果
public void query(TransportClient client) { GetResponse getResponse = client.prepareGet("test1", "user","6ptV8mgBdzi8jusOdMWR").get(); System.out.println("索引库的数据:" + getResponse.getSourceAsString()); }
4、其它的查询 https://blog.csdn.net/majun_guang/article/details/81103623