一、ELK简介

ELK是elastic 公司旗下三款产品ElasticSearch 、Logstash 、Kibana的首字母组合,主要用于日志收集、分析与报表展示。

ELK Stack包含:ElasticSearch、Logstash、Kibana。(ELK Stack 5.0版本以后-->Elastic Stack == ELK Stack+Beats)

ElasticSearch是一个搜索引擎,用来搜索、分析、存储日志。它是分布式的,也就是说可以横向扩容,可以自动发现,索引自动分片,总之很强大。

Logstash用来采集日志,把日志解析为Json格式交给ElasticSearch。

Kibana是一个数据可视化组件,把处理后的结果通过WEB界面展示。

Beats是一个轻量级日志采集器,其实Beats家族有5个成员。(早起的Logstash对性能资源消耗比较高,Beats性能和消耗可以忽略不计)

X-pach对Elastic Stack提供了安全、警报、监控、报表、图标于一身的扩展包,收费。

官网:https://www.elastic.co/cn/

中文文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

二、单机架构图

三、安装ELK服务端

1、下载elasticsearch-6.2.4.rpm、logstash-6.2.4.rpm、kibana-6.2.4-x86_64.rpm

[root@server- src]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.rpm
[root@server- src]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.rpm
[root@server- src]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-x86_64.rpm

2、rpm安装elasticsearch-6.2.4.rpm

[root@server- src]# rpm -ivh elasticsearch-6.2..rpm
警告:elasticsearch-6.2..rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...
:elasticsearch-:6.2.- ################################# [%]
### 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

3、安装logstash-6.2.4.rpm

[root@server- src]# rpm -ivh logstash-6.2..rpm
警告:logstash-6.2..rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [%]
正在升级/安装...
:logstash-:6.2.- ################################# [%]
which: no java in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin)
could not find java; set JAVA_HOME or ensure java is in PATH
chmod: 无法访问"/etc/default/logstash": 没有那个文件或目录
警告:%post(logstash-:6.2.-.noarch) 脚本执行失败,退出状态码为

报错,显示需要JAVA环境,安装JAVA

[root@server- src]# yum install jdk-8u172-linux-x64.rpm
已加载插件:fastestmirror
正在检查 jdk-8u172-linux-x64.rpm: :jdk1.-1.8.0_172-fcs.x86_64
jdk-8u172-linux-x64.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 jdk1..x86_64.2000.1..0_172-fcs 将被 安装
--> 解决依赖关系完成 依赖关系解决 ==========================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================
正在安装:
jdk1. x86_64 :1.8.0_172-fcs /jdk-8u172-linux-x64 M 事务概要
==========================================================================================================================================
安装 软件包 总计: M
安装大小: M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
** 发现 个已存在的 RPM 数据库问题, 'yum check' 输出如下:
smbios-utils-bin-2.3.-.el7.x86_64 有缺少的需求 libsmbios = ('', '2.3.3', '8.el7')
正在安装 : :jdk1.-1.8.0_172-fcs.x86_64 /
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
验证中 : :jdk1.-1.8.0_172-fcs.x86_64 / 已安装:
jdk1..x86_64 :1.8.0_172-fcs 完毕!
[root@server- src]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) -Bit Server VM (build 25.172-b11, mixed mode)
您在 /var/spool/mail/root 中有新邮件
[root@server- src]#

再次安装logstash-6.2.4.rpm

[root@server- src]# rpm -ivh logstash-6.2..rpm
警告:logstash-6.2..rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [%]
软件包 logstash-:6.2.-.noarch 已经安装
[root@server- src]#

4、安装kibana-6.2.4-x86_64.rpm

[root@server- src]# rpm -ivh kibana-6.2.-x86_64.rpm
警告:kibana-6.2.-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [%]
正在升级/安装...
:kibana-6.2.- ################################# [%]
[root@server- src]#

四、相关配置与启动服务

1、Elasticsearch配置

cluster.name: test-cluster  #集群名称
node.name: node- #节点名称
path.data: /var/lib/elasticsearch #数据存放路径
path.logs: /var/log/elasticsearch #日志存放路径
network.host: 172.28.18.69 #监听IP
http.port: #监听端口
discovery.zen.ping.unicast.hosts: ["172.28.18.69"] #集群各主机地址,单机模式就一个本机IP

