【ELK日志分析系统】

1. 案例 概述
日志分析是运维工程师解决系统故障,发现问题的主要手段。日志主要包括系统日志、应用程
序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的
错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠
正错误。
通常,日志被分散的储存在不同的设备上。如果你管理数十上百台服务器,你还在使用依次登
录每台机器的传统方法查阅日志,即繁琐又效率低下。为此,我们可以使用集中化的日志管理,例
如:开源的 syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep、awk
和 wc 等 Linux 命令能实现检索和统计,但是对于更高要求的查询、排序和统计等,再加上庞大的机
器数量,使用这样的方法依然难免有点力不从心。
开源实时日志分析 ELK 平台能够完美的解决我们上述的问题,ELK 由 ElasticSearch、Logstash
和 Kiabana 三个开源工具组成。官方网站:https://www.elastic.co/products
Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自
动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤,并将其存储,供以后使
用(如,搜索)。
Kibana 也是一个开源和免费的工具,Kibana 可以为 Logstash 和 ElasticSearch 提供友好的
日志分析 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
ELK 工作原理展示图:
Logstash 收集 AppServer 产生的 Log,并存放到 ElasticSearch 集群中,而 Kibana 则从 ES 集
群中查询数据生成图表,再返回给 Browser。简单来说,进行日志处理分析,一般需要经过以下几
个步骤:
1. 将日志进行集中化管理(beats)
2. 将日志格式化(logstash)
3. 对格式化后的数据进行索引和存储(elasticsearch)
4. 前端数据的展示(kibana)
2 案例前置知识点:
1) elasticsearch 介绍
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,
基于 RESTful web 接口。 Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,
是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使
用方便。
Elasticsearch 的基础核心概念:
接近实时( NRT
elasticsearch 是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索
到有一个轻微的延迟(通常是 1 秒)。
集群( cluster
一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和
搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引
和搜索的功能。集群有一个唯一性标示的名字,默认是 elasticsearch ,集群名字很重要,每个节点是
基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。一个集群可以只
有一个节点。强烈建议在配置 elasticsearch 时,配置成集群模式。
节点( node
节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集
群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定
义。该名字也很重要,在集群中用于识别服务器对应的节点。
节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到 elasticsearch
集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为 elasticsearch 的集群。
索引( index
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,
另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写
字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使
用到这个名字。在一个集群中,如果你想,可以定义任意多的索引。
索引相对于关系型数据库的库。
类型( type
在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类 / 分区,
其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运
营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一
个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。
类型相对于关系型数据库的表。
文档( document
一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品
的一个文档,当然,也可以拥有某个订单的一个文档。文档以 JSON Javascript Object Notation )格
式来表示,而 JSON 是一个到处存在的互联网数据交互格式。
在一个 index/type 里面,只要你想,你可以存储任意多的文档。注意,虽然一个文档在物理上
位于一个索引中,实际上一个文档必须在一个索引内被索引和分配一个类型。
文档相对于关系型数据库的列。
分片和副本( shards & replicas
在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个 10 亿文档需 1TB 空间
可能不适合存储在单个节点的磁盘上,或者从单个节点搜索请求太慢了。为了解决这个问题,
elasticsearch 提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个
分片就是一个全功能的独立的索引,可以位于集群中任何节点上。
分片的两个最主要原因:
a. 水平分割扩展,增大存储量
b. 分布式并行跨分片操作,提高性能和吞吐量
分布式分片的机制和搜索请求的文档如何汇总完全是有 elasticsearch 控制的,这些对用户而言是
透明的。
网络问题等等其它问题可以在任何时候不期而至,为了健壮性,强烈建议要有一个故障切换机
制,无论何种故障以防止分片或者节点不可用。 为此, elasticsearch 让我们将索引分片复制一份或
多份,称之为分片副本或副本。
副本也有两个最主要原因:
a. 高可用性,以应对分片或者节点故障。出于这个原因,分片副本要在不同的节点上。
b. 提供性能,增大吞吐量,搜索可以并行在所有副本上执行。
总之,每个索引可以被分成多个分片。一个索引也可以被复制 0 次(意思是没有复制)或多次。
一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之
别。分片和副本的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态地改
变副本的数量,但是你事后不能改变分片的数量。
默认情况下, Elasticsearch 中的每个索引被分片 5 个主分片和 1 个副本,这意味着,如果你的
集群中至少有两个节点,你的索引将会有 5 个主分片和另外 5 个副本分片( 1 个完全拷贝),这样
的话每个索引总共就有 10 个分片。
2) logstash 介绍:
Logstash JRuby 语言编写,基于消息( message-based )的简单架构,并运行在 Java 虚拟
机( JVM )上。不同于分离的代理端( agent )或主机端( server ), LogStash 可配置单一的代理
端( agent )与其它开源软件结合,以实现不同的功能。
Logstash 的理念很简单,它只做 3 件事情:
Collect :数据输入
Enrich :数据加工,如过滤,改写等
Transport :数据输出
别看它只做 3 件事,但通过组合输入和输出,可以变幻出多种架构实现多种需求。这里只
抛出用以解决日志汇总需求的部署架构图:
logStash 的主要组件 :
Shipper :日志收集者。
负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远
程代理端( agent )只需要运行这个组件即可;
Indexer :日志存储者。
负责接收日志并写入到本地文件。
Broker :日志 Hub
负责连接多个 Shipper 和多个 Indexer
Search and Storage :允许对事件进行搜索和存储;
Web Interface :基于 Web 的展示界面
正是由于以上组件在 LogStash 架构中可独立部署,才提供了更好的集群扩展性。
LogStash 主机分类:
代理主机( agent host ):作为事件的传递者( shipper ),将各种日志数据发送至中心主机;
只需运行 Logstash 代理( agent )程序;
中心主机( central host ):可运行包括中间转发器( Broker )、索引器( Indexer )、搜索和
存储器( Search and Storage )、 Web 界面端( Web Interface )在内的各个组件,以实现对日
志数据的接收、处理和存储。
3) Kibana 介绍:
Kibana 是一个针对 Elasticsearch 的开源分析及可视化平台,用来搜索、查看交互存储在
Elasticsearch 索引中的数据。使用 Kibana ,可以通过各种图表进行高级数据分析及展示。 Kibana
让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板( dashboard
实时显示 Elasticsearch 查询动态。设置 Kibana 非常简单。无需编写代码,几分钟内就可以完成
Kibana 安装并启动 Elasticsearch 索引监测。
主要功能:
Elasticsearch 无缝之集成。 Kibana 架构为 Elasticsearch 定制,可以将任何结构化和非结构化
数据加入 Elasticsearch 索引。 Kibana 还充分利用了 Elasticsearch 强大的搜索和分析功能。
整合你的数据。 Kibana 能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、
直方图、饼图和地图。
复杂数据分析。 Kibana 提升了 Elasticsearch 分析能力,能够更加智能地分析数据,执行数
学转换并且根据要求对数据切割分块。
让更多团队成员受益。强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
接口灵活,分享更容易。使用 Kibana 可以更加方便地创建、保存、分享数据,并将可视化
数据快速交流。
配置简单。 Kibana 的配置和启用非常简单,用户体验非常友好。 Kibana 自带 Web 服务器,
可以快速启动运行。
可视化多数据源。 Kibana 可以非常方便地把来自 Logstash ES-Hadoop Beats 或第三方技
术的数据整合到 Elasticsearch ,支持的第三方技术包括 Apache Flume Fluentd 等。
简单数据导出。 Kibana 可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模
分析,发现新结果。
3 案例环境 : 配置 ELK 日志分析系统
如图所示:配置和安装 ELK 日志分析系统,安装集群方式,2 个 elasticsearch 节点,并监控 apache 服
务器日志。
Elk-node1 地址为 192.168.10.181
Elk-node2 地址为 192.168.10.182
Apache 网站服务器为 192.168.10.183
本实验实现以下功能:
配置 ELK 日志分析集群
使用 logstash 收集日志
使用 kibana 查看分析日志
操作步骤:
1、ELK 集群部署环境准备
1)在 2 个 ELK 节点上配置名称解析,通过本地/etc/hosts 文件实现。
Elk-node1 上的配置
[root@elk-node1 ~]# hostname
elk-node1
[root@elk-node1 ~]# cat /etc/hostname
elk-node1
[root@elk-node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.181 elk-node1
192.168.10.182 elk-node2
Elk-node2 上的配置
[root@elk-node2 ~]# hostname
elk-node2
[root@elk-node2 ~]# cat /etc/hostname
elk-node2
[root@elk-node2 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.181 elk-node1
192.168.10.182 elk-node2
2)需要有 java 环境
[root@elk-node1 ~]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
[root@elk-node2 ~]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
2、安装 elasticsearch 软件,2 个节点安装方式相同
1) Elasticsearch 安装可以通过 YUM 安装、源码包安装,这里通过下载的 rpm 包进行安
装,生产环境中你可以根据实际情况进行安装方式选择,都很容易。
[root@elk-node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm
警告:elasticsearch-5.5.0.rpm: 头 V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...
1:elasticsearch-0:5.5.0-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure
elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
2)通过执行命令配置成系统服务并设置自动开机启动,2 个节点都要做
[root@elk-node1 ~]# systemctl daemon-reload
[root@elk-node1 ~]# systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service
to /usr/lib/systemd/system/elasticsearch.service.
3)更改 elasticsearch 主配置文件
[root@elk-node1 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster 集群名字
node.name: elk-node1 节点名字
path.data: /data/elk_data 数据存放路径
path.logs: /var/log/elasticsearch/ 日志存放路径
bootstrap.memory_lock: false 不在启动的时候锁定内存
network.host: 0.0.0.0 提供服务绑定的 IP 地址,0.0.0.0 代表所有地址
http.port: 9200 侦听端口为 9200
discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"] 集群发现通过单播实现
[root@elk-node2 elasticsearch]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: elk-node2
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]
4)创建数据存放路径并授权
[root@elk-node1 ~]# mkdir -p /data/elk_data
[root@elk-node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/
[root@elk-node2 ~]# mkdir -p /data/elk_data
[root@elk-node2 ~]# chown elasticsearch:elasticsearch /data/elk_data/
5)启动 elasticsearch 并查看是否成功开启
[root@elk-node1 ~]# systemctl start elasticsearch.service
[root@elk-node1 elasticsearch]# netstat -antp | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 3856/java
9
[root@elk-node2 ~]# systemctl start elasticsearch.service
[root@elk-node2 elasticsearch]# netstat -antp | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 43649/java
6)通过浏览器访问节点,可以看到节点信息情况
7)通过浏览器中输入 http://192.168.10.181:9200/_cluster/health?pretty 查看
集群的健康情况,可以看到 status 为 green 绿色。
8)通过浏览器中输入 http://192.168.10.181:9200/_cluster/state?pretty 查看集
群的状态信息
以上方式查看集群状态都不是很直观,可以安装 elasticsearch-head 插件,以便方便管理集群。
3 、安装 elasticsearch-head 插件
1)Elasticsearch 在 5.0 版本后,elasticsearch-head 插件需要作为独立服务进行安装,需
要 npm 命令。编译安装 node,时间比较长,需耐心等待。
[root@elk-node1 ~]# tar zxvf node-v8.2.1.tar.gz
[root@elk-node1 ~]# cd node-v8.2.1/
[root@elk-node1 node-v8.2.1]# ./configure
[root@elk-node1 node-v8.2.1]# make
[root@elk-node1 node-v8.2.1]# make install
2)安装 phantomjs 命令
[root@elk-node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@elk-node1 ~]# cd phantomjs-2.1.1-linux-x86_64/bin/
[root@elk-node1 bin]# cp phantomjs /usr/local/bin/
2) 安装 elasticsearch-head 作为独立服务并后台启动
安装 elasticsearch-head 插件
安装 docker 镜像或者通过 github 下载 elasticsearch-head 项目都是可以的,1 或
者 2 两种方式选择一种安装使用即可
1. 使用 docker 的集成好的 elasticsearch-head
# docker run -p 9100:9100 mobz/elasticsearch-head:5
docker 容器下载成功并启动以后,运行浏览器打开 http://localhost:9100/
2. 使用 git 安装 elasticsearch-head
# git clone git://github.com/mobz/elasticsearch-head.git
# cd elasticsearch-head
# npm install
# npm run start
检查端口是否起来
netstat -antp |grep 9100
浏览器访问测试是否正常
http://IP:9100/
[root@elk-node1 ~]# cd elasticsearch-head/
[root@elk-node1 elasticsearch-head]# npm install
[root@elk-node1 elasticsearch-head]# npm run start &
[root@elk-node1 elasticsearch-head]# netstat -antp | grep 9100
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 90788/grunt
4)修改 elasticsearch 主配置文件,添加如下内容,然后重启 elasticsearch 服务
[root@elk-node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true 开启跨域访问支持,默认为 false
http.cors.allow-origin: "*" 跨域访问允许的域名地址
[root@elk-node1 ~]# systemctl restart elasticsearch
5)通过浏览器进行访问: http://192.168.10.181:9100/,并连接集群
可以看到集群很健康,健康值为 green 绿色。点击数据浏览,可以看到索引、类型为空
6)可以通过命令插入一个测试索引,索引为 index-demo,类型为 test,可以看到成功创建。
[root@elk-node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -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
}
刷新浏览器,可以看到创建成功的索引。
还可以看到索引默认被分片 5 个,且副本为 1 个
4、安装 logstash 并做一些日志搜集输出到 elasticsearch 中
1)在 elk-node1 上安装
[root@elk-node1 ~]# rpm -ivh logstash-5.5.1.rpm
警告:logstash-5.5.1.rpm: 头 V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:logstash-1:5.5.1-1 ################################# [100%]
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash
[root@elk-node1 ~]# systemctl start logstash.service
[root@elk-node1 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
2)logstash 基本使用
Logstash 使用管道方式进行日志的搜集处理和输出。有点类似 linux 系统的管道命令 xxx | ccc
| ddd,xxx 执行完了会执行 ccc,然后执行 ddd。
在 logstash 中,包括了三个阶段:
输入 input --> 处理 filter(不是必须的) --> 输出 output
每个阶段都由很多的插件配合工作,比如 file、elasticsearch、redis 等等。
每个阶段也可以指定多种方式,比如输出既可以输出到 elasticsearch 中,也可以指定到 stdout
在控制台打印。
由于这种插件式的组织方式,使得 logstash 变得易于扩展和定制。
logstash 命令行中常用的命令:
-f:通过这个命令可以指定 Logstash 的配置文件,根据配置文件配置 logstash
-e:后面跟着字符串,该字符串可以被当做 logstash 的配置(如果是“” 则默认使用 stdin
作为输入,stdout 作为输出)
-t:测试配置文件是否正确,然后退出
启动一个 logstash,-e:在命令行执行;input 输入,stdin 标准输入,是一个插件;output 输
出,stdout:标准输出
[root@elk-node1 ~]# logstash -e 'input { stdin{} } output { stdout{} }'
22:50:19.889 [Api Webserver] INFO logstash.agent - Successfully started Logstash API
endpoint {:port=>9600}
www.baidu.com 输入
2017-08-09T14:51:26.277Z elk-node1 www.baidu.com 输出
www.sina.com.cn 输入
2017-08-09T14:51:30.971Z elk-node1 www.sina.com.cn 输出
使用 rubydebug 显示详细输出,codec 为一种编解码器
[root@elk-node1 ~]# logstash -e 'input { stdin{} } output { stdout{ codec
=>rubydebug} }'
22:54:23.075 [Api Webserver] INFO logstash.agent - Successfully started Logstash API
endpoint {:port=>9600}
www.baidu.com 输入
{
"@timestamp" => 2017-08-09T14:54:31.236Z,
"@version" => "1",
"host" => "elk-node1",
"message" => "www.baidu.com"
}
www.sina.com.cn 输入
{
"@timestamp" => 2017-08-09T14:54:39.412Z,
"@version" => "1",
"host" => "elk-node1",
"message" => "www.sina.com.cn"
}
使用 logstash 将信息写入到 elasticsearch 中
[root@elk-node1 ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>
["192.168.10.181:9200"]} }'
22:59:03.834 [Api Webserver] INFO logstash.agent - Successfully started Logstash API
endpoint {:port=>9600}
www.baidu.com
www.sina.com.cn
www.google.com
在 elasticsearch 中查看 logstash 新加的索引
3)logstash 配置文件使用
logstash 配置文件基本上由三部分组成,input、output 以及用户需要才添加的 filter,
因此标准的配置文件格式如下:
input {...}
filter {...}
output {...}
在每个部分中,也可以指定多个访问方式,例如我想要指定两个日志来源文件,则可以这样写:
input {
file { path =>"/var/log/messages" type =>"syslog"}
file { path =>"/var/log/apache/access.log" type =>"apache"}
}
下面是一个收集系统日志的配置文件例子,将其放到/etc/logstash/conf.d/目录中,
logstash 启动的时候便会加载。注意要给 logstash 读取日志文件的权限。
[root@elk-node1 logstash]# chmod o+r /var/log/messages
[root@elk-node1 logstash]# ll /var/log/messages
-rw----r--. 1 root root 2566754 8 月 9 23:25 /var/log/messages
[root@elk-node1 ~]# cd /etc/logstash/conf.d/
[root@elk-node1 conf.d]# cat system.conf
input {
file { 从文件中读取
path => "/var/log/messages" 文件路径
type => "system"
start_position => "beginning" 是否从头开始读取
}
}
output {
elasticsearch { 输出到 elasticsearch 中
hosts => ["192.168.10.181:9200"] elasticsearch 主机地址和端口
index => "system-%{+YYYY.MM.dd}" 索引名称
}
}
重启 logstash 服务
[root@elk-node1 logstash]# systemctl restart logstash
在浏览器中即可看到新加索引及其内容
5、安装 kibana
1)在 elk-node1 服务器上安装 kibana,并设置开机启动
[root@elk-node1 ~]# rpm -ivh kibana-5.5.1-x86_64.rpm
警告:kibana-5.5.1-x86_64.rpm: 头 V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:kibana-5.5.1-1 ################################# [100%]
[root@elk-node1 ~]# systemctl enable kibana.service
2)设置 kibana 的主配置文件/etc/kibana/kibana.yml
[root@elk-node1 ~]# grep -v "^#" /etc/kibana/kibana.yml | grep -v "^$"
server.port: 5601 kibana 打开的端口
server.host: "0.0.0.0" kibana 侦听的地址
elasticsearch.url: "http://192.168.10.181:9200" 和 elasticsearch 建立联系
kibana.index: ".kibana" 在 elasticsearch 中添加.kibana 索引
3)启动 kibana 服务
systemctl start kibana.service
4)使用浏览器访问 http://192.168.10.181:5601,第一次登录需要添加一个 elasticsearch 索
引,我们添加前面的索引 system-2017.08.09。
可以看到默认的字段:
点击 discover 进行查看
可以进行 fields 区域筛选,点击“Available Fields”中的“host”,然后点击添加“add”
可以看到按照”host”筛选后的结果
6、将 apache 服务器的日志添加到 elasticsearch 并通过 kibana 显示
1)在 apache 服务器上安装 logstash,以便将日志搜集到 elasticsearch
[root@apache ~]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
[root@apache ~]# rpm -ivh logstash-5.5.1.rpm
警告:logstash-5.5.1.rpm: 头 V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:logstash-1:5.5.1-1 ################################# [100%]
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash
[root@nginx ~]# systemctl enable logstash.service
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to
/etc/systemd/system/logstash.service.
2)编写 logstash 配置文件 apache_log.conf 搜集 apache 日志并执行
[root@apache conf.d]# cat apache_log.conf
input {
file {
path => "/etc/httpd/logs/access_log"
type => "access"
start_position => "beginning"
}
file {
path => "/etc/httpd/logs/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.10.181:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.10.181:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
3)通过浏览器访问 http://192.168.10.181:9100 查看索引是否创建
4)登录 kibana 添加索引
5)选择 discover 进行查看,并可以根据 fields 进行过滤
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值