ELK日志分析系统(实战!)

简介

日志服务器

提高安全性
集中存放日志
缺陷:对日志的分析困难

ELK日志分析系统

Elasticsearch:存储,索引池
Logstash:日志收集器
Kibana:数据可视化

日志处理步骤

1,将日志进行集中化管理
2,将日志格式化(Logstash)并输出到Elasticsearch
3,对格式化后的数据进行索引和存储(Elasticsearch)
4,前端数据的展示(Kibana)

Elasticsearch的概述

提供了一个分布式多用户能力的全文搜索引擎

Elasticsearch的概念

接近实时
集群
节点
索引:索引(库)-->类型(表)-->文档(记录)
分片和副本

Logstash介绍

一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出
数据输入、数据加工(如过滤,改写等)以及数据输出

LogStash主要组件

Shipper
Indexer
Broker
Search and Storage
Web Interface

Kibana介绍

一个针对Elasticsearch的开源分析及可视化平台
搜索、查看存储在Elasticsearch索引中的数据
通过各种图表进行高级数据分析及展示

Kibana主要功能

Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员受益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出

实验环境

1、在node1,node2上安装elasticsearch(操作相同,只演示一台)

[[email protected] ~]# vim /etc/hosts  ##配置解析名
192.168.52.133 node1
192.168.52.134 node2
[[email protected] ~]# systemctl stop firewalld.service  ##关闭防火墙
[[email protected] ~]# setenforce 0    ##关闭增强型安全功能
[[email protected] ~]# java -version  ##查看是否支持Java
[[email protected] ~]# mount.cifs //192.168.100.100/tools /mnt/tools/    ##挂载
Password for [email protected]//192.168.100.100/tools:
[[email protected] ~]# cd /mnt/tools/elk/
[[email protected] elk]# rpm -ivh elasticsearch-5.5.0.rpm   ##安装
警告:elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                          ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...
   1:elasticsearch-0:5.5.0-1          ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
 sudo systemctl start elasticsearch.service
[[email protected] elk]# systemctl daemon-reload  ##重载守护进程
[[email protected] elk]# systemctl enable elasticsearch.service   ##开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[[email protected] elk]# cd /etc/elasticsearch/
[[email protected] elasticsearch]# cp elasticsearch.yml elasticsearch.yml.bak  ##备份
[[email protected] elasticsearch]# vim elasticsearch.yml  ##修改配置文件
cluster.name: my-elk-cluster  ##集群名
node.name: node1    ##节点名,第二个节点为node2
path.data: /data/elk_data   ##数据存放位置
path.logs: /var/log/elasticsearch/  ##日志存放位置
bootstrap.memory_lock: false  ##不在启动时锁定内存
network.host: 0.0.0.0   ##提供服务绑定的IP地址,为所有地址
http.port: 9200  ##端口号为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  ##集群发现通过单播实现
[[email protected] elasticsearch]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml   ##检查配置是否正确
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
[[email protected] elasticsearch]# mkdir -p /data/elk_data   ##创建数据存放点
[[email protected] elasticsearch]# chown elasticsearch.elasticsearch /data/elk_data/  ##给权限
[[email protected] elasticsearch]# systemctl start elasticsearch.service   ##开启服务
[[email protected] elasticsearch]# netstat -ntap | grep 9200  ##查看开启情况
tcp6       0      0 :::9200                 :::*                    LISTEN      83358/java
[[email protected] elasticsearch]#

查看node1节点信息

查看node2节点信息

2、在浏览器上检查健康和状态

node1健康检查

node2健康检查

node1状态

node2状态

3、在node1,node2上安装node组件依赖包(操作相同,只演示一个)

[[email protected] elasticsearch]# yum install gcc gcc-c++ make -y  ##安装编译工具
[[email protected] elasticsearch]# cd /mnt/tools/elk/
[[email protected] elk]# tar xf node-v8.2.1.tar.gz -C /opt/  ##解压插件
[[email protected] elk]# cd /opt/node-v8.2.1/
[[email protected] node-v8.2.1]# ./configure   ##配置
[[email protected] node-v8.2.1]# make && make install   ##编译安装

4、在node1,node2上安装phantomjs前端框架

[[email protected] node-v8.2.1]# cd /mnt/tools/elk/
[[email protected] elk]# tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
##解压到/usr/local/src下
[[email protected] elk]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/
[[email protected] bin]# cp phantomjs /usr/local/bin/   ##编译系统识别

5、在node1,node2上安装elasticsearch-head数据可视化

[[email protected] bin]# cd /mnt/tools/elk/
[[email protected] elk]# tar xf elasticsearch-head.tar.gz -C /usr/local/src/  ##解压
[[email protected] elk]# cd /usr/local/src/elasticsearch-head/
[[email protected] elasticsearch-head]# npm install  ##安装
npm WARN [email protected] license should be a valid SPDX license expression
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 71 packages in 7.262s
[[email protected] elasticsearch-head]# 

