Linux单机部署ELK及简单使用

本文详细介绍了如何安装和配置ElasticSearch、Kibana和filebeat。首先,确保安装JDK1.8以上,版本匹配,然后执行RPM安装,配置内存和垃圾回收。接着,创建数据和日志目录,启动并设置ES的自启动。对于Kibana,同样进行安装,配置服务器列表和语言显示。filebeat的配置涉及输入、输出、日志和管道设置。最后,提供了检查数据推送和使用Kibana查询的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装ElasticSearch

1.ES由java开发,需安装jdk1.8及以上;
2.ES、Kibana、filebeat版本要保持一致,如7.2.0;

1、上传elasticsearch-7.2.0-x86_64.rpm至数据盘;
2、执行安装命令:
rpm -ivh elasticsearch-7.2.0-x86_64.rpm
3、进入 es bin目录
cd /usr/share/elasticsearch/bin
4、修改elasticsearch文件权限
chmod 755 elasticsearch
5、进入/etc/elasticsearch修改jvm.options 中的gc垃圾回收
cd /etc/elasticsearch
vi jvm.options
注释:-XX:+UseConcMarkSweepGC
增加:-XX:+UseG1GC
 
注意:针对elasticsearch无法启动的问题,修改jvm堆内存、分配内存。Xms 表示堆的初始大小,Xmx 表示可分配的最大内存,默认都是 1GB
vi /etc/elasticsearch/jvm.options 修改为适当参数

在这里插入图片描述

6、执行
mkdir /data/es-data (创建数据存放目录)
mkdir /data/es-log	(创建日志存放目录)
chown -R elasticsearch:elasticsearch /data/es-*(修改归属)
7、替换/etc/elasticsearch目录下 elasticsearch.yml
8、启动elasticsearch 
systemctl enable elasticsearch (设置开机自启动)
systemctl start elasticsearch (启动es)
systemctl status elasticsearch (查看es状态)
9、测试es是否启动
curl -X GET http://localhost:9200
以下为成功示例,未启动成功,无返回结果
10、ES中增加密码
1)在/etc/elasticsearch/elasticsearch.yml中增加配置:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
2)重启ES服务,执行命令,输入密码
a)在/usr/share/elasticsearch/bin/目录下执行./elasticsearch-setup-passwords interactive(如找不到elasticsearch/bin所在目录,可执行find / -name elasticsearch-setup-passwords 查找)
b)分别为elastic, kibana, logstash_system,beats_system等用户设置密码;

在这里插入图片描述

二、安装Kibana

1、上传kibana-7.2.0-x86_64.rpm至数据盘并执行安装命令
rpm -ivh kibana-7.2.0-x86_64.rpm
2、进入/etc/kibana目录
cd /etc/kibana
3、修改配置文件,允许访问的ip地址,配置elasticsearch服务器列表:
vi kibana.yml
 	server.host: "192.168.31.64"
 	elasticsearch.hosts: ["http://127.0.0.1:9200"]
kibana可修改为中文展示
vi kibana.yml文件末尾增加一行
i18n.locale: "zh-CN"

4、启动kibana
systemctl enable kibana(设置自启动)
systemctl start kibana (启动kibana)
systemctl status kibana(查看kibana状态)

5、测试:通过浏览器访问kibana
http://192.168.31.64:5601/

在这里插入图片描述

6.针对ES需要密码访问,也需在kibana.yml配置文件中增加用户密码
elasticsearch.username: "elastic"
elasticsearch.password: "xxxxx"

三、安装filebeat

