一、ELK日志分析系统简介

1.1 普通日志服务器:

  • 提高安全性

  • 集中存放日志

  • 缺陷

    • 对日志的分析困难

1.2 ELK日志分析系统的组成

  • Elasticsearch

  • Logstash

  • Kibana

1.3 ELK日志系统处理步骤

  1. 将日志进行集中化管理

  2. 将日志格式化(Logstash)并输出到Elasticsearch

  3. 对格式化后的数据进行索引和存储(Elasticsearch)

  4. 前端数据的展示(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日志分析系统介绍及部署相关推荐

  1. ELK 日志分析系统和部署

    目录 前言 一.日志分析 1.1  我们需要收集哪些日志 1.2  日志收集后,如何展示(可视化) 1.3   日志收集展示出来后,怎么使用 1.4  我们要怎么收集日志 二.ELK 日志分析系统简介 ...

  2. ELK 日志分析系统的部署

    文章目录 一.ELK前言 1.1 需要收集的日志 1.2 日志收集后,如何可视化 1.3 日志收集可视化后,怎么使用 1.4 要怎么收集日志 二.ELK简介 2.1 ElasticSearch介绍 2 ...

  3. ELK日志分析系统概述及部署

    这里写目录标题 一.ELK日志分析系统 1.日志服务器 2.日志处理步骤 二.Elasticsearch概述 1.Elasticsearch特性 三.LogStash概述 1.LogStash主要组件 ...

  4. elk日志分析系统_部署ELK企业内部日志分析系统

    部署ELK企业内部日志分析系统 一.实验环境 二.基本环境部署 1.IP地址配置 2.主机名配置三台节点hosts文件要一致 [root@yichen-els-node1 ~]# cat /etc/h ...

  5. Docker 部署ELK 日志分析

    Docker 部署ELK 日志分析 elk集成镜像包 名字是 sebp/elk 安装 docke.启动 yum install docke service docker start Docker至少得 ...

  6. 超详细部署ELK日志分析系统!每一步骤都有记录!ELK的详细使用!

    目录 一.ELK简介 二.Elasticsearch简介 三.Logstash简介 四.Kibana简介 五.ELK案例部署 5.1 案例环境 5.2 部署elasticsearch 5.3 部署Ap ...

  7. ELK日志分析系统(二)之ELK搭建部署

    文章目录 引言 一.Elasticsearch 集群部署(在Node1上操作) 1.准备环境 2.部署安装Elasticsearch软件 3.配置Elasticsearch主配置文件 4.创建数据存放 ...

  8. ELK日志分析系统之ELK搭建部署

    文章目录 配置ELK日志分析系统 1.配置elasticsearch环境 2.部署elasticsearch软件 2.1 安装Elasticsearch软件 2.2 加载系统服务 2.3 修改elas ...

  9. ELK日志分析平台.1-搭建

    ELK日志分析平台.1-搭建 2017-12-28 | admin 一.简介 1.核心组成     ELK由Elasticsearch.Logstash和Kibana三部分组件组成:     Elas ...

最新文章

  1. Day16 os模块、time模块、random模、math模块
  2. NetBeans 时事通讯(刊号 # 43 - Feb 03, 2009)
  3. iptables基本配置方法
  4. 通过ssh访问Back Track 5
  5. 中国联通被指乱扣费 返还金额限制用
  6. 一个页面多个ajax统一loading,页面有多个向后台发送的请求加载过程中显示loading,加载完成loading消失...
  7. Linux系统安装完成后创建交换空间
  8. Spring Boot设置指定包的日志级别
  9. OPNET常用编译器使用实例和相关问题
  10. java nio网络编程的一点心得
  11. kindle书籍的后缀名_kindle可以看什么格式
  12. CSS实现旋转木马效果
  13. java判断胡牌_怎么写一个c++程序判断麻将是否胡牌(只讨论清一色的情况)
  14. 【ZLR-T81 200A漏电继电器】
  15. 结构化整理Unity资源文件夹
  16. 2022.09 青少年Python等级考试(六级) 选择题部分
  17. 直播视频app源码,自定义可点击可滑动的通用RatingBar
  18. eCPRI带宽与CPRI带宽需求为什么相差4倍?
  19. 故障诊断实战系列(一)齿轮箱(kaggle)故障诊断
  20. 网吧xp母盘制作流程+QQDLL+系统文件DLL修改

热门文章

  1. 堆叠沙漏网络模型分析
  2. 怎么把俄语论文翻译成中文
  3. windows7系统设置自动关机时间
  4. Photoshop滤镜轻松打造火焰字特效
  5. 怎么输入MathType不等号
  6. (黑马程序员)MongoDB + Express + art-template 项目实例-博客管理系统 第一页
  7. 动态规划IV (118、119、198、213、337)
  8. linux win7 securecrt,SecureCRT
  9. 空气质量监控难?飞凌基于i.MX6UL、AM335x设计扬尘在线监测仪显身手
  10. 网吧版讯雷限制速度,如何重现讯雷5