Linux云计算SRE-第二十周

devtools/2025/3/14 14:22:00/

完成ELK综合案例里面的实验,搭建完整的环境

一、

1、安装nginx和filebeat,配置node0(10.0.0.100),node1(10.0.0.110),node2(10.0.0.120),采用filebeat收集nignx日志。

#node0、node1、node2采用以下相同方式收集nginx日志# 更新软件包列表并安装nginx
[root@node0 ~]# apt update && apt -y install nginx# 编辑nginx的主配置文件,以自定义日志格式
[root@node0 ~]# vim /etc/nginx/nginx.conf
# 在http块中定义一个新的日志格式access_json,该格式将日志记录为JSON
http {...log_format access_json '{"@timestamp": "$time_iso8601",  # 日志时间戳"host": "$server_addr",         # 服务器IP地址"clientip": "$remote_addr",     # 客户端IP地址"size": $body_bytes_sent,       # 发送的字节数"responsetime": $request_time,  # 请求处理时间"upstreamtime": "$upstream_response_time",  # 上游服务器响应时间"upstreamhost": "$upstream_addr",  # 上游服务器地址"http_host": "$host",           # 请求的host头"uri": "$uri",                  # 请求的URI"domain": "$host",              # 同http_host,请求的域名"xff": "$http_x_forwarded_for", # X-Forwarded-For头,用于识别通过HTTP代理或负载均衡器连接到web服务器的客户端的原始IP地址"referer": "$http_referer",     # Referer头,表示请求的来源页面"tcp_xff": "$proxy_protocol_addr",  # 如果使用了Proxy Protocol,这是客户端的真实IP地址"http_user_agent": "$http_user_agent",  # 用户代理字符串"status": "$status",            # HTTP响应状态码"request_method": "$request_method"  # 请求方法(GET, POST等)}';
# 使用新定义的日志格式记录访问日志
access_log /var/log/nginx/access_json.log access_json;
# 错误日志配置保持不变
error_log /var/log/nginx/error.log;
}# 编辑nginx的默认站点配置文件,注释掉默认的try_files指令
[root@node0 ~]# vim /etc/nginx/sites-available/default
location / {...#try_files $uri $uri/ =404;  # 注释掉这一行,意味着可以自定义处理请求的方式
}# 重启nginx以应用更改
[root@node0 ~]# systemctl restart nginx.service# 安装filebeat的deb包
[root@node0 ~]# dpkg -i filebeat-8.12.2-amd64.deb  # 安装filebeat# 备份filebeat的配置文件
[root@node0 ~]# cp /etc/filebeat/filebeat.yml{,.bak}# 编辑filebeat的配置文件
[root@node0 ~]# vim /etc/filebeat/filebeat.yml
# 配置filebeat的输入,包括nginx访问日志、错误日志和系统日志
filebeat.inputs:- type: logenabled: truepaths:- /var/log/nginx/access_json.logjson.keys_under_root: true  # 将JSON字段作为顶级字段输出json.overwrite_keys: true   # 如果键冲突,覆盖旧值tags: ["nginx-access"]- type: logenabled: truepaths:- /var/log/nginx/error.logtags: ["nginx-error"]- type: logenabled: truepaths:- /var/log/syslogtags: ["syslog"]# 配置filebeat的输出到Redis
output.redis:hosts: ["10.0.0.130:6379"]  # Redis服务器地址和端口password: "123456"          # Redis密码db: 0                       # 使用Redis的0号数据库# 启用并启动filebeat服务
[root@node0 ~]# systemctl enable --now filebeat

 2、安装redis和logstash,配置node3(10.0.0.130),node4(10.0.0.140),采用logstash转发nginx日志到elasticsearch集群。

