容器化安装环境EFK搭建

这篇具有很好参考价值的文章主要介绍了容器化安装环境EFK搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

容器化安装环境

Docker中安装并启动ElasticSearch

前置配置

第一步:在宿主机上执行echo “net.ipv4.ip_forward=1” >>/usr/lib/sysctl.d/00-system.conf

2.第二步:重启network和docker服务
[root@localhost /]# systemctl restart network && systemctl restart docker

安装ElasticSearch

1.下载镜像

docker pull elasticsearch:7.6.2

2.创建挂载的目录

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
mkdir -p /mydata/elasticsearch/plugins
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

3.创建容器并启动

chmod -R 777 /mydata/elasticsearch/data /mydata/elasticsearch/config /mydata/elasticsearch/plugins

docker run --name elasticsearch -p 9200:9200  -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.6.2

其中elasticsearch.yml是挂载的配置文件,data是挂载的数据,plugins是es的插件,如ik,而数据挂载需要权限,需要设置data文件的权限为可读可写,需要下边的指令。
chmod -R 777 要修改的路径

-e "discovery.type=single-node" 设置为单节点
特别注意:
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES

访问查看
容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

4.修改配置

进入容器&打开文件

docker exec -it elasticsearch bash
cd config
vi elasticsearch.yml

进入config目录里创建elasticsearch.yml文件,并使用vi命令插入如下内容:

http.host: 0.0.0.0

5.重启es并设置密码

配置x-pack 不然会报错

  1. 进入

    docker exec -it elasticsearch bash
    

    目录,执行以下命令:

    ./bin/elasticsearch-setup-passwords interactive
    
  2. 会出现以下错误信息:

    Unexpected response code [500] from calling GET http://127.0.0.1:9200/_security/_authenticate?pretty  
    It doesn't look like the X-Pack security feature is enabled on this Elasticsearch node.
    Please check if you have enabled X-Pack security in your elasticsearch.yml configuration file.
    
  3. 我们需要配置文件中开启x-pack验证,修改

    config/elasticsearch.yml
    

    配置文件,在尾部添加以下内容,然后重启elasticsearch:

    xpack.security.enabled: true
    
    ./bin/elasticsearch -d
    
  4. 重复第1步,为elasticapm_systemkibanalogstash_systembeats_systemremote_monitoring_user设置密码,这里我设置了统一密码:123456,具体操作:

cd bin
elasticsearch-setup-passwords interactive
// 输出
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]Y
 
 
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

5.先不加用户密码进行访问:curl 127.0.0.1:9200

{
  "error": {
    "root_cause": [
      {
        "type": "security_exception",
        "reason": "missing authentication credentials for REST request [/]",
        "header": {
          "WWW-Authenticate": "Basic realm=\"security\" charset=\"UTF-8\""
        }
      }
    ],
    "type": "security_exception",
    "reason": "missing authentication credentials for REST request [/]",
    "header": {
      "WWW-Authenticate": "Basic realm=\"security\" charset=\"UTF-8\""
    }
  },
  "status": 401
}

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

6.CURL密码访问Elasticsearch

curl -u elastic:123456 127.0.0.1:9200
# 或者
curl -u elastic 127.0.0.1:9200
Enter host password for user 'elastic': 123456

成功打印:

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

安装 elasticsearch-head

此时如果想查看es的服务是否启动正常,还可以基于docker来安装es的插件。过程基本一样,先docker去拉取插件,然后docker运行容器:

 docker pull mobz/elasticsearch-head:5

执行docker命令后,也可以使用docker ps -a来查看是否成功启动。不过更好的方式是和es服务链接上。因此接下来首先需要修改es的config目录的配置文件elasticsearch.yml,在其后面增加两行语句:

http.cors.enabled: true   
http.cors.allow-origin: "*"

主要目的就是允许跨域请求。

由于修改了配置文件,所以需要重启一下es的服务。直接运行如下语句:

docker restart elasticsearch

到此就可以使用网页浏览器来查看es的运行状况了。打开一个浏览器,地址栏上输入安装es插件的服务器ip地址和其端口号:

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

安装Kibana

