ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平台
一、前言
1、ELK简介
ELK是Elasticsearch+Logstash+Kibana的简称
ElasticSearch是一个基于Lucene的分布式全文搜索引擎,提供 RESTful API进行数据读写
Logstash是一个收集,处理和转发事件和日志消息的工具
- Kibana是Elasticsearch的开源数据可视化插件,为查看存储在ElasticSearch提供了友好的Web界面,并提供了条形图,线条和散点图,饼图和地图等分析工具
总的来说,ElasticSearch负责存储数据,Logstash负责收集日志,并将日志格式化后写入ElasticSearch,Kibana提供可视化访问ElasticSearch数据的功能。
2、ELK工作流
应用将日志按照约定的Key写入Redis,Logstash从Redis中读取日志信息写入ElasticSearch集群。Kibana读取ElasticSearch中的日志,并在Web页面中以表格/图表的形式展示。
二、准备工作
1、服务器&软件环境说明
- 服务器
一共准备3台CentOS7 Server
服务器名 | IP | 说明 |
---|---|---|
es1 | 192.168.1.31 | 部署ElasticSearch主节点 |
es2 | 192.168.1.32 | 部署ElasticSearch从节点 |
elk | 192.168.1.21 | 部署Logstash + Kibana + Redis |
这里为了节省,只部署2台Elasticsearch,并将Logstash + Kibana + Redis部署在了一台机器上。
如果在生产环境部署,可以按照自己的需求调整。
- 软件环境
项 | 说明 |
---|---|
Linux Server | CentOS 7 |
Elasticsearch | 6.0.0 |
Logstash | 6.0.0 |
Kibana | 6.0.0 |
Redis | 4.0 |
JDK | 1.8 |
2、ELK环境准备
由于Elasticsearch、Logstash、Kibana均不能以root账号运行。
但是Linux对非root账号可并发操作的文件、线程都有限制。
所以,部署ELK相关的机器都要调整:
- 修改文件限制
# 修改系统文件
vi /etc/security/limits.conf#增加的内容* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096
- 调整进程数
#修改系统文件
vi /etc/security/limits.d/20-nproc.conf#调整成以下配置
* soft nproc 4096
root soft nproc unlimited
- 调整虚拟内存&最大并发连接
#修改系统文件
vi /etc/sysctl.conf#增加的内容
vm.max_map_count=655360
fs.file-max=655360
以上操作重启系统后生效
reboot
- JDK8安装
CentO安装JDK8:https://ken.io/note/centos-java-setup
- 创建ELK专用用户
useradd elk
- 创建ELK相关目录并赋权
#创建ELK APP目录
mkdir /usr/elk
#创建ELK 数据目录
mkdir /elk#更改目录Owner
chown -R elk:elk /usr/elk
chown -R elk:elk /elk
- 下载ELK包并解压
https://www.elastic.co/downloads
#打开文件夹
cd /home/download#下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.tar.gz
wget wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz#解压
tar -zvxf elasticsearch-6.0.0.tar.gz
tar -zvxf logstash-6.0.0.tar.gz
tar -zvxf kibana-6.0.0-linux-x86_64.tar.gz
三、Elasticsearch 部署
本次一共要部署两个Elasticsearch节点,所有文中没有指定机器的操作都表示每个Elasticsearch机器都要执行该操作
1、准备工作
- 移动Elasticsearch到统一目录
#移动目录
mv /home/download/elasticsearch-6.0.0 /usr/elk
#赋权
chown -R elk:elk /usr/elk/elasticsearch-6.0.0/
- 开放端口
#增加端口
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent#重新加载防火墙规则
firewall-cmd --reload
- 切换账号
#账号切换到 elk
su - elk
- 数据&日志目录
创建Elasticsearch主目录
mkdir /elk/es
#创建Elasticsearch数据目录
mkdir /elk/es/data
#创建Elasticsearch日志目录
mkdir /elk/es/logs
2、Elasticsearch节点配置
- 修改配置
#打开目录
cd /usr/elk/elasticsearch-6.0.0#修改配置vi config/elasticsearch.yml
- 主节点配置(192.168.1.31)
cluster.name: es
node.name: es1
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.1.31
http.port: 9200
transport.tcp.port: 9300
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"]
discovery.zen.minimum_master_nodes: 1
- 从节点配置(192.168.1.32)
cluster.name: es
node.name: es2
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.1.32
http.port: 9200
transport.tcp.port: 9300
node.master: false
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"]
discovery.zen.minimum_master_nodes: 1
- 配置项说明
项 | 说明 |
---|---|
cluster.name
|
集群名 |
node.name
|
节点名 |
path.data | 数据保存目录 |
path.logs | 日志保存目录 |
network.host | 节点host/ip |
http.port | HTTP访问端口 |
transport.tcp.port | TCP传输端口 |
node.master | 是否允许作为主节点 |
node.data | 是否保存数据 |
discovery.zen.ping.unicast.hosts | 集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测 |
discovery.zen.minimum_master_nodes | 主节点个数 |
3、Elasticsearch启动&健康检查
- 启动
#进入elasticsearch根目录
cd /usr/elk/elasticsearch-6.0.0
#启动
./bin/elasticsearch
- 查看健康状态
curl http://192.168.1.31:9200/_cluster/health
如果返回status=green表示正常
{"cluster_name": "esc","status": "green","timed_out": false, "number_of_nodes": 2, "number_of_data_nodes": 2, "active_primary_shards": 0, "active_shards": 0, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0, "delayed_unassigned_shards": 0, "number_of_pending_tasks": 0, "number_of_in_flight_fetch": 0, "task_max_waiting_in_queue_millis": 0, "active_shards_percent_as_number": 100.0 }
四、Logstash 部署
1、准备工作
- 部署Redis
Redis4 安装与配置:https://ken.io/note/centos7-redis4-setup
由于本次核心是ELK搭建,所以ken.io偷懒,Redis没有部署集群,采用的单节点。
- 移动Logstash到统一目录
#移动目录
mv /home/download/logstash-6.0.0 /usr/elk
#赋权
chown -R elk:elk /usr/elk/logstash-6.0.0/
- 切换账号
#账号切换到 elk
su - elk
- 数据&日志目录
#创建Logstash主目录
mkdir /elk/logstash
#创建Logstash数据目录
mkdir /elk/logstash/data
#创建Logstash日志目录
mkdir /elk/logstash/logs
2、Logstash配置
- 配置数据&日志目录
#打开目录
cd /usr/elk/logstash-6.0.0
#修改配置
vi config/logstash.yml#增加以下内容
path.data: /elk/logstash/data
path.logs: /elk/logstash/logs
- 配置Redis&Elasticsearch
vi config/input-output.conf#配置内容input {redis {data_type => "list"key => "logstash"host => "192.168.1.21"port => 6379threads => 5codec => "json" } } filter { } output { elasticsearch { hosts => ["192.168.1.31:9200","192.168.1.32:9200"] index => "logstash-%{type}-%{+YYYY.MM.dd}" document_type => "%{type}" } stdout { } }
该配置就是从redis中读取数据,然后写入指定的elasticsearch
Redis核心配置项说明:
配置项 | 说明 |
---|---|
data_type => “list” | 数据类型为list |
key => “logstash” | 缓存key为:logstash |
codec => “json” | 数据格式为:json |
- 启动
#进入Logstash根目录
cd /usr/elk/logstash-6.0.0
#启动
./bin/logstash -f config/input-output.conf
启动成功后,在启动输出的最后一行会看到如下信息:
[INFO ][logstash.pipeline ] Pipeline started {"pipeline.id"=>"main"}
[INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>["main"]}
五、Kibana 部署
1、准备工作
- 移动Kibana到统一目录
#移动目录
mv /home/download/kibana-6.0.0-linux-x86_64 /usr/elk/kibana-6.0.0
#赋权
chown -R elk:elk /usr/elk/kibana-6.0.0/
- 开放端口
#增加端口
firewall-cmd --add-port=5601/tcp --permanent#重新加载防火墙规则
firewall-cmd --reload
- 切换账号
#账号切换到 elk
su - elk
3、Kibana配置与访问测试
- 修改配置
#进入kibana-6.0.0根目录
cd /usr/elk/kibana-6.0.0
#修改配置
vi config/kibana.yml#增加以下内容
server.port: 5601
server.host: "192.168.1.21" elasticsearch.url: "http://192.168.1.31:9200"
- 启动
#进入kibana-6.0.0根目录
cd /usr/elk/kibana-6.0.0
#启动
./bin/kibana
- 访问
浏览器访问: 192.168.1.21:5601
警告提示:No default index pattern. You must select or create one to continue.
错误提示:Unable to fetch mapping. do you have indices matching the pattern?
不用担心,这是因为还没有写入日志
六、测试
1、日志写入
日历写入的话,写入到logstash监听的redis即可。
数据类型之前在/usr/elk/logstash-6.0.0/config/input-uput.conf中有配置
- redis命令方式
#启动redis客户端
#执行以下命令
lpush logstash '{"host":"127.0.0.1","type":"logtest","message":"hello"}'
- Java代码批量写入(引入Jedis)
Jedis jedis = new Jedis("192.168.1.21", 6379);
for (int i = 0; i < 1000; i++) { jedis.lpush("logstash", "{\"host\":\"127.0.0.1\",\"type\":\"logtest\",\"message\":\"" + i + "\"}"); }
2、Kibana使用
浏览器访问:192.168.1.21:5601
此时会提示: Configure an index pattern
直接点击create即可
浏览器访问:192.168.1.21:5601/app/kibana#/discover 即可查看日志
大功告成!
七、备注
1、Kibana使用教程
- https://segmentfault.com/a/1190000002972420
2、 ELK开机启动
ELK开机启动,需要学习下以下知识
- nohup命令使用:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html
- 自定义系统服务,可以参考Redis的开机启动:https://ken.io/note/centos7-redis4-setup
转载于:https://www.cnblogs.com/mylovelulu/p/10530002.html
ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平台相关推荐
- ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台
来源:http://www.cnblogs.com/zclzhao/p/5749736.html 一.简介 ELK 由三部分组成elasticsearch.logstash.kibana,elasti ...
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平
ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自:http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应 ...
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志. ...
- Elasticsearch + Logstash + Kibana 搭建日志集中分析平台实践
为什么80%的码农都做不了架构师?>>> 比较详细的搭建教程:https://segmentfault.com/a/1190000003689999 Elasticsearch ...
- 使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载
原文地址:https://wsgzao.github.io/post/elk/ 另外可以参考:https://www.digitalocean.com/community/tutorials/how- ...
- Centos6.5使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践
Centos6.5安装Logstash ELK stack 日志管理系统 概述: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误 ...
- ELK(ElasticSearch+LogStash+Kibana)搭建
Kibana汉化参考: https://www.deathearth.com/323.html 利用logstash解析日志,然后写入ES,最后从Kibana界面可视化查看.按照官方文档操作比网上找的 ...
- ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例
前言 最近公司分了个ELK相关的任务给我,在一边学习一边工作之余,总结下这些天来的学习历程和踩坑记录. 首先介绍下使用ELK的项目背景:在项目的数据库里有个表用来存储消息队列的消费日志,这些日志用于开 ...
- Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台
Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散在 ...
最新文章
- vue变量传值_vue组件与组件之间传值
- Mybatis用法小结
- html标签的嵌套规则
- PYTHON爬取66影视的电影下载链接,有搜索功能
- failed to open mysql_MySql使用全记录5 —–解决Windows下用命令导入sql文件时”Failed to open file”的问题 | 学步园...
- 闪电网络介绍以及试用 (下)
- Rails 使用 Google Analytics 示例
- element提交图片限制一张_科研SCI论文图片常见问题和错误汇总
- 关于码云的一些基本知识_一些关于 CPU 的基本知识
- struts2之值栈
- 神仙打架?苹果短暂撤销 Facebook 和 Google 的企业证书
- Asio驱动开发学习笔记(1)
- 基于Matlab App Designer的语音信号分析与处理(一):语音信号的采集,时域、频域分析
- 数模转换器ADC0832使用原理及控制程序
- 听说今年金三银四变成金一银二了。
- 使用 window.open 打开新窗口
- 传Facebook来华招聘:年薪20万美元+美国绿卡
- zblog php模板偷,zblogPHP仿站+定制模板 - 模板ID code
- 血族手游Lua脚本及资源文件解密
- Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
热门文章
- java random.nextbytes_Java Random类
- python装饰器应用论文_python 装饰器应用
- worknc的后处理如何安装_如何选择永磁变频螺杆空压机的冷干机?
- python sqlserver 列名_报表自动化,三流用Excel,二流用Python,一流用它
- Oracle笔记-USRS01.DBF文件过大,解决办法
- 信息安全工程师笔记-云计算安全需求分析与安全保护工程
- C++笔记-二维棋盘数组转邻接表(使用QTL)
- android d弹框顶部突出,TextView + Tablayout实现顶部菜单栏效果
- xp系统什么梗_老式电脑,装个什么样的系统最好用?
- 蓝桥杯入门训练圆的面积c语言,蓝桥杯-入门训练-圆的面积