ELK部署

news2024/12/25 8:51:56

ELK部署

    • 1. 整体部署规划
      • 1.1 服务器规划
      • 1.2 关闭防火墙,同步时间
    • 2. ElasticSearch集群部署
      • 2.1 环境准备
      • 2.2 部署 Elasticsearch 软件
    • 3. ELK Logstash 部署
      • 3.1 安装Logstash,httpd,java
      • 3.2 测试 Logstash与elasticsearch功能是否能做对接
      • 3.3 定义 logstash配置文件
    • 4. ELK Kibana 部署

1. 整体部署规划

部署图
在这里插入图片描述

1.1 服务器规划

服务器主机名ip地址主要软件
node1 节点node-251192.168.71.251ElasticSearch、Kibana
node2 节点node-252192.168.71.252ElasticSearch
apache 节点node-253192.168.71.253Logstash、Apache

1.2 关闭防火墙,同步时间

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
ntpdate ntp.aliyun.com

2. ElasticSearch集群部署

在Node1、Node2节点上操作

2.1 环境准备

  1. 配置域名解析
[root@node-252 ~]# cat /etc/hosts
192.168.71.251 node-251
192.168.71.252 node-252
  1. 查看Java环境
    如果没有安装
yum -y install java
[root@node-251 ~]# java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-b08)
OpenJDK 64-Bit Server VM (build 25.362-b08, mixed mode)

2.2 部署 Elasticsearch 软件

  1. 下载软件
    https://www.elastic.co/cn/downloads/elasticsearch

  2. 上传elasticsearch-8.7.0-x86_64.rpm到/opt目录下

    [root@node-251 opt]# cd /opt/
    [root@node-251 opt]# rpm -ivh elasticsearch-8.7.0-x86_64.rpm
    
  3. 加载系统服务

    [root@node-251 opt]# systemctl daemon-reload
    [root@node-251 opt]# systemctl enable elasticsearch.service
    Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
    
  4. 修改elasticsearch主配置文件

    cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
    vim /etc/elasticsearch/elasticsearch.yml
    --17--取消注释,指定集群名字
    cluster.name: my-elk-cluster
    --23--取消注释,指定节点名字:Node1节点为node-251,Node2节点为node-252
    node.name: node-251
    --33--取消注释,指定数据存放路径
    path.data: /data/elk_data
    --37--取消注释,指定日志存放路径
    path.logs: /var/log/elasticsearch/
    --43--取消注释,改为在启动的时候不锁定内存
    bootstrap.memory_lock: false
    --55--取消注释,设置监听地址,0.0.0.0代表所有地址
    network.host: 0.0.0.0
    --59--取消注释,ES 服务的默认监听端口为9200
    http.port: 9200
    --68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
    discovery.zen.ping.unicast.hosts: ["node-251", "node-252"]
    

    新版本的es,还需改下安全相关内容:

    [root@node-251 opt]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
    cluster.name: yrq-elk-cluster
    node.name: node-251
    path.data: /data/elk_data
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: false
    network.host: 0.0.0.0
    http.port: 9200
    discovery.seed_hosts: ["node-251", "node-252"]
    
    
    xpack.security.enabled: false
    
    xpack.security.enrollment.enabled: false
    
    xpack.security.http.ssl:
      enabled: false
      keystore.path: certs/http.p12
    
    xpack.security.transport.ssl:
      enabled: false
      verification_mode: certificate
      keystore.path: certs/transport.p12
      truststore.path: certs/transport.p12
    cluster.initial_master_nodes: ["node-251"]
    
    http.host: 0.0.0.0
    
  5. 将node-251的配置文件拷贝一份在node-252上并去node-252上修改

    scp /etc/elasticsearch/elasticsearch.yml node2:/etc/elasticsearch/
    vim /etc/elasticsearch/elasticsearch.yml
    --23--取消注释,指定节点名字:Node1节点为node-251,Node2节点为node-252
    node.name: node-252
    
  6. 创建数据存放路径并授权

    mkdir -p /data/elk_data
    chown elasticsearch:elasticsearch /data/elk_data/
    
  7. 启动elasticsearch是否成功开启

    systemctl start elasticsearch.service
    netstat -antp | grep 9200
    
  8. 查看节点信息

    [root@node-252 elasticsearch]# curl node-251:9200
    {
      "name" : "node-251",
      "cluster_name" : "yrq-elk-cluster",
      "cluster_uuid" : "Ho9YR64NRJGsdCZtou4dUw",
      "version" : {
        "number" : "8.7.0",
        "build_flavor" : "default",
        "build_type" : "rpm",
        "build_hash" : "09520b59b6bc1057340b55750186466ea715e30e",
        "build_date" : "2023-03-27T16:31:09.816451435Z",
        "build_snapshot" : false,
        "lucene_version" : "9.5.0",
        "minimum_wire_compatibility_version" : "7.17.0",
        "minimum_index_compatibility_version" : "7.0.0"
      },
      "tagline" : "You Know, for Search"
    }
    
  9. 选择安装 Elasticsearch-head 插件
    该插件主要用来改善es自身在浏览器的可视化效果,由于我们后续在kibana中查看数据,所以选择不安装。

    这里还是介绍下安装方法:

    Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。

    • node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
    • phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何 基于 webkit 浏览器做的事情,它都可以做到。
    (1)#编译安装 node
    #上传软件包 node-v8.2.1.tar.gz 到/opt
    yum install gcc gcc-c++ make -y
     
    cd /opt
    tar zxf node-v8.2.1.tar.gz
     
    cd node-v8.2.1/
    ./configure
    make -j2 && make install
     
    (2)#安装 phantomjs
    #上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
    cd /opt
    tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
    cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
    cp phantomjs /usr/local/bin
     
    (3)#安装 Elasticsearch-head 数据可视化工具
    #上传软件包 elasticsearch-head.tar.gz 到/opt
    cd /opt
    tar zxf elasticsearch-head.tar.gz -C /usr/local/src/
    cd /usr/local/src/elasticsearch-head/
    npm install
     
    (4)#修改 Elasticsearch 主配置文件
    vim /etc/elasticsearch/elasticsearch.yml
    ......
    --末尾添加以下内容--
    http.cors.enabled: true				#开启跨域访问支持,默认为 false
    http.cors.allow-origin: "*"			#指定跨域访问允许的域名地址为所有
     
    systemctl restart elasticsearch
     
    (5)#启动 elasticsearch-head 服务
    #必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
    cd /usr/local/src/elasticsearch-head/
    npm run start &
     
    > elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
    > grunt server
     
    Running "connect:server" (connect) task
    Waiting forever...
    Started connect web server on http://localhost:9100
     
    #elasticsearch-head 监听的端口是 9100
    netstat -natp |grep 9100
     
    (6)#通过 Elasticsearch-head 查看 Elasticsearch 信息通过浏览器访问 http://192.168.59.115:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。访问有问题 可以将localhost 改成ip地址
     
    (7)#插入索引
    ##登录192.168.59.115 node1主机#####  索引为index-demo,类型为test,可以看到成功创建
    [root@node1 ~]# curl -X PUT '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
    }
     
    

    效果:
    在这里插入图片描述

