EFK 部署安装

一、环境

  • 系统版本:Ubuntu
  • jdk版本:openjdk11
  • Elasticsearch 版本:8.8
  • fluentd版本:1.14.3
  • kibana版本:8.8.0

二、更新系统依赖源

sudo apt update
sudo apt upgrade -y

三、 jdk安装配置

这里我们使用jdk11,当然你要使用jdk8也是可以的,不过,建议使用 JDK 11,因为它是 Elasticsearch 7.x 的推荐版本。如果你已经有 JDK 8,可以继续使用,但注意可能会遇到一些兼容性问题。

wget https://download.java.net/java/GA/jdk11/openjdk-11_linux-x64_bin.tar.gz

jdk的配置这里就不展开讲了,可以翻一下博主以往的笔记,有详细的配置记录。
配置成功后 ,版本信息:


image.png

四、安装 Elasticsearch

Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch

1. 下载 Elasticsearch

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.0-linux-x86_64.tar.gz

2. 解压 Elasticsearch:

tar -xzf elasticsearch-8.8.0-linux-x86_64.tar.gz

3. 配置 Elasticsearch 的配置文件,vi ./elasticsearch-8.8.0/config/elasticsearch.yml

# ======================== Elasticsearch Configuration =========================
# 集群名称
cluster.name: my-application
# 节点名称
node.name: node-1
# 日志存放地址
path.logs: /opt/EFK/elasticsearch-8.8.0/Logs
# 允许所有IP访问
network.host: 0.0.0.0
# HTTP端口号
http.port: 9200
# 启用跨域请求,允许从任何域名访问Elasticsearch API
http.cors.enabled: true
http.cors.allow-origin: "*"

# 启用X-Pack安全功能,确保只有经过身份验证的用户才能访问Elasticsearch集群
xpack.security.enabled: true
# 启用安全注册功能,允许新的节点以安全的方式加入到现有的Elasticsearch集群中
# 新节点会自动获取必要的证书和密钥材料,确保通信的安全性
xpack.security.enrollment.enabled: true
# 启用HTTP接口上的SSL/TLS加密,确保客户端与Elasticsearch之间的所有通信都是加密的
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12

# 启用传输层的SSL/TLS加密,确保Elasticsearch节点之间以及客户端与节点之间的内部通信也是加密的
xpack.security.transport.ssl:
  enabled: true
  # 设置传输层SSL/TLS连接的验证模式,确保节点将验证其他节点提供的证书
  verification_mode: certificate
  # 指定用于传输层SSL/TLS连接的密钥库文件路径
  keystore.path: certs/transport.p12
  # 指定用于传输层SSL/TLS连接的信任库文件路径,包含一组受信任的证书
  truststore.path: certs/transport.p12

# 初始主节点列表,指定哪些节点可以成为主节点
cluster.initial_master_nodes: ["node-1"]

4. 配置服务内存占用
找到你的jvm.options文件:vi /opt/EFK/elasticsearch-8.8.0/config/jvm.options
打开文件,找到 -Xms 和 -Xmx 设置,将它们都改为 1g:
这意味着分配给 Elasticsearch 的最小和最大内存都是 1GB。

-Xms1g
-Xmx1g

5. 创建系统用于管理 elasticsearch 的用户和组:

elasticsearch 不能使用root用户直接启动。所以一定要配置普通用户。

  • (1) 创建一个名为 elasticsearch 的用户组。
    sudo groupadd elasticsearch
  • (2) 创建一个名为 elasticsearch 的系统用户,并将其加入到刚才创建的 elasticsearch 用户组中。
    -r 选项表示创建一个系统用户,通常用于系统服务,通常这些用户没有登录权限。
    -g elasticsearch 指定新用户所属的用户组为 elasticsearch。
    sudo useradd -r -g elasticsearch elasticsearch
  • (3) 将 /opt/elasticsearch 目录及其所有子文件和目录的所有者和用户组更改为 elasticsearch。
    sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch

6. 将 Elasticsearch 注册到systemct,vi /etc/systemd/system/elasticsearch.service

[Unit]
# 描述
Decription=Elasticsearch
# 稳定地址
Documentation=http://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
# 表示该服务在网络在线后启动
Wants=network-online.target
# 确保网络已完全可用,再启动 Elasticsearch。
After=network-online.target

