今天我们来聊聊如何在 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 [email protected]
回车后,首次需要输入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 => true
cacert => "/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