7.6版本Kibana启动 参数 ELASTICSEARCH_URL

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

docker pull kibana:7.6.2

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己的IP地址:9200 -p 5601:5601 -d kibana:7.6.2
//docker run --name kibana -e ELASTICSEARCH_URL=http://自己的IP地址:9200 -p 5601:5601 -d kibana:7.6.2

或者 

docker run --name kibana -d --link YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID:elasticsearch -p 5601:5601 kibana:7.6.2
YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID:Elasticsearch容器的名字或容器ID

修改配置

1、进入容器&打开文件

docker exec -it kibana bash
cd config
vi kibana.yml

2、编辑文件

IpAddress:docker inspect es查看es容器内部的ip地址 (link启动容器需要查看)

server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://192.168.59.139:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
i18n.locale: "zh-CN"

3、退出&重启

exit
docker restart kibana

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

然后访问页面
http://自己的IP地址:5601/app/kibana

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

kibana操作ElasticSearch
文档操作
1. _cat
GET /_cat/node 查看所有节点
GET /_cat/health 查看es健康状况
GET /_cat/master 查看主节点
GET /_cat/indices 查看所有索引

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

2. 保存文档

保存一个数据,保存在那个索引的那个类型下,指定用唯一的标识,customer为索引,external为类型,1为标识。其中PUT和POST都可以,POST新增。如果不指定ID,会自动生成ID,指定ID就会修改这个数据,并新增版本号。PUT可以新增可以修改,PUT必须指定ID,一般都用来修改操作,不指定ID会报错。

PUT customer/external/1
{
  "name":"张三"
}

返回结果
{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 3,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1001,
  "_primary_term" : 2
}
3. 查询文档
GET customer/external/1
    
结果:
{
  "_index" : "customer", //在那个索引
  "_type" : "external", //在那个类型
  "_id" : "1", //记录ID
  "_version" : 1, //版本号
  "_seq_no" : 0, //并发控制字段,每次更新就+1,可用于乐观锁
  "_primary_term" : 1, //主分片重新分配,如重启,就会变化
  "found" : true, //true就是找到数据了
  "_source" : { //数据
    "name" : "张三"
  }
}
4. 更新文档
POST操作带_update会对比原来的数据,如果是一样的那就不会更新了
POST customer/external/1/_update
{
  "doc":{
    "name":"你好"
  }
}
POST操作不带_update会直接更新操作
POST customer/external/1
{
  "name":"你好"
}
5. 删除文档
DELETE customer/external/1
安装FileBeat

拉取 镜像

docker  pull elastic/filebeat:7.6.2

拉取完成之后,先不着急启动,在启动之前需要完成先建立一份映射的配置文filebeat.docker.yml,选择目录创建filebeat.docker.yml

