网站首页 > 技术文章 正文
这里纪录自学过程中ELK环境的搭建,方便自己以后参考,也给大家作参考。
部署架构
应用程序日志–>kafka–>logstash–>es–>kibana。
安装
Elasticsearch 需要的 Java 最低版本为 Java 8。所以第一步需要确保安装了正确版本的jdk。
我们假定elk的目录为/data/soft/elk。通过下面的命令下载es
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz
然后解压缩
tar -xvf elasticsearch-5.4.0.tar.gz
然后使用下面的命令启动es。
./bin/elasticsearch.sh
启动正常的话,可以看到下面的日志。
然后我们通过http://yourip:9200可以看到下面的数据
如果想后台运行ES,加上-d参数即可。./bin/elasticsearch -d。
安装Head插件
安装head插件,需要先安装nodejs。
使用node -v确认已安装nodejs。如果没有安装执行yum install nodejs来安装。
可能遇到的问题:没有可用软件包 nodejs。
解决:执行yum install epel-release;然后再安装nodejs。
使用淘宝的npm镜像cnpm
使用npm安装依赖有时会比较慢,我们可以使用淘宝的cnpm镜像。
执行下面的命令来安装:
npm install -g cnpm --registry=https://registry.npm.taobao.org
安装后,原来使用npm,现在使用cnpm即可。
安装grunt
cnpm install -g grunt-cli
确认一下版本,grunt --version。
修改HEAD监听的地址
默认HEAD监听 localhost,修改Gruntfile.js,添加hostname
connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}
}
既然是跨源访问ES,那么就要在HEAD里面指定ES服务器了,修改_site/app.js
init: function(parent) {
this._super();
this.prefs = services.Preferences.instance();
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.193.100:9200";
if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) {
// XHR request fails if the URL is not ending with a "/"
this.base_uri += "/";
}
...
进入HEAD目录,安装HEAD依赖包,执行cnpm install。
启动head插件
使用grunt server来启动head插件,看到下面的内容就说明启动成功了。
head插件使用的端口是9100,记得在防火墙中添加进去。
然后我们浏览器访问http://yourip:9100/
ps:也可以通过npm run start 来启动,npm run start &后台启动。
停止head插件
查看 9100 (head 端口)端口:lsof -i:9100
杀死进程:kill -9 pid
es集群状态的说明
green:每个索引的primary shard和replica shard都是active状态的。
yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态。
red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了。
安装kafka
这里使用的目前最新的版本,从http://kafka.apache.org/downloads下载。
解压缩,得到目录kafka_2.11-2.3.0。
修改配置文件/config/server.properties
listeners=PLAINTEXT://192.168.193.100:9092
启动kafka:
./kafka-server-start.sh ../config/server.properties
后台启动kafka:
./kafka-server-start.sh ../config/server.properties 1>/dev/null 2>&1 &
安装logstash
这里的logstash版本是5.4.0与es一致,从https://www.elastic.co/downloads/logstash下载相应的版本。
然后解压缩,进入config目录。
新建一个配置文件,名字随意,这里命名为test.conf。
input {
kafka {
bootstrap_servers => "192.168.193.100:9092"
topics => ["app-log"]
group_id => "test-consumer-group"
codec => "json"
consumer_threads => 1
decorate_events => true
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "test"
workers => 1
}
}
启动logstash
./bin/logstash -f config/test.conf
使用程序写入100条测试数据到Kafka
注意topic要与logstash中配置的一致。
这里使用logback的appender来将日志写入kafka,logstash从kafka接受,然后发送给es。
使用的github上的一个logback-kafka-appender依赖。
安装Kibana
从https://www.elastic.co/downloads/kibana下载kibana,kibana要与es的版本一致,所以这里也下载5.4.0版本。
然后解压缩
最后使用./bin/kibana启动。kibana使用的端口号为5601,记得加入防火墙。
浏览器访问http://192.168.193.100:5601
在上面的logstash配置中,我们指定了es中的索引为test。所以在Kibana的Index name or pattern中输入test。然后点下面的Create。
然后再左侧可以看到刚刚配置的索引
点左侧的Discover菜单,然后就将右侧的时间选择为Today,可以看到日志了
kibana常用搜索
全文搜索
在搜索栏输入测试,返回所有字段中包含”测试”的文档(document)。
根据字段搜索
根据kibana左侧显示的field搜索。field:value
精确搜索:field:”value”
参考:https://blog.csdn.net/zhengchaooo/article/details/79500130
问题
可能会遇到下面的问题:
1.max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决:修改切换到root用户修改配置limits.conf 添加下面两行
命令:vi /etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
2.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
3.es启动成功,虚拟机中可以访问9200,但windows中无法访问。
首先确保防火墙关闭或添加了9200端口。
firewall-cmd --zone=public --permanent --add-port=9200/tcp
另外, 修改es配置文件elasticsearch.yml,修改network.host和http.port
network.host: 0.0.0.0
http.port: 9200
然后重启es。
4.安装head插件遇到的问题
4.1 RunScriptError: post install error, please remove node_modules before retry!
重新执行安装命令,遇到npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression问题。
解决:参考https://www.cnblogs.com/shengulong/p/6224908.html,将package.json中的license值修改为Apache-2.0即可。
4.2 _Loading "Gruntfile.js" tasks...ERROR错误
解决:参考https://blog.csdn.net/wang_zhenwei/article/details/78389253
4.3 head插件启动成功后访问9100,没有列出ES的节点,F12打开Console,发现有跨域问题
解决:修改/ES_HOME/config/elasticsearch.yml,增加下面的配置
http.cors.enabled: true
http.cors.allow-origin: "*"
然后重启ES和head即可。
参考:https://blog.csdn.net/u012832088/article/details/80662241
5.kafka Connection to node -1 could not be established. Broker may not be available.
解决:参考https://blog.csdn.net/qq_40633152/article/details/81090306
写在最后
注意:ELK各个版本之间安装和配置有区别。觉得文章有帮助的,麻烦点个关注,谢谢!
猜你喜欢
- 2024-10-18 日志分析平台——ELK安装配置 elk实时日志
- 2024-10-18 利用 ELK(Elasticsearch + Logstash + Kibana) 搭建日志分析平台
- 2024-10-18 超详细的EFK安装部署教程--filebeat日志数据采集
- 2024-10-18 ELK总结——第二篇Logstash的搭建
- 2024-10-18 亿级 ELK 日志平台构建实践 elk日志系统搭建
- 2024-10-18 ELK日志管理方案-Centos6安装Elasticsearch
- 2024-10-18 SpringBoot利用ELK实现日志收集 springboot日志收集框架
- 2024-10-18 ELK超详细配置 elk7.12
- 2024-10-18 如何用ELK搭建TB级微服务海量日志监控系统?
- 2024-10-18 logback+kafka+elk搭建日志 logback kafka appender
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)