linux————ELK(日志收集系统集群)

目录

一、为什么要使用ELK

二、ELK作用

二、组件

一、elasticsearch

特点

二、logstash

工作过程

INPUT(输入)

FILETER(过滤)

OUTPUTS(输出)

三、kibana

三、架构类型

ELK

ELKK

ELFK

ELFKK

EFK

四、构建ELk集群

一、环境配置

二、安装node1与node2节点的elasticsearch

三、在node1安装elasticsearch-head插件

四、node1服务器安装logstash

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

六、node1节点安装kibana


一、为什么要使用ELK

        日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。

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

二、ELK作用

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

二、组件

一、elasticsearch

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

特点

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

二、logstash

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

工作过程

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

        Inputs → Filters → Outputs

        输入-->过滤-->输出

INPUT(输入)

        File:        从文件系统的文件中读取,类似于tail -f命令

        Syslog:        在514端口上监听系统日志消息,并根据RFC3164标准进行解析

        Redis:        从redis service中读取

        Beats:        从filebeat中读取

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图形化展示使用)

OUTPUTS(输出)

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

三、kibana

        日志可视化

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

三、架构类型

ELK

        es
        logstash
        kibana

ELKK

        es
        logstash
        kafka
        kibana

ELFK

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

ELFKK

        es
        logstash
        filebeat
        kafka
        kibana

EFK

        es
        logstash
        fluentd
        kafka
        kibana

四、构建ELk集群

        基于Java环境yum install -y java-1.8.0-OpenJDK)  

        虚拟机        内存4G  四核

        已经下载好的         tar包

一、环境配置

        关闭防火墙,selinux 

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

node1:192.168.100.10/24

        hostnamectl set-hostname node1

        vim /etc/hosts

                192.168.1.1  node1

                192.168.1.2  node2

node2:192.168.100.11/24

        hostnamectl set-hostname node2

        vim /etc/hosts

                192.168.1.1  node1

                192.168.1.2  node2

二、安装node1与node2节点的elasticsearch

        安装        rpm -ivh elasticsearch-5.5.0.rpm

配置                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"】 //群集发现通过单播实现

启动elasticsearch服务

node1和node2

systemctl start elasticsearch

查看节点信息

192.168.100.10:9200

192.168.100.11:9200

三、在node1安装elasticsearch-head插件

安装node

cd elk

tar xf node-v8.2.1.tar.gz

cd node-v8.2.1

./configure && make  -j4&& make install

拷贝命令

cd elk

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

安装elasticsearch-head

cd elk

tar xf elasticsearch-head.tar.gz

cd elasticsearch-head

npm install(npm 由node包生成

修改elasticsearch配置文件
vim /etc/elasticsearch/elasticsearch.yml
#action.destructive_requires_name:true 
http.cors.enabled: true  //开启跨域访问支持,默认为false
http.cors.allow-origin:"*"  //跨域访问允许的域名地址
重启服务: systemctl restart elasticsearch

启动elasticsearch-head

cd /root/elk/elasticsearch-head

npm run start &

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

访问: 192.168.100.10:9100

测试

在node1的终端中输入:

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

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

四、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.1.1:9200"]} }'

  查看结果:192.168.100.10:9100

五、logstash日志收集文件格式(默认存储在/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.100.10:9200"]

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

}

}

重启日志服务: systemctl restart logstash

查看日志: 192.168.100.10:9100

六、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.8.134:9200"  

//和Elasticsearch 建立连接

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

启动kibana

systemctl start kibana

访问kibana : 192.168.100.10:5601

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

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

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

相关文章

Android基于JNI的Java与C++互调

java调用C++: #include <jni.h> //导出c函数格式 extern "C" JNIEXPORT //供JNI调用 JNICALL 函数名格式 Java_包名_类名_函数名(包名.替换为_) Java_com_example_getapplist_MainActivity_stringFromJNI 包名:com_example_getapplist 类名:MainActi…

异常的捕获和处理

目录 一、异常 1.异常概述 1.1认识异常 1.2Java异常体系结构 2.Java异常处理机制 2.1异常处理 2.2捕获异常 2.2.1使用try-catch捕获异常 2.2.2使用try-catch-finally处理异常 2.2.3使用多重catch处理异常 2.3抛出异常 2.3.1使用throws声明抛出异常 2.3.2使用throw…

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——形式逻辑——选言假言——要么、或者与箭头的关系

角度 或则转化/鲁滨逊定律 (1)或者变箭头: P ∨ Q = ┐ P → Q = ┐ Q → P P∨Q=┐P→Q=┐Q→P P∨

详细介绍typescript的所有变量类型

目录 1. 任意类型&#xff08;Any&#xff09;2. 数字类型&#xff08;Number&#xff09;3. 字符串类型&#xff08;String&#xff09;4. 布尔类型&#xff08;Boolean&#xff09;5. 数组类型&#xff08;Array&#xff09;6. 元组类型&#xff08;Tuple&#xff09;-需求明…

研磨设计模式day14模板方法模式

目录 场景 原有逻辑 有何问题 解决方案 解决思路 代码实现 重写示例 模板方法的优缺点 模板方法的本质 何时选用 场景 现在模拟一个场景&#xff0c;两个人要登录一个系统&#xff0c;一个是管理员一个是用户&#xff0c;这两个不同身份的登录是由后端对应的两个接…

