Linux:ELK:日志分析系统(使用elasticsearch集群)

原理

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

2. 将日志格式化(logstash)

将其安装在那个上面就对那个进行监控

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

4. 前端数据的展示(kibana)


环境

要准备安装包

elasticsearch

elasticsearch-head

kibana

logstash

node

phantomjs

这些安装包都在网上很好找,自己去找最新的安装包也行,和我这个版本区别不大 

服务器(1)centos7 -- 192.168.254.1   -elasticsearch集群一份子,节点1(tarro1)节点1名字随便起

上面安装 elasticsearch,elasticsearch-head

服务器(2)centos7 -- 192.168.254.2   -elasticsearch集群一份子,节点2(tarro2)节点2名字随便起

上面安装 elasticsearch,elasticsearch-head logstash(监控其系统文件)

服务器(3)centos7 --  192.168.254.3 -- http服务

上面开启http服务   并安装 logstash(监控其系统文件)

 服务器(4)centos7 -- 192.168.254-3 -- kibana服务

上面开启kibana连接节点1和2 展示两位的收集出来的日志信息

 (1)和(2)要做一个集群hosts相互些写一下就行

全部关闭防火墙

全部关闭防火墙

全部关闭防火墙


 服务器(1)的配置

先将elasticsearch   elasticsearch-head  node   phantomjs   包放进去

hostnamectl set-hostname tarro1

 写入hosts

 安装java

yum -y install java
rpm -ivh elasticsearch-5.5.0.rpm 
systemctl daemon-reload
systemctl enable elasticsearch.service
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml 


 17 cluster.name: my-elk

 23 node.name: tarro1

 33 path.data: /data/elk_data

 37 path.logs: /var/log/elasticsearch/ 
 
 43 bootstrap.memory_lock: false

 55 network.host: 0.0.0.0

 59 http.port: 9200

 68 discovery.zen.ping.unicast.hosts: ["tarro1", "tarro2"]

前面的# 全去掉
群集名称 
17 cluster.name: my-elk-cluster
节点服务器名称
 23 node.name: node1
数据存放路径
 33 path.data: /data/elk_data
日志存放路径
 37 path.logs: /var/log/elasticsearch/ 
 
 在启动时不锁定内存
  43 bootstrap.memory_lock: false
  
提供服务绑定的ip地址,0.0.0.0表示所有地址
 55 network.host: 0.0.0.0
 
侦听端口
 59 http.port: 9200
 
群集发现通过单播实现
 68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
mkdir -p /data/elk_data
chown elasticsearch.elasticsearch /data/elk_data/
systemctl start elasticsearch.service
netstat -anpt | grep 9200

 

开启成功

yum -y install make gcc gcc-c++
tar xf node-v8.2.1.tar.gz
cd node-v8.2.1
./configure && make && make install

# 这里耐心等待,需要20分钟左右

tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/src
cp /usr/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
tar xf elasticsearch-head.tar.gz -C /usr/src
cd /usr/src/elasticsearch-head/
npm install
vim /etc/elasticsearch/elasticsearch.yml 

末尾添加
http.cors.enabled: true
http.cors.allow-origin: "*"
systemctl restart elasticsearch
npm start &

 

如果你重启以后可以执行

cd /usr/src/elasticsearch-head/ && npm start &

快速启动 

成功


服务器(2)的配置

 先将elasticsearch   elasticsearch-head  node   phantomjs   logstash 包放进去

hostnamectl set-hostname tarro2 

 写入hosts

 安装java

yum -y install java
rpm -ivh elasticsearch-5.5.0.rpm 
systemctl daemon-reload
systemctl enable elasticsearch.service
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml 

17 cluster.name: my-elk

 23 node.name: tarro2

 33 path.data: /data/elk_data

 37 path.logs: /var/log/elasticsearch/ 
 
 43 bootstrap.memory_lock: false

 55 network.host: 0.0.0.0

 59 http.port: 9200

 68 discovery.zen.ping.unicast.hosts: ["tarro1", "tarro2"]

前面的# 全去掉
群集名称 
17 cluster.name: my-elk-cluster
节点服务器名称
 23 node.name: node1
数据存放路径
 33 path.data: /data/elk_data
日志存放路径
 37 path.logs: /var/log/elasticsearch/ 
 
 在启动时不锁定内存
  43 bootstrap.memory_lock: false
  
提供服务绑定的ip地址,0.0.0.0表示所有地址
 55 network.host: 0.0.0.0
 
侦听端口
 59 http.port: 9200
 
群集发现通过单播实现
 68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
mkdir -p /data/elk_data
chown elasticsearch.elasticsearch /data/elk_data/
systemctl start elasticsearch.service
netstat -anpt | grep 9200

 

成功

yum -y install make gcc gcc-c++
tar xf node-v8.2.1.tar.gz 
cd node-v8.2.1
./configure && make && make install

# 很久,耐心等待

tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/src
cp /usr/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
tar xf elasticsearch-head.tar.gz -C /usr/src
cd /usr/src/elasticsearch-head/
npm install
vim /etc/elasticsearch/elasticsearch.yml 