6、修改配置文件

[[email protected] elasticsearch-head]# cd ~
[[email protected] ~]# vim /etc/elasticsearch/elasticsearch.yml
#末行插入
http.cors.enabled: true   ##开启跨域访问支持,默认为false
http.cors.allow-origin: "*"    ##跨域访问允许的域名地址
[[email protected] ~]# systemctl restart elasticsearch.service  ##重启

[[email protected] ~]# cd /usr/local/src/elasticsearch-head/
[[email protected] elasticsearch-head]# npm run start &   ##后台运行数据可视化服务
[1] 83664
[[email protected] elasticsearch-head]#
> [email protected] start /usr/local/src/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

[[email protected] elasticsearch-head]#
[[email protected] elasticsearch-head]# netstat -ntap | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      83358/java
[[email protected] elasticsearch-head]# netstat -ntap | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      83674/grunt
[[email protected] elasticsearch-head]# 

7、在浏览器上连接并查看健康值状态

node1


node2

8、在node1上创建索引


[[email protected] ~]# curl -XPUT ‘localhost:9200/index-demo/test/1?pretty&pretty‘ -H ‘content-Type: application/json‘ -d ‘{"user":"zhangsan","mesg":"hello world"}‘
##创建索引信息
{
  "_index" : "index-demo",
  "_type" : "test",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "created" : true
}
[[email protected] ~]# 

9、在Apache服务器上安装logstash,多elasticsearch进行对接

[[email protected] ~]# systemctl stop firewalld.service
[[email protected] ~]# setenforce 0
[[email protected] ~]# yum install httpd -y   ##安装服务
[[email protected] ~]# systemctl start httpd.service   ##启动服务
[[email protected] ~]# java -version
[[email protected] ~]# mount.cifs //192.168.100.100/tools /mnt/tools/   ##挂载
Password for [email protected]//192.168.100.100/tools:
[[email protected] ~]# cd /mnt/tools/elk/
[[email protected] elk]# rpm -ivh logstash-5.5.1.rpm   ##安装logstash
警告: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
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Successfully created system startup script for Logstash
[[email protected] elk]# systemctl start logstash.service    ##开启服务
[[email protected] elk]# systemctl enable logstash.service   ##开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
[[email protected] elk]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/  ##便于系统识别
[[email protected] elk]# 

10、将系统日志文件输出到elasticsearch

[[email protected] elk]# chmod o+r /var/log/messages   ##给其他用户读权限
[[email protected] elk]# vim /etc/logstash/conf.d/system.conf  ##创建文件
input {
                file{
                path => "/var/log/messages"   ##输出目录
                type => "system"
                start_position => "beginning"
                }
}
output {
                elasticsearch {
                #输入地址指向node1节点
                hosts => ["192.168.13.129:9200"]
                index => "system-%{+YYYY.MM.dd}"
                }
}
[[email protected] elk]# systemctl restart logstash.service  ##重启服务
##也可以用数据浏览查看详细信息

11、在node1服务器上安装kibana数据可视化

[[email protected] ~]# cd /mnt/tools/elk/
[[email protected] elk]# 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%]

[[email protected] elk]# cd /etc/kibana/
[[email protected] kibana]# cp kibana.yml kibana.yml.bak  ##备份
[[email protected] kibana]# vim kibana.yml   ##修改配置文件
server.port: 5601  ##端口号
server.host: "0.0.0.0"   ##监听任意网段
elasticsearch.url: "http://192.168.13.129:9200"  ##本机节点地址
kibana.index: ".kibana"   ##索引名称
[[email protected] kibana]# systemctl start kibana.service   ##开启服务
[[email protected] kibana]# systemctl enable kibana.service    ##开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
[[email protected] elk]#
[[email protected] elk]# netstat -ntap | grep 5601   ##查看端口
tcp        0      0 127.0.0.1:5601          0.0.0.0:*               LISTEN      84837/node
[[email protected] elk]# 

12、浏览器访问kibana



13、在apache服务器中对接apache日志文件,进行统计

[[email protected] elk]# 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.13.129:9200"]
                index => "apache_access-%{+YYYY.MM.dd}"
                }
        }
                if [type] == "error" {
                elasticsearch {
                hosts => ["192.168.13.129:9200"]
                index => "apache_error-%{+YYYY.MM.dd}"
                }
        }
}
[[email protected] elk]# logstash -f /etc/logstash/conf.d/apache_log.conf
##根据配置文件配置logstach

14、访问网页信息,查看kibana统计情况

只有error日志

浏览器访问Apache服务

