**
ELK 企业级日志分析系统
本章资源请访问:
https://download.youkuaiyun.com/download/weixin_54373617/18742030
技能展示:
了解 ELK 日志分析系统
会安装和配置 Elasticsearch 群集
会安装和配置 Logstash 进行日志收集
会安装和配置 Kibana 进行日志查看
**
一:ELK平台介绍
1.1:ELK概述
ELK由ElasticSearch、Logstash和Kibana三个开源工具组成:
**1:**Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
**2:**Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用
**3:**Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
进行日志处理分析,一般需要经过一下几步:
(1)将日志进行集中化管理
(2)将日志格式化(Logstash)并输出到Elasticsearch
(3)对格式化后的数据进行索引和存储(Elasticsearch)
(4)前端数据的展示(Kibana)
**
1.2:Elasticsearch**
1:ElasticSearch概述
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的。
2:Elasticsearch核心概念
(1)接近实时(NRT)
Elasticsearch是一个接近实时的搜索平台。
(2)集群(cluster)
一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。
(3)节点(node)
一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。
(4)索引(index)
一个索引就是一个拥有几分相似特征的文档的集合。在一个集群中,可以定义任意多的索引。
索引(库)——类型(表)——文档(记录)
(5)类型(type)
在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。
(6)文档(document)
一个文档是一个可被索引的基础信息单元。
**(7)分片和副本(shards & replicas):Elasticsearch 将索引分成若干个部分,每个部分称
为一个分片,每个分片就是一个全功能的独立的索引。分片的数量一般在索引创建前指
定,且创建索引后不能更改。分片的两个最主要原因如下。
水平分割扩展,增大存储量。
分布式并行跨分片操作,提高性能和吞吐量。
每个索引将会有 5 个主分片和另外 5 个副本分片,每
个索引总共就有 10 个分片。
**
1.3:Logstash
1:Logstash介绍
Logstash有JRuby语言编写,运行在Java虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Ligstash具有强大的插件功能,常用于日志处理。
Logstash的设计理念:Logstash只做三件事,数据输入、数据加工、数据输出
2:Logstash 工作的三个阶段:
(1)input 数据输入端,可以接收来自任何地方的源数据。
(2)Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下。
(3)output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,常用的有:
2:Logstash组件
(1)Shipper:日志收集者,负责监控本地日志文件的变化,及时收集最新的日志文件内容
(2)Indexer:日志存储者,负责接收日志并写入到本地文件
(3)Broker:日志Hub,负责链接多个Shipper和多个Indexer
(4)Search and Storage:允许对事件进行搜索和存储
(5)Web Interface:基于web的展示界面
**
1.4:Kibana
1:Kibana介绍
Kibana 是一个设计使用和Elasticsearch配置工作的开源分析和可视化平台。可以用它进行搜索、查看、集成Elasticsearch中的数据索引。可以利用各种图表、报表、地图组件轻松的对数据仅进行可视化分析
2:Kibana主要功能
Elasticsearch无缝集成
整合数据,复杂数据分析
让更多的团队成员收益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出
**
实验部分
**
案例需求
配置 ELK 日志分析群集。
使用 Logstash 收集日志。
使用 Kibana 查看分析日志。
**
问题分析
**
创建多台 Elasticsearch 节点的目的是存放数据的多个副本。在实际生产环境中,节点的数量可能更多。在本案例中,Elasticsearch 和 Kibana 集中部署在 Node1 节点上。当然Elasticsearch 和 Kibana 也可以采用分布式部署,即 Logstash、Elasticsearch 和 Kibana 分别部署在不同的服务器中。
1.1:环境准备
**
为node1和node2修改主机内存为4G
**
(两个 ELK节点上都要配置域名解析,通过本地/etc/hosts 文件实现)
**
**
1:配置域名解析
(1)node1节点的设置
[root@localhost ~]# hostname node1
[root@localhost ~]# bash
[root@node1 ~]# vim /etc/hosts
192.168.10.101 node1
192.168.10.102 node2
(2)node2节点的设置
[root@localhost ~]# hostname node2
[root@localhost ~]# bash
[root@node2 ~]# vi /etc/hosts
(2)node2节点的设置
[root@localhost ~]# hostname node2
[root@localhost ~]# bash
[root@node2 ~]# vim /etc/hosts
192.168.10.101 node1
192.168.10.102 node2
2:检查java环境
(1)node1的java环境
[root@node1 ~]# java -version //如果没有的话yum安装一下
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)node2的java环境
[root@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)
**
1.2:部署Elasticsearch软件(在两个node节点上都部署Elasticsearch 软件)
**
1:在node1节点上安装Elasticsearch软件
(1)安装Elasticsearch软件
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@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)加载系统服务
[root@node1 ~]# systemctl daemon-reload
[root@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@node1 ~]# vim /etc/elasticsearc/elasticsearch.yml
cluster.name: my-elk-cluster ##17行//群集名字
node.name: node1 ##23行//节点名字
path.data: /data/elk_data ##33行//数据存放路径
path.logs: /var/log/elasticsearch/ ##37行//日志存放路径
bootstrap.memory_lock: false ##43行//启动时不锁定内存
network.host: 0.0.0.0 ##55行//提供服务绑定的 IP 地址,0.0.0.0 代表所有地址
http.port: 9200 ##59行//侦听端口为 9200
discovery.zen.ping.unicast.hosts: [“node1”, “node2”] ##68行//群集发现通过单播实现
(4)创建数据存放路径并授权
[root@node1 ~]# mkdir -p /data/elk_data
[root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data
2:在node2节点上安装Elasticsearch软件
(1)安装Elasticsearch软件
[root@node2 ~]# systemctl stop firewalld
[root@node2 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@node2 ~]# 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)加载系统服务
[root@node2 ~]# systemctl daemon-reload
[root@node2 ~]# 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@node2 ~]# vim /etc/elasticsearc/elasticsearch.yml
cluster.name: my-elk-cluster ##17行
node.name: node2 ##23行
path.data: /data/elk_data ##33行
path.logs: /var/log/elasticsearch/ ##37行
bootstrap.memory_lock: false ##43行
network.host: 0.0.0.0 ##55行
http.port: 9200 59行
discovery.zen.ping.unicast.hosts: [“node1”, “node2”] ##68行
(4)创建数据存放路径并授权
[root@node2 ~]# mkdir -p /data/elk_data
[root@node2 ~]# chown elasticsearch:elasticsearch /data/elk_data/
3:启动Elasticsearch并查看是否开启成功
(1)在node1上启动
[root@node1 ~]# systemctl start elasticsearch.service
[root@node1 ~]# netstat -anpt|grep 9200
tcp6 0 0 :::9200 ::😗 LISTEN 10012/java
(2)在node2上启动
[root@node2 ~]# systemctl start elasticsearch.service
[root@node2 ~]# systemctl start elasticsearch.service
[root@node2 ~]# netstat -anpt|grep 9200
tcp6 0 0 :::9200 ::😗 LISTEN 21430/java
4:查看节点信息
(1)查看节点1
打开浏览器
http://192.168.10.101:9200
(2)查看节点2
打开浏览器
http://192.168.10.102:9200
(3)查看群集健康情况
打开浏览器
http://192.168.10.101:9200/_cluster/health?pretty
查看群集的健康情况,可以看到 status 值为 green(绿色),表示节点健康运行
(4)查看群集的状态信息
打开浏览器
http://192.168.10.101:9200/_cluster/state?pretty
**
1.3:在node1上安装Elasticsearch-head插件(只需在node1上安装)
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要 npm 命令。安装 Elasticsearch-head 需要提前安装 node 和 phantomjs
1:编译安装node
[root@node1 ~]# tar zxvf node-v8.2.1.tar.gz
[root@node1 ~]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# yum -y install gcc*
[root@node1 node-v8.2.1]# ./configure && make && make install
//这个安装时间可能会久一点
2:安装phantomjs
[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# cd phantomjs-2.1.1-linux-x86_64/
[root@node1 phantomjs-2.1.1-linux-x86_64]# ls
bin ChangeLog examples LICENSE.BSD README.md third-party.txt
[root@node1 phantomjs-2.1.1-linux-x86_64]# cd bin
[root@node1 bin]# ls
phantomjs
[root@node1 bin]# cp phantomjs /usr/local/bin
**
3:安装Elasticsearch-head
[root@node1 ~]# tar zxvf elasticsearch-head.tar.gz
[root@node1 ~]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm install //安装依赖包
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/karma/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {“os”:“darwin”,“arch”:“any”} (current: {“os”:“linux”,“arch”:“x64”})
npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression
up to date in 3.302s
4:修改Elasticsearch主配置文件
[root@node1 bin]# vim /etc/elasticsear/elasticsearch.yml
在末尾添加:
http.cors.enabled: true //开启跨域访问支持,默认为 false
http.cors.allow-origin: “*” //跨域访问允许的域名地址
[root@node1 ~]# systemctl restart elasticsearch //重启服务
5:启动服务(必须在解压的elasticsearch-head目录下启动)
[root@node1 ~]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start &
//&号表示在后台运行
[1] 66819
[root@node1 elasticsearch-head]#
elasticsearch-head@0.0.0 start /root/elasticsearch-head
grunt server
Running “connect:server” (connect) task
Waiting forever…
Started connect web server on http://localhost:9100
[root@node1 elasticsearch-head]# netstat -anpt|grep 9100
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 66829/grunt
[root@node1 elasticsearch-head]# netstat -anpt|grep 9200
tcp6 0 0 :::9200 ::😗 LISTEN 10012/java
6:通过elasticsearch-head查看elasticsearch信息
浏览器中访问:
http://192.168.10.101:9100/
查看群集信息可以看到群集很健康,健康
值为 green 绿色 单击数据浏览,可以查看索引信息,此时索引为空
查看索引信息
7:插入索引
通过命令插入一个测试索引,通过输出信息可以看到索引为 index-demo,类型为 test。
[root@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安装及使用方法
**Logstash 一般部署在需要监控其日志的服务器 在正式部署之前,
先在 Node1 上部署 Logstash,以熟悉 Logstash 的使用方法。Logstash 也需要 Java 环境,
所以安装之前也要检查当前机器的 Java 环境是否存在。
1:在node1上安装Logtash
[root@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
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Successfully created system startup script for Logstash
[root@node1 ~]# systemctl start logstash.service
[root@node1 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
2:测试Logtash
Logstash 命令行中常用的命令选项如下所示。
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash。
-e:后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是“”,则默认
使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。
Logstash 命令的使用方法如下所示:
(1)输入采用标准输入,输出采用标准输出
[root@node1 ~]# logstash -e ‘input { stdin{} } output { stdout{} }’
The stdin plugin is now waiting for input:
19:04:44.748 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com //键入内容(标准输入)
2021-03-29T11:06:03.696Z node1 www.baidu.com
//输出结果(标准输出)
www.bdqn.com //键入内容(标准输入)
2021-03-29T11:06:50.236Z node1 www.bdqn.com
//输出结果(标准输出)
www.kgc.com //键入内容(标准输入)
2021-03-29T11:07:22.397Z node1 www.kgc.com
//输出结果(标准输出)
(2)使用rubydubug显示详细输出
[root@node1 ~]# logstash -e ‘input { stdin{} } output { stdout{ codec=>rubydebug } }’
The stdin plugin is now waiting for input:
19:11:35.171 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com //键入内容(标准输入)
{
“@timestamp” => 2021-03-29T11:11:46.098Z,
“@version” => “1”,
“host” => “node1”,
“message” => “www.baidu.com”
}
//输出结果(处理后的结果)
www.bdqn.com //键入内容(标准输入)
{
“@timestamp” => 2021-03-29T11:32:14.648Z,
“@version” => “1”,
“host” => “node1”,
“message” => “www.bdqn.com”
}
//输出结果(处理后的结果)
www.kgc.com //键入内容(标准输入)
{
“@timestamp” => 2021-03-29T11:32:22.875Z,
“@version” => “1”,
“host” => “node1”,
“message” => “www.kgc.com”
}
//输出结果(处理后的结果)
(3)使用Logtash将信息写入Eloasticsearch中
注意:如果下列命令执行后提示拒绝连接,可以重启以下elasticsearch服务
[root@node1 ~]# logstash -e ‘input { stdin{} } output { elasticsearch { hosts=>[“192.168.10.101:9200”] } }’
The stdin plugin is now waiting for input:
19:36:53.322 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com //键入内容(标准输入)
www.bdqn.com //键入内容(标准输入)
www.kgc.com //键入内容(标准输入)
//结果不在标准输出显示,而是发送至 Elasticsearch 中。
在 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”}
}
下面通过修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出
到 elasticsearch 中。
[root@node1 ~]# chmod o+r /var/log/messages
[root@node1 ~]# ll /var/log/messages
-rw----r–. 1 root root 542248 3月 29 19:47 /var/log/messages
[root@node1 ~]# touch /etc/logstash/conf.d/system.conf
[root@node1 ~]# vim /etc/logstash/conf.d/system.conf
input {
file{
path =>"/var/log/messages"
type =>“system”
start_position =>“beginning”
}
}
output {
elasticsearch {
hosts => [“192.168.10.101:9200”]
index =>“system-%{+YYYY.MM.dd}”
}
}
[root@node1 ~]# systemctl restart logstash
完成后,通过浏览器查看 Elasticsearch 的信息查看索引下的日志信息
**
1.5:安装Kibana
在 node1 服务器上安装 Kibana,并设置开机启动。
1:在node1上安装Kibana
[root@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@node1 ~]# systemctl enable kibana.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
2:修改Kibana主配置文件/etc/kibana/kibana.yml
在主配置文件/etc/kibana/kibana.yml 中设置 Kibana 的命令如下
[root@node1 ~]# vim /etc/kibana/kibana.yml
server.port: 5601 ##2行//Kibana 打开的端口
server.host: “0.0.0.0” ##7行//Kibana 侦听的地址
elasticsearch.url: “http://192.168.10.101:9200” ##21行//和 Elasticsearch 建立连接
kibana.index: “.kibana” ##30行//在 Elasticsearch 中添加.kibana 索引
3:启动Kibana服务
[root@node1 ~]# systemctl start kibana.service
**
4:验证Kibana
(1)浏览器访问
http://192.168.10.101:5601第一次登录需要添加一个 Elasticsearch索引,添加前面创建的索引 system
(2)查看索引字段
(3)单击“Discover”按钮查看图表信息及日志信息
数据展示可以分类显示 使鼠标指针悬停在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果
**
6:添加apache服务器的日志
将 Apache 服务器的日志添加到 Elasticsearch 并通过 Kibana 显示
(1)在apache服务器上安装httpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# yum -y install httpd
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
- base: mirrors.aliyun.com
- extras: mirrors.aliyun.com
- updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
epel | 182 B 00:00:00
http://mirrors.aliyun.com/epel/7/x86_64/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for epel: Damaged repomd.xml file
…省略部分内容
已安装:
httpd.x86_64 0:2.4.6-97.el7.centos
作为依赖被安装:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7
httpd-tools.x86_64 0:2.4.6-97.el7.centos mailcap.noarch 0:2.1.41-2.el7
完毕!
在 Apache 服务器上安装 Logstash,以便将收集的日志发送到 Elasticsearch 中。
[root@localhost ~]# 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@localhost ~]# 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
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Successfully created system startup script for Logstash
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable logstash.service
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
编写 Logstash 配置文件 apache_log.conf
[root@localhost ~]# cd /etc/logstash/conf.d/
[root@localhost conf.d]# touch apache_log.conf
[root@localhost conf.d]# vim apache_log.conf
input {
file {
path=>"/etc/httpd/logs/access_log"//收集 Apache 访问日志
type=>“access” //类型指定为 access
start_position=>“beginning” //从开始处收集
}
file {
path=>"/etc/httpd/logs/error_log" //收集 Apache 错误日志
type=>"error" //类型指定为 error
start_position=>"beginning" //从开始处收集
}
}
output {
if [type]==“access” { //如果类型为 access,即 Apache 访问日志
elasticsearch { //输出到 elasticsearch
hosts=>[“192.168.10.101:9200”] //elasticsearch 监听地址及端口
index=>“apache_access-%{+YYYY.MM.dd}” //指定索引格式
}
}
if [type]=="error" { //如果类型为 error,即 Apache 错误日志
elasticsearch { //输出到 elasticsearch
hosts=>["192.168.10.101:9200"] //elasticsearch 监听地址及端口
index=>"apache_error-%{+YYYY.MM.dd}" //指定索引格式
}
}
}
[root@localhost ~]# systemctl start httpd
[root@localhost conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
(2)浏览器访问
先访问apache服务器生成正常的日志
http://192.168.10.103/通过浏览器访问 http://192.168.10.101:9100 查看索引是否创建
登录 Kibana,单击“Create Index Pattern”按钮添加索引
http://192.168.10.101:5601
在索引名中输入之前配置的 Output 前缀“apache_access”,并单击“Create”按钮
用相同的方法添加 apache_error-*索引
选择“Discover”选项卡,在中间下拉列表中选择刚添加的 apache_access-*索引,可以
查看相应的图表及日志信息,还可以根据 Fields 进行归类显示