Elk架构学习

总结: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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值