目录
一、现状需求
(一)现状与问题
(二)需求说明与分析
二、建设目标
三、系统设计
(一)技术选型
(二)系统架构
(三)系统介绍
四、实施方案
1、日志类型
2、软件版本
3、系统硬件
五、安全认证X-Pack
六、Dashboard 效果图展示
6.1 Nginx 日志仪表盘
6.2 网络日志仪表盘
6.3 Linux 日志仪表盘
6.4 Windows 日志仪表盘
七、Discover 查看搜索日志
7.1 Nginx 搜索日志
7.2 网络搜索日志
7.3 Linux搜索日志
7.4 Windows搜索日志
八、ZABBIX
九、Grafana
一、现状需求
(一)现状与问题
- 日志文件被分散在各个应用服务器上,运维开发人员需要依次登录每台设备才能查看日志,效率低下,且不利于服务器安全管控,加大生产服务器的风险;
- 服务器上各项目日志配置随意,文件分布杂乱,没有统一的规范和管理;
- 日志文件占用服务器大量的硬盘空间,如不及时清理会发生硬盘占满,影响系统的正常运行;
- 对于超过百兆的日志文件根本没法打开和关键字搜索,不利于问题的快速定位和排查;
- 集群和分布式的系统需要查看多个服务器的日志
- 日志保存的时间不统一,不能长时间保存日志
(二)需求说明与分析
- 不需要运维开发人员登录生产服务器就能查看日志;
- 实现统一规范日志配置和输出格式;
- 实时的将日志文件从服务器中迁出;
- 提供日志的检索和统计分析的平台;
- 实现对特定关键日志的告警推送;
二、建设目标
- 为运维人员提供统一查看日志信息平台,实时了解操作系统、网络设备、业务、数据库的运行情况。提高解决故障的效率,提升故障预警能力。为开发和运维人员排查故障提供日志查看和搜索功能。
- 网站用户行为分析,对Nginx 访问的 URL 、地区分布 、终端类型、延迟等参数进行采集分析展示。
三、系统设计
(一)技术选型
针对上述问题,为了提供分布式的实时日志搜集和分析的监控系统,我们采用了业界通用的日志数据管理解决方案 - 它主要包括 Elasticsearch 、 Logstash 和 Kibana 三个系统。通常,业界把这套方案简称为ELK,取三个系统的首字母。调研了ELK技术栈,发现新一代的logstash-forward即Filebeat,使用了golang,性能超logstash,部署简单,占用资源少,可以很方便的和logstash和ES对接,作为日志文件采集组件。所以决定使用ELK Filebeat的架构进行平台搭建。
为了支持日志的高并发和高可靠需要进了消息队列(MQ),选择了kafka,相对其他消息中间件,kafka有支持大并发,快速持久化等优点,并且ELK Filebeat对kafka的兼容性也很好。
最终,采用Elasticsearch Logstash Kibana Filebeat Kafka Zookeeper Zabbix Grafana 的架构构建日志采集分析平台。
(二)系统架构
1.系统架构图
2.架构分析
第一层、数据采集层,数据缓存层
在业务应用服务器安装 filebeat 做日志采集,同时filebeat将采集的日志转送至kafka/zookeeper集群。
第二层、数据处理层
logstash从kafka/zookeeper 集群主机拉取数据进行字段的清洗过滤规范输出格式;
第三层、数据转发层
(1)logstash 将清洗过滤后规范的日志转发至ES DataNode。
(2)logsatsh 将特定的关键日志推送至zabbix 进行告警。
第四层、数据持久化存储
ES DataNode 会把收到的数据,写磁盘,建索引库。
第五层、数据检索,kibana数据展示
ES Master Kibana 主要 协调 ES集群,处理数据检索请求,数据展示;
第六层、统一数据展示层
Grafana 将ES的数据和zabbix 的数据进行统一的大屏展示;
(三)系统介绍
1. Elasticsearch 、Logstash 、Kibana 、Beats
Elasticsearch 是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能。是一套开放 REST 和 Java API 等结构提供高效搜索功能,可扩展的分布式系统。它构建于 Apache Lucene 搜索引擎库之上。
Logstash 是一个用来搜集、分析、清洗过滤日志的工具。它支持几乎任何类型的日志, 包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog 、消息传递(例如 RabbitMQ )和 JMX,它能够以多种方式输 出数据,包括电子邮件、 websockets 和 Elasticsearch 。
Kibana 是 一 个 基 于 Web 的 图 形 界 面 , 用 于 搜 索 、 分 析 和 可 视 化 存 储 在 Elasticsearch 指标中的日志数据。它利用 Elasticsearch 的 REST 接口来检索数据, 不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查 询和过滤数据。
Beats包括 filebeat 和 winlogbeat 等,轻量级日志代理,相对于 logstash 占用系统资源少。
2. KafKa/Zookeeper
KafKa是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,作为消息队列解耦了处理过程,同时提高了可扩展性。具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
Zookeeper:是一种在分布式系统中被广泛用来作为:分布式状态管理、分布式协调管理、分布式配置管理、和分布式锁服务的集群。kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kafka系统会捕获这些事件,进行新一轮的负载均衡,客户端也会捕获这些事件来进行新一轮的处理。
KafKa的运行依赖于Zookeeper(kafka集成zookeeper,单机部署kafka可以使用集成的zookeeper,集群部署则新建zookeeper集群)。Topic、Consumer、Patition、Broker等注册信息都存储在ZooKeeper中。
3. ZABBIX
Zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
4. Grafana
Grafana是一款用go语言开发的跨平台的开源度量分析和可视化工具,可以通过将采集的数据进行查询监控可视化的展示。
四、实施方案
1、日志类型
◆ Nginx日志:Nginx访问日志以及Nginx错误日志。
◆ 网络设备日志:网路设备硬件告警信息 端口UP/Down 等日志。
◆ 系统日志 :系统层错误、告警日志。
◆ 用户登录日志 :系统登陆成功和失败的源主机和账户信息。
◆ Windows日志 :包含系统系统应用、安全事件等信息。
2、软件版本
代码语言:javascript复制jdk-11.0.7
elasticsearch-7.6.2-1.x86_64
logstash-7.6.2-1.noarch
kibana-7.6.2-1.x86_64
filebeat-7.6.2-1.x86_64
zookeeper-3.5.7
kafka_2.12-2.5.0
rsyslog-8.24.0-38.el7.x86_64
zabbix-server 4.2.7
zabbix-agent 4.2.7
grafana_6.4.0-1.x86_64
3、系统硬件
Hostname | CPU | Memory | Disk | System os |
---|---|---|---|---|
elk-node1 | 2路12核 | 64G | 4T | CentOS 7.7.1908 |
elk-node2 | 2路12核 | 64G | 4T | CentOS 7.7.1908 |
elk-node3 | 2路12核 | 64G | 4T | CentOS 7.7.1908 |
elk-node4 | 2路12核 | 64G | 4T | CentOS 7.7.1908 |
kafka-node1 | 2路8核 | 16G | 500G | CentOS 7.7.1908 |
kafka-node2 | 2路8核 | 16G | 500G | CentOS 7.7.1908 |
kafka-node3 | 2路8核 | 16G | 500G | CentOS 7.7.1908 |
zabbix-server | 2路4核 | 16G | 500G | CentOS 7.7.1908 |
grafana-server | 2路4核 | 8G | 500G | CentOS 7.7.1908 |
五、安全认证X-Pack
Elastic 从 6.8.0 版本后 X-Pack核心安全功能现免费提供。可对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色.为Kibana 提供用户身份验证。
提供的核心安全功能如下:
1,TLS 功能。可对通信进行加密;
2,文件和原生 Realm。可用于创建和管理用户;
3,基于角色的访问控制。可用于控制用户对集群 API 和索引的访问权限;
4,通过针对 Kibana Spaces 的安全功能,还可允许在Kibana 中实现多租户;
六、Dashboard 效果图展示
6.1 Nginx 日志仪表盘
6.2 网络日志仪表盘
6.3 Linux 日志仪表盘
6.4 Windows 日志仪表盘
七、Discover 查看搜索日志
7.1 Nginx 搜索日志
访问日志索引logstash-nginx.access-*
错误日志索引 nginx.error-*
7.2 网络搜索日志
索引networklogs-*
7.3 Linux搜索日志
索引secure-*
索引 messges-*
7.4 Windows搜索日志
索引winlogbeat-*
八、ZABBIX
九、Grafana