【ELK日志收集系统】

目录

一、概述

1.作用

2.为什么使用?

二、组件

1.elasticsearch

1.1 作用

1.2 特点

2.logstash

2.1 作用

2.2 工作过程

2.3 INPUT

2.4 FILETER

2.5 OUTPUTS

3.kibana

三、架构类型

1.ELK

2.ELKK

3.ELFK

4.ELFKK

四、案例 - 构建ELK集群

1.环境配置

2.安装node1与node2节点的elasticsearch

2.1 安装

2.2 配置

2.3 启动elasticsearch服务

2.4 查看节点信息

3.在node1安装elasticsearch-head插件

3.1 安装node

3.2 拷贝命令

3.3 安装elasticsearch-head

3.4 修改elasticsearch配置文件

3.5 启动elasticsearch-head

3.6 访问

3.7 在node1的终端中输入:

4.node1服务器安装logstash

5.ogstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

​编辑

6.node1节点安装kibana

7.企业案例


一、概述

ELK由三个组件构成

1.作用

  • 日志收集
  • 日志分析
  • 日志可视化

2.为什么使用?

  • 日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。
  • 如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。

二、组件

1.elasticsearch

1.1 作用

  • 日志分析
  • 开源的日志收集、分析、存储程序

1.2 特点

  • 分布式
  • 零配置
  • 自动发现
  • 索引自动分片
  • 索引副本机制
  • Restful风格接口
  • 多数据源
  • 自动搜索负载

2.logstash

2.1 作用

  • 日志收集
  • 搜集、分析、过滤日志的工具

2.2 工作过程

  • 一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去
  • Inputs → Filters → Outputs
  • 输入-->过滤-->输出

2.3 INPUT

  • File:从文件系统的文件中读取,类似于tail -f命令
  • Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
  • Redis:从redis service中读取
  • Beats:从filebeat中读取

2.4 FILETER

  • Grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。
  • 官方提供的grok表达式:logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub
  • Grok在线调试:Grok Debugger
  • Mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。
  • Drop:丢弃一部分Events不进行处理。
  • Clone:拷贝Event,这个过程中也可以添加或移除字段。
  • Geoip:添加地理信息(为前台kibana图形化展示使用)

2.5 OUTPUTS

  • Elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。
  • File:将Event数据保存到文件中。
  • Graphite:将Event数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。

3.kibana

  • 日志可视化
  • 为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。

三、架构类型

1.ELK

es
logstash
kibana

2.ELKK

es
logstash
kafka
kibana

3.ELFK

es
logstash        重量级、占用系统资源较多
filebeat          轻量级、占用系统资源较少
kibana

4.ELFKK

es
logstash
filebeat
kafka
kibana

四、案例 - 构建ELK集群

1.环境配置

设置各个主机的IP地址为拓扑中的静态IP,在两个节点中修改主机名为node1和node2并设置hosts文件

node1:

hostnamectl set-hostname node1

bash

vim /etc/hosts

192.168.42.3  node1

192.168.42.4  node2

node2:

hostnamectl set-hostname node2

bash

vim /etc/hosts

192.168.42.3  node1

192.168.42.4  node2

        

2.安装node1与node2节点的elasticsearch

2.1 安装

  mv elk-apppack elk

  cd elk

rpm -ivh elasticsearch-5.5.0.rpm

2.2 配置

node1:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster  //集群名称   

node.name:node1 //节点名字

path.data:/var/lib/elasticsearch  //数据存放路径

path.logs: /var/log/elasticsearch/  //日志存放路径

bootstrap.memory_lock:false //在启动的时候不锁定内存

network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

node2:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster  //集群名称   

node.name:node2 //节点名字

path.data:/var/lib/elasticsearch  //数据存放路径

path.logs: /var/log/elasticsearch/  //日志存放路径

bootstrap.memory_lock:false //在启动的时候不锁定内存

network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

2.3 启动elasticsearch服务

node1和node2

systemctl start elasticsearch

2.4 查看节点信息

  http://192.168.42.3:9200

http://192.168.42.4:9200

3.在node1安装elasticsearch-head插件

3.1 安装node

cd elk

ls

tar xf node-v8.2.1.tar.gz

cd node-v8.2.1

./configure && make && make install

3.2 拷贝命令

tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2

cd phantomjs-2.1.1-linux-x86_64/bin

cp phantomjs  /usr/local/bin

3.3 安装elasticsearch-head

cd elk

tar xf elasticsearch-head.tar.gz

cd elasticsearch-head

npm install

3.4 修改elasticsearch配置文件

vim /etc/elasticsearch/elasticsearch.yml

 # Require explicit names when deleting indices:

#

#action.destructive_requires_name:true

http.cors.enabled: true  //开启跨域访问支持,默认为false

http.cors.allow-origin:"*"  //跨域访问允许的域名地址

