安装
filebeat-<version>-windows
的文件夹。filebeat.yml
配置文件。可以使用文本编辑器(如 Notepad++ 或 Visual Studio Code)打开它。在 Windows 上,您可以将 Filebeat 作为服务运行。请按照以下步骤进行:
cd
命令导航到解压后的 Filebeat 文件夹。例如:
powershellcd "C:\Program Files\Filebeat\filebeat-<version>-windows"
powershell.\install-service-filebeat.ps1
powershellStart-Service filebeat
powershellGet-Service filebeat
powershellStart-Service filebeat
powershellGet-Service filebeat
C:\Program Files\Filebeat\logs
目录下。如果需要停止 Filebeat 服务,可以运行:
powershellStop-Service filebeat
如果需要卸载 Filebeat 服务,可以运行:
powershell.\uninstall-service-filebeat.bat
通过以上步骤,您应该能够在 Windows 上成功安装并运行 Filebeat。
filebeat.yml
示例yaml###################### Filebeat Configuration Example #########################
#=========================== Filebeat inputs =============================
filebeat.inputs:
# Apache 日志输入
- type: log
enabled: true
paths:
# 将以下路径改为对应的日志目录,可以使用 * 通配符匹配多个日志文件
- E:/RequirementsDocument/ELK-LOG/install/httpd-2.4.62-240904-win64-VS17/Apache24/logs/access*.log
fields:
log_type: apache
# IIS 日志输入
- type: log
enabled: true
paths:
- C:/inetpub/logs/LogFiles/W3SVC*/u_ex*.log
fields:
log_type: iis
# Tomcat 日志输入
- type: log
enabled: true
paths:
- D:/tomcat8.5.73/logs/catalina*.log
fields:
log_type: tomcat
# nginx 日志输入
- type: log
enabled: true
paths:
- E:/RequirementsDocument/ELK-LOG/logs/nginx/access*.log
fields:
log_type: nginx
#============================= Filebeat modules ===============================
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
#==================== Elasticsearch template setting ==========================
setup.template.name: "its-log"
setup.template.pattern: "its-log-*"
setup.template.settings:
index.number_of_shards: 1
index.number_of_replicas: 0
_source.enabled: true
setup.template:
# Apache 模板
- name: "its-log-apache"
pattern: "its-log-apache*"
settings:
index.number_of_shards: 1
index.number_of_replicas: 0
_source.enabled: true
# IIS 模板
- name: "its-log-iis"
pattern: "its-log-iis*"
settings:
index.number_of_shards: 1
index.number_of_replicas: 0
_source.enabled: true
# Tomcat 模板
- name: "its-log-tomcat"
pattern: "its-log-tomcat*"
settings:
index.number_of_shards: 1
index.number_of_replicas: 0
_source.enabled: true
# nginx模板
- name: "its-log-nginx"
pattern: "its-log-nginx*"
settings:
index.number_of_shards: 1
index.number_of_replicas: 0
_source.enabled: true
#============================== Kibana =====================================
setup.kibana:
#================================ Outputs =====================================
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["10.180.27.36:9200"]
index: "its-log-%{[fields.log_type]}-cd-%{+YYYY.MM.dd}"
username: "xxxx"
password: "xxxxxxxxx"
#================================ Procesors =====================================
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
#============================== Xpack Monitoring ===============================
number_of_files: 3
close_removed: true
clean_removed: true
#============================== Logging =====================================
logging:
level: info
to_files: true
files:
path: C:\Program Files\Filebeat\logs
name: filebeat
keepfiles: 7
permissions: 0644
###10 Windows filebeat.yml
示例解释
以下是对 Filebeat 配置文件的逐行解释:
yamlfilebeat.inputs:
# Apache 日志输入
- type: log
enabled: true
paths:
- E:/RequirementsDocument/ELK-LOG/install/httpd-2.4.62-240904-win64-VS17/Apache24/logs/access*.log
fields:
log_type: apache
filebeat.inputs
:定义 Filebeat 的输入源。type: log
:指定输入类型为日志文件。enabled: true
:启用此输入。paths
:定义要读取的日志文件路径,支持通配符(*)。fields
:自定义字段,这里定义了 log_type
为 apache
,可以用于后续的索引或处理。接下来的输入部分(IIS、Tomcat、nginx)与 Apache 输入类似,定义了不同类型的日志源,分别为:
C:/inetpub/logs/LogFiles/W3SVC*/u_ex*.log
D:/tomcat8.5.73/logs/catalina*.log
E:/RequirementsDocument/ELK-LOG/logs/nginx/access*.log
yamlfilebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.config.modules
:配置 Filebeat 模块。path
:指定模块文件的位置。reload.enabled
:是否启用模块的动态重载,这里设置为 false
。yamlsetup.template.name: "its-log"
setup.template.pattern: "its-log-*"
setup.template.settings:
index.number_of_shards: 1
index.number_of_replicas: 0
_source.enabled: true
setup.template.name
:设置索引模板的名称。setup.template.pattern
:指定匹配的索引模式。setup.template.settings
:定义索引的设置:
index.number_of_shards
:将索引分为 1 个分片。index.number_of_replicas
:不创建副本(0)。_source.enabled
:启用源字段。接下来的部分定义了针对不同日志类型(Apache、IIS、Tomcat、nginx)的模板设置,基本上与上述设置相同,都是为不同类型的日志指定索引模板。
yamlsetup.kibana:
setup.kibana
:用于配置 Kibana 的地址和设置。虽然没有具体配置,但这表示 Filebeat 将连接到 Kibana。yamloutput.elasticsearch:
hosts: ["10.180.27.36:9200"]
index: "its-log-%{[fields.log_type]}-cd-%{+YYYY.MM.dd}"
username: "xxxx"
password: "xxxxxxxx"
output.elasticsearch
:配置 Filebeat 将数据发送到 Elasticsearch。hosts
:指定 Elasticsearch 的主机和端口。index
:定义索引名称的模式,使用 fields.log_type
来区分不同日志类型,并按日期格式化。username
和 password
:用于连接 Elasticsearch 的凭据。yamlprocessors:
- add_host_metadata: ~
- add_cloud_metadata: ~
processors
:用于在发送数据之前处理数据。add_host_metadata
:添加主机元数据(如主机名、IP 地址等)。add_cloud_metadata
:添加云元数据(如果适用)。yamlnumber_of_files: 3
close_removed: true
clean_removed: true
number_of_files
指定最大文件数,close_removed
和 clean_removed
控制日志文件的关闭和清理行为。yamllogging:
level: info
to_files: true
files:
path: C:\Program Files\Filebeat\logs
name: filebeat
keepfiles: 7
permissions: 0644
logging
:配置 Filebeat 的日志设置。level
:设置日志级别为 info
。to_files
:将日志输出到文件。files
:定义日志文件的相关设置:
path
:日志文件的存储路径。name
:日志文件的名称。keepfiles
:保留的日志文件数量。permissions
:设置日志文件的权限。这个配置文件定义了 Filebeat 如何收集不同类型的日志(Apache、IIS、Tomcat、nginx),如何将这些日志发送到 Elasticsearch,并配置了相关的索引模板和日志记录设置。每个部分都可以根据实际需求进行调整,以确保 Filebeat 能够高效地收集和发送日志数据。
首先,确保您已经下载并解压了 Filebeat 的 tar.gz 包。如果还没有,可以使用以下命令下载并解压:
bash# 下载 Filebeat tar.gz 包(请根据需要替换版本号)
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.23-linux-x86_64.tar.gz
# 解压缩
tar xzvf filebeat-6.8.23-linux-x86_64.tar.gz
# 进入解压后的目录
cd filebeat-6.8.23-linux-x86_64
在解压后的目录中,您会找到 filebeat.yml
配置文件。您需要根据您的需求编辑此文件(filebeat.yml示例请参考上面windows版本):
bashvim filebeat.yml
在安装 6.8.23 版本时,可能会出现权限问题,请在 filebeat.yml
文件中添加以下配置:
yamlseccomp:
default_action: allow
syscalls:
- action: allow
names:
- rseq
要在后台运行 Filebeat,您可以使用 nohup
命令或将其作为系统服务运行。以下是两种方法:
nohup
命令允许您在退出终端后继续运行程序。您可以使用以下命令在后台运行 Filebeat:
bashnohup ./filebeat -e -c filebeat.yml > filebeat.log 2>&1 &
-e
:表示将日志输出到标准错误。-c filebeat.yml
:指定配置文件。> filebeat.log 2>&1
:将输出和错误重定向到 filebeat.log
文件。&
:将命令放入后台运行。您可以使用以下命令查看 Filebeat 的日志输出:
bashtail -f filebeat.log
如果您希望更好地管理 Filebeat,建议将其作为系统服务运行。您可以创建一个系统服务单元文件,使 Filebeat 在系统启动时自动运行。
创建一个服务文件:
bashsudo nano /etc/systemd/system/filebeat.service
在文件中添加以下内容:
ini[Unit]
Description=Filebeat
Documentation=https://www.elastic.co/guide/en/beats/filebeat/current/index.html
After=network.target
[Service]
User=root
Group=root
ExecStart=/path/to/filebeat/filebeat -e -c /path/to/filebeat/filebeat.yml
Restart=always
[Install]
WantedBy=multi-user.target
请确保将 /path/to/filebeat/filebeat
和 /path/to/filebeat/filebeat.yml
替换为您实际的 Filebeat 可执行文件和配置文件的路径。
重新加载 systemd,使其识别新的服务:
bashsudo systemctl daemon-reload
启动 Filebeat 服务:
bashsudo systemctl start filebeat
设置 Filebeat 服务在系统启动时自动启动:
bashsudo systemctl enable filebeat
检查 Filebeat 服务状态:
bashsudo systemctl status filebeat
以上是在使用 tar.gz 包安装 Filebeat 后,在后台运行 Filebeat 的两种方法。使用系统服务的方式更为推荐,因为它提供了更好的管理和监控功能。
systemctl
启动的 Filebeat 服务的日志可以通过 journalctl
命令来查看。以下是查看 Filebeat 日志的步骤:您可以使用以下命令查看 Filebeat 的日志:
bashsudo journalctl -u filebeat.service -f
-u filebeat.service
:指定要查看的服务。-f
:实时跟踪日志输出,类似于 tail -f
。如果您只想查看特定时间范围内的日志,可以使用 --since
和 --until
选项。例如,要查看今天的日志,可以这样做:
bashsudo journalctl -u filebeat.service --since "today"
如果您只想查看最近的几条日志,可以使用 -n
选项,例如查看最近的 50 条日志:
bashsudo journalctl -u filebeat.service -n 50
您还可以根据关键字过滤日志。例如,如果您想查找包含 "error" 的日志条目,可以使用:
bashsudo journalctl -u filebeat.service | grep "error"
如果您想查看所有日志而不限制于 Filebeat 服务,可以直接运行:
bashsudo journalctl -f
这将显示所有服务的实时日志输出。
有时候为了服务器安装很多信息是不能显露出来了,这其中就包含了tomcat服务器的版本号。
修改前如下:
1.进入tomcat安装路径(这里以/usr/local/tomcat为例说明):
cd /usr/local/tomcat/lib unzip catalina.jar cd org/apache/catalina/util vim ServerInfo.properties
2.找到最下面,类似台下信息(版本不同以下信息不同):
server.info=Apache Tomcat/7.0.52 (Ubuntu) server.number=7.0.52.0 server.built=Jun 30 2016 01:59:37
修改之为以下,并保存:
server.info=Apache Tomcat server.number=0.0.0.0 server.built=Jun 30 2016 01:59:37
将修改后的信息压缩回jar包:
cd /usr/local/tomcat/lib jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties
3.重启tomcat::
service tomcat restart
4.测试:
修改后如下:
MySQL8的双主同步(也称为双主复制或双向复制)是指两个MySQL服务器相互之间进行数据复制,从而确保数据的实时同步和数据冗余备份。
服务器说明
DB-MASTER(服务器A):172.165.32.132
DB-SLAVE(服务器B):172.165.32.182
DB VIP(Keepalived) :172.165.32.192
登录账号信息:
root/Cpcnet123$%^
TychonicUser/Cpcnet123$%^
登录命令:
mysql -uroot -p'Cpcnet123$%^'
Mysql8位置在/etc/mysql/my.cnf
[mysqld] log-bin=mysql-bin #开启主从binlog(二进制日志),主库必须开启 binlog_format=mixed #指定二进制日志格式为mixed,即在语句和行两种模式之间自动切换 server-id=1 #配置server-id(唯一)标识主机,必须与从库不一致 relay-log=relay-bin #指定中继日志文件的名称为relay-bin,用于在主从复制中传输数据 relay-log-index=slave-relay-bin.index #指定中继日志索引文件的名称,用于记录中继日志文件的位置。 auto_increment_increment=1 #指定自增长ID的增量为1,用于在主从复制中避免ID冲突。 auto_increment_offset=1 #指定自增长ID的起始值为1,用于在主从复制中避免ID冲突。 expire_logs_days=30
sudo systemctl restart mysql
mysql -uroot -p'Cpcnet123$%^'
CREATE USER 'replica'@'%' IDENTIFIED BY 'SE$rft6y'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;
Mysql8位置在/etc/mysql/my.cnf
[mysqld] log-bin=mysql-bin #开启主从binlog(二进制日志),主库必须开启 binlog_format=mixed #指定二进制日志格式为mixed,即在语句和行两种模式之间自动切换 server-id=2 #配置server-id(唯一)标识主机,必须与从库不一致 relay-log=relay-bin #指定中继日志文件的名称为relay-bin,用于在主从复制中传输数据 relay-log-index=slave-relay-bin.index #指定中继日志索引文件的名称,用于记录中继日志文件的位置。 auto_increment_increment=2 #指定自增长ID的增量为2,用于在主从复制中避免ID冲突。 auto_increment_offset=2 #指定自增长ID的起始值为2,用于在主从复制中避免ID冲突。 expire_logs_days=30
sudo systemctl restart mysql
mysql -uroot -p'Cpcnet123$%^'
CREATE USER 'replica'@'%' IDENTIFIED BY 'SE$rft6y'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;
show master status;
使用查询出来的log file名称(mysql-bin.000055)和pos(90427)配置服务器A的同步
stop slave; reset slave; CHANGE MASTER TO MASTER_HOST='172.165.32.182', MASTER_USER='replica', MASTER_PASSWORD='SE$rft6y', MASTER_LOG_FILE='mysql-bin.000055', MASTER_LOG_POS=90427, get_master_public_key=1; start slave; show slave status\G;
如果配置正确,状态应该显示Slave_IO_Running和Slave_SQL_Running均为Yes。
show master status;
使用查询出来的log file名称(mysql-bin.000050)和pos(94845)配置服务器B的同步
stop slave; reset slave; CHANGE MASTER TO MASTER_HOST='172.165.32.132', MASTER_USER='replica', MASTER_PASSWORD='SE$rft6y', MASTER_LOG_FILE='mysql-bin.000050', MASTER_LOG_POS=94845, get_master_public_key=1; start slave; show slave status\G;
如果配置正确,状态应该显示Slave_IO_Running和Slave_SQL_Running均为Yes。
在master-A主机上创建同步数据库
CREATE DATABASE IF NOT EXISTS abcd DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; use abcd; create table t1(id int,name varchar(20));
在master-B上查看是否同步了master-A的变化
show databases; use abcd; show tables;
在master-B上插入一条数据查看master-A上是否同步更新
insert into t1 (id,name) values (5,'王五');
在mster-A上查询在master-B上插入的数据
Select * from t1;
测试通过删除测试库abcd;
DROP DATABASE IF EXISTS abcd;
在MASTER-A导出完整数据
mysqldump -u root-p miind_sdwan_1_5 > /home/cpcnet/backup.sql
在MASTER-A删除miind_sdwan_1_5;
DROP DATABASE IF EXISTS miind_sdwan_1_5;
MASTER-B新建miind_sdwan_1_5;
CREATE DATABASE IF NOT EXISTS miind_sdwan_1_5;
在MASTER-A导入数据
source /home/cpcnet/full_backup.sql;
排查异常
select * from performance_schema.replication_applier_status_by_worker\G;
nginx的负载均衡主要是以下配置起作用
#负载均衡 upstream load_banance { #负载均衡方法,可选
,ip_hash等,不填写则为轮询方式; # 服务器的访问地址,最好使用服务器的私有IP以获得更好的性能和安全性。 server 172.163.32.125:8090 weight=1; server 172.163.32.165:8090 weight=1; }以上配置表示当请求nginx时,会按照轮询的方式去172.163.32.125:8090和172.163.32.165:8090请求服务
以下是一个完整的nginx配置示例:
#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; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #负载均衡 upstream load_banance { #负载均衡方法,可选:least_conn,ip_hash等,不填写则为轮询方式; # 服务器的访问地址,最好使用服务器的私有IP以获得更好的性能和安全性。 server 172.163.32.125:8090 weight=1; server 172.163.32.165:8090 weight=1; } server { listen 80; charset utf-8; root /home/allen/mnt/cpc/dist; location = /index.html { add_header Cache-Control "no-cache, no-store"; } location / { try_files $uri $uri/ @router; index index.html index.htm; } location @router { rewrite ^.*$ /index.html last; } location /api { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass http://load_banance; rewrite "^/api/(.*)$" /$1 break; } client_max_body_size 10M; } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }