ELK日志分析系统介绍及部署
一、ELK日志分析系统简介
1.1 普通日志服务器:
提高安全性
集中存放日志
缺陷
对日志的分析困难
1.2 ELK日志分析系统的组成
Elasticsearch
Logstash
Kibana
1.3 ELK日志系统处理步骤
将日志进行集中化管理
将日志格式化(Logstash)并输出到Elasticsearch
对格式化后的数据进行索引和存储(Elasticsearch)
前端数据的展示(Kibana)
二、Elasticsearch简介
提供了一个分布式多用户能力的全文搜索引擎
2.1 Elasticsearch 的基础核心概念
接近实时(NRT):Elasticsearch 是一个搜索速度接近实时的搜索平台,响应速度非常快,从开始索引一个文档到这个文档能够被搜索到只有一个轻微的延迟(通常是 1s)。
群集(cluster):群集就是由一个或多个节点组织在一起,在所有节点上存放用户数据,并一起提供索引和搜索功能。通过选举产生主节点,并提供跨节点的联合索引和搜索的功能。每个群集都有一个唯一标识的名称,默认是 Elasticsearch,每个节点是基于群集名字加入到群集中的。一个群集可以只有一个节点,为了具备更好的容错性,通常配置多个节点,在配置群集时,建议配置成群集模式。
节点(node):是指一台单一的服务器,多个节点组织为一个群集,每个节点都存储数据并参与群集的索引和搜索功能。和群集一样,节点也是通过名字来标识的,默认情况下,在节点启动时会随机分配字符名,也可以自定义。通过指定群集名字,节点可以加 入到群集中。默认情况,每个节点都已经加入 Elasticsearch 群集。如果群集中有多个节点,它们将会自动组建一个名为 Elasticsearch 的群集。
索引(index ): 类似于关系型数据库中的“ 库”。当索引一个文档后, 就可以使用 Elasticsearch 搜索到该文档,也可以简单地将索引理解为存储数据的地方,可以方便地进行全文索引。在 index 下面包含存储数据的类型(Type),Type 类似于关系型数据库中的“表”,用来存放具体数据,而 Type 下面包含文档(Document),文档相当于关系型数据库的“记录”,一个文档是一个可被索引的基础信息单元。索印(库)>>>类型(表)>>>文档(记录)
分片和副本(shards & replicas):Elasticsearch 将索引分成若干个部分,每个部分称为一个分片,每个分片就是一个全功能的独立的索引。分片的数量一般在索引创建前指定,且创建索引后不能更改。分片的两个最主要原因如下。
水平分割扩展,增大存储量
分布式并行跨分片操作,提高性能和吞吐量。
三、logstash简介
由 JRuby 语言编写,运行在 Java 虚拟机(JVM),是一款强大的数据处理工具
可以实现数据传输、格式处理、格式化输出
只做三件事情:数据输入、数据加工(如过滤,改写等) 以及数据输出
3.1 LogStash 的主要组件
Shipper:日志收集者。负责监控本地日志文件的变化,及时收集最新的日志文件内容。 通常远程代理端(agent)只需要运行这个组件即可。
Indexer:日志存储者。负责接收日志并写入到本地文件。
Broker:日志 Hub。负责连接多个 Shipper 和多个 Indexer。
Search and Storage:允许对事件进行搜索和存储。
Web Interface:基于 Web 的展示界面。
四、Kibana介绍
一个针对Elasticsearch的开源分析及可视化平台
搜索、查看存储在Elasticsearch索引中的数据
通过各种图表进行高级数据分析及展示
4.1 Kibana主要功能
Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员受益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出
五、部署ELK集群
实验环境
三台虚拟机配置改为2核4G
主机名 | hostnamectl set-hostname apache hostnamectl set-hostname node1 hostnamectl set-hostname node2 |
---|---|
IP | apache:172.16.10.10 node1:172.16.10.11 node2:172.16.10.12 |
关闭防火墙和selinux | systemctl stop firewalld systemctl disable firewalld setenforce 0 |
修改host文件 | vim /etc/hosts 172.16.10.10 apache 172.16.10.11 node1 172.16.10.12 node2 |
时间同步 | yum -y install chrony systemctl start chronyd chronyc sources -v |
5.1 部署node节点
5.1.1安装elasticsearch
两个node节点都需要同样操作
# 安装 Java环境[root@node1 ~]# yum -y install java-1.8.0-openjdk# 安装 elasticsearch-5.5.0[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm [root@node1 ~]# systemctl daemon-reload[root@node1 ~]# systemctl enable elasticsearch.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
5.1.2 配置elasticsearch
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.ymlluster.name: my-elk ## 集群名字node.name: node1 ## 节点名字path.data: /data/elk_data ## 数据存放路径path.logs: /var/log/elasticsearch ## 日志存放路径bootstrap.memory_lock: false ## 在启动的时候不锁定内存network.host: 0.0.0.0 ## 提供服务绑定的IP地址,0.0.0.0 代表所有地址http.port: 9200 ## 监听端口为 9200discovery.zen.ping.unicast.hosts: ["node1", "node2"] ## 集群各节点,集群发现通过单播实现# 创建数据存放路径[root@node1 ~]# mkdir /data/elk_data# 更改属组属组[root@node1 ~]# chown -R elasticsearch:elasticsearch /data/
5.1.3 启动elasticsearch
[root@node1 ~]# systemctl start elasticsearch [root@node1 ~]# netstat -natp |grep 9200tcp 0 0 172.16.10.12:55256 172.16.10.11:9200 TIME_WAIT - tcp6 0 0 :::9200 :::* LISTEN 3666/java tcp6 0 0 172.16.10.12:9200 172.16.10.1:50518 ESTABLISHED 3666/java
5.1.3 查看节点 Node1 的信息
# 可以使用curl或者浏览器访问 http://172.16.10.11:9200[root@node2 ~]# curl http://172.16.10.11:9200{"name" : "node1","cluster_name" : "my-elk","cluster_uuid" : "qF8vINTcT5CcEM8DF6fASQ","version" : {"number" : "5.5.0","build_hash" : "260387d","build_date" : "2017-06-30T23:16:05.735Z","build_snapshot" : false,"lucene_version" : "6.6.0"},"tagline" : "You Know, for Search"}
5.1.4 查看群集的健康情况
# 可以使用curl或者浏览器访问 http://172.16.10.11:9200/_cluster/health?pretty[root@node2 ~]# curl http://172.16.10.11:9200/_cluster/health?pretty{"cluster_name" : "my-elk","status" : "green", ## status 值为 green(绿色),表示节点健康运行"timed_out" : false,"number_of_nodes" : 2,"number_of_data_nodes" : 2,"active_primary_shards" : 0,"active_shards" : 0,"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}
5.2 部署Elasticsearch-head 插件,更方便地管理群集
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要 npm 命令。安装 Elasticsearch-head 需要提前安装 node 和 phantomjs。其中,前者是一个基于 Chrome V8 引擎的 JavaScript 运行环境, 而 phantomjs 是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
仅在node1节点安装
5.2.1 编译安装node
[root@node1 ~]# yum -y install gcc gcc-*[root@node1 ~]# tar zxf node-v8.2.1.tar.gz[root@node1 ~]# cd node-v8.2.1/[root@node1 node-v8.2.1]# ./configure && make && make install
5.2.2 安装 phantomjs
[root@node1 ~]# tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 [root@node1 ~]# cd phantomjs-2.1.1-linux-x86_64/bin/ [root@node1 bin]# cp phantomjs /usr/local/bin/
5.2.3 安装Elasticsearch-head
[root@node1 ~]# tar zxf elasticsearch-head.tar.gz[root@node1 ~]# cd elasticsearch-head/[root@node1 elasticsearch-head]# npm install ## 安装依赖包npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expressionnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 (node_modules/ fsevents):npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents @1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})added 115 packages in 51.594s
5.2.4 修改Elasticsearch主配置文件
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml# 在末尾添加以下两行内容:http.cors.enabled: true ## 开启跨域访问支持,默认为falsehttp.cors.allow-origin: "*" ## 跨域访问允许的域名地址[root@node1 ~]# systemctl restart elasticsearch ## 重启服务
5.2.5 启动Elasticsearch-head
必须在解压后的 elasticsearch-head 目录下启动服务, 进程会读取该目录下的gruntfile.js 文件,否则可能启动失败。elasticsearch-head 监听的端口是 9100,通过该端口是否监听来判断服务是否正常开启。
# 启动Elasticsearch-head [root@node1 elasticsearch-head]# npm run start & ## 前台启动,一旦关闭中断,服务也将随之关闭[1] 2648[root@node1 elasticsearch-head]#> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head>grunt serverRunning "connect:server" (connect) task Waiting forever...Started connect web server on http://localhost:9100 # 查看Elasticsearch-head是否正常开启 [root@node1 elasticsearch-head]# netstat -lnupt | grep 9100tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 2229/grunt[root@node1 elasticsearch-head]# netstat -lnupt | grep 9200tcp6 0 0 :::9200 :::* LISTEN 840/java
5.2.6 通过Elasticsearch-head 查看Elasticsearch 信息
通过浏览器访问http://172.16.10.11:9100/地址并连接群集。可以看到群集很健康,健康值为 green 绿色。单击数据浏览,可以查看索引信息。
5.3 部署logstash
Logstash 一般部署在需要监控其日志的服务器。在次实验中,Logstash 部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch
部署在apache节点上
5.3.1 安装logstash
# 安装 Java环境[root@apache ~]# yum -y install java-1.8.0-openjdk[root@apache ~]# rpm -ivh logstash-5.5.1.rpm警告:logstash-5.5.1.rpm: 头 V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY准备中... ################################# [100%]正在升级/安装...1:logstash-1:5.5.1-1 ################################# [100%]Using provided startup.options file: /etc/logstash/startup.options Successfully created system startup script for Logstash [root@node1 ~]# systemctl start logstash.service# 创建软链接方便使用logstash命令[root@apache ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
5.3.2 关于logstash的使用及索引的创建
Logstash 命令行中常用的命令选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash。-e:后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是“”,则默认使用 stdin 作为输入,stdout 作为输出)。-t:测试配置文件是否正确,然后退出。Logstash 命令的使用方法如下所示:# 输入采用标准输入,输出采用标准输出[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }'# 使用rubydebug 显示详细输出,codec 为一种编解码器[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'# 使用Logstash 将信息写入 Elasticsearch 中[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["172.16.10.11:9200"] } }'
5.3.3 通过Logstash 配置文件创建索引
Logstash 配置文件基本由三部分组成:input、output 以及 filter(根据需要)
#通过修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中[root@apache ~]# vim /etc/logstash/conf.d/system.confinput {file{path =>"/var/log/messages" type =>"system" start_position =>"beginning"}}output {elasticsearch {hosts => ["172.16.10.11:9200"]index =>"system-%{+YYYY.MM.dd}"}}[root@apache ~]# chmod +r /var/log/messages[root@apache ~]# systemctl restart logstash ##重启Logstash 服务
通过Elasticsearch-head 查看Elasticsearch 信息
通过浏览器访问http://172.16.10.11:9100/地址并连接群集,查看索引下的日志信息。
5.4 部署kibana
5.4.1 安装kibana
可以安装在任意节点,这里我们安装在node1节点
# 安装kibana[root@node1 ~]# rpm -ivh kibana-5.5.1-x86_64.rpm警告:kibana-5.5.1-x86_64.rpm: 头 V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY准备中... ################################# [100%]正在升级/安装...1:kibana-5.5.1-1 ################################# [100%]# 启动kibana[root@node1 ~]# systemctl enable kibana[root@node1 ~]# systemctl start kibana
5.4.2 修改kibana主配置文件
[root@node1 ~]# vim /etc/kibana/kibana.ymlserver.port: 5601 ##Kibana 打开的端口server.host: "0.0.0.0" ##Kibana 侦听的地址elasticsearch.url: "http:172.16.10.11:9200" ##和 Elasticsearch 建立连接kibana.index: ".kibana" ##在Elasticsearch 中添加.kibana 索引# 重启kibana[root@node1 ~]# systemctl restart kibana
5.4.3 验证 kibana
通过浏览器访问 http://172.16.10.11:5601,第一次登录需要添加一个 Elasticsearch 索引,添加前面创建的索引 system-*
单击“Discover”按钮查看图表信息及日志信息
5.5 将 Apache 服务器的日志添加到 Elasticsearch 并通过 Kibana 显示
同理,在logstash中添加Apache索引文件
5.5.1 安装Apache
[root@apache ~]# yum -y install httpd[root@apache ~]# systemctl start httpd
5.5.2 添加apache日志索引文件
[root@apache ~]# vim /etc/logstash/conf.d/system.confinput {file {path =>"/var/log/httpd/access_log"type =>"access"start_position =>"beginning"}file {path =>"/var/log/httpd/error_log"type =>"error"start_position =>"beginning"}}output {if [type] == "access" {elasticsearch {hosts =>["172.16.10.12:9200"]index =>"apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts =>["172.16.10.12:9200"]index =>"apache_error-%{+YYYY.MM.dd}"}}}[root@apache ~]# chmod -R +r /var/log/httpd/[root@apache ~]# chmod -R +x /var/log/httpd/[root@apache ~]# systemctl restart logstash ##重启Logstash 服务
通过浏览器访问 http://172.16.10.11:9100 查看索引是否创建
登录 Kibana,单击“Create Index Pattern”按钮添加索引
ELK日志分析系统介绍及部署相关推荐
- ELK 日志分析系统和部署
目录 前言 一.日志分析 1.1 我们需要收集哪些日志 1.2 日志收集后,如何展示(可视化) 1.3 日志收集展示出来后,怎么使用 1.4 我们要怎么收集日志 二.ELK 日志分析系统简介 ...
- ELK 日志分析系统的部署
文章目录 一.ELK前言 1.1 需要收集的日志 1.2 日志收集后,如何可视化 1.3 日志收集可视化后,怎么使用 1.4 要怎么收集日志 二.ELK简介 2.1 ElasticSearch介绍 2 ...
- ELK日志分析系统概述及部署
这里写目录标题 一.ELK日志分析系统 1.日志服务器 2.日志处理步骤 二.Elasticsearch概述 1.Elasticsearch特性 三.LogStash概述 1.LogStash主要组件 ...
- elk日志分析系统_部署ELK企业内部日志分析系统
部署ELK企业内部日志分析系统 一.实验环境 二.基本环境部署 1.IP地址配置 2.主机名配置三台节点hosts文件要一致 [root@yichen-els-node1 ~]# cat /etc/h ...
- Docker 部署ELK 日志分析
Docker 部署ELK 日志分析 elk集成镜像包 名字是 sebp/elk 安装 docke.启动 yum install docke service docker start Docker至少得 ...
- 超详细部署ELK日志分析系统!每一步骤都有记录!ELK的详细使用!
目录 一.ELK简介 二.Elasticsearch简介 三.Logstash简介 四.Kibana简介 五.ELK案例部署 5.1 案例环境 5.2 部署elasticsearch 5.3 部署Ap ...
- ELK日志分析系统(二)之ELK搭建部署
文章目录 引言 一.Elasticsearch 集群部署(在Node1上操作) 1.准备环境 2.部署安装Elasticsearch软件 3.配置Elasticsearch主配置文件 4.创建数据存放 ...
- ELK日志分析系统之ELK搭建部署
文章目录 配置ELK日志分析系统 1.配置elasticsearch环境 2.部署elasticsearch软件 2.1 安装Elasticsearch软件 2.2 加载系统服务 2.3 修改elas ...
- ELK日志分析平台.1-搭建
ELK日志分析平台.1-搭建 2017-12-28 | admin 一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elas ...
最新文章
- Day16 os模块、time模块、random模、math模块
- NetBeans 时事通讯(刊号 # 43 - Feb 03, 2009)
- iptables基本配置方法
- 通过ssh访问Back Track 5
- 中国联通被指乱扣费 返还金额限制用
- 一个页面多个ajax统一loading,页面有多个向后台发送的请求加载过程中显示loading,加载完成loading消失...
- Linux系统安装完成后创建交换空间
- Spring Boot设置指定包的日志级别
- OPNET常用编译器使用实例和相关问题
- java nio网络编程的一点心得
- kindle书籍的后缀名_kindle可以看什么格式
- CSS实现旋转木马效果
- java判断胡牌_怎么写一个c++程序判断麻将是否胡牌(只讨论清一色的情况)
- 【ZLR-T81 200A漏电继电器】
- 结构化整理Unity资源文件夹
- 2022.09 青少年Python等级考试(六级) 选择题部分
- 直播视频app源码,自定义可点击可滑动的通用RatingBar
- eCPRI带宽与CPRI带宽需求为什么相差4倍?
- 故障诊断实战系列(一)齿轮箱(kaggle)故障诊断
- 网吧xp母盘制作流程+QQDLL+系统文件DLL修改