2、启动服务,并查看端口

[root@server- old]# systemctl start elasticsearch
[root@server- old]# netstat -tunlp|grep java
tcp6 172.28.18.69: :::* LISTEN /java
tcp6 172.28.18.69: :::* LISTEN /java

3、curl查看端口信息

[root@server- old]# curl 172.28.18.69:
{
"name" : "node-1",
"cluster_name" : "test-cluster",
"cluster_uuid" : "2oBg0RqYR2ewNeRfAN88zg",
"version" : {
"number" : "6.2.4",
"build_hash" : "ccec39f",
"build_date" : "2018-04-12T20:37:28.497551Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"

4、logstash配置

[root@server- old]# vim /etc/logstash/logstash.yml
path.data: /var/lib/logstash #数据存放路径
http.host: "172.28.18.69" #监听IP
http.port: #监听的端口
path.logs: /var/log/logstash #日志路径

5、配置logstash用户相应目录写权限

[root@server- old]# chown -R logstash /var/log/logstash/ /var/lib/logstash/
[root@server- old]#

6、新建一个配置文件用于收集系统日志

[root@server- old]# vim /etc/logstash/conf.d/syslog.conf
input{
syslog{
type => "system-syslog"
port =>
}
} #输出到elastcisearch
output{
elasticsearch{
hosts => ["172.28.18.69:9200"] #elasticsearch服务地址
index => "system-syslog-%{+YYYY.MM}" #创建的索引
}
}

7、测试日志收集配置文件

[root@server- old]# ln -s  /usr/share/logstash/bin/logstash /usr/local/bin/
[root@server- old]# logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit
Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
Configuration OK

8、启动logstash服务,并查看端口

[root@server- old]# systemctl start logstash
[root@server- old]# netstat -tunlp|grep java
tcp6 ::: :::* LISTEN /java
tcp6 172.28.18.69: :::* LISTEN /java
tcp6 172.28.18.69: :::* LISTEN /java
tcp6 172.28.18.69: :::* LISTEN /java
udp 0.0.0.0: 0.0.0.0:* /java

9600是logstash监听端口,10000是系统日志收集输入端口

9、查看elasticsearch日志收集的索引信息

[root@server- old]# curl http://172.28.18.69:9200/_cat/indices
yellow open system-syslog-2019.07 REp7fM_gSaquo9PX2_sREQ .9kb .9kb
[root@server- old]#

10、查看指定索引的详细信息

[root@server- old]# curl http://172.28.18.69:9200/system-syslog-2019.07?pretty
{
"system-syslog-2019.07" : {
"aliases" : { },
"mappings" : {
"doc" : {
"properties" : {
"@timestamp" : {
"type" : "date"
},
"@version" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
},
"facility" : {
"type" : "long"
},
"facility_label" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
},
"host" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
},
"message" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
},
"priority" : {
"type" : "long"
},
"severity" : {
"type" : "long"
},
"severity_label" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
},
"tags" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
},
"type" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "",
"number_of_shards" : "",
"number_of_replicas" : "",
"uuid" : "REp7fM_gSaquo9PX2_sREQ",
"version" : {
"created" : ""
},
"provided_name" : "system-syslog-2019.07"
}
}
}
}
[root@server- old]#

说明logstash与elasticsearch之间通讯正常

11、Kibana配置

[root@server- old]# vim /etc/kibana/kibana.yml
server.port: #监听端口
server.host: 172.28.18.69 #监听IP
elasticsearch.url: "http://172.28.18.69:9200" #elastcisearch服务地址
logging.dest: /var/log/kibana/kibana.log #日志路径

12、新建日志目录,并赋予kibana用户写权限

[root@server- old]# mkdir /var/log/kibana/
[root@server- old]# chown -R kibana /var/log/kibana/

13、启动kibana服务,并查看端口

[root@server- old]# systemctl start kibana
[root@server- old]# netstat -tunlp|grep
tcp 172.28.18.69: 0.0.0.0:* LISTEN /node

监听成功

14、kibana汉化

下载汉化包

git clone https://github.com/anbai-inc/Kibana_Hanization.git