末尾添加
http.cors.enabled: true
http.cors.allow-origin: "*"
systemctl restart elasticsearch
npm start &

 

如果你重启以后可以执行

cd /usr/src/elasticsearch-head/ && npm start &

快速启动 

成功

rpm -ivh logstash-5.5.1.rpm 
systemctl start logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
chmod o+r /var/log/messages 
vim /etc/logstash/conf.d/system.conf


input {
        file {
           path => "/var/log/messages"
           type => "system"
           start_position => "beginning"
        }
}

output {
        elasticsearch {
          hosts => ["192.168.254.1:9200"]
          index => "system-%{+YYYY.MM.dd}"
        }
}
#________________________________________

注释:
input {

    file {                             从文件中读取

        path => "/var/log/messages"    文件路径

        type => "system"

        start_position => "beginning"  是否从头开始读取

    }

}

output {

    elasticsearch {                        输出到elasticsearch中

        hosts => ["192.168.10.181:9200"]   elasticsearch主机地址和端口

        index => "system-%{+YYYY.MM.dd}"   索引名称

    }

}
---------------------------
systemctl restart logstash

现在就已经可以收集日志了,收集的是tarro2主机上的日志

这样就配置成功了


 服务器(3)的配置

yum -y install httpd
systemctl start httpd


 可以访问就行,这里主要将的不是http而是logstash

 将logstash 传入服务器(3)内

yum -y install java
rpm -ivh logstash-5.5.1.rpm 
systemctl daemon-reload
systemctl enable logstash.service
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.254.1:9200"]
                index => "apache_access-%{+YYYY.MM.dd}"
          }


        }


        if [type] == "error" {
          elasticsearch {
                hosts => ["192.168.254.1:9200"]
                index => "apache_error-%{+YYYY.MM.dd}"
          }


        }

}
ln -s /usr/share/logstash/bin/logstash /usr/local/bin
logstash -f /etc/logstash/conf.d/apache_log.conf 

这样以后去 Elasticsearch 集群看一下

收集日志成功 


服务器(4)的配置 

安装一个kibana展示出来

yum -y install java

将 kibana包传入服务器(4)

rpm -ivh kibana-5.5.1-x86_64.rpm 
systemctl enable kibana
vim /etc/kibana/kibana.yml 


 2 server.port: 5601

 7 server.host: "0.0.0.0"

 21 elasticsearch.url: "http://192.168.254.1:9200"

 30 kibana.index: ".kibana"

去掉前面#

注释:

server.port: 5601                             kibana打开的端口

server.host: "0.0.0.0"                        kibana侦听的地址

elasticsearch.url: "http://192.168.10.181:9200"    和elasticsearch建立联系

kibana.index: ".kibana"                     在elasticsearch中添加.kibana索引
systemctl start kibana

http://192.168.254.4:5601/
↑
http://kibanaip:5601/

 进入成功


设置kibana展示

 

 

 这个是192.168.254.2的系统日志展示,还差个192.168.254.3的网站日志展示

 

 

 

 点击切换

要看那个选那个

 

展示成功 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/52371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python多进程编程(模式与锁)

multiprocessing的三种模式 fork,【拷贝几乎所有资源】【支持文件对象/线程锁等传参】【unix】【任意位置开始】【快】spawn,【run参数传参必备资源】【不支持文件对象/线程锁等传参】【unix、win】【main代码块开始】【慢】forkserver,【ru…

C++ 类和对象

面向过程/面向对象 C语言是面向过程,关注过程,分析出求解问题的步骤,通过函数调用逐步解决问题 C是基于面对对象的,关注的是对象——将一件事拆分成不同的对象,依靠对象之间的交互完成 引入 C语言中结构体只能定义…

41. linux通过yum安装postgresql

文章目录 1.下载安装包2.关闭内置PostgreSQL模块:3.安装postgresql服务:4.初始化postgresql数据库:5.设置开机自启动:6.启动postgresql数据库7.查看postgresql进程8.通过netstat命令或者lsof 监听默认端口54329.使用find命令查找了一下postgresql.conf的配置位置10.修改postgre…

ARM将常数加载到寄存器方法之LDR伪指令

一、是什么? LDR Rd,const伪指令可在单个指令中构造任何32位数字常数,使用伪指令可以生成超过MOV和MVN指令 允许范围的常数. 实现原理: (1)如果可以用MOV或MVN指令构造该常数,则汇编程序会生成适当的指令 (2)如果不能用MOV或MVN指令构造该常数,则汇编程序会执行下列…

QEMU源码全解析19 —— QOM介绍(8)

接前一篇文章:QEMU源码全解析18 —— QOM介绍(7) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 特此致谢! 上一回讲到了Q…

用C语言实现堆排序算法

1.设计思路 排序的思想将一个数组按递增的顺序进行排序,将数组的第一个位置空下(下标为0),因为会导致子节点和本身同一个结点(i和2i一致),每次堆排序在下标1的位置放上了最大值,然后…

我对排序算法的理解

