网站开发前端兼职,通讯数码网站,网站开发怎么设置打印按钮,网站公司开发ELK 平台是一套完整的日志集中处理解决方案#xff0c;将 ElasticSearch、Logstash 和 Kibana 三个开源工具配合使用#xff0c;完成更强大的用户对日志的查询、排序、统计需求。
一、ELK概述
1、组件说明
①ElasticSearch ElasticSearch是基于Lucene#xff08;一个全文…
ELK 平台是一套完整的日志集中处理解决方案将 ElasticSearch、Logstash 和 Kibana 三个开源工具配合使用完成更强大的用户对日志的查询、排序、统计需求。
一、ELK概述
1、组件说明
①ElasticSearch ElasticSearch是基于Lucene一个全文检索引擎的架构开发的分布式存储检索引擎用来存储各类日志。 Elasticsearch 是用 Java 开发的可通过 RESTful Web 接口让用户可以通过浏览器与 Elasticsearch 通信。 Elasticsearch是一个实时的、分布式的可扩展的搜索引擎允许进行全文、结构化搜索它通常用于索引和搜索大容量的日志数据也可用于搜索许多不同类型的文档。
②Kiabana Kibana 通常与 Elasticsearch 一起部署Kibana 是 Elasticsearch 的一个功能强大的数据可视化 DashboardKibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据可以用来汇总、分析和搜索重要数据。
③Logstash Logstash作为数据收集引擎。它支持动态的从各种数据源搜集数据并对数据进行过滤、分析、丰富、统一格式等操作然后存储到用户指定的位置,一般会发送给 Elasticsearch。 Logstash 由 Ruby 语言编写运行在 Java 虚拟机JVM上是一款强大的数据处理工具 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能常用于日志处理。 input设置数据来源。 filter可以对数据进行加工处理过滤可以做复杂的处理逻辑。这个步骤不是必须的。 output设置输出目标,如elasticSearch等。
④Filebeat Filebeat 是一款轻量级的开源日志文件数据搜索器。通常在需要采集数据的客户端安装 Filebeat并指定目录与日志格式Filebeat 就能快速收集数据并发送给 Logstash 进行解析或是直接发给 ES 存储性能上相比运行于 JVM 上的 Logstash 优势明显是对它的替代。 filebeat 结合 logstash 带来好处
通过 Logstash 具有基于磁盘的自适应缓冲系统该系统将吸收传入的吞吐量从而减轻 Elasticsearch 持续写入数据的压力 从其他数据源例如数据库S3对象存储或消息传递队列中提取 将数据发送到多个目的地例如S3HDFSHadoop分布式文件系统或写入文件 使用条件数据流逻辑组成更复杂的处理管道 日志的集中化管理 beats 包括四种工具
Packetbeat搜索网络流量数据 Topbeat搜索系统、进程和文件系统级别的 CPU 和内存使用情况等数据 Filebeat搜集文件数据 Winlogbeat搜集 Windows 时间日志数据
⑤缓存/消息队列redis、kafka、RabbitMQ等 可以对高并发日志数据进行流量削峰和缓冲这样的缓冲可以一定程度的保护数据不丢失还可以对整个架构进行应用解耦。
⑥Fluentd Fluentd是一个流行的开源数据收集器。由于 logstash 太重量级的缺点Logstash 性能低、资源消耗比较多等问题随后就有 Fluentd 的出现。相比较 logstashFluentd 更易用、资源消耗更少、性能更高在数据处理上更高效可靠受到企业欢迎成为 logstash 的一种替代方案常应用于 EFK 架构当中。在 Kubernetes 集群中也常使用 EFK 作为日志数据收集的方案。 在 Kubernetes 集群中一般是通过 DaemonSet 来运行 Fluentd以便它在每个 Kubernetes 工作节点上都可以运行一个 Pod。 它通过获取容器日志文件、过滤和转换日志数据然后将数据传递到 Elasticsearch 集群在该集群中对其进行索引和存储。
2、为什么要用ELK
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷性能安全性从而及时采取措施纠正错误。 往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理例如开源的syslog将所有服务器上的日志收集汇总。集中化管理日志后日志的统计和检索又成为一件比较麻烦的事情一般我们使用 grep、awk和wc等Linux命令能实现检索和统计但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。 一般大型系统是一个分布式部署的架构不同的服务模块部署在不同的服务器上问题出现时大部分情况需要根据问题暴露的关键信息定位到具体的服务器和服务模块构建一套集中式日志系统可以提高定位问题的效率。
3、完整日志系统的基本特征
收集能够采集多种来源的日志数据 传输能够稳定的把日志数据解析过滤并传输到存储系统 存储存储日志数据 分析支持 UI 分析 警告能够提供错误报告监控机制
4、ELK工作原理
AppServer 是一个类似于 Nginx、Apache 的集群其日志信息由 Logstash 来收集 往往为了减少网络问题所带来的瓶颈会把 Logstash 服务放入前者的集群内减少网络的消耗 Logstash 把收集到的日志数据格式化后输出转存至 ES 数据库内这是一个将日志进行集中化管理的过程 随后Kibana 对 ES 数据库内格式化后日志数据信息进行索引和存储 最后Kibana 把其展示给客户端 总结logstash作为日志搜集器从数据源采集数据并对数据进行过滤格式化处理然后交由Elasticsearch存储kibana对日志进行可视化处理。 二、Elasticsearch的介绍
提供了一个分布式多用户能力的全文搜索引擎
Elasticsearch的核心
1、接近实时NRT
Elasticsearch是一个接近实时的搜索平台这意味着从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟通常是1秒
2、集群cluster
一个集群就是由一个或者多个节点组织在一起它们共同持有你整个的数据并一起提供索引和搜索功能。其中一个为主节点这个主节点是可以通过选举产生的并提供跨节点的联合索引和搜索功能。 集群有一个唯一性标示的名字默认是Elasticsearch集群的名字很重要每个节点是基于集群名字加入到集群中的。因此确保在不同的环境中使用不同的集群名字。 一个集群可以只有一个节点建议在配置Elasticsearch时配置成集群模式。 Elasticsearch具有集群机制节点通过集群名称加入到集群中同时在集群中的节点会有一个自己唯一的身份标识自己的名称
3、节点node
节点就是一台单一的服务器是集群的一部分存储数据并参与集群的索引和搜索功能。像集群一样节点也是通过名字来标识默认是在节点启动时随机分配的字符名。也可自己定义名字很重要在集群中用于识别服务器对应的节点 节点可以通过指定集群名字来加入到集群中。默认情况下每个节点被设置成加入到Elasticsearch集群。如果启动了多个节点假设能自动发现对方他们将会自动组建一个名为Elasticsearch的集群。
4、索引index
一个索引就是一个拥有几分相似特征的文档的集合。 一个索引由一个名字来标识必须全部是小写字母并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候。都要使用到这个名字。在一个集群中可以定义任意多的索引。
5、类型type
在一个索引中你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区其语义完全由你来定。 通常会为具有一组共同字段的文档定义一个类型。
6、文档document
一个文档是一个可被索引的基础信息单元 在一个index/type里面只要你想你可以存储任意多的文档。注意虽然一个文档在物理上位于一个索引中实际上一个文档必须在一个索引内被索引和分配一个类型
7、分片和副本shards replicas也是es作为搜索引擎比较快的原因
实际情况下索引存储的数据可能超过单个节点的硬件限制。为了解决这个问题Elasticsearch提供将索引分成多个分片的功能。当在创建索引时可以定义想要的分片数量。每一个分片就是一个全功能的独立的索引可以位于集群中任何节点上。
分片的主要原因
水平分割扩展增大存储量 分布式并跨越分片操作提高性能和吞吐量 分布式分片机制和搜索请求的文档如何火鬃完全是由Elasticsearch控制的这些对用户是完全透明的。 为了健壮性建议有一个故障切换机制为此Elasticsearch让我们将索引分片复制一份或多份称之为分片副本
分片副本的原因
高可用性以应对分片或者节点故障。处于这个原因分片副本要在不同的节点上 增大吞吐量搜索可以并行在所有副本上执行 总之每个索引可以被分成多个分片。一个索引可以被复制0次或者多次。一旦复制了每个索引就有了主分片 作为复制源的原来的分片和复制分片主分片的拷贝之别。分片和副本的数量可以在索引创建的时候指定。在索引创建之后你可以在指定任何时候动态的改变副本的数量但是你事后不能改变分片的数量。 默认情况下Elasticsearch中的每个索引被分片5个主分片和1个副本这意味着如果你的集群中至少有两个节点你的索引将会有5个主分片和另外的5个副本分片一个完全拷贝这样的话每个索引总共有10个分片。
8、相关概念在关系型数据库和ElasticSearch中的对应关系
关系型数据库 Elasticserch 数据库database 索引index支持全文索引 表table 类型type 数据行row 文档document。但不需要固定结构不同文档可以具有不同字段集合 数据列cloumn 字段field 模式schema 映像mapping
三、Logstash
1、Logstash简介
Logstash由JRuby语言编写基于消息message-based的简单架构并运行在java虚拟机JVM上。不同于分离的代理端agent或主机端serverLogstash可配置单一的代理端与其他开源软件结合以实现不同的功能。
是一款强大的数据处理工具、 可实现数据传输格式处理格式化输出 数据输入、数据加工(如过滤改写等)以及数据输出
常用插件
input收集源数据访问日志、错误日志等 Filter Plugin用于过滤日志和格式处理 Output输出日志
主要组件
Shipper(日志收集)负责监控本地日志文件的变化及时把日志文件的最新内容收集起来。通常远程代理端agent只需要运行这个组件即可 Indexer(日志存储)负责接收日志并写入到本地文件 Broker(日志Hub)负责连接多个Shipper和多个Indexer Search and Storage允许对事件进行搜索和存储 Web Interface基于Web的展示界面
2、Logstash主机分类
代理主机agent host作为事件的传递者Shipper将各种日志数据发送至中心主机只需运行Logstash代理程序 中心主机central host可运行包括中间转发器Broker、索引器Indexer、搜索和存储器Search and Storage、Web界面端Web Interface在内的各个组件以实现对日志数据的接收、处理和存储
四、Kibana
Kibana 是用于在 Elasticsearch 中可视化数据的强大工具可通过基于浏览器的界面轻松搜索可视化和探索大量数据。
一个针对Elasticsearch的开源分析及可视化平台 搜索、查看存储在Elasticsearch索引中的数据 通过各种图表进行高级数据分析及展示
Kibana主要功能
Elasticsearch无缝之集成
Kibana架构为Elasticsearch定制可以将任何结构化和非结构化数据加入Elasticsearch索引。Kibana还充分利用了Elasticsearch强大的搜索和分析功能。
整合数据
Kibana能够更好地处理海量数据并据此创建柱形图、折线图、散点图、直方图、饼图和地图。
复杂数据分析。
Kibana提升了Elasticsearch分析能力能够更加智能地分析数据执行数学转换并且根据要求对数据切割分块。
让更多团队成员收益
强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
接口灵活分享更容易
使用Kibana可以更加方便地创建、保存、分享数据并将可视化数据快速交流。
配置简单
Kibana的配置和启用非常简单用户体验非常友好。Kibana自带Web服务器可以快速启动运行。
可视化多数据源
Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch支持的第三方技术包括Apache flume、 Fluentd 等。
简单数据导出
Kibana可以方便地导出感兴趣的数据与其它数据集合并融合后快速建模分析发现新结果。
五、部署ELK日志分析系统
服务器配置
node1 节点 2C/4G node1 192.168.111.71 ElasticSearch、Kibana node2 节点 2C/4G node2 192.168.111.72 ElasticSearch apache 节点 / apache 192.168.111.80 Logstash、Apache
关闭防火墙
systemctl stop firewalld systemctl disable firewalld
setenforce 0
ntpdate ntp.aliyun.com
ElasticSearch集群部署需要部署两个节点这里以node1为例说明
环境准备 [rootlocalhost ~]# hostnamectl set-hostname node1
[rootlocalhost ~]# bash
[rootnode1 ~]# echo 192.168.111.71 node1 /etc/hosts
[rootnode1 ~]# echo 192.168.111.72 node2 /etc/hosts
[rootnode1 ~]# java -version #不建议使用 openjdk# rpm 安装 jdk
cd /opt
#将软件包传至该目录下
rpm -ivh jdk-8u371-linux-x64.rpmvim /etc/profile.d/java.sh
export JAVA_HOME/usr/java/jdk1.8.0_371-amd64
export CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH$JAVA_HOME/bin:$PATH
#注释
1.输出定义java的工作目录
2.输出指定java所需的类文件
3.输出重新定义环境变量$PATH一定要放在$JAVA_HOME的后面让系统先读取到工作目录中的版本信息source /etc/profile
java -version 部署 ElasticSearch 软件
安装 elasticsearch-rpm 包
[rootnode1 ~]# cd /opt
[rootnode1 opt]# rz -E
#上传elasticsearch-5.5.0.rpm到/opt目录下
rz waiting to receive.
[rootnode1 opt]# rpm -ivh elasticsearch-5.5.0.rpm 加载系统服务
systemctl daemon-reload systemctl enable elasticsearch.service 修改 elasticsearch 主配置文件
[rootnode1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
#备份配置文件
[rootnode1 opt]# vim /etc/elasticsearch/elasticsearch.yml##17行取消注释指定群集名称
cluster.name: my-elk-cluster
##23行取消注释指定节点名称node1节点为node1node2节点为node2
node.name: node1
##33行取消注释指定数据存放路径
path.data: /data/elk_data
##37行取消注释指定日志存放路径
path.logs: /var/log/elasticsearch/
##43行取消注释不在启动的时候锁定内存前端缓存与IOPS-性能测试方式每秒读写次数相关
bootstrap.memory_lock: false
##55行取消注释设置监听地址0.0.0.0代表所有地址
network.host: 0.0.0.0
##59行取消注释ES服务的默认监听端口为9200
http.port: 9200
##68行取消注释集群发现通过单播实现指定要发现的节点node1、node2
discovery.zen.ping.unicast.hosts: [node1, node2][rootnode1 opt]# grep -v ^# /etc/elasticsearch/elasticsearch.yml 创建数据存放路径并授权
[rootnode1 opt]# mkdir -p /data/elk_data
[rootnode1 opt]# chown elasticsearch:elasticsearch /data/elk_data/
[rootnode1 opt]# systemctl start elasticsearch.service
[rootnode1 opt]# netstat -natp | grep 9200 #启动较慢需等待 查看节点信息
浏览器访问 http://192.168.111.71:9200、http://192.168.111.72:9200 查看节点 node1、node2 的信息
浏览器访问 http://192.168.111.71:9200/_cluster/health?pretty、http://192.168.111.72:9200/_cluster/health?pretty
查看群集的健康情况可以看到status值为green(绿色)表示节点健康运行 安装 Elasticsearch-head 插件node1为例
ES 在 5.0 版本后插件需要作为独立服务进行安装需要使用 npm 工具NodeJS 的包管理工具安装。安装 Elasticsarch-head 需要提前安装好依赖软件 node 和 phantomjs。
node是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 phantomjs是一个基于 webkit 的 JavaScriptAPI可以理解为一个隐形的浏览器任何基于 webkit 浏览器做的事情它都可以做到。
编译安装 node
[rootnode1 ~]# cd /opt
[rootnode1 opt]# rz -E
#上传软件包node-v8.2.1.tar.gz到/opt目录
rz waiting to receive.
[rootnode1 opt]# yum install -y gcc gcc-c make
[rootnode1 opt]# tar zxvf node-v8.2.1.tar.gz
[rootnode1 opt]# cd node-v8.2.1/
[rootnode1 node-v8.2.1]# ./configure
[rootnode1 node-v8.2.1]# make -j 4 make instal
安装 phantomjs
[rootnode1 node-v8.2.1]# cd /opt
[rootnode1 opt]# rz -E
#上传软件包phantomjs-2.1.1-linux-x86_64.tar.bz2到/opt目录
rz waiting to receive.
[rootnode1 opt]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
[rootnode1 opt]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
[rootnode1 bin]# cp phantomjs /usr/local/bin
安装 Elasticsearch-head 数据可视化工具
[rootnode1 bin]# cd /opt
[rootnode1 opt]# rz -E
#上传软件包elasticsearch-head.tar.gz到/opt目录
rz waiting to receive.
[rootnode1 opt]# tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
[rootnode1 opt]# cd /usr/local/src/elasticsearch-head/
[rootnode1 elasticsearch-head]# npm install
修改 Elasticsearch 主配置文件
[rootnode1 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml##末行添加以下内容
http.cors.enabled: true ##开启跨域访问支持默认为false
http.cors.allow-origin: * ##指定跨域访问允许的域名地址为所有[rootnode1 elasticsearch-head]# systemctl restart elasticsearch.service
[rootnode1 elasticsearch-head]# netstat -antp | grep 9200
启动 elasticsearch-head 服务
[rootnode1 elasticsearch-head]# cd /usr/local/src/elasticsearch-head/
[rootnode1 elasticsearch-head]# npm run start
[1] 71012elasticsearch-head0.0.0 start /usr/local/src/elasticsearch-headgrunt serverRunning connect:server (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
^C
[rootnode1 elasticsearch-head]# netstat -natp | grep 9100 通过 Elasticsearch-head 查看 ES 信息
通过浏览器访问 http://192.168.111.71:9100 地址并连接群集。如果看到群集健康值为 green代表群集很健康。 插入索引
通过命令插入一个测试索引索引为 index-demo类型为 test
[rootnode1 elasticsearch-head]# curl -X PUT localhost:9200/index-demo/test/1?prettypretty -H content-Type: application/json -d {user:zhangsan,mesg:hello world}
{_index : index-demo,_type : test,_id : 1,_version : 1,result : created,_shards : {total : 2,successful : 2,failed : 0},created : true
}
浏览器查看索引信息
浏览器访问 http://129.168.111.72:9100 查看索引信息可以看见索引默认被分片为 5 个并且有一个副本。
点击 **数据浏览**会发现在 node1 上创建的索引为 index-demo类型为 test 的相关信息。 ELK-Logstash 部署在 Apache 节点上操作
Logstash 一般部署在需要监控其日志的服务器。在本案例中Logstash 部署在 Apache 服务器上用于收集 Apache 的日志信息并发送到 Elasticsearch。
安装 Apache 服务httpd
[rootapache ~]# yum install -y httpd
[rootapache ~]# systemctl start httpd systemctl enable httpd
安装 Java 环境 cd /opt
tar zxvf jdk-8u307-linux-x64.tar.gz -C /usr/local
mv /usr/local/jdk1.8.0_91/ /usr/local/jdkvim /etc/profile
export JAVA_HOME/usr/local/jdk
export JRE_HOME${JAVA_HOME}/jre
export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH${JAVA_HOME}/bin:$PATHsource /etc/profile
java -version 安装 logstash
[rootapache ~]# cd /opt
[rootapache opt]# rz -E #上传安装包 logstash-5.5.1.rpm
[rootapache opt]# rpm -ivh logstash-5.5.1.rpm
[rootapache opt]# systemctl start logstash.service systemctl enable logstash.service
[rootapache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
测试 Logstash
定义输入和输出流
标准输入、输出输入采用标准输入输出采用标准输出类似管道
[rootapache /opt]# logstash -e input { stdin{} } output { stdout{} }
......
The stdin plugin is now waiting for input:
22:24:31.510 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port9600}
www.baidu.com #键入内容标准输入
2021-11-19T14:28:36.175Z apache www.baidu.com #输入结果标准输出
www.4399.com
2021-11-19T14:29:01.315Z apache www.4399.com
www.baidu.com
2021-11-19T14:29:10.569Z apache www.baidu.com
2021-11-19T14:29:10.569Z apache www.baidu.com
^C22:30:07.071 [SIGINT handler] WARN logstash.runner - SIGINT received. Shutting down the agent.
22:30:07.081 [LogStash::Runner] WARN logstash.agent - stopping pipeline {:idmain}
rubydebug 输出使用 rubydebug 输出详细格式显示codec 为一种编解码器
[rootapache /opt]# logstash -e input { stdin{} } output { stdout{ codecrubydebug } }
......
The stdin plugin is now waiting for input:
22:37:46.417 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port9600}
www.test.com #输入内容
{ #输出内容timestamp 2021-11-19T14:38:03.535Z,version 1,host apache,message www.test.com
}
^C22:38:35.333 [SIGINT handler] WARN logstash.runner - SIGINT received. Shutting down the agent.
22:38:35.343 [LogStash::Runner] WARN logstash.agent - stopping pipeline {:idmain} 输出到 ES使用 logstash 将嘻嘻写入到 ES 中
[rootapache opt]# logstash -e input { stdin{} } output { elasticsearch { hosts[192.168.111.72:9200] } }
······
The stdin plugin is now waiting for input:
22:40:57.485 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port9600}
www.test.com #键入内容标准输出
结果不在标准输出显示而是发送至 ES可浏览器访问 http://192.168.223.11:9100 查看索引和数据
定义 logstash 配置文件
修改 logstash 配置文件让其收集系统日志 /var/log/messages并将其输出到 ES 中
[rootapache opt]# chmod or /var/log/messages
#赋予读的权限让 Logstash 可以获取到该文件的内容
[rootapache opt]# vim /etc/logstash/conf.d/system.conf
##该文件需自行创建文件名可自定义input {file{path /var/log/messages
##指定要收集的日志的位置type system
##自定义日志类型标识start_position beginning
##表示从开始处收集}
}
output {elasticsearch{
##输出到EShosts [192.168.111.71:9200, 192.168.111.72:9200]
##指定ES服务器的地址和端口为避免单机故障建议写全index system-%{YYYY.MM.dd}
##指定输出到ES的索引格式}
}[rootapache opt]# systemctl restart logstash.service
访问测试 ELK-Kibana 部署在 node1 节点上操作
安装 Kibana
[rootnode1 elasticsearch-head]# cd /opt
[rootnode1 opt]# rz -E #上传软件包 kibana-5.5.1-x86_64.rpm
[rootnode1 opt]# rpm -ivh kibana-5.5.1-x86_64.rpm
设置 Kibana 的主配置文件
[rootnode1 opt]# cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
#备份配置文件[rootnode1 opt]# vim /etc/kibana/kibana.yml
##2行取消注释kibana服务的默认监听端口为5601
server.port: 5601
##7行取消注释设置kibana的监听地址0.0.0.0代表所有地址
server.host: 0.0.0.0
##21行取消注释设置和ES建立连接的地址和端口
elasticsearch.url: http://192.168.111.71:9200
##30行取消注释设置在ES中添加.kibana索引
kibana.index: .kibana
启动 Kibana 服务
[rootnode1 opt]# systemctl start kibana.service systemctl enable kibana.service
[rootnode1 opt]# netstat -natp | grep 5601 验证 Kibana
浏览器访问 http://192.168.111.71:5601
第一次登录需要添加一个 ES 索引
点击 create 创建
索引添加完成后点击 Discover 按钮可查看图表信息及日志信息
数据展示可以分类显示例如在 Available Fileds 中的 host 将 Apache 服务器的日志访问的、错误的添加到 ES 并通过 Kibana 显示
apache 服务器 [rootapache opt]# vim /etc/logstash/conf.d/apache_log.confinput {file{path /etc/httpd/logs/access_logtype accessstart_position beginning}file{path /etc/httpd/logs/error_logtype errorstart_position beginning}
}
output {if [type] access {elasticsearch {hosts [192.168.111.71:9200, 192.168.111.72:9200]index apache_access-%{YYYY.MM.dd}}}if [type] error {elasticsearch {hosts [192.168.111.71:9200, 192.168.111.72:9200]index apache_error-%{YYYY.MM.dd}}}
}
[rootapache opt]# cd /etc/logstash/conf.d
[rootapache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
······
23:42:13.199 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port9601}
浏览器访问 浏览器访问 http://192.168.111.71:9100 查看索引是否创建 只看到apache-error因为 access 需要访问 httpd 页面才能生成
浏览器访问 http://192.168.111.71:5601 登录 kibana添加 apache_access-* 和 apache_error-* 索引查看日志信息