热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELK⽇志分析系统

ELK⽇志分析系统elk介绍1.应⽤需求前景(1)业务发展越来越庞⼤,服务器越来越多;(2)各种访问⽇志、应⽤⽇志、错误⽇志量越来越多,导致运维⼈员⽆法很好的去管理⽇志;(3)开

E L K ⽇ 志 分 析系统

elk介绍


1. 应⽤/需求前景

(1)业务发展越来越庞⼤,服务器越来越多;

(2)各种访问⽇志、应⽤⽇志、错误⽇志量越来越多,导致运维⼈员⽆法很好的去管理⽇志;

(3)开发⼈员排查问题,需要到服务器上查⽇志,不⽅便;

(4)运营⼈员需要⼀些数据,需要我们运维到服务器上分析⽇志。


2. 为什么要⽤ELK

如果我们查看某些服务为什么错误,可以直接使⽤grep等命令进⾏查看,可是如果我们查看规模 较⼤,⽇志较多的时候,此⽅法效率就⼩了很多。现在我们对待⼤规模的⽇志,解决思路是建⽴ 集中式⽇志收集系统,将所有节点上的⽇志统⼀收集,管理,访问。 ⼀个完整的集中式⽇志系统,需要包含以下⼏个主要特点: l 收集:能够采集多种来源的⽇志数据。 l 传输:能够稳定的把⽇志数据传输到中央系统。 l 存储:如何存储⽇志数据。 l 分析:可以⽀持 UI 分析。 l 警告:能够提供错误报告,监控机制。 ⽽ELK则提供⼀整套的解决⽅案,并且都是开源软件,之间相互配合,完美衔接,⾼效的满⾜了 很多场合的应⽤。


3. ELK简介

1、ELK是3个开源软件的缩写,分别为Elasticsearch 、 Logstash和Kibana , 它们都是开源软 件。不过现在还新增了⼀个Beats,它是⼀个轻量级的⽇志收集处理⼯具(Agent),Beats占⽤ 资源少,适合于在各个服务器上搜集⽇志后传输给Logstash,官⽅也推荐此⼯具,⽬前由于原本 的ELK Stack成员中加⼊了Beats⼯具所以已改名为Elastic Stack。

2、Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据3⼤功能。它的特点有: 分布式,零配置,⾃动发现,索引⾃动分⽚,索引副本机制,restful⻛格接⼝,多数据源,⾃动 搜索负载等。

3、Logstash主要是⽤来⽇志的搜集、分析、过滤⽇志的⼯具,⽀持⼤量的数据获取⽅式。⼀般 ⼯作⽅式为c/s架构,Client端安装在需要收集⽇志的主机上,server端负责将收到的各节点⽇志 进⾏过滤、修改等操作在⼀并发往Elasticsearch上去。

4、Kibana也是⼀个开源和免费的⼯具,Kibana可以为 Logstash和 ElasticSearch提供的⽇志分 析友好的 Web 界⾯,可以帮助汇总、分析和搜索重要数据⽇志。

5、Beats在这⾥是⼀个轻量级⽇志采集器,其实Beats家族有6个成员,早期的ELK架构中使⽤ Logstash收集、解析⽇志,但是Logstash对内存、CPU、io等资源消耗⽐较⾼。相⽐ Logstash,Beats所占系统的CPU和内存⼏乎可以忽略不计


环境配置


节点规划



























IP节点划分主机名称
192.168.200.233Elasticsearch+Kibanaelk-1
192.168.200.234Elasticsearch+Logstashelk-2
192.168.200.235Elasticsearchelk-3

修改主机名称

sudo hostname elk-1
sudo hostname elk
-2
sudo hostname elk
-3

关闭防火墙

systemctl stop firewalld
setenforce
0

配置hosts文件(所有节点)

