共计 2914 个字符,预计需要花费 8 分钟才能阅读完成。
一、项目背景
运维人员需要对系统和业务日志进行精准把控,便于分析系统和业务状态。日志分布在不同的服务器上,传统的使用传统的方法依次登录每台服务器查看日志,既繁琐又效率低下。所以我们需要 **集中化 的日志管理工具将 位于不同服务器上的日志收集到一起, 然后进行分析, 展示 **。
前面我们学习过 rsyslog, 它就可以实现集中化的日志管理,可是 rsyslog 集中后的日志实现统计与检索又成了一个问题。使用 wc, grep, awk 等相关命令可以实现统计与检索,但如果要求更高的场景,这些命令也会力不从心。所以我们需要一套专业的日志收集分析展示系统。
二、项目分析
2.1、数据分析流程
- 数据收集
- 数据分析
- 数据展示
明确数据分析流程后,我们来看一下能够进行数据处理的软件 -ELK
ELK 是一套开源的日志分析系统,由 elasticsearch+logstash+Kibana 组成。它可以实时的收集、处理、展示分析数据,可以让人通过图表直观的看到数据分析结果。
ELK 一般应用数据分析领域比如:
日志分析处理
结合 Hadoop 实现大数据分析处理和展示
数据搜索
三、认识 ELK
ELK 介绍
ELK 是一套开源的日志分析系统,由 elasticsearch+logstash+Kibana 组成。
官网说明:https://www.elastic.co/cn/products
首先: 先一句话简单了解 E,L,K 这三个软件
Elasticsearch 垃圾处理厂
Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可靠性和管理便捷性而设计
Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
Logstash 垃圾中转站
Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与 Elasticsearch 产生强大的协同作用。
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。(我们的存储库当然是 Elasticsearch)
Kibana 垃圾处理报表
Kibana 能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack。
Kibana 让您能够自由地选择如何呈现您的数据。或许您一开始并不知道自己想要什么。不过借助 Kibana 的交互式可视化,您可以先从一个问题出发,看看能够从中发现些什么。
一张图片胜过千万行日志
Beats 垃圾桶 垃圾回收车
Beats 是轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。
Beats 是数据采集的得力工具。将这些采集器安装在您的服务器中,它们就会把数据汇总到 Elasticsearch。如果需要更加强大的处理性能,Beats 还能将数据输送到 Logstash 进行转换和解析。
ELK 下载地址:https://www.elastic.co/cn/downloads
四、ELK 学习准备
4.1、实验拓扑图:
-
收集系统日志
F-E-K
L-E-K
F-L-E-K
-
收集 web 服务器 access.log 日志
-
收集 mysql slow 日志
4.2、部署前准备
- 静态 IP(要求能上公网, 最好用虚拟机的 NAT 网络类型上网)
- 主机名及 IP 绑定
- 关闭防火墙和 selinux
- 时间同步 chrony
- yum 源(centos 安装完系统后的默认 yum 源就 OK)
-
所有服务器全部采用静态 ip
主机名称 IP 地址 角色 manage01 192.168.98.200/24 kibana 数据展示 node1 192.168.98.201/24 ES1 node2 192.168.98.202/24 ES2 node3 192.168.98.203/24 logstash 或(业务机器) node4 192.168.98.204/24 filebeat- 业务机器 -
主机名及 IP 互相绑定
[root@manage01 ~]# cat /etc/hosts 127.0.0.1 localhost ::1 localhost 192.168.98.200 manage01 192.168.98.201 node1 192.168.98.202 node2 192.168.98.203 node3 192.168.98.204 node4 其他机器同理
-
关闭防火墙, selinux
[root@manage01 ~]# systemctl disable firewalld [root@manage01 ~]# iptables -F [root@manage01 ~]# iptables -t nat -F [root@manage01 ~]# sed -i -r '/SELINUX=/c\SELINUX=disabled' /etc/selinux/config [root@manage01 ~]# reboot 其他机器同理
-
采用时间服务器,时间同步
1、修改配置文件,配置时间服务器为阿里云的时间服务器 [root@manage01 ~]# egrep "^server" /etc/chrony.conf server ntp1.aliyun.com server ntp2.aliyun.com server ntp3.aliyun.com server ntp4.aliyun.com # 注释 # pool 2.centos.pool.ntp.org iburst 2、重启服务 chronyd [root@manage01 ~]# systemctl restart chronyd.service 3、查看源信息 #chronyc chrony 的命令行客户端 [root@manage01 ~]# chronyc sources -v 210 Number of sources = 2 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [yyyy] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? 120.25.115.20 2 6 1 3 +663us[+663us] +/- 23ms ^? 203.107.6.88 2 6 1 2 -1326us[-1326us] +/- 17ms
-
yum 源设置
建议采用默认 yum 源就可以