ELK搭建及Java程序接入

环境

centos7.5

下载

官网下载Elasticsearch、Logstash、Kibana

Free and Open Search: The Creators of Elasticsearch, ELK & Kibana | Elastic

下载 Elastic 产品 | Elastic

我下载的都是7.1.1版本,最好统一版本

(注意,这几个都是试用版,过一段时间会过期,如果需要长期使用,得下载oss版本)


点击产品下面的下载按钮(有的在“在ElasticCloud上启用下面”),进入下载页面,再点击
The pure Apache 2.0 licensed distribution is available here.
这行内容的here,跳转到OSS版本下载地址,点击downloads段落的LINUX,下载linux版本。
可以点击Not the version you're looking for? View past releases.这行的past releases找到历史版本。

或者直接进入到历史版本下载页面
https://www.elastic.co/downloads/past-releases
Products产品依次选择ElasticSearch OSS、Logstash OSS、Kibana OSS,Versions版本选择特定的版本。
点击下载后进入系统选择页面,选择LINUX的进行下载即可。

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

安装elasticsearch

在 Linux 环境中,elasticsearch 不允许以 root 权限来运行。

如果以 root 身份运行 elasticsearch,会提示这样的错误:

can not run elasticsearch as root

解决方法:使用非 root 权限账号运行 elasticsearch

# 创建用户组

groupadd elk

# 创建新用户,-g elk 设置其用户组为 elk,-p elk 设置其密码为 elk

useradd elk -g elk -p elk

# 更改 /opt 文件夹及内部文件的所属用户及组为 elk:elk

chown -R elk:elk /opt # 假设你的 elasticsearch 安装在 opt 目录下

# 切换账号

su elk

解压elasticsearch

tar xzvf elasticsearch-7.1.1-linux-x86_64.tar.gz

运行

cd elasticsearch-7.1.1

bin/elasticsearch

测试

curl http://localhost:9200

默认只能用localhost访问,如需开启外部访问,需修改配置

vi config/elasticsearch.yml

去掉network.host的注释并修改为本机ip

network.host: 0.0.0.0

discovery.seed_hosts: ["127.0.0.1","[::1]"]

此时启动可能会报错

ERROR: [3] bootstrap checks failed

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

如果不配置discovery.seed_hosts会报错