# 在node3节点上更新软件包列表并安装Redis服务器
[root@node3 ~]# apt update && apt -y install redis# 编辑Redis配置文件,以允许来自任何IP地址的连接,并禁用自动保存功能
[root@node3 ~]# vim /etc/redis/redis.conf
# 允许Redis监听所有网络接口
bind 0.0.0.0
# 禁用所有的save命令,这意味着Redis不会将数据自动保存到磁盘上
# 下面的三行是被注释掉的,表示原本的保存策略被禁用
#save 900 1
#save 300 10
#save 60 10000
# 设置Redis的访问密码
requirepass 123456# 重启Redis服务以应用配置更改
[root@node3 ~]# systemctl restart redis# 在node4节点上更新软件包列表并安装OpenJDK 17
[root@node4 ~]# apt update && apt -y install openjdk-17-jdk# 安装Logstash,logstash-8.12.2-amd64.deb包已经传输到node4节点
[root@node4 ~]# dpkg -i logstash-8.12.2-amd64.deb # 编辑Logstash的配置文件,设置从Redis读取数据并输出到Elasticsearch
[root@node4 ~]# vim /etc/logstash/conf.d/redis-to-es.conf
# 输入部分,配置Logstash从Redis读取数据
input {redis {# Redis服务器的主机地址host => "10.0.0.130"# Redis服务器的端口port => 6379# Redis的访问密码password => "123456"# 使用Redis的哪个数据库db => 0# Redis中数据的keykey => "filebeat"# 数据类型,这里设置为listdata_type => "list"}
}# 输出部分,根据条件将数据输出到不同的Elasticsearch索引
output {# 如果数据标签中包含"syslog",则输出到指定的Elasticsearch索引if "syslog" in [tags] {elasticsearch {# Elasticsearch集群的节点地址hosts => ["10.0.0.160:9200", "10.0.0.170:9200", "10.0.0.180:9200"]# 使用的索引名称,包含日期信息index => "syslog-%{+YYYY.MM.dd}"}}# 如果数据标签中包含"nginx-access",则输出到另一个索引if "nginx-access" in [tags] {elasticsearch {hosts => ["10.0.0.160:9200", "10.0.0.170:9200", "10.0.0.180:9200"]index => "nginx-accesslog-%{+YYYY.MM.dd}"# 允许覆盖模板设置template_overwrite => true}}# 如果数据标签中包含"nginx-error",则输出到另一个索引if "nginx-error" in [tags] {elasticsearch {hosts => ["10.0.0.160:9200", "10.0.0.170:9200", "10.0.0.180:9200"]index => "nginx-errorlog-%{+YYYY.MM.dd}"template_overwrite => true}}
}# 重启Logstash服务以应用配置更改
[root@node4 ~]# systemctl restart logstash

3、安装elasticsearch集群、kibana、cerebro,配置node6(10.0.0.160),node7(10.0.0.170),node8(10.0.0.180),利用kibana和cerebro查看收集的日志。 

# 在node6节点上安装Kibana的deb包
[root@node6 ~]# dpkg -i kibana-8.12.2-amd64.deb# 编辑Kibana的配置文件,设置监听端口、主机地址、公共基础URL、Elasticsearch集群地址以及界面语言
[root@node6 ~]# vim /etc/kibana/kibana.yml
server.port: 5601  # Kibana服务监听端口
server.host: "0.0.0.0"  # Kibana监听的主机地址,0.0.0.0表示监听所有IP
server.publicBaseUrl: "http://kibana.zhangyao.com"  # Kibana的公共基础URL
elasticsearch.hosts:  # Elasticsearch集群的地址列表["http://10.0.0.160:9200","http://10.0.0.170:9200","http://10.0.0.180:9200"]
i18n.locale: "zh-CN"  # 界面语言设置为中文# 重启Kibana服务以应用更改
[root@node6 ~]# systemctl restart kibana# 在node6节点上安装OpenJDK 11 JDK
[root@node6 ~]# apt -y install openjdk-11-jdk# 在node6节点上安装Cerebro的deb包,Cerebro是一个Elasticsearch的Web UI管理工具
[root@node6 ~]# wegt https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro_0.9.4_all.deb
[root@node6 ~]# dpkg -i cerebro_0.9.4_all.deb# 编辑Cerebro的配置文件,设置数据存储路径
[root@node6 ~]# vim /etc/cerebro/application.conf
data.path: "/var/lib/cerebro/cerebro.db"  # Cerebro的数据存储路径
#data.path = "./cerebro.db"  # 注释掉默认路径# 重启Cerebro服务以应用更改
[root@node6 ~]# systemctl restart cerebro.service# 在node6、node7、node8节点上分别安装Elasticsearch的deb包
[root@node6 ~]# dpkg -i elasticsearch-8.12.2-amd64.deb 
[root@node7 ~]# dpkg -i elasticsearch-8.12.2-amd64.deb 
[root@node8 ~]# dpkg -i elasticsearch-8.12.2-amd64.deb # 编辑node6上的Elasticsearch配置文件,设置集群名称、节点名称、监听主机、发现主机列表、禁用安全功能以及初始主节点列表
[root@node6 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: cls-cluster  # 集群名称
node.name: node-1  # 节点名称
network.host: 0.0.0.0  # 监听主机地址
discovery.seed_hosts: ["10.0.0.160","10.0.0.170","10.0.0.180"]  # 发现主机列表
xpack.security.enabled: false  # 禁用安全功能
cluster.initial_master_nodes: ["10.0.0.160","10.0.0.170","10.0.0.180"]  # 初始主节点列表# 编辑JVM选项,设置最小和最大堆内存大小
[root@node6 ~]# vim /etc/elasticsearch/jvm.options
-Xms512m  # 最小堆内存大小
-Xmx512m  # 最大堆内存大小# 使用rsync将Elasticsearch的配置文件同步到node7和node8节点
[root@node6 ~]# rsync  /etc/elasticsearch/elasticsearch.yml 10.0.0.170:/etc/elasticsearch/elasticsearch.yml
[root@node6 ~]# rsync  /etc/elasticsearch/elasticsearch.yml 10.0.0.180:/etc/elasticsearch/elasticsearch.yml
[root@node6 ~]# rsync /etc/elasticsearch/jvm.options 10.0.0.170:/etc/elasticsearch/jvm.options
[root@node6 ~]# rsync /etc/elasticsearch/jvm.options 10.0.0.180:/etc/elasticsearch/jvm.options # 分别编辑node7和node8上的Elasticsearch配置文件,仅更改节点名称
[root@node7 ~]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node-2
[root@node8 ~]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node-3# 在node6、node7、node8节点上分别重新加载systemd守护进程、启用Elasticsearch服务并启动服务
[root@node6 ~]# sudo systemctl daemon-reload
[root@node6 ~]# sudo systemctl enable elasticsearch.service
[root@node6 ~]# sudo systemctl restart elasticsearch.service
[root@node7 ~]# sudo systemctl daemon-reload
[root@node7 ~]# sudo systemctl enable elasticsearch.service
[root@node7 ~]# sudo systemctl start elasticsearch.service
[root@node8 ~]# sudo systemctl daemon-reload
[root@node8 ~]# sudo systemctl enable elasticsearch.service
[root@node8 ~]# sudo systemctl start elasticsearch.service# 在node6节点上使用curl命令检查Elasticsearch集群中的节点信息
[root@node6 ~]# curl 'http://127.0.0.1:9200/_cat/nodes?v'
# 输出显示了集群中每个节点的IP地址、各种性能指标以及节点名称等信息
ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
10.0.0.180           44          95   5    0.56    0.38     0.29 cdfhilmrstw *      node-3
10.0.0.170           39          95   5    0.32    0.19     0.12 cdfhilmrstw -      node-2
10.0.0.160           33          60   1    0.19    0.28     0.22 cdfhilmrstw -      node-1# 在node6节点上使用curl命令访问nginx服务器,生成访问日志
[root@node6 ~]# curl http://10.0.0.100
[root@node6 ~]# curl http://10.0.0.110
[root@node6 ~]# curl http://10.0.0.120#修改windows的配置文件C:\Windows\System32\drivers\etc
10.0.0.160 kibana.zhangyao.com

二、

 1、安装nginx和filebeat,配置node0(10.0.0.100),node1(10.0.0.110),node2(10.0.0.120),采用filebeat收集nignx日志,并发送到kafka集群。

#node0、node1、node2采用以下相同方式收集nginx日志# 更新软件包列表并安装nginx
[root@node0 ~]# apt update && apt -y install nginx# 编辑nginx的主配置文件,以自定义日志格式
[root@node0 ~]# vim /etc/nginx/nginx.conf
# 在http块中定义一个新的日志格式access_json,该格式将日志记录为JSON
http {...log_format access_json '{"@timestamp": "$time_iso8601",  # 日志时间戳"host": "$server_addr",         # 服务器IP地址"clientip": "$remote_addr",     # 客户端IP地址"size": $body_bytes_sent,       # 发送的字节数"responsetime": $request_time,  # 请求处理时间"upstreamtime": "$upstream_response_time",  # 上游服务器响应时间"upstreamhost": "$upstream_addr",  # 上游服务器地址"http_host": "$host",           # 请求的host头"uri": "$uri",                  # 请求的URI"domain": "$host",              # 同http_host,请求的域名"xff": "$http_x_forwarded_for", # X-Forwarded-For头,用于识别通过HTTP代理或负载均衡器连接到web服务器的客户端的原始IP地址"referer": "$http_referer",     # Referer头,表示请求的来源页面"tcp_xff": "$proxy_protocol_addr",  # 如果使用了Proxy Protocol,这是客户端的真实IP地址"http_user_agent": "$http_user_agent",  # 用户代理字符串"status": "$status",            # HTTP响应状态码"request_method": "$request_method"  # 请求方法(GET, POST等)}';
# 使用新定义的日志格式记录访问日志
access_log /var/log/nginx/access_json.log access_json;
# 错误日志配置保持不变
error_log /var/log/nginx/error.log;
}# 编辑nginx的默认站点配置文件,注释掉默认的try_files指令
[root@node0 ~]# vim /etc/nginx/sites-available/default
location / {...#try_files $uri $uri/ =404;  # 注释掉这一行,意味着可以自定义处理请求的方式
}# 重启nginx以应用更改
[root@node0 ~]# systemctl restart nginx# 安装filebeat的deb包
[root@node0 ~]# dpkg -i filebeat-8.12.2-amd64.deb  # 安装filebeat# 备份filebeat的配置文件
[root@node0 ~]# cp /etc/filebeat/filebeat.yml{,.bak}# 编辑filebeat的配置文件
[root@node0 ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:- type: logenabled: truepaths:- /var/log/nginx/access_json.logjson.keys_under_root: truejson.overwrite_keys: truetags: ["nginx-access"]- type: logenabled: truepaths:- /var/log/nginx/error.logtags: ["nginx-error"]- type: logenabled: truepaths:- /var/log/syslogtags: ["syslog"]output.kafka:hosts: ["10.0.0.130:9092", "10.0.0.140:9092", "10.0.0.150:9092"]topic: filebeat-logpartition.round_robin:reachable_only: truerequired_acks: 1compression: gzipmax_message_bytes: 1000000# 启用并启动filebeat服务
[root@node0 ~]# systemctl enable --now filebeat

2、安装kafka集群和logstash,mysql,配置node3(10.0.0.130),node4(10.0.0.140),node5(10.0.0.150)采用logstash转发nginx日志到elasticsearch集群。

# 在 node3 节点上执行 install_kafka_cluster.sh 脚本,用于安装 Kafka 集群相关组件
[root@node3 ~]# bash install_kafka_cluster.sh
# 在 node4 节点上执行 install_kafka_cluster.sh 脚本,用于安装 Kafka 集群相关组件
[root@node4 ~]# bash install_kafka_cluster.sh
# 在 node5 节点上执行 install_kafka_cluster.sh 脚本,用于安装 Kafka 集群相关组件
[root@node5 ~]# bash install_kafka_cluster.sh# 在 node3 节点上启动 Kafka 服务,使用指定的配置文件
[root@node3 ~]# /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
# 在 node4 节点上启动 Kafka 服务,使用指定的配置文件
[root@node4 ~]# /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
# 在 node5 节点上启动 Kafka 服务,使用指定的配置文件
[root@node5 ~]# /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties# 在 node4 节点上更新系统软件包列表,并安装 OpenJDK 17,因为 Logstash 依赖 Java 环境
[root@node4 ~]# apt update && apt -y install openjdk-17-jdk
# 在 node4 节点上使用 dpkg 工具安装 Logstash 的 deb 包
[root@node4 ~]# dpkg -i logstash-8.12.2-amd64.deb # 在 node4 节点上使用 vim 编辑器编辑 Logstash 的配置文件 kafka-to-es.conf
# 此配置文件用于将 Kafka 中的数据转发到 Elasticsearch
[root@node4 ~]# vim /etc/logstash/conf.d/kafka-to-es.conf
# Logstash 的输入配置部分,使用 Kafka 作为数据源
input {kafka {# 指定 Kafka 集群的引导服务器地址,用于连接 Kafka 集群bootstrap_servers => "10.0.0.130:9092,10.0.0.140:9092,10.0.0.150:9092"# 指定要消费的 Kafka 主题topics => "filebeat-log"# 指定消息的编解码器为 JSON,用于解析 Kafka 中的消息codec => "json"}
}# Logstash 的输出配置部分,根据日志的标签将数据输出到不同的 Elasticsearch 索引
output {# 如果日志标签包含 "nginx-access",则将数据发送到 Elasticsearchif "nginx-access" in [tags] {elasticsearch {# 指定 Elasticsearch 集群的节点地址hosts => ["10.0.0.160:9200", "10.0.0.170:9200", "10.0.0.180:9200"]# 指定 Elasticsearch 中的索引名称,按日期生成index => "logstash-kafka-nginx-accesslog-%{+YYYY.MM.dd}"# 允许覆盖现有的索引模板template_overwrite => true}jdbc {# 配置 JDBC 连接字符串connection_string => "jdbc:mysql://10.0.0.150/elk?user=elk&password=123456&useUnicode=true&characterEncoding=UTF8"# 配置 SQL 插入语句,使用占位符statement => "INSERT INTO elklog (clientip, responsetime, uri, status) VALUES (?, ?, ?, ?)"# 配置占位符对应的字段statement_params => {"1" => "clientip","2" => "responsetime","3" => "uri","4" => "status"}}} # 如果日志标签包含 "nginx-error",则将数据发送到 Elasticsearchelse if "nginx-error" in [tags] {elasticsearch {# 指定 Elasticsearch 集群的节点地址hosts =>  ["10.0.0.160:9200", "10.0.0.170:9200", "10.0.0.180:9200"]# 指定 Elasticsearch 中的索引名称,按日期生成index => "logstash-kafka-nginx-errorlog-%{+YYYY.MM.dd}"# 允许覆盖现有的索引模板template_overwrite => true}} # 如果日志标签包含 "syslog",则将数据发送到 Elasticsearchelse if "syslog" in [tags] {elasticsearch {# 指定 Elasticsearch 集群的节点地址hosts =>  ["10.0.0.160:9200", "10.0.0.170:9200", "10.0.0.180:9200"]# 指定 Elasticsearch 中的索引名称,按日期生成index => "logstash-kafka-syslog-%{+YYYY.MM.dd}"# 允许覆盖现有的索引模板template_overwrite => true}}
}# 在node4节点上,使用dpkg命令安装mysql-connector-j的deb包,该包适用于ubuntu22.04系统,版本为8.0.33
[root@node4 ~]# dpkg -i mysql-connector-j_8.0.33-1ubuntu22.04_all.deb  # 在node4节点上,创建目录路径 /usr/share/logstash/vendor/jar/jdbc,如果父目录不存在则一并创建
[root@node4 ~]# mkdir -p /usr/share/logstash/vendor/jar/jdbc  # 在node4节点上,将mysql-connector-j-8.0.33.jar文件从 /usr/share/java/ 复制到 /usr/share/logstash/vendor/jar/jdbc/ 目录下
[root@node4 ~]# cp /usr/share/java/mysql-connector-j-8.0.33.jar /usr/share/logstash/vendor/jar/jdbc/  # 在node4节点上,递归修改 /usr/share/logstash/vendor/jar/ 目录及其所有子目录和文件的所有者为logstash用户,所属组为logstash组
[root@node4 ~]# chown -R logstash.logstash /usr/share/logstash/vendor/jar/  # 在node4节点上,更新软件包列表并安装ruby语言环境
[root@node4 ~]# apt update && apt -y install ruby  # 在node4节点上,修改ruby的gem源,添加国内的ruby-china源,并移除默认的rubygems.org源
[root@node4 ~]# gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/  # 在node4节点上,使用logstash的插件安装命令,安装logstash-output-jdbc插件
[root@node4 ~]# /usr/share/logstash/bin/logstash-plugin install logstash-output-jdbc
#如果无法在线安装,可以先从已经安装的主机导出插件,再导入
[root@ubuntu22 ~]# /usr/share/logstash/bin/logstash-plugin prepare-offline-pack logstash-output-jdbc
[root@node4 ~]# /usr/share/logstash/bin/logstash-plugin install file:///usr/share/logstash-offline-plugins-8.12.2.zip
#检查插件安装成功
[root@node4 ~]# /usr/share/logstash/bin/logstash-plugin|grep jdbc# 在node4节点上,重启logstash服务
[root@node4 ~]# systemctl restart logstash  # 在node5节点上,更新软件包列表并安装mysql服务器
[root@node5 ~]# apt update && apt -y install mysql-server  # 在node5节点上,使用vim编辑器打开mysql配置文件mysqld.cnf,修改其中的绑定地址相关配置
[root@node5 ~]# vim /etc/mysql/mysql.conf.d/mysqld.cnf  
# 将mysql服务的绑定地址修改为0.0.0.0,允许所有IP地址访问
bind-address        = 0.0.0.0  
# 将mysqlx协议的绑定地址也修改为0.0.0.0,允许所有IP地址访问
mysqlx-bind-address = 0.0.0.0  # 在node5节点上,重启mysql服务使配置生效
[root@node5 ~]# systemctl restart mysql.service  # 在node5节点上,进入mysql命令行客户端
[root@node5 ~]# mysql  # 在mysql中,创建名为elk的数据库
[root@node5 ~]# create database elk;  # 在mysql中,创建用户elk,允许来自10.0.0.0/24网段的主机连接,密码为123456
[root@node5 ~]# create user elk@"10.0.0.%" identified by '123456';  # 在mysql中,授予用户elk对elk数据库下所有表的所有权限
[root@node5 ~]# grant all privileges on elk.* to elk@"10.0.0.%";  # 在mysql中,刷新权限使配置立即生效
[root@node5 ~]# flush privileges;  # 在mysql中,切换到elk数据库
[root@node5 ~]# use elk;  # 在elk数据库中,创建名为elklog的表,包含clientip、responsetime、uri、status、time字段,time字段默认值为当前时间戳
[root@node5 ~]# CREATE TABLE elklog ( clientip VARCHAR(39),responsetime DECIMAL(10, 3),uri VARCHAR(256),status CHAR(3),time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

3、安装elasticsearch集群、kibana、cerebro,配置node6(10.0.0.160),node7(10.0.0.170),node8(10.0.0.180),利用kibana和cerebro查看收集的日志。

# 在node6节点上安装Kibana的deb包
[root@node6 ~]# dpkg -i kibana-8.12.2-amd64.deb# 编辑Kibana的配置文件,设置监听端口、主机地址、公共基础URL、Elasticsearch集群地址以及界面语言
[root@node6 ~]# vim /etc/kibana/kibana.yml
server.port: 5601  # Kibana服务监听端口
server.host: "0.0.0.0"  # Kibana监听的主机地址,0.0.0.0表示监听所有IP
server.publicBaseUrl: "http://kibana.zhangyao.com"  # Kibana的公共基础URL
elasticsearch.hosts:  # Elasticsearch集群的地址列表["http://10.0.0.160:9200","http://10.0.0.170:9200","http://10.0.0.180:9200"]
i18n.locale: "zh-CN"  # 界面语言设置为中文# 重启Kibana服务以应用更改
[root@node6 ~]# systemctl restart kibana# 在node6节点上安装OpenJDK 11 JDK
[root@node6 ~]# apt -y install openjdk-11-jdk# 在node6节点上安装Cerebro的deb包,Cerebro是一个Elasticsearch的Web UI管理工具
[root@node6 ~]# dpkg -i cerebro_0.9.4_all.deb# 编辑Cerebro的配置文件,设置数据存储路径
[root@node6 ~]# vim /etc/cerebro/application.conf
data.path: "/var/lib/cerebro/cerebro.db"  # Cerebro的数据存储路径
#data.path = "./cerebro.db"  # 注释掉默认路径# 重启Cerebro服务以应用更改
[root@node6 ~]# systemctl restart cerebro.service# 在node6、node7、node8节点上分别安装Elasticsearch的deb包
[root@node6 ~]# dpkg -i elasticsearch-8.12.2-amd64.deb 
[root@node7 ~]# dpkg -i elasticsearch-8.12.2-amd64.deb 
[root@node8 ~]# dpkg -i elasticsearch-8.12.2-amd64.deb # 编辑node6上的Elasticsearch配置文件,设置集群名称、节点名称、监听主机、发现主机列表、禁用安全功能以及初始主节点列表
[root@node6 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: zjy-cluster  # 集群名称
node.name: node-6  # 节点名称
network.host: 0.0.0.0  # 监听主机地址
discovery.seed_hosts: ["10.0.0.160","10.0.0.170","10.0.0.180"]  # 发现主机列表
xpack.security.enabled: false  # 禁用安全功能
cluster.initial_master_nodes: ["10.0.0.160","10.0.0.170","10.0.0.180"]  # 初始主节点列表# 编辑JVM选项,设置最小和最大堆内存大小
[root@node6 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g  # 最小堆内存大小
-Xmx1g  # 最大堆内存大小# 使用rsync将Elasticsearch的配置文件同步到node7和node8节点
[root@node6 ~]# rsync  /etc/elasticsearch/elasticsearch.yml 10.0.0.170:/etc/elasticsearch/elasticsearch.yml
[root@node6 ~]# rsync  /etc/elasticsearch/elasticsearch.yml 10.0.0.180:/etc/elasticsearch/elasticsearch.yml
[root@node6 ~]# rsync /etc/elasticsearch/jvm.options 10.0.0.170:/etc/elasticsearch/jvm.options
[root@node6 ~]# rsync /etc/elasticsearch/jvm.options 10.0.0.180:/etc/elasticsearch/jvm.options # 分别编辑node7和node8上的Elasticsearch配置文件,仅更改节点名称
[root@node7 ~]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node-7
[root@node8 ~]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node-8# 在node6、node7、node8节点上分别重新加载systemd守护进程、启用Elasticsearch服务并启动服务
[root@node6 ~]# sudo systemctl daemon-reload
[root@node6 ~]# sudo systemctl enable elasticsearch.service
[root@node6 ~]# sudo systemctl restart elasticsearch.service
[root@node7 ~]# sudo systemctl daemon-reload
[root@node7 ~]# sudo systemctl enable elasticsearch.service
[root@node7 ~]# sudo systemctl restart elasticsearch.service
[root@node8 ~]# sudo systemctl daemon-reload
[root@node8 ~]# sudo systemctl enable elasticsearch.service
[root@node8 ~]# sudo systemctl restart elasticsearch.service# 在node6节点上使用curl命令检查Elasticsearch集群中的节点信息
[root@node6 ~]# curl 'http://127.0.0.1:9200/_cat/nodes?v'
# 输出显示了集群中每个节点的IP地址、各种性能指标以及节点名称等信息
ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
10.0.0.170           36          97   2    0.31    0.16     0.07 cdfhilmrstw -      node-7
10.0.0.180           31          95   4    0.54    0.38     0.27 cdfhilmrstw -      node-8
10.0.0.160           31          96  13    2.38    1.43     0.73 cdfhilmrstw *      node-6# 在node6节点上使用curl命令访问nginx服务器,生成访问日志
[root@node6 ~]# curl http://10.0.0.100
[root@node6 ~]# curl http://10.0.0.110
[root@node6 ~]# curl http://10.0.0.120#修改windows的配置文件C:\Windows\System32\drivers\etc
10.0.0.160 kibana.zhangyao.com
浏览器访问kibana.zhangyao.com:5601和kibana.zhangyao.com:9000


http://www.ppmy.cn/devtools/167042.html

相关文章

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开发环境…

Vue项目搜索引擎优化(SEO)终极指南:从原理到实战

文章目录 1. SEO基础与Vue项目的挑战1.1 为什么Vue项目需要特殊SEO处理&#xff1f;1.2 搜索引擎爬虫工作原理 2. 服务端渲染&#xff08;SSR&#xff09;解决方案2.1 Nuxt.js框架实战原理代码实现流程图 2.2 自定义SSR实现 3. 静态站点生成&#xff08;SSG&#xff09;技术3.1…

vue 知识点整理

1.data为什么是一个函数而不是对象 维度对象形式函数形式数据隔离性所有实例共享同一对象&#xff0c;导致数据污染每个实例拥有独立数据副本复用安全性不适用于可复用组件支持组件安全复用语言机制引用传递引发副作用函数返回值实现作用域隔离&#xff08;闭包&#xff09;框…

OpenCV(应用) —— 凸包检测的实战应用

文章目录 一、凸包的概念二、Opencv中的API三、应用场景与实战3.1、实战场景一一、凸包的概念 常见的找寻目标的外轮廓有矩形框(如最小外接矩阵)和圆形框,但这种包围框为了保持几何形状,与图形的真实轮廓贴合度较差。如果能找出图形最外层的端点,将这些端点连接起来,就可…

什么是SWAP虚拟内存?使用服务器如何开启SWAP虚拟内存

一、SWAP 虚拟内存是什么&#xff1f;‌ ‌定义‌&#xff1a; SWAP&#xff08;交换分区&#xff09;是磁盘上的一块空间&#xff0c;用于在物理内存&#xff08;RAM&#xff09;不足时&#xff0c;将部分不活跃的内存数据临时存储到磁盘中&#xff0c;避免系统因内存耗尽而崩…

AI+Mermaid 制作流程图

一、引言 在软件开发的全生命周期里&#xff0c;文档编写扮演着举足轻重的角色。它犹如项目的“导航图”&#xff0c;为团队成员清晰呈现项目架构、功能流程和技术细节&#xff0c;是保障高效协作的关键。然而&#xff0c;传统的文字描述往往难以直观地展现复杂的系统架构、业…

怎样进行相关论文的调研——How to conduct research on relevant papers?

怎样进行相关论文的调研 写在前面1.打开Web of Science2.检索同类表达3.构建“检索式”什么是“检索式” 参考内容 写在前面 偶然间刷到一篇知乎文章&#xff0c;顺着文章的推荐看了钟澄老师的科研论和在B站上的教学视频&#xff0c;深入了解后发现读文章还有这么多讲究&#…

年龄与疾病(信息学奥赛一本通-1106)

【题目描述】 某医院想统计一下某项疾病的获得与否与年龄是否有关&#xff0c;需要对以前的诊断记录进行整理&#xff0c;按照0-18、19-35、36-60、61以上&#xff08;含61&#xff09;四个年龄段统计的患病人数占总患病人数的比例。 【输入】 共2行&#xff0c;第一行为过往病…