[root@elk-1 ~]# vi /etc/hosts
[root@elk
-1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::
1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.233 elk-1
192.168.200.233 elk-2
192.168.200.233 elk-3

安装JDK

###下载
yum install
-y java-1.8.0-openjdk java-1.8.0-openjdk-devel
###查看版本
java
-version

 


Elasticserach安装


安装Elasticserach(所有节点)

[root@elk-1 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm
--2022-04-12 15:58:19-- https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm
正在解析主机 artifacts.elastic.co (artifacts.elastic.co)... 34.120.127.130, 2600:1901:0:1d7::
正在连接 artifacts.elastic.co (artifacts.elastic.co)
|34.120.127.130|:443... 已连接。
已发出 HTTP 请求,正在等待回应...
200 OK
长度:
27970243 (27M) [binary/octet-stream]
正在保存至: “elasticsearch
-6.0.0.rpm”
100%[==========================================================>] 27,970,243 53.8KB/s 用时 5m 28s
2022-04-12 16:03:48 (83.2 KB/s) - 已保存 “elasticsearch-6.0.0.rpm” [27970243/27970243])
[root@elk
-1 ~]# systemctl restart elasticsearch
Failed to restart elasticsearch.service: Unit not found.
[root@elk
-1 ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv
-Q Send-Q Local Address Foreign Address State PID/Program name
tcp
0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1010/sshd
tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1133/master
tcp6
0 0 :::22 :::* LISTEN 1010/sshd
tcp6
0 0 ::1:25 :::* LISTEN 1133/master
[root@elk
-1 ~]# ls
1.sh 2.sh anaconda-ks.cfg elasticsearch-6.0.0.rpm user_info
[root@elk
-1 ~]# rpm -ivh elasticsearch-6.0.0.rpm
警告:elasticsearch
-6.0.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [
100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级
/安装...
1:elasticsearch-0:6.0.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
[root@elk
-1 ~]#

配置Elasticserach

[root@elk-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
[root@ekl
-1 ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v ^#
cluster.name: ELK
node.name: elk
-1
node.master:
true
node.data:
true
path.data:
/var/lib/elasticsearch
path.logs:
/var/log/elasticsearch
network.host:
192.168.200.233
http.port:
9200
discovery.zen.ping.unicast.hosts: [
"elk-1","elk-2","elk-3"]
[root@elk
-2 ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v ^#
cluster.name: ELK
node.name: elk
-2
node.master:
true
node.data:
true
path.data:
/var/lib/elasticsearch
path.logs:
/var/log/elasticsearch
network.host:
192.168.200.234
http.port:
9200
discovery.zen.ping.unicast.hosts: [
"elk-1","elk-2","elk-3"]
[root@elk
-3 ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v ^#
cluster.name: ELK
node.name: elk
-3
node.master:
true
node.data:
true
path.data:
/var/lib/elasticsearch
path.logs:
/var/log/elasticsearch
network.host:
192.168.200.235
http.port:
9200
discovery.zen.ping.unicast.hosts: [
"elk-1","elk-2","elk-3"]

启动Elasticserach

[root@ekl-1 ~]# systemctl start elasticsearch
[root@ekl
-1 ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv
-Q Send-Q Local Address Foreign Address State PID/Program name
tcp
0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1018/sshd
tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1154/master
tcp6
0 0 192.168.200.233:9200 :::* LISTEN 12860/java
tcp6
0 0 192.168.200.233:9300 :::* LISTEN 12860/java
tcp6
0 0 :::22 :::* LISTEN 1018/sshd
tcp6
0 0 ::1:25 :::* LISTEN 1154/master

检测集群状态

[root@elk-1 ~]# curl '111.111.0.134:9200/_cluster/health?pretty'
{
"cluster_name" : "ELK",
"status" : "green",
//为green则代表健康没问题,yellow或者red 则是集群有问题
"timed_out" : false,
//是否有超时
"number_of_nodes" : 3,
//集群中的节点数量
"number_of_data_nodes" : 2,
//集群中data节点的数量
"active_primary_shards" : 1,
"active_shards" : 2,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}

elk-2节点部署


安装Kibana

[root@elk-1 ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-x86_64.rpm
--2022-04-12 16:33:44-- https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-x86_64.rpm
正在解析主机 artifacts.elastic.co (artifacts.elastic.co)... 34.120.127.130, 2600:1901:0:1d7::
正在连接 artifacts.elastic.co (artifacts.elastic.co)
|34.120.127.130|:443... 已连接。
已发出 HTTP 请求,正在等待回应...
200 OK
长度:
63979183 (61M) [binary/octet-stream]
正在保存至: “kibana
-6.0.0-x86_64.rpm”
100%[==========================================================>] 63,979,183 6.13MB/s 用时 14s
2022-04-12 16:33:58 (4.50 MB/s) - 已保存 “kibana-6.0.0-x86_64.rpm” [63979183/63979183])
[root@elk
-1 ~]# rpm -ivh kibana-6.0.0-x86_64.rpm
警告:kibana
-6.0.0-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [
100%]
正在升级
/安装...
1:kibana-6.0.0-1

配置Kibana

[root@ekl-1 ~]# cat /etc/kibana/kibana.yml |grep -v ^#
server.port:
5601
server.host:
192.168.200.233
elasticsearch.url:
"http://192.168.200.233:9200"
[root@ekl
-1 ~]# systemctl start kibana
[root@ekl
-1 ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv
-Q Send-Q Local Address Foreign Address State PID/Program name
tcp
0 0 192.168.200.233:5601 0.0.0.0:* LISTEN 11877/node
tcp
0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1018/sshd
tcp
0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1154/master
tcp6
0 0 192.168.200.233:9200 :::* LISTEN 12860/java
tcp6
0 0 192.168.200.233:9300 :::* LISTEN 12860/java
tcp6
0 0 :::22 :::* LISTEN 1018/sshd
tcp6
0 0 ::1:25 :::* LISTEN 1154/master

访问192.168.200.233:5601

 

 


Logstash部署


安装Logstash

[root@elk-2 ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.rpm
--2022-04-12 17:39:11-- https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.rpm
正在解析主机 artifacts.elastic.co (artifacts.elastic.co)... 34.120.127.130, 2600:1901:0:1d7::
正在连接 artifacts.elastic.co (artifacts.elastic.co)
|34.120.127.130|:443... 已连接。
已发出 HTTP 请求,正在等待回应...
200 OK
长度:
113288712 (108M) [binary/octet-stream]
正在保存至: “logstash
-6.0.0.rpm”
100%[==========================================================>] 113,288,712 8.70MB/s 用时 13s
2022-04-12 17:39:26 (8.21 MB/s) - 已保存 “logstash-6.0.0.rpm” [113288712/113288712])
[root@elk
-2 ~]# rpm -ivh logstash-6.0.0.0.rpm
warning: logstash
-6.0.0.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [
100%]
Updating
/ installing1:logstash-1:6.0.0-1 ################################# [100%]
Using provided startup.options file:
/etc/logstash/startup.options

配置Logstash

[root@elk-2 ~]# vi /etc/logstash/logstash.yml
http.host:
"111.111.1.137"
###增加权限
[root@elk
-2 ~]# chmod 644 /var/log/messages
[root@elk
-2 ~]# chown -R logstash:logstash /var/log/logstash
###配置logstash收集syslog⽇志
[root@elk
-2 ~]# cat /etc/logstash/conf.d/syslog.conf
input {
file {
path
=> "/var/log/messages"
type
=> "systemlog"
start_position
=> "beginning"
stat_interval
=> "3"
}
}
output {
elasticsearch {
hosts
=>
[
"192.168.200.233:9200","192.168.200.234:9200","192.168.200.235:9200"]
index
=> "system-log-%{+YYYY.MM.dd}"
}
}

启动Logstash

[root@elk-2 ~]# systemctl start logstash

 


Kibana上查看⽇志


浏览器访问111.111.0.134:5601,到Kibana上配置索引:

配置完成后,选择Discover,进⼊“Discover”⻚⾯后,如果出现以下提示,则是代表⽆法查找到 ⽇志信息:

 


使⽤Beats采集⽇志


安装Beats

[root@elk-3 ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.0.0-
x86_64.rpm
[root@elk
-3 ~]# rpm -ivh filebeat-6.0.0-x86_64.rpm

配置并启动Beats

[root@elk-3 ~]# vim /etc/filebeat/filebeat.yml
filebeat.prospectors:
enabled:
true
paths:
- /var/log/elasticsearch/elk.log //此处可⾃⾏改为想要监听的⽇志⽂件
output.elasticsearch:
hosts: [
"elk-2:9200","elk-1:9200","elk-3:9200"]
[root@elk-3 ~]# systemctl start filebeat

 查看日志

[root@elk-3 ~]# curl 'elk1:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana yezntEXpQiOmYcgzo2yU2Q
1 1 2 0 14.3kb 14.3kb
yellow open filebeat
-6.0.0-2022.04.25 DMk3qNSAQPyF88DVAePXzA 3 1 101 0 46.3kb 46.3kb
yellow open filebeat
-6.0.0-2022.05.06 Qop9MkQyTvWWzBJPFI_LLw 3 1 0 0 233b 233b

 

 

 



推荐阅读
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  •                               前言日志,一直以来都是开发人员和运维人员最关心的问题。开发人员可通过日志记录来协助问题定位,运维人员可通过日志发现系统隐 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
  • 智慧博物馆信息系统建设方案
    3.信息化系统建设3.1博物馆RFID藏品管理系统3.1.1系统概述博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修 ... [详细]
  • 提供:ZStack云计算原创2016-12-26张鑫讲师介绍张鑫ZStack总架构师、联合创始人《系统虚拟化》主要作者,曾任职Intel开源软件技术中心 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
author-avatar
六尾11
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有