如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack

今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack,并集成 Nginx 作为 Web 服务器,同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack,包括 Elasticsearch、Logstash 和 Kibana,是一套强大的工具,用于实时搜索、分析和可视化日志数据。这个开源 Stack广泛用于管理和分析大量日志数据,是监控和排查现代软件应用和 IT 基础设施的必备组件。

简介

ELK Stack是一个开源的日志监控解决方案,由 Elasticsearch、Logstash 和 Kibana 三个组件组成,它们共同工作以实现日志数据的收集、存储、搜索和可视化。下面是对这三个组件的简要介绍:

  1. Elasticsearch
    • 搜索引擎:Elasticsearch 是一个基于 Lucene 构建的搜索引擎,提供了全文搜索和分析的能力。它能够存储大量的数据,并支持快速的搜索和分析。
    • 分布式设计:Elasticsearch 是分布式的,这意味着它可以运行在多个服务器上,并且能够自动处理数据的分片和复制,以实现高可用性和容错。
    • 实时搜索:Elasticsearch 提供实时的搜索能力,可以快速响应查询请求,适合需要快速分析和响应的场景。
  2. Logstash
    • 数据收集器:Logstash 是一个服务器端的数据处理器,负责从不同来源收集日志数据,如文件、数据库、消息队列等。
    • 数据转换器:Logstash 可以将收集到的数据进行过滤和转换,以满足特定的需求,比如解析日志格式、添加字段、执行数据的聚合等。
    • 数据转发器:处理后的数据可以被 Logstash 转发到 Elasticsearch 或其他存储系统中,用于后续的搜索和分析。
  3. Kibana
    • 可视化工具:Kibana 是一个基于 Web 的界面,用于可视化 Elasticsearch 中的数据。它提供了图表、地图、仪表板等多种数据展示方式。
    • 数据探索:Kibana 允许用户通过简单的查询语言(KQL)来探索数据,发现数据中的模式和趋势。
    • 仪表板和报告:用户可以创建自定义的仪表板,将不同的视图和图表组合在一起,以便于监控和报告。

ELK Stack的优势在于其强大的搜索能力、灵活的数据管道处理和直观的数据可视化,使其成为许多开发者监控和分析日志数据的首选工具。随着技术的发展,ELK Stack也在不断进化,增加了更多高级功能,如安全特性、机器学习等,以满足不断变化的业务需求。

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
  • 创建一个指向服务器 IP 地址的 A 记录。例如:kibana.your_domain.com

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

1.更新系统

开始之前,确保系统是最新的。

sudo apt update
sudo apt upgrade -y

2.安装 Java

Elasticsearch 需要 Java。你可以安装 OpenJDK,这是 Java 平台的一个免费且开源的实现。

sudo apt install openjdk-17-jdk -y

验证安装:

java -version

3.安装 Elasticsearch

添加 Elasticsearch GPG 密钥:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

添加 Elasticsearch 仓库:

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

现在,让我们安装 Elasticsearch:

sudo apt update
sudo apt install elasticsearch -y

启动并启用 Elasticsearch:

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

验证 Elasticsearch:

curl -X GET "localhost:9200/"

输出:

{"name" : "elk","cluster_name" : "elasticsearch","cluster_uuid" : "yMKeohL1SnafmH9eiMXPAA","version" : {"number" : "7.17.21","build_flavor" : "default","build_type" : "deb","build_hash" : "d38e4b028f4a9784bb74de339ac1b877e2dbea6f","build_date" : "2024-04-26T04:36:26.745220156Z","build_snapshot" : false,"lucene_version" : "8.11.3","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}

4.安装 Logstash

执行以下命令安装 Logstash:

sudo apt install logstash -y

启动并启用 Logstash:

sudo systemctl start logstash
sudo systemctl enable logstash

5.配置 Elasticsearch

为了启用认证,我们需要启用 xpack 安全功能。编辑 Elasticsearch 配置文件:

sudo nano /etc/elasticsearch/elasticsearch.yml

添加以下安全设置:

xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

重启 Elasticsearch:

sudo systemctl restart elasticsearch

为内置用户设置密码:

运行以下命令为内置用户(包括 elastic 用户)设置密码:

sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

这将提示你为以下用户输入密码:

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]

按照提示设置密码。

6.安装 Kibana

执行以下命令安装 Kibana:

sudo apt install kibana -y

启动并启用 Kibana:

sudo systemctl start kibana
sudo systemctl enable kibana

现在,打开 Kibana 配置文件:

sudo nano /etc/kibana/kibana.yml

取消注释并设置以下行,或复制并粘贴到文件末尾:

注意:kibana.your_domain.com 替换为你的域名。在文件中添加 xpack。同时将 elasticsearch.password 替换为你的密码。

server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana.your_domain.com"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "password@123" # 添加以下行到文件中:
xpack.security.enabled: true

保存并退出。

为了反映更改,我们需要重启 Kibana:

sudo systemctl restart kibana

7.配置 Logstash 收集和解析日志

创建一个 Logstash 配置文件:

sudo nano /etc/logstash/conf.d/logstash.conf

这里是一个读取 syslog 消息的示例配置:

input {file {path => "/var/log/syslog"start_position => "beginning"}
}filter {grok {match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program} (?:\[%{POSINT:pid}\])? %{GREEDYDATA:message}" }}date {match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]timezone => "UTC"}
}output {elasticsearch {hosts => ["https://your_domain:9200"]index => "syslog-%{+YYYY.MM.dd}"ssl => truecacert => "/etc/letsencrypt/live/your_domain/fullchain.pem"user => "logstash_system"password => "your_logstash_system_password"}
}

注意:your_logstash_system_password 替换为你在 第五步 设置的密码。

保存并退出。

重启 Logstash 以应用配置:

sudo systemctl restart logstash

8.安装和配置 Nginx

现在,我们安装 Nginx 作为代理服务器。这样,我们就可以通过域名访问 Elasticsearch。

sudo apt install nginx -y

为 Kibana 创建一个新的 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/kibana.your_domain.com

注意:kibana.your_domain.com 替换为你的域名。

将以下配置添加到文件中:

kibana.your_domain.com 替换为你的实际域名。

server {listen 80;server_name kibana.your_domain.com;    location / {proxy_pass <http://localhost:5601>;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

启用配置:

sudo ln -s /etc/nginx/sites-available/kibana.your_domain.com /etc/nginx/sites-enabled/

测试 Nginx 配置并重新加载:

sudo nginx -t
sudo systemctl reload nginx

9.配置防火墙(如果适用)

如果你启用了 UFW 防火墙,请按照以下步骤操作并添加 HTTP 和 HTTPS 端口:

ufw allow 80/tcp
ufw allow 443/tcp
ufw reload

10.使用 Let’s Encrypt Certbot 获取 SSL 证书

首先,使用以下命令安装 Certbot:

sudo apt install certbot python3-certbot-nginx -y

获取并安装 SSL 证书:

kibana.your_domain.com 替换为你的实际域名。

sudo certbot --nginx -d kibana.your_domain.com

按照提示完成 SSL 证书安装。

Certbot 将自动为 Nginx 配置 SSL 设置。验证配置文件 /etc/nginx/sites-available/kibana.your_domain.com 以确保它包含 SSL 设置:

11.测试设置

最后,使用你的域名访问 Kibana:在你的 Web 浏览器中打开 https://kibana.your_domain.com。你应该可以看到 Kibana 登录屏幕。

image.png

我们已经成功地看到了如何在 Ubuntu 22.04 服务器上安装 ELK Stack。现在你可以使用 Elasticsearch、Logstash 和 Kibana 进行日志数据的收集、分析和可视化了。这个设置可以根据你的具体需求进行扩展和定制。我们已经配置了 Kibana,使其可以通过自定义域名公开访问,并使用 Let’s Encrypt 进行 SSL 加密。

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

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

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

相关文章

快速理解微服务中Sentinel怎么实现限流

Sentinel是通过动态管理限流规则&#xff0c;根据定义的规则对请求进行限流控制。 一.实现步骤 1.定义资源&#xff1a;在Sentinel中&#xff0c;资源可以是URL、方法等&#xff0c;用于标识需要进行限流的请求&#xff1b;(在Sentinel中&#xff0c;需要我们去告诉Sentinel哪些…

基于单片机的智慧小区人脸识别门禁系统

本设计基于单片机的智慧小区人脸识别门禁系统。由STM32F103C8T6单片机核心板、显示模块、摄像头模块、舵机模块、按键模块和电源模块组成。可以通过摄像头模块对进入人员人脸数据进行采集&#xff0c;识别成功后&#xff0c;舵机模块动作&#xff0c;模拟门禁打开&#xff0c;门…

llama-factory 系列教程 (七),Qwen2.5-7B-Instruct 模型微调与vllm部署详细流程实战

文章目录 介绍llama-factory 安装装包下载模型 微调模型数据集训练模型 微调后的模型推理 介绍 时隔已久的 llama-factory 系列教程更新了。本篇文章是第七篇&#xff0c;之前的六篇&#xff0c;大家酌情选看即可。 因为llama-factory进行了更新&#xff0c;我前面几篇文章的实…

利用Docker容器技术部署发布web应用程序

Docker是什么&#xff1f; docker 是一个开源的应用容器引擎&#xff0c;可以帮助开发者打包应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器是完全使用沙箱机制&#xff0c;相互之间不会有任何…

SpringCloud框架学习(第五部分:SpringCloud Alibaba入门和 nacos)

目录 十二、SpringCloud Alibaba入门简介 1. 基本介绍 2.作用 3.版本选型 十三、 SpringCloud Alibaba Nacos服务注册和配置中心 1.简介 2.各种注册中心比较 3.下载安装 4.Nacos Discovery服务注册中心 &#xff08;1&#xff09; 基于 Nacos 的服务提供者 &#xf…

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

信创改造 - TongRDS 替换 Redis

记得开放 6379 端口哦 1&#xff09;首先在服务器上安装好 TongRDS 2&#xff09;替换 redis 的 host&#xff0c;post&#xff0c;passwd 3&#xff09;TongRDS 兼容 jedis # 例如&#xff1a;更改原先 redis 中对应的 host&#xff0c;post&#xff0c;passwd 改成 TongRDS…

Python 爬虫入门教程:从零构建你的第一个网络爬虫

网络爬虫是一种自动化程序&#xff0c;用于从网站抓取数据。Python 凭借其丰富的库和简单的语法&#xff0c;是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识&#xff0c;并实现一个简单的爬虫项目。 1. 什么是网络爬虫&#xff1f; 网络爬虫&#x…

从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)

本文不仅细化了每一个步骤&#xff0c;实现了从0到1部署Tomcat和添加servlet。还针对IDEA2024版和以前的版本在部署上的区别&#xff0c;做了详细介绍&#xff0c;尤其是add framework support部分。与此同时&#xff0c;针对控制台中文乱码问题&#xff0c;本文也给出了详细解…

书生大模型实战营第四期-入门岛-4. maas课程任务

书生大模型实战营第四期-入门岛-4. maas课程任务 任务一、模型下载 任务内容 使用Hugging Face平台、魔搭社区平台&#xff08;可选&#xff09;和魔乐社区平台&#xff08;可选&#xff09;下载文档中提到的模型&#xff08;至少需要下载config.json文件、model.safetensor…

相亲交友小程序项目介绍

一、项目背景 在当今快节奏的社会生活中&#xff0c;人们忙于工作和事业&#xff0c;社交圈子相对狭窄&#xff0c;寻找合适的恋爱对象变得愈发困难。相亲交友作为一种传统而有效的社交方式&#xff0c;在现代社会依然有着巨大的需求。我们的相亲交友项目旨在为广大单身人士提…

初级数据结构——二叉树题库(c++)

这里写目录标题 前言[1.——965. 单值二叉树](https://leetcode.cn/problems/univalued-binary-tree/)[2.——222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/)[3.——144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-…

【前端】ES6基础

1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录&#xff0c;也可以使用默认目录 插件&#xff1a; 输入 Chinese&#xff0c;中文插件 安装&#xff1a; open in browser&#xff0c;直接右键文件…

25A物联网微型断路器 智慧空开1P 2P 3P 4P-安科瑞黄安南

微型断路器&#xff0c;作为现代电气系统中不可或缺的重要组件&#xff0c;在保障电路安全与稳定运行方面发挥着关键作用。从其工作原理来看&#xff0c;微型断路器通过感知电流的异常变化来迅速作出响应。当电路中的电流超过预设的安全阈值时&#xff0c;其内部的电磁感应装置…

数据结构--Map和Set

目录 一.二叉搜索树1.1 概念1.2 二叉搜索树的简单实现 二.Map2.1 概念2.2 Map常用方法2.3 Map使用注意点2.4 TreeMap和HashMap的区别2.5 HashMap底层知识点 三.Set3.1 概念3.2 Set常用方法3.3 Set使用注意点3.4 TreeSet与HashSet的区别 四.哈希表4.1 概念4.2 哈希冲突与避免4.3…

计算机操作系统——进程控制(Linux)

进程控制 进程创建fork&#xff08;&#xff09;函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出&#xff08;Exit&#xff09;由于信号终止非…

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1&#xff1a;使用“空间连接 (Spatial Join)”工具方法 2&#xff1a;使用“点计数 (Point Count)”工具方法 3&#xff1a;通过“选择 (Select by Location)”统计方法 4&#xff1a;通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…

通过端口测试验证网络安全策略

基于网络安全需求&#xff0c;项目中的主机间可能会有不同的网络安全策略&#xff0c;这当然是好的&#xff0c;但很多时候&#xff0c;在解决网络安全问题的时候&#xff0c;同时引入了新的问题&#xff0c;如k8s集群必须在主机间开放udp端口&#xff0c;否则集群不能正常的运…

鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)

文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多&#xff0c;跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时&#xff0c;需要解决设备发现、设备认证、设备连接、数据同步等技术难题&#xff0c;不但开发成本高&#xff0c;还存…

web day03 Maven基础 Junit

目录 Maven坐标&#xff1a; 依赖排除&#xff1a; 依赖范围&#xff1a; Maven生命周期&#xff1a; 单元测试&#xff1a; Junit入门&#xff1a; 断言&#xff1a; Junit中的常见注解&#xff1a; 概念&#xff1a;Maven 是一款用于管理和构建 Java项目的工具&#…