重启服务: systemctl restart elasticsearch

3.5 启动elasticsearch-head

cd /root/elk/elasticsearch-head

npm run start &

查看监听: netstat -anput | grep :9100

3.6 访问

http://192.168.42.3:9100

3.7 在node1的终端中输入:

curl  -XPUT  'localhost:9200/index-demo/test/1?pretty&pretty' -H  'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

刷新浏览器可以看到对应信息即可

4.node1服务器安装logstash

cd elk

rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service

In -s /usr/share/logstash/bin/logstash  /usr/local/bin/

测试1: 标准输入与输出

logstash -e 'input{ stdin{} }output { stdout{} }'

测试2: 使用rubydebug解码

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'

测试3:输出到elasticsearch

logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.42.3:9200"]} }'

  查看结果:

http://192.168.42.3:9100

5.ogstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。标准的配置文件格式如下:

input (...)  输入

filter {...}   过滤

output {...}  输出

在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

input {

file{path =>"/var/log/messages" type =>"syslog"}

file { path =>"/var/log/apache/access.log"  type =>"apache"}

}

通过logstash收集系统信息日志

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.42.1:9200"]

index => "system-%{+YYYY.MM.dd}"

}

}

重启日志服务: systemctl restart logstash

查看日志: http://192.168.42.3:9100

6.node1节点安装kibana

cd elk

rpm -ivh kibana-5.5.1-x86_64.rpm

配置kibana

vim /etc/kibana/kibana.yml

server.port:5601  //Kibana打开的端口

server.host:"0.0.0.0" //Kibana侦听的地址

elasticsearch.url: "http://192.168.42.3:9200"  

//和Elasticsearch 建立连接

kibana.index:".kibana"  //在Elasticsearch中添加.kibana索引

启动kibana

systemctl start kibana

访问kibana :

http://192.168.42.3:5601

首次访问需要添加索引,我们添加前面已经添加过的索引:system-*

7.企业案例

收集httpd访问日志信息

在httpd服务器上安装logstash,参数上述安装过程,可以不进行测试

logstash在httpd服务器上作为agent(代理),不需要启动

编写httpd日志收集配置文件

vim /etc/logstash/conf.d/httpd.conf