[3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

vm.max_map_count 不低于 262144

问题:vm.max_map_count 表示虚拟内存大小,它是一个内核参数。elasticsearch 默认要求 vm.max_map_count 不低于 262144。

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:

你可以执行以下命令,设置 vm.max_map_count ,但是重启后又会恢复为原值。

sysctl -w vm.max_map_count=262144

持久性的做法是在 /etc/sysctl.conf 文件中修改 vm.max_map_count 参数:

echo "vm.max_map_count=262144" > /etc/sysctl.conf sysctl -p

nofile 不低于 65536

问题: nofile 表示进程允许打开的最大文件数。elasticsearch 进程要求可以打开的最大文件数不低于 65536。

解决方法:

echo "* soft nofile 65536" > /etc/security/limits.conf

echo "* hard nofile 131072" > /etc/security/limits.conf

reboot重启后即可正常启动

后台启动

nohup bin/elasticsearch > service.out&

跟踪后台启动的输出

tail -f service.out

看进程

[elk@localhost xx]$ ps -ef|grep opt

elk 2095 1750 11 13:42 pts/0 00:02:51 /opt/elasticsearch-7.1.1/jdk/bin/java -Xms1g -Xmx1g -XX:+UseConc……/opt/elasticsearch-7.1.1/lib/* org.elasticsearch.bootstrap.Elasticsearch

elk 2183 2095 0 13:42 pts/0 00:00:00 /opt/elasticsearch-7.1.1/modules/x-pack-ml/platform/linux-x86_64/bin/controller

Logstash

解压

tar xzvf logstash-7.1.1.tar.gz

运行

cd logstash-7.1.1

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

或后台启动

nohup bin/logstash -f config/logstash-sample.conf > service.out&

如果没有JAVA_HOME,需设置JAVA_HOME,注意使用root用户

vi /etc/profile

添加如下内容

export JAVA_HOME=/opt/elasticsearch-7.1.1/jdk

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

配置立即生效执行

source /etc/profile

看进程

$ ps -ef|grep opt

elk 2460 2317 68 14:01 pts/1 00:03:37 /opt/elasticsearch-7.1.1/jdk/bin/java ……/opt/logstash-7.1.1/logstash-core/lib/jars/slf4j-api-1.7.25.jar org.logstash.Logstash -f config/logstash-sample.conf

Kibana

解压

tar xzvf kibana-7.1.1-linux-x86_64.tar.gz

cd kibana-7.1.1-linux-x86_64

需要修改elasticsearch的ip端口则改一下配置

vi config/kibana.yml

去掉这两行的注释并修改

server.host: "192.168.91.149" #需修改才能从其他机器访问

elasticsearch.hosts: ["http://localhost:9200"]

运行

bin/kibana

或后台启动

nohup bin/kibana > service.out&

访问地址

http://localhost:5601

看进程

[elk@localhost kibana-7.1.1-linux-x86_64]$ ps -ef |grep node

elk 2658 1750 99 14:09 pts/0 00:00:12 bin/../node/bin/node --no-warnings --max-http-header-size=65536 bin/../src/cli

Java日志输出到Logstash

cd logstash-7.1.1

vi config/logstash.conf

添加如下内容

input {beats {port => 5044}tcp {# host:port就是上面appender中的 destination,# 这里其实把logstash作为服务,开启9250端口接收logback发出的消息host => "0.0.0.0" port => 9250 mode => "server" tags => ["tags"] codec => json_lines}
}output {elasticsearch {hosts => ["http://localhost:9200"]}
}

kill掉原来的logstash后启动

nohup bin/logstash -f config/logstash.conf > service.out&

Java代码修改

pom.xml增加依赖

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.1</version>
</dependency>

logback.xml按需调整

<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--destination 是 logstash 服务的 host:port,相当于和 logstash 建立了管道,将日志数据定向传输到 logstash--><destination>192.168.91.149:9250</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO"><!-- appender referenced after it is defined --><appender-ref ref="STDOUT"/><appender-ref ref="LOGSTASH" />
</root>

此时启动java程序,如果启动成功,日志就进入es了

日志查看

进入kibana web页面

点击左侧Discover按钮,会自动进入创建索引,创建索引logstash-*

点击下一步Next step

Time Filter field name选择@timestamp,点击Create index pattern按钮等待创建索引成功

此时再次点击左侧Discover按钮,进入熟悉的索引查询页面了

区分应用

实际应用过程中,多个app日志混在一起,需要增加额外入库字段进行区分,此时修改java程序的logback.xml,添加customFields配置节即可。

<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--destination 是 logstash 服务的 host:port,相当于和 logstash 建立了管道,将日志数据定向传输到 logstash--><destination>192.168.91.149:9250</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"><customFields>{"appname":"whqtest"}</customFields></encoder>
</appender>

logback.xml也可以采用变量的写法

<configuration><!-- 项目的appid --><property name="APP_ID" value="whqtest"/>………………<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--destination 是 logstash 服务的 host:port,相当于和 logstash 建立了管道,将日志数据定向传输到 logstash--><destination>192.168.91.149:9250</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"><customFields>{"appname":"${APP_ID}"}</customFields></encoder></appender>………………
</configuration>

OSS版本

一段时间后启动kibana报错

Elasticsearch cluster did not respond with license information.

需要下载oss版本

https://www.elastic.co/cn/downloads/elasticsearch-oss

Download Logstash Free | Get Started Now | Elastic

https://www.elastic.co/cn/downloads/kibana-oss

OSS版部署问题

如果连接es超时

vi es的目录/config/jvm.options

增大-Xms和-Xmx到2g

增大es连接超时时间

vi config/kibana.yml

elasticsearch.requestTimeout: 90000

连接es返回错误:master_not_discovered_exception

es服务器修改

vi /etc/hostname 设置机器名为node1

node1

vi /etc/hosts

127.0.0.1 node1

vi es目录/config/elasticsearch.yml

node.name: node1

discovery.seed_hosts: ["127.0.0.1"]

cluster.initial_master_nodes: ["node1"]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery.Form.js 异步提交表单使用总结

jQuery.Form.js 是一个用于使用jQuery异步提交表单的插件&#xff0c;它使用方法简单&#xff0c;支持同步和异步两种方式提交。 第一步&#xff1a;引入jQuery与jQuery.Form.js 1 <script src"jQuery.1.8.3.js" type"text/javascript"></script&…

Ant Design Pro 开发上手

目录 地址 安装 目录结构 本地开发 打部署包 路由控制 地址 首页&#xff1a;https://pro.ant.design/index-cn 源码&#xff1a;https://github.com/ant-design/ant-design-pro/ 文档&#xff1a;https://pro.ant.design/docs/getting-started-cn 安装 $ git clone -…

Ant Design Pro 开启默认进入登录页

src/utils/authority.js getAuthority方法中 return authority || [admin]; 改为 return authority || [guest];

图片异步上传,使用ajax上传图片

1、使用插件plupload 2、实现效果 3、HTML 1 <li> 2 <div class"default" data-disabled"false"><img src"" class"upImage"></div> 3 <input id"fileStorge2" value"" type&…

Ant Desgin Pro 修改登录后默认导航到的位置

src/models/login.js 40行 yield put(routerRedux.replace(redirect || /)); 修改/为需要的路径

Ant Design Pro 登录超时处理

登录超时处理 看src/utils/request.js中的通用处理 有if (status 401) {dispatch到注销页面 所以后端用户状态无效时直接返回401即可 如 response.setStatus(401);

java并发容器

1 并发容器 &#xff08;1&#xff09;ConcurrentHashMap 把整个hashmap 分成若干个小的hashmap&#xff08;segment&#xff09;&#xff0c;每个segment自己加锁&#xff08;用ReentrantLock&#xff09;,put的时候采用while(trylock())&#xff0c;tryLock是底层是使用cas竞…

Ant Design Pro 修改title

在userlayout.js和Basiclayout.js里面修改getPageTitle方法里面的title变量值&#xff0c;修改后重启下项目&#xff0c;清除下缓存~~ src/pages/document.ejs中也要修改。

离职原因任意说

俗话说。人往高处走&#xff0c;水往低处流。此处不留爷&#xff0c;自有留爷处。金子总有发光的时候。每一个人离职都能够找出一堆的理由。离职理由大不同。如今让我们分享下呗。 &#xff08;1&#xff09;习惯性离职&#xff0c;这些人常年无心&#xff0c;静心工作&#xf…

Azkaban WebApi 调用

目录 登录接口 获取projectid及flow列表 获取某个project下flow的schedule执行计划 修改执行时间 列表执行历史 执行flow 删除执行计划 官方文档&#xff1a;https://azkaban.readthedocs.io/en/latest/ajaxApi.html 登录接口 调用示例: curl -k -X POST --data "…

Android BitmapShader 实战 实现圆形、圆角图片

转载请标明出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/41967509&#xff0c;本文出自&#xff1a;【张鸿洋的博客】 1、概述 记得初学那会写过一篇博客Android 完美实现图片圆角和圆形&#xff08;对实现进行分析&#xff09;&#xff0c;主要是个自定…

离线部署CDH5.16.1及各种坑

所需安装包及版本说明&#xff1a;由于我们的操作系统为CentOS7&#xff0c;需要下载以下文件&#xff1a; cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 manifest.json Cloudera M…

如何快速理解JavaScript 中重要语句for循环

一.基本结构&#xff1a;for(起始状态&#xff1b;判断条件&#xff1b;状态改变){ 执行语句&#xff1b; } 执行顺序&#xff1a;for&#xff08;var i1;i<3;i&#xff09;{ alert(i); } 1.判断条件 2.执行语句 3.状态改变 break&#xff08;结束此循环&#xff09;.…