网站开发项目经验和教训,网站组建 需求分析,关键词排名推广,视频网站怎么搭建ELFK的组成#xff1a; Elasticsearch: 它是一个分布式的搜索和分析引擎#xff0c;它可以用来存储和索引大量的日志数据#xff0c;并提供强大的搜索和分析功能。 #xff08;java语言开发#xff0c;#xff09;logstash: 是一个用于日志收集#xff0c;处理和传输的… ELFK的组成 Elasticsearch: 它是一个分布式的搜索和分析引擎它可以用来存储和索引大量的日志数据并提供强大的搜索和分析功能。 java语言开发logstash: 是一个用于日志收集处理和传输的工具它可以从各种数据源收集日志数据对数据进行处理和过滤将数据发送到Elasticsearch。 javakibana: 是一个用于数据可视化和分析的工具它可以与Elasticsearch集成帮助用户通过图表、仪表盘等方式直观地展示和分析日志数据。 javafilebeat: 轻量级日志收集工具一般安装在客户端服务器上负责收集日志传输到ES或logstash go 本章实验环境拓扑图 版本介绍 Elasticsearch6.6.0kibana6.6.0filebeat6.6.0nginx1.18.0Redis5.0.7logstash6.6.0开始部署 部署8.8服务器的es和Kibnaa 复制软件包至服务器下安装 rpm -ivh elasticsearch-6.6.0.rpm修改配置文件 vim /etc/elasticsearch/elasticsearch.yml node.name: es1
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 192.168.8.8,127.0.0.1
http.port: 9200 创建数据目录并修改权限 mkdir -p /data/elasticsearch
chown -R elasticsearch.elasticsearch /data/elasticsearch/启动essystemctl start elasticsearch部署安装kibana 安装kibanarpm -ivh kibana-6.6.0-x86_64.rpm 修改配置文件 修改项 server.port: 5601
server.host: 192.168.8.8
server.name: db01 #自己所在主机的主机名
elasticsearch.hosts: [http://192.168.8.8:9200] #es服务器的ip便于接收日志数据
保存退出 启动kibanasystemctl start kibana查看两个服务的端口是否存在 netstat -anpt | grep 5601netstat -anpt | grep 9200部署8.9服务器山的nginx和filebeat 安装filebeat rpm -ivh filebeat-6.6.0-x86_64.rpm 修改配置文件 vim /etc/filebeat/filebeat.yml 清空源内容直接覆盖 filebeat.inputs: 日志来源
- type: log 日志格式enabled: true 开机自启paths: 日志路径- /var/log/nginx/access.logoutput.elasticsearch: 日志传送到那hosts: [192.168.8.8:9200]启动filebeat服务 systemctl start filebeat 安装nginx yum -y install nginx 启动nginxnginx 在8.8服务器上安装网站压力测试工具 yum -y install httpd-tools 2.使用ab压力测试工具测试访问 ab -c 1000 -n 20000 http://192.168.8.9/ -c并发数 -n请求数 使用浏览器扩展程序登录es查看索引是否有访问数 修改nginx的日志格式为json格式 vim /etc/nginx/nginx.conf 添加在http{}内 log_format log_json { timestamp: $time_local,
remote_addr: $remote_addr,
referer: $http_referer,
request: $request,
status: $status,
bytes: $body_bytes_sent,
agent: $http_user_agent,
x_forwarded: $http_x_forwarded_for,
up_addr: $upstream_addr,
up_host: $upstream_http_host,
up_resp_time: $upstream_response_time,
request_time: $request_time};access_log /var/log/nginx/access.log log_json; 重启服务systemctl restart nginx 修改filebeat.yml文件区分nginx的访问日志和错误日志 vim /etc/filebeat/filebeat.yml 修改为
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/access.logjson.keys_under_root: truejson.overwrite_keys: truetags: [access]- type: logenabled: truepaths:- /var/log/nginx/error.logtags: [error]output.elasticsearch:hosts: [192.168.8.8:9200]indices:- index: nginx-access-%{yyyy.MM.dd}when.contains:tags: access- index: nginx-error-%{yyyy.MM.dd}when.contains:tags: errorsetup.template.name: nginx
setup.template.patten: nginx-*
setup.template.enabled: false
setup.template.overwrite: true 重启服务systemctl restart filebeat 使用ab工具压力测试一下网站 测试访问数据ab -c 1000 -n 20000 http://192.168.8.9/ 测试错误数据ab -c 1000 -n 20000 http://192.168.8.9/444.html 可以看到es收集到了两个索引 使用kibana图形化展示日志访问数据 http://192.168.8.8:5601/ 创建索引图形化展示 按照此步骤 将error错误索引页创建一下即可 虽然以上环境也可以进行日志收集但只适用于中小型公司以下再多增加一台服务器安装redis实现消息队列和logstash日志采集增加吞吐量。 在8.10服务器上部署redis和logstash 准备安装目录和数据目录 mkdir -p /data/soft
mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}下载redis安装包 cd /data/soft
wget http://download.redis.io/releases/redis-5.0.7.tar.gz将软件包解压到/opt/redis_cluster文件夹中 tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-5.0.7 /opt/redis_cluster/redis 切换目录编译安装redis cd /opt/redis_cluster/redis
make make install 编写redis配置文件 vim /opt/redis_cluster/redis_6379/conf/6379.conf bind 127.0.0.1 192.168.8.10
port 6379
daemonize yes
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis.rdb
dir /opt/redis_cluster/redis_6379 启动redis服务redis-server /opt/redis_cluster/redis_6379/conf/6379.conf 修改8.9的filebeat文件将filebeat收集的日志转发给redis vim /etc/filebeat/filebeat.yml filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/access.logjson.keys_under_root: truejson.overwrite_keys: truetags: [access]- type: logenabled: truepaths:- /var/log/nginx/error.logtags: [error]setup.template.settings:index.number_of_shards: 3setup.kibana:output.redis:hosts: [192.168.8.10]key: filebeatdb: 0timeout: 5 重启服务systemctl restart filebeat再次在8.8上使用压力测试工具访问网站ab -c 1000 -n 20000 http://192.168.8.9/登录redis数据库redis-cli 查看是否有以filebeat命名的键 filebeat与redis关联成功继续在8.10服务器上部署logstash rpm -ivh logstash-6.6.0.rpm 修改logstash配置文件实现access和error日志分离 vim /etc/logstash/conf.d/redis.conf input {redis {host 192.168.8.10port 6379db 0key filebeatdata_type list}
}filter {mutate {convert [upstream_time,float]convert [request_time,float]}
}output {stdout {}if access in [tags] {elasticsearch {hosts [http://192.168.8.8:9200]index nginx_access-%{YYYY.MM.dd}manage_template false}}if error in [tags] {elasticsearch {hosts [http://192.168.8.8:9200]index nginx_error-%{YYYY.MM.dd}manage_template false}}
} 最后重启logstash /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf过程需等待启动较慢大约2-3分钟 最后通过kibana图形化界面可以看到nginx的access日志和error错误日志即可最终效果和仅部署elk效果一致只不过添加了redis数据库和filebeat日志收集工具有了redis可以实现了消息队列为es服务器减轻了压力。