input {

file{

path=>"/var/log/httpd/access_log" //收集Apache访问日志

type => "access" //类型指定为 access

start_position => "beginning" //从开始处收集

}

output{

elasticsearch {

hosts =>["192.168.42.3:9200"] // elasticsearch 监听地址及端口

index =>"httpd_access-%{+YYYY.MM.dd}" //指定索引格式

}

}

使用logstash命令导入配置:

logstash -f /etc/logstash/conf.d/httpd.conf

使用kibana查看即可! http://192.168.42.3:5601   查看时在mangement选项卡创建索引httpd_access-*  即可!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数学建模竞赛】Matlab逻辑规则,结构基础及函数

逻辑基础 逻辑变量 在Matlab中,逻辑变量是一种特殊类型的变量,用于表示逻辑值。逻辑变量只有两个可能的值:true(真)和false(假)。在Matlab中,我们可以使用0和1来表示逻辑变量的值。…

存储成本降低85%,携程历史库场景的降本实践

携程,一家中国领先的在线票务服务公司,从 1999 年创立至今,数据库系统历经三次替换。在移动互联网时代,面对云计算卷积而来的海量数据,携程通过新的数据库方案实现存储成本降低 85% 左右,性能提升数倍。本文…

C++中stringstream多类型数据拼接和提取用法

1、std::stringstream 可以用于不同类型的拼接。 在下面示例中&#xff0c;使用std::stringstream将整数、双精度浮点数和字符串连接到一个字符串中&#xff0c;这充分展示了其通用性。 << 运算符可以用于将各种数据类型追加到流中&#xff0c;而不仅仅是字符串。这使得…

reactnative笔记

1、React Native 搭建开发环境和创建新项目并运行的详细教程_react项目怎么运行_AaVictory.的博客-CSDN博客 环境搭建遇到报错靠下面两个解决的&#xff08;模拟器的adb和reactnative的adb版本不同&#xff0c;且都配置环境&#xff09; 2、 adb server version (41) doesn‘t…

取证工具prodiscover的基本操作

前言提醒 取证工具ProDiscover在网上讲解操作的文章实在太少&#xff0c;一是prodiscover是用于磁盘取证的工具&#xff0c;本身比较小众比不上其他的编程软件能用到的地方多&#xff0c;二是这个工具是用来恢复提取磁盘中被删除的文件&#xff0c;是比较隐晦的软件。 需要注…

【洛谷】P3853 路标设置

原题链接&#xff1a;https://www.luogu.com.cn/problem/P3853 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 整体思路&#xff1a;二分答案 由题意知&#xff0c;公路上相邻路标的最大距离定义为该公路的“空旷指数”。在公路上增设一些路标&…

ssm+vue医院医患管理系统源码和论文

ssmvue医院医患管理系统源码和论文077 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm vue.js 摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已…

数据结构学习系列之单向链表的三种插入方式

方式1&#xff1a;在单向链表的头结点和第0个结点之间插入新结点&#xff0c;即头插法&#xff0c;代码如下&#xff1a;示例代码&#xff1a; int insert_link_list_1(node_t *phead,int data){if(NULL phead){printf("入参为NULL\n");return -1;}//创建新结点nod…

通过es索引生命周期策略删除日志索引

通过es索引生命周期策略删除日志索引 在es 7.x版本之后&#xff0c;多了个索引生命周期的概念&#xff0c;可以一系列的设置&#xff0c;给新生成的索引绑定生命周期策略&#xff0c;到期后&#xff0c;索引自动删除。 也可以通过linux定时任务实现&#xff0c;请查看另一篇文章…

Android 11编译第三弹 ADB开启ROOT权限

一、为什么需要adb root权限 问题&#xff1a;Relese版本&#xff0c;默认adb访问会降级到shell权限&#xff0c;一些敏感操作不能进行&#xff0c;远程调试比较麻烦。且Release版本没有su模块&#xff0c;不能切换Root用户。 开启adb调试以后&#xff0c;默认进入adb是syste…

车联网仿真工具Veins安装指南(基于官方文档)

Veins安装指南 官方文档&#xff1a; tutorial 直接选择最easy的way&#xff1a; 下载一个虚拟机&#xff1a;VMware Workstation Player 下载即可。这个普通版是免费的&#xff0c;pro版正版是要收费的&#xff0c;可以找一些其他的方法下载pro版本&#xff0c;可以同时开…

Linux整合seata

1、到官网下载seata&#xff0c;这里以ZIP为例 2、使用远程工具上传ZIP包 3、通过命令解压 unzip seata-server-1.7.0.zip4、修改配置文件、新建表&#xff0c;参考我之前的文章 分布式系统的多数据库&#xff0c;实现分布式事务回滚&#xff08;1.7.0 seata整合2.0.4nacos…

PHP NBA球迷俱乐部系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP NBA球迷俱乐部系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 基于PHP的NBA球迷俱乐部 二、功能介绍 1、前台主要功能&#xff1a; 系统首页 网站介…

PYTHON知识点学习-函数调用中returnprint

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是Aileen★。希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由 Aileen_0v0★ 原创 CSDN首发&#x1f412; 如需转载还请通知⚠ &am…

Redis可以干什么

Redis可以做什么&#xff1f; 缓存 Redis作为一款高性能的缓存数据库&#xff0c;能够将常用的数据存储在内存中&#xff0c;以提高读写效率。它支持多种数据结构&#xff0c;如字符串、哈希表、列表、集合等&#xff0c;让你可以根据业务需求选择合适的数据结构进行缓存。 …

亚马逊庭院类目或迎来显著增长;倩碧使用TikTok全新搜索广告功能

夏季即将结束&#xff0c;但Jungle Scout Cobalt数据显示&#xff0c;亚马逊的Patio, Lawn & Garden类目仍将迎来显著的季节性增木 除了夏季销售的飙升&#xff0c;Generators & Portable Power发电机和便携式电源子类别的销售一般会在初秋和假日季节会迎来大幅增长&a…

【SpringBoot】详细介绍SpringBoot中Entity类中的getters和setters

在Spring Boot中的Entity类中&#xff0c;getters和setters是用来获取和设置对象属性值的方法。它们是Java Bean规范的一部分&#xff0c;并且通常被用于向开发人员和框架公开类的属性。 在Entity类中&#xff0c;getters和setters方法通常通过property来实现&#xff0c;即将…

【Atcoder】 [AGC030D] Inversion Sum

题目链接 Atcoder方向 Luogu方向 题目解法 妙妙题&#xff01;&#xff01;&#xff01; 考虑一个神奇的转化&#xff0c;把方案求和变成求 i , j i,j i,j 位置是逆序对的概率 最后的答案就是 2 q ∗ ∑ f i , j 2^q*\sum f_{i,j} 2q∗∑fi,j​ 考虑 f i , j f_{i,j} fi,…

事务的总结

数据库事务 数据库事务是一个被视为单一的工作单元的操作序列。这些操作应该要么完整地执行&#xff0c;要么完全不执行。事务管理是一个重要组成部分&#xff0c;RDBMS 面向企业应用程序&#xff0c;以确保数据完整性和一致性。事务的概念可以描述为具有以下四个关键属性描述…

Java“牵手”京东店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,京东店铺所有商品API申请指南

京东平台店铺所有商品数据接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取京东整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商品详…