3. ELK Logstash 部署

在 Apache 节点上操作

3.1 安装Logstash,httpd,java

  1. 安装httpd并启动
yum -y install httpd
systemctl start httpd
  1. 安装java环境
yum -y install java
java -version
  1. 下载logstash
    https://www.elastic.co/cn/downloads/logstash
  2. 安装logstash
[root@node-253 opt]# cp /tmp/logstash-8.7.0-x86_64.rpm .
[root@node-253 opt]# rpm -ivh logstash-8.7.0-x86_64.rpm
warning: logstash-8.7.0-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:logstash-1:8.7.0-1               ################################# [100%]
[root@node-253 opt]# rpm -qc logstash-8.7.0-x86_64.rpm
package logstash-8.7.0-x86_64.rpm is not installed
[root@node-253 opt]# rpm -qc logstash
/etc/default/logstash
/etc/logstash/jvm.options
/etc/logstash/log4j2.properties
/etc/logstash/logstash-sample.conf
/etc/logstash/logstash.yml
/etc/logstash/pipelines.yml
/etc/logstash/startup.options
/lib/systemd/system/logstash.service
                          
systemctl start logstash.service                     
systemctl enable logstash.service
cd /usr/share/logstash/
ls
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

3.2 测试 Logstash与elasticsearch功能是否能做对接

Logstash命令测试

字段描述解释:

  • -f 通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
  • -e 后面跟着字符串 该字符串可以被当做logstash的配置(如果是“空”则默认使用stdin做为输入、stdout作为输出)
  • -t 测试配置文件是否正确,然后退出

logstash -f 配置文件名字 去连接elasticsearch

(1)#输入采用标准输入输出采用标准输出---登录192.168.71.253  在Apache服务器上
logstash -e 'input { stdin{} } output { stdout{} }'
 