[Service]
# 指定运行该服务的用户
User=elasticsearch
# 指定运行该服务的用户组。
Group=elasticsearch
# 这是启动 Elasticsearch 的命令,指向实际的执行文件路径
ExecStart=/opt/EFK/elasticsearch-8.8.0/bin/elasticsearch
# 指定服务在失败时会自动重启。
Restart=on-failure
# 用于控制服务可以锁定的内存大小
LimitMEMLOCK=infinity

[Install]
WantedBy=multi-user.target

7. 重启systemctl 服务

sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl stop elasticsearch

8. 查看是否成功启动

image.png

9. 创建 elasticsearch 账户密码

cd /opt/EFK/elasticsearch-8.8.0/bin/
sudo ./elasticsearch-users useradd elastic -p abcd123 -r superuser
  • useradd:
    添加一个新用户。
  • elastic:
    要添加的用户的用户名。通常是 Elasticsearch 的内置超级用户。
  • -p abcd123:
    参数用于指定用户的密码。
  • -r superuser:
    参数用于指定用户的角色。角色设置为 superuser,这意味着该用户拥有完全访问权限,可以执行所有操作。

如果密码忘记了,可以重置成随机密码

sudo ./elasticsearch-reset-password -u elastic

回车后,输入elastic 密码

 sudo ./bin/elasticsearch-reset-password -u elastic -i

10. 访问:9200端口,到这里elasticsearch 就配置结束了
elasticsearch 地址:https://localhost:9200/_cluster/health?pretty

image.png

五、Fluentd 安装配置

1. 从 Fluentd 的官方网站或 GitHub 上下载。

wget https://github.com/fluent/fluentd/archive/v1.14.3.tar.gz

2. 解压下载的文件

tar -zxvf fluentd-1.14.3

3. 安装依赖

sudo apt update
sudo apt install -y ruby ruby-dev build-essential
sudo gem install bundler

4. 安装 Fluentd

cd fluentd-1.14.3
sudo gem build fluentd.gemspec
sudo gem install fluentd-*.gem
image.png

5. 配置Fluentd 的可执行环境
将 Fluentd 的可执行文件路径添加到用户的环境变量 PATH 中

echo 'export PATH="$PATH:/opt/EFK/fluentd-1.14.3/bin"' >> ~/.bashrc

重新加载 .bashrc 文件,使刚才添加的路径立即生效

source ~/.bashrc

6. 验证安装

fluentd --version
image.png

7. 配置 Fluentd 要监控的日志文件
创建或编辑配置文件 fluent.conf,通常放在 /etc/fluent 目录下。可以参考以下示例:

cd /opt/EFK/fluentd-1.14.3
mkdir config
cd ./config
touch  fluent.conf

将一下内容写入至 fluent.conf 文件

<system>
  # 记录提示信息、警告和错误。
  log_level info
  # 日志文件存放路径
  log /opt/EFK/fluentd-1.14.3/logs/fluentd_service.log
</system>

<source>
  @type tail
  path /var/log/your_log.log
  pos_file /var/log/your_log.log.pos
  tag your_log
  format none
</source>

<match your_log>
  @type elasticsearch
  host localhost
  port 9200
  logstash_format true
  scheme https
  ssl_verify false
# Elasticsearch的账户
  user "elastic"
# Elasticsearch的密码
  password "Lq3FDhZ39E2GvnUr3Lw4"
</match>
  • <source> 配置:

    • <source>:定义数据的来源。
    • @type tail:指定数据来源的类型为 tail,即实时读取文件的末尾数据,类似于 tail -f 命令。
    • path /var/log/your_log.log:指定要监控的日志文件的路径。在这里,Fluentd 会读取这个文件的新内容。
    • pos_file /var/log/your_log.log.pos:指定一个位置文件,用于记录已读取到文件的哪个位置。这样,当 Fluentd 重启时,可以从上次停止的地方继续读取文件。文件不存在会自动创建,但不能不指定文件名。
    • tag your_log:为读取的数据设置一个标签,后续处理时可以使用这个标签来匹配数据。
    • format none:指定文件内容的格式,这里设置为 none,表示 Fluentd 将直接读取原始文本。
  • <match> 配置:

    • <match your_log>:定义如何处理带有 your_log 标签的数据。
    • @type elasticsearch:指定数据的输出类型为 elasticsearch,表示要将数据发送到 Elasticsearch。
    • host localhost:指定 Elasticsearch 服务的主机名或 IP 地址,这里使用 localhost 表示 Elasticsearch 运行在同一台机器上。
    • port 9200:指定 Elasticsearch 服务的端口,9200 是 Elasticsearch 默认的端口。
    • logstash_format true:将数据格式化为 Logstash 格式,这样可以确保与 Elasticsearch 的兼容性。