编译

[root@server- src]# cd Kibana_Hanization/old/
[root@server- old]# python main.py /usr/share/kibana/

汉化过程较慢,耐心等待

[root@server- old]# python main.py /usr/share/kibana/
恭喜,Kibana汉化完成!
[root@server- old]#

15、重启kibana服务

[root@server- old]# systemctl restart kibana

16、浏览器访问http://172.28.18.69:5601

汉化成功

17、在kibana上创建索引

刚才Logstash中创建手机系统日志的配置文件,现在在Kibana上创建索引

系统管理--索引模式

在索引模式中输入之前配置的system-syslog-*,表示匹配所有以system-syslog-开头的索引

下一步,开始配置过滤条件,这里以时间戳为条件字段

创建索引模式

显示了所有系统日志收集的字段,点击发现,可以配置显示的字段

六、ELK收集分析Nginx日志

1、Filebeat组件

ELK的beats组件常用的有以下几种:

filebeat:进行文件和目录采集,可用于收集日志数据。

heartbeat:系统间连通性检测,可收集icmp, tcp, http等系统的连通性情况。

Winlogbeat:专门针对windows的事务日志的数据采集。

packetbeat:通过网络抓包、协议分析,收集网络相关数据。

metricbeat:进行指标采集,主要用于监控系统和软件的性能。(系统、中间件等)

2、在Nginx主机上安装Filebeat组件

[root@zabbix_server src]# cd /usr/local/src/
[root@zabbix_server src]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-x86_64.rpm
[root@zabbix_server src]# rpm -ivh filebeat-6.2.-x86_64.rpm

3、配置并启动

首先配置FielBeat采集Nginx日志,并输出到屏幕终端

[root@zabbix_server etc]# vim /etc/filebeat/filebeat.yml
filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/log/nginx/host.access.log #需要收集的日志文件路径 output.console: #设置将日志信息输出到屏幕终端
enable: true #将输出到elastcisearch设置注释掉
# output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]

保存退出, 执行以下命令来测试配置文件设置

[root@zabbix_server etc]# filebeat -c /etc/filebeat/filebeat.yml

屏幕大量显示nginx日志,表示配置成功,接下来我们配置输出到Logstash服务

filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log #需要收集的日志文件路径
fields:
log_topics: nginx-172.28.18.75 #设置日志标题 output.logstash:
hosts: ["172.28.18.69:10001"] #输出到logstash服务地址和端口

然后在Logstash服务器上创建一个新的Nginx日志收集配置文件

input {
beats {
port=>10001 #设置日志输入端口
}
} output {
if[fields][log_topics]=="nginx-172.28.18.75"{
elasticsearch {
hosts=>["172.28.18.69:9200"] #输出到elasticsearch服务地址
index=>"nginx-172.28.18.75-%{+YYYY.MM.dd}" #设置索引
}
}
}

重启logstash服务、重启nginx主机的filebeat服务

[root@server- old]# systemctl restart logstash
[root@zabbix_server filebeat]# service filebeat restart
--11T14::02.728+ INFO instance/beat.go: Home path: [/usr/share/filebeat] Config path: [/etc/filebeat] Data path: [/var/lib/filebeat] Logs path: [/var/log/filebeat]
--11T14::02.729+ INFO instance/beat.go: Beat UUID: 1435865e--45fe-86a4-72ea77d3c75d
--11T14::02.729+ INFO instance/beat.go: Setup Beat: filebeat; Version: 6.2.
--11T14::02.730+ INFO pipeline/module.go: Beat name: zabbix_server.jinglong
Config OK
Stopping filebeat: [确定]
Starting filebeat: --11T14::02.895+ INFO instance/beat.go: Home path: [/usr/share/filebeat] Config path: [/etc/filebeat] Data path: [/var/lib/filebeat] Logs path: [/var/log/filebeat]
--11T14::02.895+ INFO instance/beat.go: Beat UUID: 1435865e--45fe-86a4-72ea77d3c75d
--11T14::02.895+ INFO instance/beat.go: Setup Beat: filebeat; Version: 6.2.
--11T14::02.896+ INFO pipeline/module.go: Beat name: zabbix_server.jinglong
Config OK
[确定]