16:45:21.422 [[main]-pipeline-manager] INFO  logstash.pipeline - Pipeline main started
16:45:21.645 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com   ##需要手动输入
2021-12-16T08:46:14.041Z apache www.baidu.com
www.sina.com     ##需要手动输入
2021-12-16T08:46:23.548Z apache www.sina.com
 
 
(2)#使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
 
16:51:13.127 [[main]-pipeline-manager] INFO  logstash.pipeline - Starting pipeline {"id"=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250}
16:51:13.174 [[main]-pipeline-manager] INFO  logstash.pipeline - Pipeline main started
The stdin plugin is now waiting for input:
16:51:13.205 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com  ##需要手动输入
{
    "@timestamp" => 2021-12-16T08:52:22.528Z,
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}
 
(3)##使用logstash将信息写入elasticsearch中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.63.102:9200"] } }'

3.3 定义 logstash配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。

  1. 日志目录可读权限
chmod o+r /var/log/messages					#让 Logstash 可以读取日志
  1. 修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。
vim /etc/logstash/conf.d/system.conf
 
input {
    file{
        path =>"/var/log/messages"						#指定要收集的日志的位置
        type =>"system"									#自定义日志类型标识
        start_position =>"beginning"					#表示从开始处收集
    }
}
output {
    elasticsearch {										#输出到 elasticsearch
        hosts => ["192.168.71.252:9200"]	#指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"		#指定输出到 elasticsearch 的索引格式
    }
}
  1. 重启服务
systemctl restart logstash

4. ELK Kibana 部署

在 Node1 节点上操作

此处有个小插曲,原本的71.251服务器和252,253本是同一台机器上的虚拟机,但是同时开启es和kibana之后,cpu和内存直接爆了,笔者加内存,加cpu,奈何机器配置有限,加完还是超负荷。所以笔者又在另外一台机器上搭建的虚拟机,4个cpu+4G内存还算跑起来了,不会很卡。

  1. 下载Kibana
    https://www.elastic.co/cn/downloads/kibana
  2. 安装 Kiabana
    上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm
  1. 设置 Kibana 的主配置文件
vim /etc/kibana/kibana.yml
--2--取消注释,Kibana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kibana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.71.251:9200" 
  1. 启动 Kibana 服务
systemctl start kibana.service
systemctl enable kibana.service
netstat -natp | grep 5601
  1. 验证 Kibana
    浏览器访问 http://192.168.70.251:5601
    在这里插入图片描述
  2. 将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