排序算法一直是一个很困惑我的问题,早在刚开始接触 数据结构的时候,这个地方就很让我不解。就是那种,总是感觉少了些什么的感觉。一开始,重新来过,认真来学习这一部分,也总是学着学着就把概念记住了。过了一…

版本适配好帮手 Android SDK Upgrade Assistant / Android Studio Giraffe新功能

首先是新版本一顿下载↓: Download Android Studio & App Tools - Android Developers 在Tools中找到Android SDK Upgrade Assistant 可以在此直接查看SDK升级相关信息,不用跑到WEB端去查看了。 例如看一下之前经常要对老项目维护的android 12蓝牙…

RAID相关知识

简介 RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑磁盘,从而提高硬盘的读写性能和数据安全性。 数据组织形式 分块&#x…

给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin

给定长度值length&#xff0c;把列表切分成每段长度为length的N段列表&#xff0c;Kotlin import kotlin.random.Randomfun main(args: Array<String>) {var source mutableListOf<String>()val end Random.nextInt(30) 1for (i in 0 until end) {source.add(i.…

ubuntu22.04 DNSSEC(加密DNS服务) configuration

/etx/systemd/resolved.conf是ubuntu下DNS解析服务配置文件&#xff0c;systemd为ubuntu下system and service配置目录 step 1——修改resolved.conf参数 管理员权限打开 /systemd/resolved.conf sudo nano /etc/systemd/resolved.conf修改如下&#xff1a; # This file i…

DAY14_FilterListenerAjaxAxiosJsonfastjson综合案例-axios和html交互

目录 1 Filter1.1 Filter概述1.2 Filter快速入门1.2.1 开发步骤1.2.2 代码演示 1.3 Filter执行流程1.4 Filter拦截路径配置1.5 过滤器链1.5.1 概述1.5.2 代码演示1.5.3 问题 1.6 案例1.6.1 需求1.6.2 分析1.6.3 代码实现1.6.3.1 创建Filter1.6.3.2 编写逻辑代码1.6.3.3 测试并抛…

51单片机定时器/计数器

目录 1、定时器/计数器0/1介绍 1.1 定时器介绍 1.2 单片机定时/计数器原理 2、定时器/计数器0和1的相关寄存器 2.1 定时器/计数器控制寄存器TCON 2.2 定时器/计数器工作模式寄存器TMOD 2.3 定时器/计数器工作模式 2.3.1 模式0(13位定时器/计数器) 2.3.2 模式1(16位定…

SpringBoot运维

能够掌握SpringBoot程序多环境开发 能够基于Linux系统发布SpringBoot工程 能够解决线上灵活配置SpringBoot工程的需求 Windows打包运行 你的电脑不可能一直开着机联网作为服务器&#xff1a; 我们将我们项目打包放到外部的服务器上&#xff0c;这样其他用户才能正常访问&#x…

设计模式之四:工厂模式

引言&#xff1a;除了使用new操作符之外&#xff0c;还有更多制造对象的方法。同时&#xff0c;实例化这个活动不应该总是公开地进行。 1.简单工厂模式 这里有一些相关的具体类&#xff0c;要在运行时有一些具体条件来决定究竟实例化哪个类。这样的代码&#xff08;if..elseif…

MFC自定义控件使用

用VS2005新建一个MFC项目,添加一个Custom Control控件在窗体 我们需要为自定义控件添加一个类。项目,添加类,MFC类 设置类名字,基类为CWnd,你也可以选择CDialog作为基类 类创建完成后,在它的构造函数中注册一个新的自定义窗体,取名为"MyWindowClass" WNDCL…

深入了解HTTP代理在网络爬虫与SEO实践中的角色

随着互联网的不断发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;成为各大企业和网站重要的推广手段。然而&#xff0c;传统的SEO方法已经难以应对日益复杂和智能化的搜索引擎算法。在这样的背景下&#xff0c;HTTP代理爬虫作为一种重要的工具&#xff0c;正在逐渐被…

JUC中其他常用类

1.CopyOnWriteArrayList ArrayList是线程不安全的&#xff0c;Vector是线程安全的(方法被Synchronized修饰)&#xff0c;CopyOnWriterArrayList是在Vector的基础上再做优化&#xff0c;因为当读取操作较多时&#xff0c;Vector的效率不高。CopyOnWriterArrayList中读操作并没有…

ceph-mon运行原理分析

一、流程&#xff1a;ceph-deploy部署ceph-mon组建集群 1.ceph-deploy部署ceph-mon的工作流程及首次启动 1&#xff09;通过命令创建ceph-mon&#xff0c;命令为&#xff1a;ceph-deploy create mon keyring def mon(args):if args.subcommand create:mon_create(args)elif…

苍穹外卖day07——缓存菜品套餐+购物车功能实现

缓存菜品——需求设计与分析 问题说明 用户访问量过大带来的一个直接效果就是响应速度慢&#xff0c;使用体验下降。 实现思路 使用redis缓存菜品数据&#xff0c;减少数据库查询操作。 页面展示上基本就是同一个分类在同一页&#xff0c;所以key-value结构可以使用不同的分…