ELK部署安装集群版(一)

本文详细介绍了在CentOS 7.3系统上安装和配置Elasticsearch 7.9.2、Logstash 7.9.2和Kibana 7.9.2的过程,包括环境准备、集群搭建、Nginx代理及日志收集与Kibana可视化。

1.ELK安装环境说明

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

本例子采用Elasticsearch7.9.2,Kibana7.9.2, logstash-7.9.2版本为例子讲解如何安装部署。安装包下载从官网就可以https://www.elastic.co/cn/

需要准备的安装文件列表:

jdk-8u261-linux-x64.rpm

elasticsearch-7.9.2-x86_64.rpm

kibana-7.9.2-x86_64.rpm

logstash-7.9.2.zip

nginx-1.18.0.tar.gz

操作系统版本为:CentOs7.3版本,JDK1.8

 

2.ELK架构说明

ELK 其实并不是一款软件,而是一整套解决方案,解决的问题主要是从日志收集到索引分类,以及搜索和界面展示的问题。ELK集群的结构如下图:

 

3.环境准备

操作系统需要先安装JDK,JDK1.8步骤安装请参考官方步骤,本文忽略此步骤说明。

装好以后,验证命令:

java -version

输出为:

java version "1.8.0_261"

Java(TM) SE Runtime Environment (build 1.8.0_261-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

 

检查防护墙,停止默认防火墙。输入如下命令:

systemctl stop firewalld

 

服务器IP:

ELK1节点:192.168.119.128

ELK2节点:192.168.119.134

ELK3节点:192.168.119.135

Nginx节点:192.168.119.130

Logstash节点:192.168.119.130

 

Kinana安装在128节点上。

 

为了简化服务器的数据量,实际只安装了一台logstash节点。nginx和logstash共享了一台主机。Kinana也和ELK1节点共享了一台主机。

 

4.安装Elasticsearch

登录192.168.119.128,上传安装包:elasticsearch-7.9.2-x86_64.rpm

4.1安装步骤:

rpm --install elasticsearch-7.9.2-x86_64.rpm

 

4.2修改配置文件

vi /etc/security/limits.conf

新增内容如下:

* hard nofile 65536

* soft nproc 2048

* hard nproc 4096

* soft memlock unlimited

* hard memlock unlimited

 

 

vi /etc/sysctl.conf

vm.max_map_count=655360

fs.file-max=655360

 

执行命令sysctl -p ,让配置生效

 

 

修改elastic配置文件

vi /etc/elasticsearch/elasticsearch.yml

修改data存放的路径

path.data: /var/lib/elasticsearch

修改logs日志的路径

path.logs: /var/log/elasticsearch/

监听的网络地址

network.host: 0.0.0.0

初始化主节点

cluster.initial_master_nodes: ["elk-1", "elk-2"]

开启监听的端口

http.port: 9200

找到配置文件中的cluster.name,打开该配置并设置集群名称

cluster.name: mycluster

找到配置文件中的node.name,打开该配置并设置节点名称

node.name:  elk-1

# 配置集群中,选举的节点

discovery.seed_hosts:  ["192.168.119.128", "192.168.119.134","192.168.119.135"]

 

 

192.168.119.134,192.168.119.135节点的安装步骤一样,配置文件除了节点名其他也是一样的。

注意 /etc/elasticsearch/elasticsearch.yml中需要修改的是:node.name:  的配置

134节点修改成

node.name:  elk-2

135节点修改成

node.name:  elk-3

 

 

4.3启动服务

3个节点分别启动elasticsearch

systemctl start elasticsearch.service

 

4.4停止服务

systemctl stop elasticsearch.service

 

4.5验证:

curl http://192.168.119.128:9200/

curl http://192.168.119.134:9200/

curl http://192.168.119.135:9200/

 

可能的返回结果:

{

  "name" : "localhost",

  "cluster_name" : "elasticsearch",

  "cluster_uuid" : "C1rp3FCmRduPQF9Z9RzSrw",

  "version" : {

    "number" : "7.9.2",

    "build_flavor" : "default",

    "build_type" : "rpm",

    "build_hash" : "d34da0ea4a966c4e49417f2da2f244e3e97b4e6e",

    "build_date" : "2020-09-23T00:45:33.626720Z",

    "build_snapshot" : false,

    "lucene_version" : "8.6.2",

    "minimum_wire_compatibility_version" : "6.8.0",

    "minimum_index_compatibility_version" : "6.0.0-beta1"

  },

  "tagline" : "You Know, for Search"

}

验证集群状态命令:

curl http://192.168.119.128:9200/_cluster/health

curl http://192.168.119.134:9200/_cluster/health

curl http://192.168.119.135:9200/_cluster/health

 

可能的返回结果(status值不是green表示集群不正常):

{"cluster_name":"mycluster","status":"green","timed_out":false,"number_of_nodes":3,"number_of_data_nodes":3,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

 

 

5.安装Nginx

Nginx安装步骤请参考官方文档。Nginx在192.168.119.130上安装

 

nginx_ela.conf 配置文件内容:

 

#user  nobody;

worker_processes  1;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

stream {

    upstream n9200 {

    server 192.168.119.128:9200;

    server 192.168.119.134:9200;

    server 192.168.119.135:9200;

    }

 

 

    server {

       listen 9200;

       proxy_pass n9200;

    }

}

 

启动Nginx

/usr/local/nginx/sbin/nginx -c /opt/nginx_ela.conf

 

6.安装Kibana

登录192.168.119.128,上传安装包:kibana-7.9.2-x86_64.rpm

 

6.1安装步骤

rpm --install kibana-7.9.2-x86_64.rpm

 

6.2修改配置文件

vi /etc/kibana/kibana.yml

 

开启监听的端口

server.port: 5601

 

监听的网络地址

server.host: "0.0.0.0"

elasticsearch的网络地址

elasticsearch.hosts: ["http://192.168.119.130:9200"]

kibana的索引值

kibana.index: ".kibana"

 

6.3启动

systemctl start kibana.service

6.4停止

systemctl stop kibana.service

 

 

6.5验证

访问网站 http://192.168.119.128:5601,可以看到页面如下图:

 

 

7.安装日志节点的logstash

下面需要添加监控日志的节点。下面我以130节点的tomcat日志为例,展示如何添加日志收集的节点。

 

130机器上已经安装好tomcat8,安装步骤忽略。需要收集的日志是:/opt/tomcat8/logs/localhost_access_log.*.txt

 

登录192.168.119.130,上传安装包:logstash-7.9.2.zip

 

7.1 安装步骤

 

 

unzip logstash-7.9.2.zip

mv logstash-7.9.2 /opt/logstash-7.9.2

 

 

7.2 编辑tomcat服务的日志收集配置

# vi  /opt/tomcat.conf

 

输入如下内容:

input {

    file {

        path => "/opt/tomcat8/logs/*.txt"

        type => "tomcat"

    }

    

}

 

output {

 

    if [type] == "tomcat" {

 

        elasticsearch {

            hosts => ["192.168.119.130:9200"]

            index => "tomcat130-%{+YYYY.MM.dd}"

        }

    }

}

 

7.3启动日志收集

/opt/logstash-7.9.2/bin/logstash -f /opt/tomcat.conf &

 

 

7.4 登录Kibana,查看数据

访问网站 http://192.168.119.128:5601

 

点击Connect to your Elasticsearch index,创建一个新的索引模式:

 

 

点击Create按钮:

 

 

输入tomcat*,点击Next step:

 

选择@timestamp ,点击 create按钮:

 

 

 

然后点击,左上方的三的图标,点击 Discover:

 

选择索引中的tomcat*,就可以看到日志了:

 

 

 

如果没有数据,则需要启动tomcat服务,并且访问tomcat的页面,并且随便点击几下。

 

回到Kibana就可以看见数据了。

 

 

 

 

<think>我们正在处理用户关于在Ubuntu上安装和配置ELK集群的问题。ELK是指Elasticsearch、Logstash和Kibana三个开源软件的集合,通常用于日志处理和分析。 根据用户的要求,我们需要提供在Ubuntu系统上安装部署ELK集群的步骤。由于用户提到的是集群,所以我们需要配置多个节点。但为了简化,我们先以单节点集群为例进行说明,然后扩展至多节点集群。 注意:以下步骤基于ELK 8.x本(特别是8.4.3,因为引用中提到了这个本),但请注意本更新可能带来的变化。 ### 步骤1:准备工作 1. 确保系统是Ubuntu(建议18.04或更高本)。 2. 更新系统: ```bash sudo apt update && sudo apt upgrade -y ``` 3. 安装Java环境(ELK需要Java,推荐OpenJDK 11或17): ```bash sudo apt install openjdk-11-jdk -y ``` 安装后检查: ```bash java -version ``` ### 步骤2:安装Elasticsearch 1. 下载Elasticsearch(以8.4.3为例): ```bash wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.3-linux-x86_64.tar.gz ``` 2. 解压: ```bash tar -zxvf elasticsearch-8.4.3-linux-x86_64.tar.gz ``` 3. 移动到合适目录(可选): ```bash sudo mv elasticsearch-8.4.3 /usr/local/elasticsearch ``` 4. 修改系统配置(如引用[2]中提到的): - 编辑`/etc/sysctl.conf`,添加: ``` vm.max_map_count=262144 ``` 然后运行: ```bash sudo sysctl -p ``` - 编辑`/etc/security/limits.conf`,添加: ``` * soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096 ``` 然后重新登录或重启。 5. 生成证书(单节点集群可以使用自签名证书): 进入Elasticsearch目录,运行: ```bash bin/elasticsearch-certutil cert --keep-ca-key --pem --out ./certs.zip --silent ``` 解压certs.zip到config/certs目录。 6. 配置`elasticsearch.yml`(位于config目录): ```yaml cluster.name: my-elastic-cluster node.name: node-1 network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node # 单节点配置,如果是多节点则去掉此配置并配置discovery.seed_hosts xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.key: certs/node-1/node-1.key xpack.security.transport.ssl.certificate: certs/node-1/node-1.crt xpack.security.transport.ssl.certificate_authorities: certs/ca/ca.crt xpack.security.http.ssl.enabled: true xpack.security.http.ssl.key: certs/node-1/node-1.key xpack.security.http.ssl.certificate: certs/node-1/node-1.crt xpack.security.http.ssl.certificate_authorities: certs/ca/ca.crt ``` 7. 启动Elasticsearch: ```bash ./bin/elasticsearch ``` 后台运行可以使用`-d`参数。 8. 设置密码(如果开启了安全认证): 启动后,运行: ```bash ./bin/elasticsearch-setup-passwords auto ``` 记录下自动生成的密码(或者使用interactive模式手动设置)。 ### 步骤3安装Kibana 1. 下载Kibana(本与Elasticsearch致): ```bash wget https://artifacts.elastic.co/downloads/kibana/kibana-8.4.3-linux-x86_64.tar.gz ``` 2. 解压: ```bash tar -zxvf kibana-8.4.3-linux-x86_64.tar.gz ``` 3. 移动到合适目录(可选): ```bash sudo mv kibana-8.4.3-linux-x86_64 /usr/local/kibana ``` 4. 生成证书(可选,如果Elasticsearch启用了SSL,则Kibana也需要配置): 可以使用Elasticsearch生成的CA来签发Kibana证书,或者使用相同的证书(如果是同台机器)。 5. 配置`kibana.yml`: ```yaml server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["https://localhost:9200"] elasticsearch.username: "kibana_system" # 使用kibana_system用户,密码在Elasticsearch设置密码时生成 elasticsearch.password: "your_kibana_system_password" elasticsearch.ssl.certificateAuthorities: ["/path/to/elasticsearch/config/certs/ca/ca.crt"] server.ssl.enabled: true server.ssl.certificate: "/path/to/elasticsearch/config/certs/node-1/node-1.crt" server.ssl.key: "/path/to/elasticsearch/config/certs/node-1/node-1.key" ``` 6. 启动Kibana: ```bash ./bin/kibana ``` ### 步骤4:安装Logstash 1. 下载Logstash: ```bash wget https://artifacts.elastic.co/downloads/logstash/logstash-8.4.3-linux-x86_64.tar.gz ``` 2. 解压: ```bash tar -zxvf logstash-8.4.3-linux-x86_64.tar.gz ``` 3. 移动到合适目录(可选): ```bash sudo mv logstash-8.4.3 /usr/local/logstash ``` 4. 配置Logstash: - 创建配置文件`logstash.conf`(在config目录下): ```conf input { beats { port => 5044 } } output { elasticsearch { hosts => ["https://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" user => "logstash_system" password => "your_logstash_system_password" cacert => "/path/to/elasticsearch/config/certs/ca/ca.crt" ssl_certificate_verification => true } } ``` - 配置`logstash.yml`(可选,主要设置管道配置): ```yaml http.host: "0.0.0.0" ``` 5. 启动Logstash: ```bash ./bin/logstash -f config/logstash.conf ``` ### 步骤5:验证集群 1. 访问Elasticsearch:`curl -k -u elastic:your_password https://localhost:9200` 2. 访问Kibana:`https://localhost:5601`,使用elastic用户登录(密码在设置密码时生成)。 ### 扩展为多节点集群部署多节点集群,需要: - 在其他节点上重复上述步骤(注意修改节点名称和配置)。 - 在`elasticsearch.yml`中配置`discovery.seed_hosts`和`cluster.initial_master_nodes`。 - 确保所有节点使用相同的集群名称和证书颁发机构(CA)。 ### 注意事项 - 安全:生产环境需要严格的安全配置,包括强密码和网络隔离。 - 性能:根据日志量调整JVM堆大小(在config/jvm.options中设置)。 - 本:确保Elasticsearch、Kibana和Logstash致。 以上步骤提供了个基本的ELK集群安装指南。实际部署中可能需要根据具体需求调整配置。 §§相关问题§§ 1. 如何配置ELK集群以实现高可用性? 2. ELK集群的安全认证如何管理? 3. 在ELK中如何创建索引模式并可视化数据? 4. 如何通过Filebeat将日志发送到Logstash?</think>### Ubuntu上安装和配置ELK集群指南 ELK(Elasticsearch、Logstash、Kibana)集群用于日志管理、数据分析和可视化。以下是基于Ubuntu 20.04+的安装步骤(以ELK 8.4.3为例): #### 、环境准备 1. **系统要求**: - Ubuntu 20.04 LTS或更高本 - Java环境(OpenJDK 11+): ```bash sudo apt update && sudo apt install openjdk-11-jdk -y ``` - 调整系统参数(防止内存不足): ```bash echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf sudo sysctl -p ``` #### 二、安装Elasticsearch集群 1. **下载并解压**: ```bash wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.3-linux-x86_64.tar.gz tar -zxvf elasticsearch-8.4.3-linux-x86_64.tar.gz mv elasticsearch-8.4.3 /usr/local/elasticsearch ``` 2. **生成证书**(集群通信安全): ```bash cd /usr/local/elasticsearch bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass "" ``` 3. **配置节点**(以节点1为例): ```yaml # /usr/local/elasticsearch/config/elasticsearch.yml cluster.name: my-elk-cluster node.name: node-1 network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["node1-ip", "node2-ip"] # 所有节点IP cluster.initial_master_nodes: ["node-1", "node-2"] xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 ``` 4. **启动服务**: ```bash sudo -u elasticsearch ./bin/elasticsearch -d # 需创建专用用户 ``` #### 三、安装Kibana 1. **下载并配置**: ```bash wget https://artifacts.elastic.co/downloads/kibana/kibana-8.4.3-linux-x86_64.tar.gz tar -zxvf kibana-8.4.3-linux-x86_64.tar.gz mv kibana-8.4.3 /usr/local/kibana ``` ```yaml # /usr/local/kibana/config/kibana.yml server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://node1-ip:9200", "http://node2-ip:9200"] elasticsearch.username: "kibana_system" # 需提前在ES设置密码 ``` 2. **启动服务**: ```bash cd /usr/local/kibana && ./bin/kibana --allow-root ``` #### 四、安装Logstash 1. **下载并配置管道**: ```bash wget https://artifacts.elastic.co/downloads/logstash/logstash-8.4.3-linux-x86_64.tar.gz tar -zxvf logstash-8.4.3-linux-x86_64.tar.gz mv logstash-8.4.3 /usr/local/logstash ``` ```conf # /usr/local/logstash/config/logstash.conf input { beats { port => 5044 } } output { elasticsearch { hosts => ["node1-ip:9200", "node2-ip:9200"] user => "logstash_user" password => "your_password" } } ``` 2. **启动服务**: ```bash cd /usr/local/logstash && bin/logstash -f config/logstash.conf ``` #### 五、集群验证 1. **检查节点状态**: ```bash curl -XGET "http://localhost:9200/_cluster/health?pretty" -u elastic:your_password ``` 输出应包含 `"status" : "green"`。 2. **访问Kibana**: `http://server-ip:5601`,使用Elasticsearch生成的密码登录。 #### 六、安全加固 1. **设置密码**: ```bash # 在任Elasticsearch节点运行 ./bin/elasticsearch-setup-passwords auto ``` 2. **防火墙规则**: ```bash sudo ufw allow 9200/tcp # ES通信 sudo ufw allow 5601/tcp # Kibana sudo ufw allow 5044/tcp # Logstash ``` > **注意**: > - 多节点需在所有机器重复上述步骤,确保`elasticsearch.yml`中集群名称致 > - 生产环境建议使用Docker或APT仓库安装[^1][^2] > - 完整安全配置参考[官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/8.4/security-basic-setup.html)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值