[root@node-253 conf.d]# cat /etc/logstash/conf.d/apache_log.conf
input {
    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 => ["192.168.70.251:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
        if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.70.251:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}
cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf
  1. 浏览器访问http://192.168.70.251:5601

    Kibana左侧的Toolbar主要分为一下几块功能:

    • Discovery 发现:用于查看和搜索原始数据
    • Visualize 可视化:用来创建图表、表格和地图等
    • Dashboard:多个图表和合并为一个 Dashboard 仪表盘
    • Timelion 时间线:用于分析时序数据,以二维图形的方式展示
    • Dev Tools 开发工具:用于进行DSL查询、Query性能分析等
    • Management 管理:主要用于创建 Index Patterns,ES中的索引在创建 Index Patterns 之后,才能在 Discover 中被搜索,在 Visualize 和 Dashboard 中制图。

在这里插入图片描述
详细使用参考:
https://www.cnblogs.com/yangyongjie/p/15770195.html

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

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

相关文章

ES-IK分词器的概念和基本使用

文章目录 一、ES-IK分词器1.1 初识ES-IK分词器1.2 IK分词器-拓展和停用1.3 索引库1.3.1 mapping属性1.3.2 索引库的CRUD基本语法: 1.3.3 文档的DSL 一、ES-IK分词器 1.1 初识ES-IK分词器 ES IK分词器是一种基于中文文本的分词器,它是Elasticsearch中文分…

DJ4-4 网际协议:因特网中的转发和编址

目录 一、因特网中的网络层协议 二、IP 数据报格式(IPv4) 三、IP数据报分片和重组 1. 分片的概述 2. 分片的例子 四、IP 地址 1. IP 地址概述 2. IPv4 编址 3. IP 地址结构 4. 传统的 IP 地址分类 5. ABC 类地址 6. 特殊 IP 地址段 7. 特殊…

Mysql 截取字符串并将文本转换为数值

有一个需求, 需要在 字符串 20230410 中获取 月份(04), 然后变为 (4), 解决: SELECT cast(left(SUBSTRING(20230410, 5),2) as SIGNED); 用到的函数有 left(str, length) substring(str, pos),即:substring(被截取字符串, 从第几位开始截…

Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

为了方便驱动开发学习,了解一下在Ubuntu上进行驱动编译的流程。 一、下载对应的内核源码 首先要通过 uname -a查询一下自己的内核版本。 我这里下载的是 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz 二、编译内核 (1&a…

一起学 WebGL:复合矩阵

大家好,我是前端西瓜哥。之前讲了平移矩阵、旋转矩阵以及缩放矩阵,以及演示了在 WebGL 中的单独应用的效果。 这次我们看看同时进行多次矩阵变换的组合写法。 我们将会对一个三角形先平移,然后旋转。 矩阵乘法 简单过一下矩阵乘法的知识点…

Cassandra windos安装

首先从http://cassandra.apache.org/download/网站上找到cassandra,如下图所示: 2、点击3.11.3跳转到下载地址,如下图所示: …

DHCP服务器 DNS服务器 综合实验

配置DNS服务器 DNS服务器 主域服务器host1 192.168.80.101 从域服务器host2 192.168.80.102 DHCP服务器 host1 192.168.80.101 提供192.168.80.0/24网段 IP地址、默认网关、子网掩码、DNS服务器地址、DNS默认域名 客户端 Linux host3 19…

数据可视化神器!Matplotlib Python教程 | 从入门到精通绘制各种类型的图形和保存图形

大家好,我是爱吃熊掌的鱼,今天我要给大家带来一篇有趣开朗的Matplotlib Python教程。Matplotlib是Python中最流行的数据可视化库之一,它可以帮助我们将数据转化为易于理解的图表和图形。无论你是初学者还是专业人士,Matplotlib都是…

Eureka 注册中心——服务的注册与发现

文章目录 1.Eureka的结构和作用2.搭建eureka-server2.1.创建eureka-server服务2.2.引入eureka依赖2.3.编写启动类2.4.编写配置文件2.5.启动服务 3.服务注册3.1.引入依赖3.2 配置文件3.3启动多个user-service实例 4.服务发现4.1引入依赖4.2 配置文件4.3 服务拉取和负载均衡 最后…

flowable流程图绘制工具flowable-ui的安装和使用

一.简介 记录绘制flowable图的过程。 二.下载安装 1.下载 我这边是windows的,下载的版本是6.8.0,zip那个就可以,tar.gz是linux的 下载地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 下载截…

PyCharm-2023安装教程

访问JetBrains的官方网站,下载PyCharm最新版本的安装程序。 双击下载的安装程序,在弹出的安装向导中点击“下一步”。 阅读许可协议,并同意协议条款。 选择安装路径。默认情况下,PyCharm会安装在C:\Program Files\JetBrain…

STL——Lambad表达式

📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程&…

【C语言】输入输出、字符串操作、内存操作、文件操作函数

三对基本输入输出函数 1.gets(),puts() gets()从标准输入中获取一个字符串,到str(自己创建的char型数组)中,读到换行或输入末尾结束获取r; 成功返回str,失败返回空。 char *gets(char *str)…

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】 前言推荐说明ARM汇编第一次上机(顺序、分支、单重循环)内容1 sum1流程图代码编写结果分析 2 sum2流程图代码编写结果分析 3 numbers流程图代码编写结果分析 最后 前言 20…

Python统计学:配对样本t检验~均值差的检验

配对样本 t检验 用于两个不同条件下,对同一对象进行测量所得的两个样本均值的区别。 比如吃药前和吃药后体温是否有变化,大鱼钩和小鱼钩钓的鱼的体长是否有差异等。 配对样本是什么? 配对样本需要满足两个基本条件: 1. 样本间存…

Java版本工程管理系统软件源码 自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…

【Java 数据结构】PriorityQueue(堆)的使用及源码分析

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

ES配置与使用

一、单机版安装 地址:www.elastic.co 下载tar格式,或者复制链接,wget url下载 启动: ./bin/elasticsearch 二、插件 解决页面问题,GitHub下载:elasticsearch-head 需要node环境。node -v检查node版本…

TryHackMe-Jack(boot2root)

Jack 破坏运行Wordpress的Web服务器,获得低特权用户,并使用Python模块将您的权限升级到root。 端口扫描 循例nmap web枚举 robots.txt wpscan枚举user wpscan直接爆 得到wendy的密码 直接登后台 根据题目提示,利用user role editor帮助我们…

使用chatgpt写一个划词翻译的浏览器插件

最近在网上流行的chatgpt,实在是太火了,好多人在使用,而且它的用处实在是太丰富了,能帮助我们解决很多问题,就比如说:编程,生成图片,翻译等。太丰富了。我看网上很多人都在说&#x…