8. 安装 Elasticsearch 插件:

sudo /opt/EFK/fluentd-1.14.3/bin/fluent-gem install fluent-plugin-elasticsearch

验证插件是否正确安装:

/opt/EFK/fluentd-1.14.3/bin/fluent-gem list | grep elasticsearch
image.png

9. 创建服务文件:
创建服务文件:sudo tounch /etc/systemd/system/fluentd.service
编辑服务文件:sudo vi /etc/systemd/system/fluentd.service

[Unit]
Description=Fluentd
After=network.target

[Service]
User=ubuntu
Group=ubuntu
# 以指定配置文件启动fluentd
ExecStart=/opt/EFK/fluentd-1.14.3/bin/fluentd -c /opt/EFK/fluentd-1.14.3/config/fluent.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

重新加载 systemd 配置:sudo systemctl daemon-reload
启动:sudo systemctl start fluentd
停止:sudo systemctl enable fluentd
状态:sudo systemctl status fluentd

10. 启动 Fluentd
-o 将日志文件写入指只当路径

fluentd -c /opt/EFK/fluentd-1.14.3/config/fluentd.conf -o /opt/EFK/fluentd-1.14.3/logs/fluentd_service.log

六、Kiban安装

Kiban 官方文档:https://www.elastic.co/guide/cn/kibana/current/access.html

1. 下载 Kiban :

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.8.0-linux-x86_64.tar.gz

2. 解压

tar -xzf kibana-8.8.0-linux-x86_64.tar.gz

3.修改kibana_system用户密码
通过API的方式修改kibana_system用户的密码
kibana_system 账户是由Elasticsearch服务创建的,是Elasticsearch中的一个内置用户,专门用于Kibana与Elasticsearch之间的通信。

image.png

4. 配置Kibana:

vi /opt/EFK/kibana-8.8.0/config/kibana.yml

编辑kibana-8.8.0-linux-x86_64/config/kibana.yml,至少设置以下几项:

# kibana服务端口
server.port: 5601
# 0.0.0.0 表示允许所有请求访问kibana
server.host: "0.0.0.0"
# elasticsearch 服务地址;如果elasticsearch 启用了SSL/TLS协议,那么这里就要用https。
elasticsearch.hosts: ["http://localhost:9200"]

# 当elasticsearch 启用了需要用户名和密码进行身份验证情况下,那么需要配置
# 使用Elasticsearch中创建的kibana_system用户。这个用户是专门用于Kibana与Elasticsearch通信的。
elasticsearch.username: "kibana_system"
elasticsearch.password: "Lq3FDhZ39E2GvnUr3Lw4" 

# 配置Kibana信任Elasticsearch的SSL证书;这通常是Elasticsearch的根证书。
elasticsearch.ssl.certificateAuthorities: ["/opt/EFK/elasticsearch-8.8.0/config/certs/http_ca.crt"]
# 设置SSL验证模式,确保Kibana验证Elasticsearch的证书
elasticsearch.ssl.verificationMode: full

5. 启动

/opt/EFK/kibana-8.8.0/bin/kibana
image.png

6. 浏览器访问
访问地址:http://localhost:5601/login

  • 可以用elastic 的超级用户登录
    elastic 用户作为超级用户,拥有所有权限,包括登录 Kibana 界面的权限。这是因为 elastic 用户是 Elasticsearch 的内置超级用户,具有最高的权限级别,可以执行所有操作,包括管理 Kibana。


    image.png

七 调试整个EFK堆栈

确保Elasticsearch正在运行并且可以通过9200端口访问。
确认Fluentd能够正常读取日志并将它们发送到Elasticsearch。
如果您安装了Kibana,请确保它能连接到Elasticsearch,并且能够看到由Fluentd发送的日志数据。
安全性:考虑启用Elasticsearch的安全特性,如SSL/TLS加密通信、基本认证等。
性能调优:根据实际负载调整Elasticsearch和Fluentd的资源配置,例如JVM堆大小、Fluentd的缓冲区大小等。
日志轮转:配置日志文件的轮转策略,避免单个日志文件过大影响性能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容