常用配置filebeat.yml
1.inputs:配置采集文件路径、内容等;

  • type: 指定文件的输入类型log(默认)或者stdin
  • enable: true #表示是该log类型配置生效;
  • paths:指定采集文件路径,可用正则匹配;
  • fields:属性字段,可自定义用于放置到filebeat对象中,需唯一识别;
  • encoding: 指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的
  • tail_files: 如果设置为true,Filebeat从文件尾开始监控文件新增内容,把新增的每一行文件作为一个事件依次发送,而不是从文件开始处重新发送所有内容。
    【如果此选项设置为true,则Filebeat将开始在每个文件的末尾而不是开头读取新文件。 当此选项与日志轮换结合使用时,可能会跳过新文件中的第一个日志条目。 默认设置为false。此选项适用于Filebeat尚未处理的文件。 如果您之前运行过Filebeat并且文件的状态已经保留,则tail_files将不会应用。要将tail_files应用于所有文件,必须停止Filebeat并删除registry注册表文件。 请注意,这样做会删除以前的所有状态。】
  • ignore_older:可以指定Filebeat忽略指定时间段以外修改的日志内容,比如2h(两个小时)或者5m(5分钟)。
    【如果启用此选项,Filebeat将忽略在指定的时间跨度之前修改的所有文件。 如果长时间保留日志文件,配置ignore_older会特别有用。 例如,如果要启动Filebeat,但只想发送上周的文件和最新的文件,则可以配置此选项。 您可以使用时间字符串,如2小时(2小时)和5米(5分钟)。 默认值为0,禁用该设置。 注释掉配置与将其设置为0具有相同的效果。
    注意:这个ignore_older是针对文件,如果文件最近一次的更新时间超过设定的时间,启动filebeat的时候,就不会去读那个文件,不过如果启动后那个文件又有更新,就会采集更新之后的部分,主要适用用监控一个目录下多个文件的时候】
  • fields_under_root:如果该选项设置为true,则新增fields成为顶级目录(顶层目录所放参数一般为系统参数),而不是将其放在fields目录下。自定义的field 会覆盖filebeat 默认的field,采集多个文件时不要开启此选项,开启后会造成多个采集不生效。
  • include_lines: 包含哪些正则表达式列表,以匹配你要 Filebeat 包括的行。 Filebeat 仅导出与列表中的正则表达式匹配的行。 默认情况下,所有行均被导出,空行将被忽略,如果指定了多行设置,则在通过 include_lines 过滤行之前,将每条多行消息合并为一行。
  • exclude_lines: 不包含的行,与上使用相似;
    注意:注意:如果同时定义了 include_lines 和 exclude_lines,Filebeat 将首先执行 include_lines,然后再执行 exclude_lines。 定义两个选项的顺序无关紧要。 即使 exclude_lines 在配置文件中的 include_lines 之前出现,include_lines 选项也将始终在 exclude_lines 选项之前执行。

内容参考优快云博主「Jepson2017」

2.outputs:配置保持采集文件相关;

  • 配置es主机信息;
  • 配置文件索引信息(需注意fields及自定义属性层级关系);
  • username/password配置es访问用户名及密码;
    3.pipelines:配置格式化日志格式相关;
    4.logging: 配置filebeat客户端日志输入相关;
    a)logging.level: debug时可查看调试信息,查看从fiebeat采集到发送全过程
    b)从代码的实现角度来看,filebeat大概可以分以下几个模块:
    • input: 找到配置的日志文件,启动harvester
    • harvester: 读取文件,发送至spooler - spooler: 缓存日志数据,直到可以发送至publisher
    • publisher: 发送日志至后端,同时通知registrar
    • registrar: 记录日志文件被采集的状态
filebeat.inputs: 

- type: log
  enabled: true
  paths:
    - D:\IIS-LOGS\xxx\test_ex*
  fields:
    index: 20231018520014201
  tail_files: true
  exclude_files: [".gz$"]
  exclude_lines: ['^#']
  encoding: utf-8

- type: log
  enabled: true
  paths:
    - D:\IIS-LOGSyyyy\test_ex*
  fields:
    index: 20231018520014202
  tail_files: true
  exclude_files: [".gz$"]
  exclude_lines: ['^#']
  encoding: utf-8

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

setup.ilm.enabled: false

setup.template.settings:
  index.number_of_shards: 1

output.elasticsearch:
  hosts: ["192.168.31.64:9200"]
  username: "elastic"
  password: "xxx"
  indices:
    - index: "20231018520014201-%{+YYYY-MM}"
      when.equals:
        fields: 
          index: 20231018520014201

    - index: "20231018520014202-%{+YYYY-MM}"
      when.equals:
        fields: 
          index: 20231018520014202


  pipelines:
    - pipeline: "IIS-ACCESS-STANDARD"
      when.equals:
        fields: 
          index: 20231018520014201

    - pipeline: "IIS-ACCESS-STANDARD"
      when.equals:
        fields: 
          index: 20231018520014202

logging.level: error
logging.to_files: true
logging.files:
  name: filebeat
  keepfiles: 3

四、常用

