如何在 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 三个组件组成,它们共同工作以实现日志数据的收集、存储、搜索和可视化。下面是对这三个组件的简要介绍:
- Elasticsearch:
- 搜索引擎:Elasticsearch 是一个基于 Lucene 构建的搜索引擎,提供了全文搜索和分析的能力。它能够存储大量的数据,并支持快速的搜索和分析。
- 分布式设计:Elasticsearch 是分布式的,这意味着它可以运行在多个服务器上,并且能够自动处理数据的分片和复制,以实现高可用性和容错。
- 实时搜索:Elasticsearch 提供实时的搜索能力,可以快速响应查询请求,适合需要快速分析和响应的场景。
- Logstash:
- 数据收集器:Logstash 是一个服务器端的数据处理器,负责从不同来源收集日志数据,如文件、数据库、消息队列等。
- 数据转换器:Logstash 可以将收集到的数据进行过滤和转换,以满足特定的需求,比如解析日志格式、添加字段、执行数据的聚合等。
- 数据转发器:处理后的数据可以被 Logstash 转发到 Elasticsearch 或其他存储系统中,用于后续的搜索和分析。
- Kibana:
- 可视化工具:Kibana 是一个基于 Web 的界面,用于可视化 Elasticsearch 中的数据。它提供了图表、地图、仪表板等多种数据展示方式。
- 数据探索:Kibana 允许用户通过简单的查询语言(KQL)来探索数据,发现数据中的模式和趋势。
- 仪表板和报告:用户可以创建自定义的仪表板,将不同的视图和图表组合在一起,以便于监控和报告。
ELK Stack的优势在于其强大的搜索能力、灵活的数据管道处理和直观的数据可视化,使其成为许多开发者监控和分析日志数据的首选工具。随着技术的发展,ELK Stack也在不断进化,增加了更多高级功能,如安全特性、机器学习等,以满足不断变化的业务需求。
接下来,我将一步一步教大家如何进行安装和部署!!
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
- 创建一个指向服务器 IP 地址的 A 记录。例如:kibana.your_domain.com
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。
- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
- 我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
- 输入
ssh root@你的服务器IP
例如ssh root@154.9.227.239
回车后,首次需要输入yes
,再次回车后即可登录服务器。
- 到此为止,我们的云服务器就远程连接上了。
开始部署
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 登录屏幕。
我们已经成功地看到了如何在 Ubuntu 22.04 服务器上安装 ELK Stack。现在你可以使用 Elasticsearch、Logstash 和 Kibana 进行日志数据的收集、分析和可视化了。这个设置可以根据你的具体需求进行扩展和定制。我们已经配置了 Kibana,使其可以通过自定义域名公开访问,并使用 Let’s Encrypt 进行 SSL 加密。
相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site
相关文章:

如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack
今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack,并集成 Nginx 作为 Web 服务器,同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack,包括 Elasticsearch、Logstash 和 Kibana,是一套强大的工具,用…...

Python爬虫:深入探索1688关键词接口获取之道
在数字化经济的浪潮中,数据的价值愈发凸显,尤其是在电商领域。对于电商平台而言,关键词不仅是搜索流量的入口,也是洞察市场趋势、优化营销策略的重要工具。1688作为中国领先的B2B电商平台,其关键词接口的获取对于商家来…...

Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
目录 一、CA机构 二、Lets Encrypt特点 三、申请SSL 一、CA机构 Lets Encrypt是一个由非营利组织Internet Security Research Group (ISRG)运营的证书颁发机构(CA),旨在通过自动化和开放的方式为全球网站提供免费、可靠的SSL/TLS证书。…...

JSON Web Token (JWT)的简单介绍、验证过程及令牌刷新思路
目录 一、JWT 1、什么是Jwt 2、为什么要使用Jwt 3、应用场景 4.Jwt的组成 4.1、Header 4.2、Payload 4.3、signature 二、Jwt验证过程 1、生成Jwt令牌 2、解析旧的Jwt 3、复制Jwt 4、Jwt有效时间测试 三、Jwt令牌刷新思路 1、配置JwtFilter过滤器 2、登录生成Jwt令…...

xxl-job入门
xxl-job , 定时任务 分布式 , 带来的问题的 解决方案 像之前 很多项目都用到定时任务, 但是如果要改为 分布式, 那么定时任务 就要用到 xxl-job 1.用户画像 拼多多,看了某个东西后,推荐类似东西, 做埋…...

100.【C语言】数据结构之二叉树的堆实现(顺序结构) 1
目录 1.顺序结构 2.示意图 编辑 从物理结构还原为逻辑结构的方法 3.父子节点编号的规律 4.顺序存储的前提条件 5.堆的简介 堆的定义 堆的两个重要性质 小根堆和大根堆 6.堆的插入 7.堆的实现及操作堆的函数 堆的结构体定义 堆初始化函数HeapInit 堆插入元素函…...
大模型 VS 大语言模型
最近很多朋友搞不懂大模型和大预言模型的区别,总是把大模型就认为是大语言模型。 今天就用这篇帖子做一个科普。 大模型 概念:大模型是指拥有超大规模参数(通常在十亿个以上)、复杂计算结构的机器学习模型。它通常能够处理海量数…...

