济南设计网站的公司,单位网站建设ppt,做外贸用什么视频网站好,佛山建网站永网本章结构#xff1a;
1、ELK日志分析系统简介
2、Elasticsearch介绍#xff08;简称ES#xff09;
3、Logstash介绍
4、Kibana介绍
5、实验#xff0c;ELK部署 一、ELK日志分析系统简介
ELK平台是一套完整的日志集中处理解决方案#xff0c;将 ElasticSearch、Logst…本章结构
1、ELK日志分析系统简介
2、Elasticsearch介绍简称ES
3、Logstash介绍
4、Kibana介绍
5、实验ELK部署 一、ELK日志分析系统简介
ELK平台是一套完整的日志集中处理解决方案将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用。 可以提高安全性集中存放日志完成更强大的用户对日志的查询、排序、统计需求。
缺点对日志的分析困难 日志处理步骤 1、将日志进行集中化管理 2、将日志格式化(Logstash)并输入到ES 3、对格式化后的数据进行索引和存储(ES对存储数据的类型进行分类) 4、前端数据的展示(Kibana) 总结logstash作为日志搜集器从数据源采集数据并对数据进行过滤格式化处理然后交由Elasticsearch存储kibana对日志进行可视化处理。 二、Elasticsearch
提供一个分布式多用户能力的全文搜索引擎
1、Elasticsearch核心概念
接近时实NRT
搜索速度非常的快轻微的延迟。
集群cluster
将一个或多个节点组织在一起组成一个cluster集群。集群有一个唯一标志的名字默认Elasticasearch每个节点基于集群名字加入到集群中且在集群中使用自己的名字来身份标识。
节点node 每一个节点就是一台单台服务器。
索引index
一个索引由一个名字来标识必须全部是小写字母并且当我们要多对应这个索引中的文档进行索引、更新、删除的时候都要使用到这个名字。
类型type
在一个索引中你可以定义一个或多种类型。比如当我们存储一个购物平台的数据时可以定义一个用户数据类型产品数据类型等。
文档document
一个文档是一个可被索引的基础信息单元 2、分片和副本
什么是分片 索引存储的数据可能超过单个节点的硬件限制。为了解决这个问题ES提供了将索引分成多个分片的功能当在创建索引时可以定义想要的分片数量每一个分片就是一个全功能独立的索引。 为什么要分片 水平分割扩展增大存储量分布式并跨越分片操作 提高性能和吞吐量 什么是副本 为了健壮性高可用性可以故障切换。es将分片复制一份或多份放在不同的节点主机上称为分片副本。 为什么要副本 高可用性以应对分片或者节点故障出于这个原因分片副本要在不同的节点上。性能加强增强吞吐量搜索可以并行在所有副本上执行 3、es和传统数据库的区别
①结构名称不同 关系型数据库数据库–表–行—列 Elasticsearch:索引—类型—文档----字段 ②ES分布式传统数据库遍历式索引 ES支持分片和复制从而方便水平分割和扩展复制保证可es的高可用与高吞吐。 在es中当你创建一个索引数据库的时候你可以指定你想要的分片的数量每个分片本身也是一个功能完善并且独立的索引数据库索引可以被防止到集群中的任何节点上。 分片的优点 1、允许你水平分割/扩展你的内容容量 2、允许你在分片之上进行分布式的并行的操作进而提高性能/吞吐量 3、分片的分布它的文档怎么聚合回搜索请求完全有Elasticsearch管理 ③ES采用倒排索引传统数据库采用B树索引
正排索引id----values倒排索引values—id
④ES没有用户验证和权限控制
⑤ES没有事务的概念不支持回滚误删不能恢复
⑥ES免费完全开源传统的数据库部分免费 二、Logstash概述
一款强大的数据处理工具可实现数据传输、格式处理、格式化输出数据输入、数据加工过滤、改写等以及数据输出
由三个组件组成Input、Output、Filter Plugin Input获取日志Output输出日志Filter Plugin过滤日志、格式处理 1、Log Stash主要组件
Shipper(日志收集)负责监控本地日志文件的变化及时把日志文件的最新内容收集起来。通常远程代理端agent只需要运行这个组件即可 Indexer(日志存储)负责接收日志并写入到本地文件 Broker(日志Hub)负责连接多个Shipper和多个Indexer Search and Storage允许对事件进行搜索和存储 Web Interface基于Web的展示界面 三、Kibana 概述
一个针对Elastcsearch的开源分析及可视化平台搜索、查看存储在ES 索引中的数据通过各种图标进行高级数据分析及展示
1、Kibana主要功能
①Elasticsearch无缝之集成
kibana架构为ES 定制可以将任意结构和非结构加入到ES索引。
②整合数据
更好的对ES 数据进行分析处理 。能够处理海量数据智能的分析数据。
③让更多团队成员收益
④接口灵活分享容易
使用Kibana可以更加方便地创建、保存、分享数据并将可视化数据快速交流。
⑤配置简单
自带web服务器快速启动运行
⑥可视化多数据源
Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch支持的第三方技术包括Apache flume、 Fluentd 等。
⑦简单数据导出
Kibana可以方便地导出感兴趣的数据与其它数据集合并融合后快速建模分析发现新结果。 四、ELK的优点
1、处理方式灵活Elasticsearch是全文索引具有强大的搜索能力
2、配置相对简单Kibana的配置非常简单Eslasticsearch则全部使用Json接口配置也不复杂Logstash的配置使用模块的方式配置也相对简单。
3、检索性高ELK架构通常可以达到百亿数据的查询秒级响应
4、集群线性扩展Elasticsearch本身没有单点的挂念自动默认集群模式Elasticsearch和Logstash都可以
5、灵活扩展
6、页面美观。 五、部署ELK日志分析系统
部署环境
主机名ip地址主要软件系统node1192.168.88.10ElasticSearh、Kibanacentos7.5node2192.168.88.20ElasticSearhcentos7.5apache192.168.88.30Logstash、Apachecentos7.5 ELK Elasticsearch 集群部署在Node1、Node2节点上操作
1环境准备 #更改主机名、配置域名解析、查看Java环境 Node1节点hostnamectl set-hostname node1 Node2节点hostnamectl set-hostname node2 vim /etc/hosts 192.168.88.10 node1 192.168.88.20 node2 注版本问题 java -version #如果没有安装yum -y install java openjdk version 1.8.0_131 OpenJDK Runtime Environment (build 1.8.0_131-b12) OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode) 建议使用jdk 2部署 Elasticsearch 软件
1安装elasticsearch—rpm包 #上传elasticsearch-5.5.0.rpm到/opt目录下 cd /opt rpm -ivh elasticsearch-5.5.0.rpm 2加载系统服务 systemctl daemon-reload systemctl enable elasticsearch.service 3修改elasticsearch主配置文件 cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak vim /etc/elasticsearch/elasticsearch.yml --17--取消注释指定集群名字 cluster.name: my-elk-cluster --23--取消注释指定节点名字Node1节点为node1Node2节点为node2 node.name: node1 --33--取消注释指定数据存放路径 path.data: /data/elk_data --37--取消注释指定日志存放路径 path.logs: /var/log/elasticsearch/ --43--取消注释改为在启动的时候不锁定内存 bootstrap.memory_lock: false --55--取消注释设置监听地址0.0.0.0代表所有地址 network.host: 0.0.0.0 --59--取消注释ES 服务的默认监听端口为9200 http.port: 9200 --68--取消注释集群发现通过单播实现指定要发现的节点 node1、node2 discovery.zen.ping.unicast.hosts: [node1, node2 grep -v ^# /etc/elasticsearch/elasticsearch.yml 检查修改是否正确 4创建数据存放路径并授权 mkdir -p /data/elk_data chown elasticsearch:elasticsearch /data/elk_data/ 5启动elasticsearch是否成功开启 systemctl start elasticsearch.service netstat -antp | grep 9200 6查看节点信息
浏览器访问 http://192.168.88.10:9200 、 http://192.168.88.20:9200 查看节点 Node1、Node2 的信息。
浏览器访问 http://192.168.88.10:9200/_cluster/health?pretty 、 http://192.168.88.20:9200/_cluster/health?pretty查看群集的健康情况可以看到 status 值为 green绿色 表示节点健康运行。
浏览器访问 http://192.168.88.10:9200/_cluster/state?pretty 检查群集状态信息。
#使用上述方式查看群集的状态对用户并不友好可以通过安装 Elasticsearch-head 插件可以更方便地管理群集。 3安装 Elasticsearch-head 插件
Elasticsearch 在 5.0 版本后Elasticsearch-head 插件需要作为独立服务进行安装需要使用npm工具NodeJS的包管理工具安装。 安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。 node是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 phantomjs是一个基于 webkit 的JavaScriptAPI可以理解为一个隐形的浏览器任何基于 webkit 浏览器做的事情它都可以做到。
1编译安装 node #上传软件包 node-v8.2.1.tar.gz 到/opt yum install gcc gcc-c make -y 2安装 phantomjs前端的框架 #上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt/ 3安装 Elasticsearch-head 数据可视化工具 #上传软件包 elasticsearch-head.tar.gz 到/opt 4修改 Elasticsearch 主配置文件 vim /etc/elasticsearch/elasticsearch.yml --末尾添加以下内容-- http.cors.enabled: true #开启跨域访问支持默认为 false http.cors.allow-origin: * #指定跨域访问允许的域名地址为所有 5启动 elasticsearch-head 服务
#必须在解压后的 elasticsearch-head 目录下启动服务进程会读取该目录下的 gruntfile.js 文件否则可能启动失败。 cd /usr/local/src/elasticsearch-head/ npm run start elasticsearch-head0.0.0 start /usr/local/src/elasticsearch-head grunt server
Running connect:server (connect) task Waiting forever... Started connect web server on http://localhost:9100
#elasticsearch-head 监听的端口是 9100 netstat -natp |grep 9100 #elasticsearch-head 监听的端口是 9100 6通过 Elasticsearch-head 查看 Elasticsearch 信息
通过浏览器访问 http://192.168.88.10:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色代表群集很健康。 7插入索引
#通过命令插入一个测试索引索引为 index-demo类型为 test。 curl -X PUT localhost:9200/index-demo1/test/1?prettypretty -H content-Type: application/json -d {user:zhangsan,mesg:hello world} 可以在网页中查看到数据 浏览器访问 http://192.168.88.10:9100/ 查看索引信息可以看见索引默认被分片5个并且有一个副本。 点击“数据浏览”会发现在node1上创建的索引为 index-demo1类型为 test 的相关信息。 ELK Logstash 部署在 Apache 节点上操作 ELK Logstash 部署在 Apache 节点上操作 Logstash 一般部署在需要监控其日志的服务器。在本案例中Logstash 部署在 Apache 服务器上用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。 1更改主机名
hostnamectl set-hostname apache 2安装Apahce服务httpd yum -y install httpd systemctl start httpd 3安装Java环境 yum -y install java java -version 4安装logstash #上传软件包 logstash-5.5.1.rpm 到/opt目录下 cd /opt rpm -ivh logstash-5.5.1.rpm systemctl start logstash.service systemctl enable logstash.service ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ 5测试 Logstash Logstash 命令常用选项 -f通过这个选项可以指定 Logstash 的配置文件根据配置文件配置 Logstash 的输入和输出流。 -e从命令行中获取输入、输出后面跟着字符串该字符串可以被当作 Logstash 的配置如果是空则默认使用 stdin 作为输入stdout 作为输出。 -t测试配置文件是否正确然后退出。 定义输入和输出流 #输入采用标准输入输出采用标准输出类似管道 logstash -e input { stdin{} } output { stdout{} } www.baidu.com #键入内容标准输入 2020-12-22T03:58:47.799Z node1 www.baidu.com #输出结果标准输出 www.sina.com.cn #键入内容标准输入 2017-12-22T03:59:02.908Z node1 www.sina.com.cn #输出结果标准输出 //执行 ctrlc 退出 #使用 rubydebug 输出详细格式显示codec 为一种编解码器 logstash -e input { stdin{} } output { stdout{ codecrubydebug } } www.baidu.com #键入内容标准输入 { timestamp 2020-12-22T02:15:39.136Z, #输出结果处理后的结果 version 1, host apache, message www.baidu.com } #使用 Logstash 将信息写入 Elasticsearch 中
logstash -e input { stdin{} } output { elasticsearch { hosts[192.168.88.10:9200] } } 输入 输出 对接 ...... www.baidu.com #键入内容标准输入 www.sina.com.cn #键入内容标准输入 www.google.com #键入内容标准输入
//结果不在标准输出显示而是发送至 Elasticsearch 中可浏览器访问 http://192.168.88.10:9100/ 查看索引信息和数据浏览。 6定义 logstash配置文件 Logstash 配置文件基本由三部分组成input、output 以及 filter可选根据需要选择使用。 input表示从数据源采集数据常见的数据源如Kafka、日志文件等 filter表示数据处理层包括对数据进行格式化处理、数据类型转换、数据过滤等支持正则表达式 output表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。 #格式如下 input {...} filter {...} output {...} #在每个部分中也可以指定多个访问方式。例如若要指定两个日志来源文件则格式如下 input { file { path /var/log/messages type syslog} file { path /var/log/httpd/access.log type apache} } #修改 Logstash 配置文件让其收集系统日志/var/log/messages并将其输出到 elasticsearch 中。 chmod r /var/log/messages #让 Logstash 可以读取日志 vim /etc/logstash/conf.d/system.conf input { file{ path /var/log/messages #指定要收集的日志的位置 type system #自定义日志类型标识 start_position beginning #表示从开始处收集 } } output { elasticsearch { #输出到 elasticsearch hosts [192.168.88.10:9200] #指定 elasticsearch 服务器的地址和端口 index system-%{YYYY.MM.dd} #指定输出到 elasticsearch 的索引格式 } } systemctl restart logstash 浏览器访问 http://192.168.88.10:9100/ 查看索引信息 ELK Kiabana 部署在 Node1 节点上操作
1安装 Kiabana #上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录 cd /opt rpm -ivh kibana-5.5.1-x86_64.rpm 2设置 Kibana 的主配置文件 vim /etc/kibana/kibana.yml --2--取消注释Kiabana 服务的默认监听端口为5601 server.port: 5601 --7--取消注释设置 Kiabana 的监听地址0.0.0.0代表所有地址 server.host: 0.0.0.0 --21--取消注释设置和 Elasticsearch 建立连接的地址和端口 elasticsearch.url: http://192.168.88.10:9200 --30--取消注释设置在 elasticsearch 中添加.kibana索引 kibana.index: .kibana 3启动 Kibana 服务 systemctl start kibana.service systemctl enable kibana.service netstat -natp | grep 5601 4验证 Kibana 浏览器访问 http://192.168.88.10:5601 第一次登录需要添加一个 Elasticsearch 索引 Index name or pattern //输入system-* #在索引名中输入之前配置的 Output 前缀“system” 单击 “create” 按钮创建单击 “Discover” 按钮可查看图表信息及日志信息。 数据展示可以分类显示在“Available Fields”中的“host”然后单击 “add”按钮可以看到按照“host”筛选后的结果 5将 Apache 服务器的日志访问的、错误的添加到 Elasticsearch 并通过 Kibana 显示 vim /etc/logstash/conf.d/apache_log.conf input { file{ path /etc/httpd/logs/access_log type access start_position beginning } file{ path /etc/httpd/logs/error_log type error start_position beginning } } output { if [type] access { elasticsearch { hosts [192.168.88.10:9200] index apache_access-%{YYYY.MM.dd} } } if [type] error { elasticsearch { hosts [192.168.88.10:9200] index apache_error-%{YYYY.MM.dd} } } } 浏览器访问 http://192.168.88.10:9100 查看索引是否创建 浏览器访问 http://192.168.88.10:5601 登录 Kibana单击“Create Index Pattern”按钮添加索引 在索引名中输入之前配置的 Output 前缀 apache_access-*并单击“Create”按钮。在用相同的方法添加 apache_error-*索引。 选择“Discover”选项卡在中间下拉列表中选择刚添加的 apache_access-* 、apache_error-* 索引 可以查看相应的图表及日志信息。 FilebeatELK 部署 ---------------------- FilebeatELK 部署 ---------------------- Node1节点2C/4Gnode1/192.168.88.10 Elasticsearch Kibana Node2节点2C/4Gnode2/192.168.88.20 Elasticsearch Apache节点apache/192.168.88.30 Logstash Apache Filebeat节点filebeat/192.168.88.40 Filebeat 在 Node1 节点上操作
1安装 Filebeat,在 Node1 节点上操作 #上传软件包 filebeat-6.2.4-linux-x86_64.tar.gz 到/opt目录 tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz mv filebeat-6.2.4-linux-x86_64/ /usr/local/filebeat 2设置 filebeat 的主配置文件 vim filebeat.yml filebeat.prospectors: - type: log #指定 log 类型从日志文件中读取消息 enabled: true paths: - /var/log/messages #指定监控的日志文件 - /var/log/*.log fields: #可以使用 fields 配置选项设置一些参数字段添加到 output 中 service_name: filebeat log_type: log service_id: 192.168.88.40 --------------Elasticsearch output------------------- (全部注释掉) ----------------Logstash output--------------------- output.logstash: hosts: [192.168.88.30:5044] #指定 logstash 的 IP 和端口 #启动 filebeat ./filebeat -e -c filebeat.yml 3在 Logstash 组件所在节点上新建一个 Logstash 配置文件 cd /etc/logstash/conf.d vim logstash.conf input { beats { port 5044 } } output { elasticsearch { hosts [192.168.88.10:9200] index %{[fields][service_name]}-%{YYYY.MM.dd} } stdout { codec rubydebug } } #启动 logstash logstash -f logstash.conf 5浏览器访问 http://192.168.88.10:5601 登录 Kibana
单击“Create Index Pattern”按钮添加索引“filebeat-*”单击 “create” 按钮创建单击 “Discover” 按钮可查看图表信息及日志信息。