1、查看filebeat是否将数据推送到es,根据配置的索引访问该地址,可根据docs.count推送条数,store.size推送大小查看更新进度。

  • 查看所有索引信息:http://localhost:9200/_cat/indices/?v
  • 查看某索引下存的信息,查询的信息为索引结构信息(indexName为索引名称)GET方法:http://127.0.0.1:9200/indexName
  • 查看某个索引下的所有文档数据
    GET方法:http://localhost:9200/indexName/_search(需带下面的请求体,查多个索引的话可以把地址中的indexName改为indexName,indexName)
  • 删除指定索引方法,用postman的delete方法调用
    http://localhost:9200/indexName
    返回结果为{“acknowledged”: true}即删除成功
  • es通过索引查询相关信息参考博客

在这里插入图片描述
2、kibana使用
a)根据filebeat配置中的索引创建索引;
在这里插入图片描述
b)使用索引查询数据:

  • 选择要查询的索引
  • 选择查询后需要展示的字段;
  • 输入要查询的内容,字符串需要用"",若不用双引号会匹配成单词;
  • 筛选时间,可以设置成时间段,可以设置成距今最近;
  • 查询
    在这里插入图片描述
<think>我们正在为AlmaLinux9.6单机部署ELK8.17版本。ELK包括Elasticsearch,Logstash,Kibana三个组件。根据引用内容,我们需要注意以下几点:1.不能使用root用户运行,需要创建专用用户(如elk)并授权。2.需要调整系统设置(如文件描述符、虚拟内存等)以满足Elasticsearch的要求。3.可能需要调整JVM堆内存设置(根据服务器内存情况)。4.安装过程包括下载解压、配置、启动、验证等步骤。由于引用中提供了部分步骤,但针对的是不同的Linux发行版(Ubuntu)或不同版本,我们将结合AlmaLinux的特点进行调整。以下是详细步骤:###1.准备工作-确保服务器满足要求:至少4GB内存(推荐8GB),JDK(Elasticsearch8.17自带OpenJDK,无需单独安装)。-更新系统:```bashsudodnfupdate-y```-安装常用工具:```bashsudodnfinstallwgettar-y```###2.创建ELK用户和组ELK不能以root运行,因此创建专用用户和组:```bashsudogroupaddelksudouseradd-gelkelk```###3.下载ELK8.17在`/usr/local`目录下创建elk目录,并下载解压:```bashsudomkdir/usr/local/elksudochownelk:elk/usr/local/elkcd/usr/local/elk```下载Elasticsearch、Kibana、Logstash(注意版本号一致):```bashsudo-uelkwgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.3-linux-x86_64.tar.gzsudo-uelkwgethttps://artifacts.elastic.co/downloads/kibana/kibana-8.17.3-linux-x86_64.tar.gzsudo-uelkwgethttps://artifacts.elastic.co/downloads/logstash/logstash-8.17.3-linux-x86_64.tar.gz```解压:```bashsudo-uelktar-zxvfelasticsearch-8.17.3-linux-x86_64.tar.gzsudo-uelktar-zxvfkibana-8.17.3-linux-x86_64.tar.gzsudo-uelktar-zxvflogstash-8.17.3-linux-x86_64.tar.gz```删除压缩包(可选):```bashsudo-uelkrm*.tar.gz```###4.配置Elasticsearch进入Elasticsearch目录:```bashcdelasticsearch-8.17.3```修改配置文件`config/elasticsearch.yml`:```bashsudo-uelkvimconfig/elasticsearch.yml```修改以下配置(根据单机部署调整):```yaml#设置集群名称(单节点)cluster.name:my-elk-cluster#设置节点名称node.name:node-1#设置数据存储路径(确保elk用户有权限)path.data:/usr/local/elk/elasticsearch-8.17.3/data#设置日志存储路径path.logs:/usr/local/elk/elasticsearch-8.17.3/logs#设置监听地址(允许任何IP访问,生产环境应限制)network.host:0.0.0.0#设置HTTP端口http.port:9200#单节点发现配置discovery.type:single-node```(可选)修改JVM堆内存设置(`config/jvm.options`),根据服务器内存调整,例如:```bashsudo-uelkvimconfig/jvm.options```将`-Xms`和`-Xmx`设置为相同值,例如2GB(根据服务器内存调整):```-Xms2g-Xmx2g```####调整系统设置Elasticsearch需要调整系统参数:-修改`/etc/security/limits.conf`:```bashsudovim/etc/security/limits.conf```添加:```elksoftnofile65536elkhardnofile65536elksoftnproc4096elkhardnproc4096```-修改`/etc/sysctl.conf`:```bashsudovim/etc/sysctl.conf```添加:```vm.max_map_count=262144```应用:```bashsudosysctl-p```###5.启动Elasticsearch切换到elk用户,并启动(后台启动):```bashsudo-uelk-icd/usr/local/elk/elasticsearch-8.17.3./bin/elasticsearch-d```退出elk用户(按Ctrl+D或输入`exit`)。验证启动:```bashcurlhttp://localhost:9200```应返回包含`YouKnow,forSearch`的JSON信息。###6.配置Kibana进入Kibana目录:```bashcd/usr/local/elk/kibana-8.17.3```修改配置文件`config/kibana.yml`:```bashsudo-uelkvimconfig/kibana.yml```修改以下配置:```yamlserver.port:5601server.host:"0.0.0.0"#连接Elasticsearch(本机)elasticsearch.hosts:["http://localhost:9200"]#设置Kibana界面语言为中文(可选)i18n.locale:"zh-CN"```###7.启动Kibana以elk用户启动(后台启动):```bashsudo-uelk-icd/usr/local/elk/kibana-8.17.3./bin/kibana&```退出elk用户。验证启动:```bashcurlhttp://localhost:5601```或通过浏览器访问`http://服务器IP:5601`。###8.配置Logstash(可选)如果不需要Logstash(例如直接使用Filebeat),可跳过。这里简单配置一个测试管道。进入Logstash目录:```bashcd/usr/local/elk/logstash-8.17.3```创建配置文件`config/logstash-sample.conf`:```bashsudo-uelkvimconfig/logstash-sample.conf```内容示例(从标准输入接收,输出到标准输出和Elasticsearch):```confinput{stdin{}}output{elasticsearch{hosts=>["http://localhost:9200"]index=>"logstash-test-%{+YYYY.MM.dd}"}stdout{}}```启动Logstash(测试):```bashsudo-uelk./bin/logstash-fconfig/logstash-sample.conf```在控制台输入一些文本,观察是否输出到Elasticsearch。###9.设置服务自启动(可选)为了方便,可以创建systemd服务文件。####Elasticsearch服务创建`/etc/systemd/system/elasticsearch.service`:```bashsudovim/etc/systemd/system/elasticsearch.service```内容:```[Unit]Description=ElasticsearchAfter=network.target[Service]User=elkGroup=elkWorkingDirectory=/usr/local/elk/elasticsearch-8.17.3ExecStart=/usr/local/elk/elasticsearch-8.17.3/bin/elasticsearchRestart=alwaysRestartSec=3LimitNOFILE=65536[Install]WantedBy=multi-user.target```####Kibana服务创建`/etc/systemd/system/kibana.service`:```bashsudovim/etc/systemd/system/kibana.service```内容:```[Unit]Description=KibanaAfter=network.targetelasticsearch.service[Service]User=elkGroup=elkWorkingDirectory=/usr/local/elk/kibana-8.17.3ExecStart=/usr/local/elk/kibana-8.17.3/bin/kibanaRestart=alwaysRestartSec=3[Install]WantedBy=multi-user.target```####Logstash服务(可选)创建`/etc/systemd/system/logstash.service`:```bashsudovim/etc/systemd/system/logstash.service```内容:```[Unit]Description=LogstashAfter=network.targetelasticsearch.service[Service]User=elkGroup=elkWorkingDirectory=/usr/local/elk/logstash-8.17.3ExecStart=/usr/local/elk/logstash-8.17.3/bin/logstashRestart=alwaysRestartSec=3[Install]WantedBy=multi-user.target```启用服务:```bashsudosystemctldaemon-reloadsudosystemctlenableelasticsearchkibanasudosystemctlstartelasticsearchkibana#如果需要logstashsudosystemctlenablelogstashsudosystemctlstartlogstash```###10.安全配置(可选)Elasticsearch8.x默认开启安全功能,首次启动时会生成密码和证书。在单节点且测试环境下,可以禁用安全(不推荐生产):在`elasticsearch.yml`中添加:```yamlxpack.security.enabled:false```然后重启Elasticsearch。如果启用安全,则需要配置Kibana使用用户名密码(在Kibana配置中设置`elasticsearch.username`和`elasticsearch.password`)。###总结以上步骤完成了在AlmaLinux9.6上单机部署ELK8.17。现在可以通过浏览器访问Kibana(端口5601)进行日志可视化管理。§§相关问题§§1.如何配置Filebeat将日志发送到ELK?2.如何为Elasticsearch和Kibana配置SSL/TLS加密?3.在ELK中如何创建索引模式并可视化数据?4.如何备份和恢复Elasticsearch数据?</think>### AlmaLinux 9.6 单机部署 ELK 8.17 完整指南 #### 一、准备工作 1. **系统更新** ```bash sudo dnf update -y sudo reboot ``` 2. **创建专用用户** ELK 禁止使用 root 运行: ```bash sudo groupadd elk sudo useradd elk -g elk -p elkpassword sudo mkdir /usr/local/elk sudo chown -R elk:elk /usr/local/elk ``` 3. **安装依赖** ```bash sudo dnf install tar wget java-17-openjdk -y ``` --- #### 二、安装 Elasticsearch 8.17 1. **下载并解压** ```bash cd /usr/local/elk sudo -u elk wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.3-linux-x86_64.tar.gz sudo -u elk tar -zxvf elasticsearch-8.17.3-linux-x86_64.tar.gz ``` 2. **修改 JVM 堆配置**(可选) ```bash sudo -u elk vim elasticsearch-8.17.3/config/jvm.options ``` 修改(例如 2GB 内存服务器): ```ini -Xms1g -Xmx1g ``` 3. **调整系统参数** ```bash sudo vim /etc/security/limits.conf ``` 添加: ```ini elk soft nofile 65535 elk hard nofile 65535 elk soft nproc 4096 ``` ```bash sudo vim /etc/sysctl.conf ``` 添加: ```ini vm.max_map_count=262144 ``` 应用配置: ```bash sudo sysctl -p ``` 4. **启动 Elasticsearch** ```bash sudo -u elk /usr/local/elk/elasticsearch-8.17.3/bin/elasticsearch -d ``` 验证: ```bash curl http://localhost:9200 # 应返回 "You Know, for Search" ``` --- #### 三、安装 Kibana 8.17 1. **下载并解压** ```bash cd /usr/local/elk sudo -u elk wget https://artifacts.elastic.co/downloads/kibana/kibana-8.17.3-linux-x86_64.tar.gz sudo -u elk tar -zxvf kibana-8.17.3-linux-x86_64.tar.gz ``` 2. **配置 Kibana** ```bash sudo -u elk vim kibana-8.17.3/config/kibana.yml ``` 修改关键参数: ```yaml server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"] ``` 3. **启动 Kibana** ```bash sudo -u elk /usr/local/elk/kibana-8.17.3/bin/kibana & ``` 访问:`http://<服务器IP>:5601` --- #### 四、安装 Logstash 8.17(可选) 1. **下载并解压** ```bash cd /usr/local/elk sudo -u elk wget https://artifacts.elastic.co/downloads/logstash/logstash-8.17.3-linux-x86_64.tar.gz sudo -u elk tar -zxvf logstash-8.17.3-linux-x86_64.tar.gz ``` 2. **基础配置** 创建测试配置文件: ```bash sudo -u elk vim /usr/local/elk/logstash-8.17.3/config/logstash-sample.conf ``` 内容: ```ruby input { stdin {} } output { elasticsearch { hosts => ["localhost:9200"] } stdout {} } ``` 3. **启动测试** ```bash sudo -u elk /usr/local/elk/logstash-8.17.3/bin/logstash -f config/logstash-sample.conf ``` --- #### 五、防火墙配置 ```bash sudo firewall-cmd --permanent --add-port={9200/tcp,5601/tcp} sudo firewall-cmd --reload ``` --- #### 六、验证部署 | 组件 | 访问方式 | 预期结果 | |---------------|--------------------------|-----------------------| | Elasticsearch | `curl http://localhost:9200` | JSON 包含版本信息 | | Kibana | `http://<IP>:5601` | Kibana 欢迎界面 | | Logstash | 控制台输入文本 | 文本显示在终端/ES | [^1][^2] --- #### 常见问题解决 1. **启动权限错误** 检查目录权限:`sudo chown -R elk:elk /usr/local/elk` 2. **端口占用** 查看占用进程:`sudo ss -tulnp | grep 9200` 3. **内存不足** 调整 JVM 堆大小或添加交换空间: ```bash sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 sudo mkswap /swapfile sudo swapon /swapfile ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值