Docker ELK+Filebeat安装与配置 并用spring data elasticsearch连接 (遇到的问题服务器内存小太,elasticsearch太新)

Linux版本: Centos 7

Docker安装

yum install docker

启用服务

systemctl start docker systemctl enable docker

关于ELK

ELK实际上是Elasticsearch+Logstash+Kibana的缩写,关于三个组件的详细介绍,请自己查看各大网站文章,这里就不再描述。

最近都在研究Docker,出于快速安装方法,本文使用的是ELK For Docker

sudo docker pull sebp/elk

这里默认是最新版6.4.2

运行ELK镜像需要vm.max_map_count至少需要262144内存

[root@elk ~]# vi /etc/sysctl.conf

在尾行添加以下内容

vm.max_map_count=262144

sysctl -p

运行ELK镜像

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk

如果需要使用java连接还要映射9300端口

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 9300:9300 -itd --name elk sebp/elk

运行一个容器,容器使用的镜像是sebp/elk, 开放端口5601并且映射到容器内的5601,9200同理,-i表示标准正确输入,-t表示开启一个tty -d后台运行

如无意外打开浏览器即可以访问 http://ip:5601 是不是感受到Docker带来更捷(Kibana)

如无意外打开浏览器即可以访问 http://ip:9200 是不是感受到Docker带来更捷(Elasticsearch)

下载安装Filebeat

官网址址查看最新版本:https://www.elastic.co/downloads/beats/filebeat

配置Filebeat

cd /etc/filebeat vi filebeat.yml

注意:Filebeat 6.0后,enabled默认为关闭,如红圈外,必须要修改成true. 

paths:为你想要抓取分析的日志内容 

如果你直接将日志发送到Elasticsearc,请编辑此行Elasticsearc output 

如果你直接将日志发送到Logstash,请编辑此行Logstash output 

只能使用一行输出,其它的注掉即可 

进入ELK容器

docker exec -it elk /bin/bash

配置elasticsearch

vim /opt/elasticsearch/config/elasticsearch.yml

其中几个关键的配置

集群名(你所要连接的集群)

cluster.name: my-application

节点名(给你自己定义一个节点名)

node.attr.rack: r1

数据路径

path.data: /path/to/data

日记路径

path.logs: /path/to/logs

这样配置就是所有机器都可以连

network.host: 0.0.0.0

指定http端口

http.port: 9200

客户端通信使用的是9300端口

一台机器也可以跑多个elasticsearch需要不同的path.data和http.port

指定elasticsearch的jvm的堆内存 6.4.2默认的话是1g如果机器差需要修改

正常是在vim /opt/elasticsearch/config/jvm.options中改但是并没有效果

所以就在vim /opt/elasticsearch/bin/elasticsearch中加

ES_JAVA_OPTS="-Xms512m -Xmx512m"

elasticsearch不能用root启动也可以在这加下面这句话

ES_JAVA_OPTS="-Des.insecure.allow.root=true" 

配置logstach

# Sample Logstash configuration for creating a simple

# Beats -> Logstash -> Elasticsearch pipeline.

input {

beats {

port => 5044

}

}

filter {

json {

source => "message"

remove_field =>["beat","tag","prospector","tags","offset","host","@version","@metadata","message"]

}

}

output {

# stdout {

# codec => rubydebug

# }

elasticsearch {

index => "sdktest-%{+YYYY.MM.dd}"

# document_type => "sdk"

hosts => ['http://47.107.108.245:9200']

timeout => 90

manage_template => true

template_overwrite => true

template_name => "sdktemplate"

template => "/opt/logstash/config/logstash.json"

}

}

修改logstach的堆内存

vim /opt/logstash/config/jvm.options

-Xms512m

-Xmx512m

启动logstach

logstach -f ../config/logstash-sample.conf

测试配置文件

logstach -f ../config/logstash-sample.conf -t

如果logstach服务不加载配置文件

在 /etc/init.d下找到logstash脚本

args="--path.logs ${LS_LOG_DIR} ${LS_OPTS} -f ${LS_HOME}/config/logstash-sample.conf"

修改启动参数

查看镜像的详细信息可以看到镜像的CMD (设置container启动时执行的操作)

在sh文件中看到启动了logstash服务

配置filebeat

,配置文件是/etc/filebeat/filebeat.yml这个文件

1、定义你的日志文件的路径(一个或多个)

对于大多数的基本filebeat配置,你可以定义一个单一探测器针对一个单一的路径,例如:

配置filebeat或elasticsearch使用logstarsh

如果要使用logstash对filebeat收集起来的数据执行其他处理,你需要配置filebeat使用logstash。

你需要编辑filebeat的配置文件,注释elasticsearch的选项,并打开logstash的配置的注释:

spring boot连接不了最新的elastacsearch6.4.2

使用最新的spring boot 2.0.6.RELEASE

使用最新的spring-data-elasticsearch 3.1.1.RELEASE 可以支持6.4.2

导入最新的elasticsearch 6.4.2 elasticsearch-rest-client 6.4.2

org.elasticsearch.client.transport 6.4.2 transport-netty4-client 6.4.2

自己定义一个bean

@Bean(name = "elasticsearchTemplate")

public ElasticsearchTemplate getElasticsearchTemplate(){

Settings settings =Settings.builder().put("cluster.name", "elasticsearch").build();

InetAddress addr = null;

try {

addr = InetAddress.getByName("47.107.108.245");

} catch (UnknownHostException e) {

e.printStackTrace();

}

InetSocketAddress ip=new InetSocketAddress(addr, 9300);

TransportAddress transportAddress = new TransportAddress(ip);

TransportClient client=new PreBuiltTransportClient(settings).addTransportAddress(transportAddress);

return new ElasticsearchTemplate(client);

}

发布了45 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ly1390811049/article/details/83508871