Android笔记--Hilt

Hilt 是 Android 的依赖项注入库&#xff0c;可减少在项目中执行手动依赖项注入的样板代码。执行手动依赖项注入要求您手动构造每个类及其依赖项&#xff0c;并借助容器重复使用和管理依赖项。依赖注入的英文是Dependency Injection&#xff0c;简称DI,简单说一个类中使用的依赖…

Win11更新致蓝屏死机,应对技巧你必知!

Windows 11用户应该意识到&#xff0c;微软的最新更新导致一些电脑崩溃&#xff0c;并在可怕的死亡蓝屏上显示“UNSUPPORTED_PROCESSOR”。 这一点尤其值得注意&#xff0c;因为据报道&#xff0c;这种情况发生在自然情况下的Windows 11 PC上&#xff0c;因此对任何下载最新更…

数据结构day04(概念、顺序表)

今日任务 2.冒泡排序和选择排序 #define MAX 10typedef struct{int id; }data;typedef struct seq{data arr[MAX];int len; }seqList,*seqListP;/** function: 选择排序* param [ in] * param [out] * return */ int selectSort(seqListP p){if(is_empty(p))return 1;…

React Navigation 路由传参

页面之间传递参数 实现页面之间传递参数很简单&#xff0c;跟普通的 React 项目一样&#xff0c;具体实例入戏&#xff1a; // 传入参数 export default function Home(props: { navigation: any }) {return (<View><Text>Home</Text><Buttontitle"…

干翻Dubbo系列第十五篇:Rest协议基于SpringBoot的规范化开发

文章目录 文章说明 一&#xff1a;Rest协议简介 二&#xff1a;搭建开发环境 1&#xff1a;父项目里边引入的新的版本内容 2&#xff1a;Api中的操作 3&#xff1a;Provider模块 三&#xff1a;编码 1&#xff1a;API模块 2&#xff1a;Provider模块 3&#xff1a;Co…

学习总结(二) node.js服务器如何使用net模块向硬件发送命令与接收数据?

服务器server.js: const net require("net"); //此模块用于tcp/ip通讯 当收到get请求时: server.get("/cfjcApi/v1/SkyTempHudi", (req, res) > { let client new net.Socket(); client.connect(网络模块端口, 网络模块Ip, () > { //此模块…

leetcode做题笔记111. 二叉树的最小深度

给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 思路一&#xff1a;递归 int minDepth(struct TreeNode* root){if(!root)return 0;int leftminDepth(root->le…

在springboot中配置mybatis(mybatis-plus)mapper.xml扫描路径的问题

我曾经遇到过类似问题&#xff1a; mybatis-plus的mapper.xml在src/main/java路径下如何配置pom.xml和application.yml_idea 把mapper文件放到java下如何配置_梓沂的博客-CSDN博客 当时只是找到解决问题的办法&#xff0c;但对mybatis配置来龙去脉并未深入了解&#xff0c;所…

Servlet的使用(JavaEE初阶系列17)

目录 前言&#xff1a; 1.Servlet API的使用 1.1HttpServlet 1.2HttpServletRequest 1.3HttpServletResponse 2.表白墙的更新 2.1表白墙存在的问题 2.2前后端交互接口 2.3环境准备 2.4代码的编写 2.5数据的持久化 2.5.1引入JDBC依赖 2.5.2创建数据库 2.5.3编写数…

clickhouse系列3:clickhouse分析英国房产价格数据

1.准备数据集 该数据集包含有关英格兰和威尔士自1995年起到2023年的房地产价格的数据,超过2800万条记录,未压缩形式的数据集大小超过4GB,在ClickHouse中需要约306MB。 2.clickhouse中建表 CREATE TABLE uk_price_paid (price UInt32,

Mysql 索引

索引 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09; 使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过索引表找到该行数据对应…

spring的后置处理器BeanPostProcessor

什么是BeanPostProcessor 是spring IOC容器给我们提供的一个扩展接口在调用初始化方法前后对bean进行额外加工&#xff0c;ApplicationContext会自动扫描实现了BeanPostProcessor的bean&#xff0c;并注册这些bean为后置处理器是bean的统一前置后置处理而不是基于某一个bean 执…

Linux系统:CentOS 7 CA证书服务器部署

目录 一、理论 1.CA认证中心 2.CA证书服务器部署 二、实验 1. CA证书服务器部署 三、总结 一、理论 1.CA认证中心 &#xff08;1&#xff09;概念 CA &#xff1a;CertificateAuthority的缩写&#xff0c;通常翻译成认证权威或者认证中心&#xff0c;主要用途是为用户…

defaultdict, Counter, json包中的load, dump是否都保持插入顺序

自python3.7以来&#xff0c;python的dict都会保留插入顺序&#xff0c;那么相关的defaultdict, Counter&#xff0c;以及使用json.load、json.dump也一定能保持顺序吗&#xff1f; 结论&#xff1a;以上这些和dict一样&#xff0c;都会保留插入顺序 defaultdict&#xff1a;…

Linux防火墙相关命令

防火墙基础命令 systemctl status firewalld #查看防火墙状态 systemctl start firewalld #开启防火墙 systemctl stop firewalld #临时关闭 systemctl disable firewalld.service #关闭自启 systemctl enable firewalld.servi…