生成access日志

##选择management>Index Patterns>create index patterns
##创建apache两个日志的信息

在kibana创建access访问日志

在kibana创建error访问日志

查看access日志统计情况

查看error日志统计情况

实验成功!!!

原文地址:https://blog.51cto.com/14449541/2461909

时间: 2024-10-10 20:40:41

ELK日志分析系统(实战!)的相关文章

ELK日志分析系统实战(一)安装和部署

在日常的运维管理活动,日志非常的重要,当发现error时可以从日志了解报错并及时解决.日志分为系统日志,应用日志,和安全日志,经常的分析日志可以了解服务器的硬件状况,性能以及安全,从而采取预防措施及时纠正任务. 通常情况下,日志被分散到不同的存储设备上,而企业内部的服务器,少则十几台多则成千上百,如果采取最传统的方式登录每台服务器进行查看,对运维来说难度大劳动强度也大,而且不易管理容易出错不易管理,所以需要一个进行集中化管理日志的解决方案. 开源实时日志分析平台 ELK 是ELK套件(ELK s

ELK日志分析系统 介绍 安装配置

ELK日志分析系统 一.ELK介绍 ELK顾名思义:是由Elasticsearch,Logstash 和 Kibana三部分组成的. 其中Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写.目前,最新的版本是 5.4. 主要特点 实时分析 分布式实时文件存储,并将每一个字段都编入索引 文档导向,所有的对象全部是文档 高可用性,易扩展,支持集群(Cl

ELK日志分析系统搭建配置

我们主要用ELK日志分析系统来分析Nginx访问日志,mysql慢查询日志,tomcat运行日志以及系统日志等. 介绍:ELK:ElasticSearch+LogStash+Kibana=ElkStackElasticSearch:存储.收索.分析(可以用solr替代)LogStash:收集器,输入,处理分析,存储到ESKibana:展示备注:ElasticSearch支持集群功能,日志收集后会在每个节点存放一份(可以选择) 1.安装jdkwget http://sg-new.oss-cn-ha

elk 日志分析系统Logstash+ElasticSearch+Kibana4

elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示客户端 redis 缓存 安装包 logstash-1.4.2-1_2c0f5a1.noarch.rpm elasticsearch-1.4.4.noarch.rpm logstash-contrib-1.4.2-1_efd53ef.noarch.rpm kibana-4.0.1-linux-x64.tar

十分钟搭建和使用ELK日志分析系统

前言 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为"十分钟搭建和使用ELK日志分析系统"听起来有点唬人,其实如果单纯满足可视化要求,并且各软件都已经下载到本地,十分钟是可以搭建一个ELK系统的.本文介绍如何快速安装.配置.使用EK+FILEBEAT去实现日志搜集.本文中没有使用LOGSTASH做日志搜集过滤,但为了后期需要先进行了安装. 工作原理 ElasticSearch:是

在CentOS7中部署ELK日志分析系统

在CentOS7中部署ELK日志分析系统 ELK原理介绍 什么是ELK ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具. Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是一套开放REST和JAVA API等

基于Docker容器部署ELK日志分析系统

部署ELK日志分析系统,比较消耗计算机硬件,如果使用虚拟机进行测试部署,建议分配较多的硬件资源,否则,当elk容器运行后,会使其无法正常运行.我这里将分配给docker主机5G内存,四个CPU. 一.环境准备 我这里使用一台docker主机(如需要部署docker服务,可以参考博文:Docker的安装详细配置),其IP地址为192.168.20.6,在其之上运行elk容器. 二.配置docker主机运行elk容器 [[email protected] ~]# echo "vm.max_map_c

ELK日志分析系统(实例!!!)

ELK日志分析系统概述 ELK是Elasticsearch.Logstash.Kibana的简称 Elasticsearch是实时全文搜索和分析引擎 Logstash是一个用来搜集.分析.过滤日志的工具 Kibana是一个基于Web的图形界面,用于搜索.分析和可视化存储在 Elasticsearch指标中的日志数据 日志服务器 提高安全性 集中存放日志 缺陷:对日志的分析困难 ELK日志分析系统 收集数据:LogstashAgent 建立索引:ElasticSearchCluster 数据可视化

ELK日志分析系统(理论+部署)

ELK日志分析系统简介 日志服务器 提高安全性 集中存放日志 缺陷 对日志的分析困难 ELK日志分析系统 Elasticsearch Logstash Kibana 日志处理步骤 将日志进行集中化管理 将日志格式化( Logstash )并输出到Elasticsearch 对格式化后的数据进行索弓|和存储( Elasticsearch ) 前端数据的展示( Kibana ) Elasticsearch介绍 Elasticsearch的概述 提供了一个分布式多用户能力的全文搜索弓|擎 Elasti