#=========================== Filebeat inputs ==============
filebeat.inputs:
- input_type: log
  enable: true
  paths:  # 采集日志的路径这里是容器内的path
   - /usr/share/filebeat/logs/*.log
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
  multiline.timeout: 10s
  # 为每个项目标识,或者分组,可区分不同格式的日志
  tags: ["pre-logs"]
  # 这个文件记录日志读取的位置,如果容器重启,可以从记录的位置开始取日志
  registry_file: /usr/share/filebeat/data/
  fields:
    logsource: node1
    logtype: pre

#-------------------------- Elasticsearch output ---------
output.elasticsearch:
    hosts: ["http://192.168.59.139:9200"]

为什么不直接去filbeat容器里面去改配置文件呢?因为filebeat容器的配置文件是只读的不可更改,所以只能通过映射配置文件的方式修改。

docker run --user=root -d \
-v /home/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml \
-v /home/logs:/usr/share/filebeat/logs \
-v /home/data:/usr/share/filebeat/data \
--link elasticsearch \
--link kibana  \
--name filebeat    elastic/filebeat:7.6.2
docker run --name filebeat -d --user root \
-v /Users/lihaodong/Desktop/log:/usr/share/filebeat/logs \
-v /usr/local/src/elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/src/elk/filebeat/data:/usr/share/filebeat/data \
docker.elastic.co/beats/filebeat:7.6.2

建立好配置文件之后,启动filebeat容器

docker run --user=root -d \
-v /home/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml \
-v /home/logs:/usr/share/filebeat/logs \
-v /home/data:/usr/share/filebeat/data \
--link elasticsearch \
--link kibana  \
--name filebeat  elastic/filebeat:7.6.2
docker run --name filebeat -d --user root \
-v /Users/lihaodong/Desktop/log:/usr/share/filebeat/logs \
-v /usr/local/src/elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/src/elk/filebeat/data:/usr/share/filebeat/data \
docker.elastic.co/beats/filebeat:7.6.2

这里 -v 就是挂载目录的意思就是将自己本地的目录挂载到容器当中,第一个挂载映射的是配置文件,第二个是要收集的日志目录,如果不挂载日志目录的话,filebeat是不会收集日志的,因为在容器里面根本找不到要收集的路径。–user=root 指定启动用户,因为读取文件可能没有权限,link起的别名等信息可以在同一网络中通过别名访问。

docker run --name filebeat -d --user root \
-v /Users/lihaodong/Desktop/log:/usr/share/filebeat/logs \
-v /usr/local/src/elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/src/elk/filebeat/data:/usr/share/filebeat/data \
docker.elastic.co/beats/filebeat:7.6.2

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

可以看到filebeat已经成功启动了,如果启动失败的话可以看filebeat的配置文件es和kibana的host是否正确。

在收集日志的目录下面添加日志文件,或者更新日志,然后去kibana查看是否有filebeat的索引生成(必须是添加或者更新日志,原有的数据不会同步)。

手动创建模拟下,可以看到被filebeat加载收集了

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

通过elasticsearch-head查看日志索引状态

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

Kibana中可以看到已经有生成了索引并且有数据了,在Discover查看具体数据

注意:参考下一节内容预先配置下索引

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

参考: 配置filebeat.yml文件

#============================== Kibana =====================================

# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "192.168.110.130:5601"  #指定kibana
  username: "elastic"   #用户
  password: "${ES_PWD}"  #密码,这里使用了keystore,防止明文密码

  # Kibana Space ID
  # ID of the Kibana Space into which the dashboards should be loaded. By default,
  # the Default Space will be used.
  #space.id:

#================================ Outputs =====================================

# Configure what output to use when sending the data collected by the beat.

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.110.130:9200","192.168.110.131:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"  #es的用户
  password: "${ES_PWD}" # es的密码
  #这里不能指定index,因为我没有配置模板,会自动生成一个名为filebeat-%{[beat.version]}-%{+yyyy.MM.dd}的索引
简单介绍如何配置索引

在Kibana中配置索引

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

配置筛选字段 这里按照时间

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

创建成功了

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

查看最终索引数据

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

模拟手动添加日志 查看控制台实时采集了

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

我们到Kibana里查询下 可以看到最终的日志信息

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

可以通过搜索或者日期筛选,字段筛选,等等各种操作查看你需要的日志信息。或者可以在 日志目录下 查看日志

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

Kibana基本操作
清理配置的索引数据

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

日志可视化

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

保存这个视图,并加入仪表盘中

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

实战练习
  1. 通过rsyslog收集本机所有日志
  2. 通过filebeat收集日志,给到elasticsearch
  3. Elasticsearch分析日志
  4. Elasticsearch将分析结果给到kibana
通过rsyslog收集本机所有日志

先安装rsyslog,yum -y install rsyslog

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

然后修改配置文件

修改配置文件
[root@VM-20-10-centos ~]# vim /etc/rsyslog.conf
解封2行
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
新增一行
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
#以下为新增,即将所有日志都收集到一个文件
*.*                                                     /var/log/baism.log

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

最后启动rsyslog

systemctl restart rsyslog

查询下看看

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

利用之前的搭建好的filebeat,rsyslog会不断追加日志信息到 - /var/log/baism.log

docker run --name filebeat2 -d --user root \
-v /var/log:/usr/share/filebeat/logs \
-v /usr/local/src/elk/filebeat2/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/src/elk/filebeat2/data:/usr/share/filebeat/data \
docker.elastic.co/beats/filebeat:7.6.2

启动容器化开始收集日志文件中的数据

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

打开浏览器重新查看,此时 elasticsearch-head更新索引 发现新增索引

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

对应的Kibana也会更新 新增了索引 我配置下新增的索引即可查看系统日志

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

查看日志数据

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

目前默认收集路径是容器内的 /usr/share/filebeat/logs 文件夹

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

如果有不同文件夹 可以分开收集吗?大家可以试试

启动后进入容器创建syslog文件夹 用于存放系统日志文件

docker exec -it filebeat3 bash
/usr/share/filebeat/logs
mkdir  syslog 

那么启动容器的命令改为

docker run --name filebeat3 -d --user root \
-v /home/logs:/usr/share/filebeat/logs/syslog \
-v /usr/local/src/elk/filebeat3/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/src/elk/filebeat3/data:/usr/share/filebeat/data \
docker.elastic.co/beats/filebeat:7.6.2

信息采集模板改为

filebeat.inputs:
- input_type: log
  enable: true
  paths:  # 采集日志的路径这里是容器内的path 
   - /usr/share/filebeat/logs/syslog/*.log
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
  multiline.timeout: 10s
  # 为每个项目标识,或者分组,可区分不同格式的日志
  tags: ["pre-logs3"]
  # 这个文件记录日志读取的位置,如果容器重启,可以从记录的位置开始取日志
  registry_file: /usr/share/filebeat/data/
  fields:
    logsource: node1
    logtype: pre

#-------------------------- Elasticsearch output ---------
output.elasticsearch:
    hosts: ["http://192.168.59.139:9200"]

最终验证结果

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

看着似乎可以 ,其实不行 关键看看这里

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

rest-high-level-client整合ElasticSearch

1.导入依赖
		<!-- 修改springboot默认整合的es的版本 -->
        <properties>
            <java.version>1.8</java.version>
            <elasticsearch.version>7.6.2</elasticsearch.version>
        </properties>
    
        <!-- elasticsearch-rest-high-level-client -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.6.2</version>
        </dependency>
        
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.68</version>
        </dependency>
2.编写配置类
@Configuration
public class ElasticSearchClientConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("自己的IP地址", 9200, "http")
                )
        );
        return client;
    }
}
3.进行es的索引操作
@Autowired
    @Qualifier("restHighLevelClient")
    private RestHighLevelClient client;
    //index名字,静态一般都是放在另一个类中的
    public static final String ES_INDEX="han_index";

    //创建索引
    @Test
    public void createIndex() throws IOException {
        //1. 创建索引
        CreateIndexRequest index = new CreateIndexRequest(ES_INDEX);
        //2. 客户端执行请求,请求后获得相应
        CreateIndexResponse response = client.indices().create(index, RequestOptions.DEFAULT);
        //3.打印结果
        System.out.println(response.toString());
    }
    //测试索引是否存在
    @Test
    public void exitIndex() throws IOException{
        //1.
        GetIndexRequest request = new GetIndexRequest(ES_INDEX);
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println("是否存在"+exists);
    }
    //删除索引
    @Test
    public void deleteIndex() throws IOException{
        DeleteIndexRequest request = new DeleteIndexRequest(ES_INDEX);
        AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println("是否删除"+response);
    }

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops

4.es的文档操作
 @Autowired
    @Qualifier("restHighLevelClient")
    private RestHighLevelClient client;

    public static final String ES_INDEX="han_index";

    //创建文档
    @Test
    public void createDocument() throws IOException {
        //创建对象
        UserInfo userInfo = new UserInfo("张三",12);
        //创建请求
        IndexRequest request = new IndexRequest(ES_INDEX);
        //规则
        request.id("1").timeout(TimeValue.timeValueSeconds(1));
        //将数据放到请求中
        request.source(JSON.toJSONString(userInfo), XContentType.JSON);
        //客户端发送请求,获取相应的结果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        //打印一下
        System.out.println(response.toString());
        System.out.println(response.status());
    }

    //判断是否存在
    @Test
    public void exitDocument() throws IOException {
        GetRequest request = new GetRequest(ES_INDEX, "1");
        //不获取返回的_source 的上下文
        request.fetchSourceContext(new FetchSourceContext(false));
        request.storedFields("_none");

        boolean exists = client.exists(request, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    //获取文档信息
    @Test
    public void getDocument() throws IOException {
        GetRequest request = new GetRequest(ES_INDEX, "1");
        GetResponse response = client.get(request, RequestOptions.DEFAULT);
        System.out.println("获取到的结果"+response.getSourceAsString());
    }

    //更新文档
    @Test
    public void updateDocument() throws IOException {
        //创建对象
        UserInfo userInfo = new UserInfo("李四",12);

        UpdateRequest request = new UpdateRequest(ES_INDEX, "1");
        request.timeout("1s");

        request.doc(JSON.toJSONString(userInfo),XContentType.JSON);
        UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
        System.out.println(response.status());
    }

    //删除文档
    @Test
    public void deleteDocument() throws IOException{
        DeleteRequest request = new DeleteRequest(ES_INDEX, "1");
        request.timeout("1s");

        DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
        System.out.println(response.status());
    }

    //批量添加
    @Test
    public void bulkDocument() throws IOException{
        BulkRequest request = new BulkRequest();
        request.timeout("10s");

        ArrayList<UserInfo> userInfos = new ArrayList<>();
        userInfos.add(new UserInfo("李四",1));
        userInfos.add(new UserInfo("李四",2));
        userInfos.add(new UserInfo("李四",3));
        userInfos.add(new UserInfo("李四",4));
        userInfos.add(new UserInfo("李四",5));
        userInfos.add(new UserInfo("李四",6));
        userInfos.add(new UserInfo("李四",7));

        //进行批处理请求
        for (int i = 0; i <userInfos.size() ; i++) {
            request.add(
                    new IndexRequest(ES_INDEX)
                    .id(""+(i+1))
                    .source(JSON.toJSONString(userInfos.get(i)),XContentType.JSON));
        }

        BulkResponse response = client.bulk(request, RequestOptions.DEFAULT);
        System.out.println(response.hasFailures());
    }

    //查询
    @Test
    public void SearchDocument() throws IOException{
        SearchRequest request = new SearchRequest(ES_INDEX);
        //构建搜索条件
        SearchSourceBuilder builder = new SearchSourceBuilder();

        //查询条件使用QueryBuilders工具来实现
        //QueryBuilders.termQuery 精准查询
        //QueryBuilders.matchAllQuery() 匹配全部
        MatchQueryBuilder matchQuery = QueryBuilders.matchQuery("name", "李四");
        builder.query(matchQuery);
        builder.timeout(new TimeValue(60, TimeUnit.SECONDS));

        request.source(builder);

        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        System.out.println("查询出的结果"+JSON.toJSONString(response.getHits()));
    }

容器化安装环境EFK搭建,jenkins,运维,kafka,elasticsearch,devops文章来源地址https://www.toymoban.com/news/detail-617361.html

到了这里,关于容器化安装环境EFK搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用 Docker 搭建 Jenkins 环境?从安装到精通

    不少兄弟搭 jenkins 环境有问题,有的同学用 window, 有的同学用 mac, 有的同学用 linux。 还有的同学公司用 window, 家里用 mac,搭个环境头发掉了一地。。。 这回我们用 docker 去搭建 jenkins 环境,不管你是用的是什么系统,jenkins 搭建起来都是一样的步骤。 而且使用 Docker 以后,

    2024年02月08日
    浏览(50)
  • 01_kafka_环境搭建安装_topic管理

    略 hostnamectl set-hostname kafka_1 /etc/sysconfig/network /etc/hosts ping kafka_1 测试 由于 集群中的 Leader 的监控 和 Topic 元数据 存储在 Zookeeper 中 ,所以需要安装 zk; https://zookeeper.apache.org/releases.html 中选择需要的版本; conf 目录 复制zoo_sample.cfg 为 zoo.cfg, 修改其中的配置 dataDir 指定自己的

    2024年02月07日
    浏览(39)
  • windows环境下ElasticSearch+kibana+ElasticSearch-Head安装搭建

    windows环境下ElasticSearch+kibana+ElasticSearch-Head搭建安装 1.elasticsearch是什么? Elasticsearch(简称ES)是一个基于Lucene开源的高扩展的分布式全文搜索引擎。ES不仅仅只是全文搜索,还支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等。 2.Lucene和ElasticSearch有

    2024年01月21日
    浏览(67)
  • GitLab+Jenkins搭建DevOps一体化运维平台

    ​ 大家拿到代码后,要如何运行呢?导入IDEA,然后启动?开发过程可定没有问题,那生产环境呢?在现在互联网大环境下,越来越要求开发运维一体化。如果对于企业级的项目管理方式不了解,那么开发工作将举步维艰。这一节课主要带大家快速理解一下电商项目的运维部

    2024年02月09日
    浏览(49)
  • CentOS系统环境搭建(十二)——CentOS7安装Elasticsearch

    centos系统环境搭建专栏🔗点击跳转 🔗https://www.elastic.co/downloads/past-releases/elasticsearch-7-17-6 若你是centos64位服务器,下载LINUX X86_64,下载后上传到linux服务器。 上传至/usr/local/ 进入/usr/local/ 执行解压 若你电脑性能强劲,这个应该可以不改。 修改为1g内存占用。 在当前版本,已

    2024年02月12日
    浏览(53)
  • linux安装搭建配置docker,mysql,nacos,redis哨兵集群,kafka,elasticsearch,kibana,IK分词器,安装Rabbitmq,安装并配置maven

    目录 搭建docker 1.2安装yum工具  1.3更新阿里镜像源 1.4下载docker 1.5关闭防火墙 1.6启动docker 1.7查看docker版本 1.8配置阿里云镜像 1.8.1 创建文件夹 1.8.2在文件夹内新建一个daemon.json文件 1.8.3重载文件 1.9重启docker 2安装MySQL 3安装nacos 3.1拉取nacos镜像并启动 3.2启动nacos命令 3.3命令敲完

    2024年02月03日
    浏览(57)
  • Docker 搭建 Jenkins 容器 (完整详细版)

    Docker 安装 (完整详细版) Docker 日常命令大全(完整详细版) 前言 需要提前准备的条件 Maven环境 Docker环境 JDK环境(Centos7.4自带JDK环境去除,重装的JDK) 一、Jenkins镜像 这里使用的是第二个镜像(因为第一个镜像的docker版本较低)  二、启动Jenkins容器  创建挂载文件夹,并且进行文件

    2023年04月12日
    浏览(37)
  • CentOS系统环境搭建(十四)——CentOS7.9安装elasticsearch-head

    centos系统环境搭建专栏🔗点击跳转 关于node的安装请看上一篇CentOS系统环境搭建(十三)——CentOS7安装nvm,🔗点击跳转。 这个的安装非常简单,既然我们的node环境已经安装完毕,就让我们快速完成。 添加 hostname: \\\'*\\\' 如果报错,使用淘宝镜像再尝试一下。 访问 http://ip:9200

    2024年02月12日
    浏览(42)
  • 【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

    本文主要介绍了 kafka raft集群架构: 与旧架构的不同点,有哪些优势,哪些问题 架构成员有哪些,怎么规划。 三节点集群安装、启动与测试 在旧的架构中 Kafka集群包含 多个broker节点和一个ZooKeeper 集群 。如上图集群结构:4个broker节点和3个ZooKeeper节点。Kafka 集群的controller在

    2024年02月03日
    浏览(41)
  • 在Windows上搭建Kafka环境的步骤,包括安装Java、下载Kafka、配置Zookeeper和Kafka、启动Zookeeper和Kafka、创建主题和生产者/消费者等

    1. 安装Java Kafka需要Java环境支持。可以从Oracle官网下载JDK,或者使用OpenJDK。 2. 下载Kafka 可以从Kafka官网下载Kafka二进制压缩包。解压后可以看到bin、config、libs等目录。 3. 配置Zookeeper Kafka依赖Zookeeper实现分布式协作。可以使用Kafka自带的Zookeeper,也可以独立安装Zookeeper。 如果使

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包