4、Kibana上配置索引

浏览器打开http://172.28.18.69:5601

系统管理-创建索引模式

可以看到已经有了nginx日志索引,创建索引模式

选择发现

可以看到ngnix的日志了。

Linux下单机部署ELK日志收集、分析环境的更多相关文章

  1. ELK日志收集分析系统配置

    ELK是日志收益与分析的利器. 1.elasticsearch集群搭建 略 2.logstash日志收集 我这里的实现分如下2步,中间用redis队列做缓冲,可以有效的避免es压力过大: 1.n个ag ...

  2. ELK日志收集分析平台部署使用

    一.ELK介绍 开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成: 1.ElasticSearch是一个基于 ...

  3. ELK日志收集分析平台 (Elasticsearch+Logstash+Kibana)使用说明

    使用ELK对返回502的报警进行日志的收集汇总 eg:Server用户访问网站返回502 首先在zabbix上找到Server的IP 然后登录到elk上使用如下搜索条件: pool_select:X. ...

  4. ELK/EFK——日志收集分析平台

    ELK——日志收集分析平台 ELK简介:在开源的日志管理方案之中,最出名的莫过于ELK了,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.1)ElasticSea ...

  5. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  6. 用ELK搭建简单的日志收集分析系统【转】

    缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...

  7. ELK:日志收集分析平台

    简介 ELK是一个日志收集分析的平台,它能收集海量的日志,并将其根据字段切割.一来方便供开发查看日志,定位问题:二来可以根据日志进行统计分析,通过其强大的呈现能力,挖掘数据的潜在价值,分析重要指标的趋 ...

  8. Kubernetes实战之部署ELK Stack收集平台日志

    主要内容 1 ELK概念 2 K8S需要收集哪些日志 3 ELK Stack日志方案 4 容器中的日志怎么收集 5 K8S平台中应用日志收集 准备环境 一套正常运行的k8s集群,kubeadm安装部署 ...

  9. SpringBoot使用ELK日志收集

    本文介绍SpringBoot应用配合ELK进行日志收集. 1.有关ELK 1.1 简介 在之前写过一篇文章介绍ELK日志收集方案,感兴趣的可以去看一看,点击这里-----> <ELK日志分 ...

随机推荐

  1. 4.数据挖掘的数据仓库与OLAP技术

    1.什么是数据仓库 面向主题的.集成的.时变的.非易失的 2.数据仓库和异种DBMS 3.OLTP vs OLAP 4.为什么建立分离的数据仓库? 5.多维数据模型(数据仓库的概念建模)三类度量 4. ...

  2. weka数据导入

    每一行代表一条数据,用逗号分开属性,最后一列为分类标签 将后缀名改为csv,用excel打开,为每一列加上属性名称,直接导入weka即可

  3. Other | 十招教你找到海量PPT模板

    转载自:https://www.douban.com/note/330962457/ 问:PPT模板是什么含义? 答: 先假定你们要的是这种网上到处泛滥成灾的主题PPT吧,下面请耐心看到最后,秋叶老师 ...

  4. Kettle使用教程之Job使用

    1.Kettle的Job使用十分简单,这里也只是演示比较简单的操作,创建Job 2.点击转换,然后点击浏览,选择转换对象 3.执行按钮,运行该转换 4.如果需要长期的进行定时转换,可以在Job中的st ...

  5. ControlTemplate in WPF —— Button

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  6. 按需加载controller——angular

    一.多视图应用 AngularJS 通过路由支持多视图应用, 可以根据路由动态加载所需的视图.随着视图的不断增加, js文件会越来越多, 而 AngularJS 默认需要把全部的 js 都一次性加载, ...

  7. 【java基础之异常】死了都要try

    目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...

  8. 自己用canvas写的贪吃蛇代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 临时产品id记录

    id: 5095552c4fb94e01b37561fac5b20b42 cf51ceb55f5341b78592e8fead31e5c8

  10. Matlab学习笔记0—课程导入

    0,Matlab语言的介绍 1.什么叫计算? 在汉语中,“计算”一词的含义: 谋划 ,考虑 , 算计.随着电子计算机的产生与应用,人们对“计算”的理解发生了很大的变化.             (1) ...