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说明

es1192.168.1.31部署ElasticSearch主节点

es2192.168.1.32部署ElasticSearch从节点

elk192.168.1.21部署Logstash + Kibana + Redis

这里为了节省,只部署2台Elasticsearch,并将Logstash + Kibana + Redis部署在了一台机器上。

如果在生产环境部署,可以按照自己的需求调整。

软件环境

项说明

Linux ServerCentOS 7

Elasticsearch6.0.0

Logstash6.0.0

Kibana6.0.0

Redis4.0

JDK1.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    4096root      soft    nproc    unlimited

调整虚拟内存&最大并发连接

#修改系统文件vi /etc/sysctl.conf#增加的内容vm.max_map_count=655360fs.file-max=655360

保存之后执行 sysctl -p 生效

JDK8安装

CentO安装JDK8:https://ken.io/note/centos-java-setup

创建ELK专用用户

useradd elk

创建ELK相关目录并赋权

#创建ELK APP目录mkdir /usr/elk#创建ELK 数据目录mkdir /elk#更改目录Ownerchown -R elk:elk /usr/elkchown -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.gzwget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.tar.gzwget wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz#解压tar -zvxf elasticsearch-6.0.0.tar.gztar -zvxf logstash-6.0.0.tar.gztar -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 --permanentfirewall-cmd --add-port=9300/tcp --permanent#重新加载防火墙规则firewall-cmd --reload

切换账号

#账号切换到 elksu - 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: es1path.data: /elk/es/datapath.logs: /elk/es/logsnetwork.host: 192.168.1.31http.port: 9200transport.tcp.port: 9300node.master:truenode.data:truediscovery.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: es2path.data: /elk/es/datapath.logs: /elk/es/logsnetwork.host: 192.168.1.32http.port: 9200transport.tcp.port: 9300node.master:falsenode.data:truediscovery.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.portHTTP访问端口

transport.tcp.portTCP传输端口

node.master是否允许作为主节点

node.data是否保存数据

discovery.zen.ping.unicast.hosts集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测

discovery.zen.minimum_master_nodes主节点个数

2、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/

切换账号

#账号切换到 elksu - 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/datapath.logs: /elk/logstash/logs

配置Redis&Elasticsearch

vi config/input-output.conf#配置内容input {  redis {    data_type =>"list"key =>"logstash"host =>"192.168.1.21"port => 6379    threads => 5    codec =>"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 配置

移动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

切换账号

#账号切换到 elksu - elk

修改配置

#进入kibana-6.0.0根目录cd/usr/elk/kibana-6.0.0#修改配置vi config/kibana.yml#增加以下内容server.port: 5601server.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客户端#执行以下命令lpushlogstash '{"host":"127.0.0.1","type":"logtest","message":"hello"}'

Java代码批量写入(引入Jedis)

Jedis jedis =newJedis("192.168.1.21",6379);for(inti =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

本文由 ken.io 创作,采用CC BY 3.0 CN协议 进行许可。 可自由转载、引用、甚至修改,但需署名作者且注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容