Linux高阶——1117—TCP客户端服务端
目录 1、sock.h socket常用函数 网络初始化函数 首次响应函数 测试IO处理函数 获取时间函数 总代码 2、sock.c SOCKET() ACCEPT()——服务端使用这个函数等待客户端连接 CONNECT()——客户端使用这个函数连接服务端 BIND()——一般只有服务端使用 LISTEN()——服务端…...
【Qt】Qt 在main.cpp中使用tr()函数报错
1. 问题 Qt 在main.cpp中使用tr()报错。 error: tr was not declared in this scope2. 解决方法 main.cpp中注意如下: //添加头文件 #include <QObject>//添加QObject QObject::tr("Hello")3. 参考 Qt tr()函数不起效的小问题...
面向对象高级(5)接口
面向对象高级(5) 接口 接口就是规范,定义的是一组规则,体现了现实世界中“如果是...则必须能...”的思想。继承是一个"是不是"的is-a关系,而接口实现则是 "能不能"的has-a关系。 1、接口的定义格…...

uniapp发布android上架应用商店权限
先看效果: 实现原理: 一、利用uni.addInterceptor的拦截器,在一些调用系统权限前拦截,进行弹窗展示,监听确定取消实现业务逻辑。 二、弹窗是原生nativeObj进行drawRect绘制的 三、权限申请调用使用的 plus.android.…...

Centos Stream 9安装Jenkins-2.485 构建自动化项目步骤
官网:https://www.jenkins.io/ 1 下载 环境准备: 版本支持查询:https://pkg.jenkins.io/redhat-stable/ 安装JDK17:https://blog.csdn.net/qq_44870331/article/details/140784297 yum -y install epel-release wget upgradew…...

电路模型和电路定理(二)
电路元件 是电路中最基本的组成单元。 电阻元件:表示消耗电能的元件 电感元件:表示产生磁场,储存磁场能的元件 电容元件:表示产生电场,储存电场能量的元件 电压源和电流源:表示将其他形式的能量转变成…...

瑞佑液晶控制芯片RA6807系列介绍 (三)软件代码详解 Part.10(让PNG图片动起来)完结篇
RA6807是RA8876M的缩小版,具备RA8876M的所有功能,只将MCU控制接口进行缩减,仅保留SPI-3和I2C接口,其它功能基本相同。 该芯片最大可控制854x600的分辨率,内建64Mbits显存,多个图层,使用起来相当…...

Qt常用控件 按钮
文章目录 1. QAbstractButton 简介2. QPushButton2.1 例子1,设置按钮的图标2.2 例子2,设置按钮快捷键 3. QRadioButton3.1 介绍3.2 例子1,选择性别3.3 例子2,试试其他的信号3.3 例子3,分组 4. QCheckBox4.1 介绍4.2 例…...

MySQL学习/复习10视图/用户/权限/语言连接数据库
一、视图 1.1创建视图 1.2视图影响基表 1.3基表影响视图 1.4删除视图 1.5视图使用规则 二、数据库的用户 2.1mysql中的user表 注意事项:主机/用户名/密码/权限 2.2用户的创建 注意事项:设置密码与登录地点需谨慎 2.3删除用户 注意事项:% 2.4…...

vulfocus在线靶场:tomcat-pass-getshell 弱口令 速通手册
目录 一、启动环境,访问页面,并登录,账号密码都是tomcat 二、哥斯拉打war包,图解 三、上传war包,图解 四、访问我们直接url/木马文件名/木马文件.jsp,是否存在了 五、 哥斯拉测试连接结果success&…...

c#:winform调用bartender实现打印(学习整理笔记)
效果 学习路径 C# winform调用Bartender进行自定义打印、批量打印、检索文件夹中的模板_哔哩哔哩_bilibili 一、初始环境搭建见: c#:winform引入bartender-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/143989473?sharetypeblogdetail&s…...
牛客题库 21738 牛牛与数组
牛牛与数组题目链接 题目大意 牛牛喜欢这样的数组: 1:长度为n 2:每一个数都在1到k之间 3:对于任意连续的两个数A,B,A<=B 与(A % B != 0) 两个条件至少成立一个请问一共有多少满足条件的数组,对 1 e 9 + 7 1e^9+7 1e9+7 取模 输入格式 输入两个整数 n , k n,k n,…...

探索PDFMiner:Python中的PDF解析利器
文章目录 **探索PDFMiner:Python中的PDF解析利器**1. 背景介绍:为何选择PDFMiner?2. PDFMiner是什么?3. 如何安装PDFMiner?4. 简单库函数使用方法4.1 提取文本4.2 获取页面布局信息4.3 提取表格数据4.4 提取图像 5. 应…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...