Linux下单机部署ELK日志收集、分析环境
一、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日志收集、分析环境的更多相关文章
- ELK日志收集分析系统配置
ELK是日志收益与分析的利器. 1.elasticsearch集群搭建 略 2.logstash日志收集 我这里的实现分如下2步,中间用redis队列做缓冲,可以有效的避免es压力过大: 1.n个ag ...
- ELK日志收集分析平台部署使用
一.ELK介绍 开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成: 1.ElasticSearch是一个基于 ...
- ELK日志收集分析平台 (Elasticsearch+Logstash+Kibana)使用说明
使用ELK对返回502的报警进行日志的收集汇总 eg:Server用户访问网站返回502 首先在zabbix上找到Server的IP 然后登录到elk上使用如下搜索条件: pool_select:X. ...
- ELK/EFK——日志收集分析平台
ELK——日志收集分析平台 ELK简介:在开源的日志管理方案之中,最出名的莫过于ELK了,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.1)ElasticSea ...
- Linux下rsyslog日志收集服务环境部署记录【转】
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
- 用ELK搭建简单的日志收集分析系统【转】
缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...
- ELK:日志收集分析平台
简介 ELK是一个日志收集分析的平台,它能收集海量的日志,并将其根据字段切割.一来方便供开发查看日志,定位问题:二来可以根据日志进行统计分析,通过其强大的呈现能力,挖掘数据的潜在价值,分析重要指标的趋 ...
- Kubernetes实战之部署ELK Stack收集平台日志
主要内容 1 ELK概念 2 K8S需要收集哪些日志 3 ELK Stack日志方案 4 容器中的日志怎么收集 5 K8S平台中应用日志收集 准备环境 一套正常运行的k8s集群,kubeadm安装部署 ...
- SpringBoot使用ELK日志收集
本文介绍SpringBoot应用配合ELK进行日志收集. 1.有关ELK 1.1 简介 在之前写过一篇文章介绍ELK日志收集方案,感兴趣的可以去看一看,点击这里-----> <ELK日志分 ...
随机推荐
- 查询Oracle表空间使用情况
,),'990.99')||'%' "使用比(%)",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)" ...
- k8s, etcd 多节点集群部署问题排查记录
目录 文章目录 目录 部署环境 1. etcd 集群启动失败 解决 2. etcd 健康状态检查失败 解决 3. kube-apiserver 启动失败 解决 4. kubelet 启动失败 解决 5 ...
- VIM常用操作手册
VIM常用操作手册 1.多行操作,多行注释,多行取消注释 https://jingyan.baidu.com/article/9c69d48f43ed6d13c8024e7b.html 2.常用操作 ...
- nginx下配置vue前端项目
server { listen 80; server_name _; root /opt/h5/index/; location / { index index.html index.htm inde ...
- JAVA 编程思想一
1: 动态绑定和静态绑定 使用private或static或final修饰的变量或者方法,使用静态绑定.而虚方法(可以被子类重写的方法)则会根据运行时的对象进行动态绑定: 静态绑定使用类信息来完成,而 ...
- json得回顾
- Synchronized及其实现原理(一)
一.Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法.Synchronized的作用主要有三个:(1)确保线程互斥的访问同步 ...
- Elasticsearch-数据的存储、搜索(干货)
ES-深入功能ES中数据是如何组织的?逻辑设计:用于索引和搜索的基本单位是文档,可以将其认为是关系数据库里的一行.文档以类型来分组,类型包含若干文档,类似表格包含若干行.最终,一个或多个类型存在于同一 ...
- POJ2387 Til the Cows Come Home (最短路 dijkstra)
AC代码 POJ2387 Til the Cows Come Home Bessie is out in the field and wants to get back to the barn to ...
- 问题:C++类的静态成员变量如何初始化
C++类的静态成员变量属于该类,在该类所有的对象间共享. 要弄清如何初始化,首先要明白声明.定义.初始化三个概念的不同. 声明:指定变量的名字和类型,可以多次声明. 定义:为该成员变量分配存储空间,有 ...