*学习并搭建 ELKR ( = Elasticsearch + Logstash + Kibana + Redis ) 一套完整的 Nginx 日志分析技术栈。从入门安装配置到数据分析,由浅入深的讲解了ELKR的使用和工作流程,更加熟悉服务器和数据库相关操作。*
1. 需要工具: 所有操作在centos7.6版本中操作
- jdk8
yum search java|grep jdk yum install -y java-1.8.0-openjdk java -version
- redis
第一步:下载redis安装包wget http://download.redis.io/releases/redis-4.0.6.tar.gz 第二步:解压压缩包 tar -zxvf redis-4.0.6.tar.gz 第三步:yum安装gcc依赖 yum install gcc 第四步:跳转到redis解压目录下 cd redis-4.0.6 第五步:编译安装 make MALLOC=libc cd src && make install 启动redis 1---./redis-server ------带有界面启动方式 2----以后台进程方式启动redis 第一步:修改redis.conf文件 将 daemonize no 修改为 daemonize yes 第二步:指定redis.conf文件启动 ./redis-server /usr/local/redis-4.0.6/redis.conf
- logstash ----------接受日志,设定日志格式的位置
- elastichsearch ---------处理日志的位置
- kibana ---------图形化管理界面,丰富造作方案,配置
# elasticsearch wget https://downloadfiles.oss-cn-hangzhou.aliyuncs.com/courses/aliyun/elk/elasticsearch-7.4.1-linux-x86_64.tar.gz tar -xvf elasticsearch-7.4.1-linux-x86_64.tar.gz # kibana wget https://downloadfiles.oss-cn-hangzhou.aliyuncs.com/courses/aliyun/elk/kibana-7.4.1-linux-x86_64.tar.gz tar -xzf kibana-7.4.1-linux-x86_64.tar.gz # logstash wget https://downloadfiles.oss-cn-hangzhou.aliyuncs.com/courses/aliyun/elk/logstash-7.4.1.tar.gz tar -xzf logstash-7.4.1.tar.gz
- nginx 安装必要的包呀,库
yum install gcc-c++ yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel wget -c https://nginx.org/download/nginx-1.12.0.tar.gz tar -zxvf nginx-1.12.0.tar.gz cd nginx-1.12.0 ./configure make make install -------------直接执行 启动、停止nginx cd /usr/local/nginx/sbin/ ------寻找启动路径 ./nginx ./nginx -s stop ./nginx -s quit ./nginx -s reload
关闭进程------ 操作完将所有进程kill掉 ps -aux | grep redis查看redis进程
2.工具安装启动产生的问题,
在新装的centos上,需要注意端口开放,防火墙设置, elasticsearch : 9200 kibana : 5601 redis : 6379 nginx: 80
elk三个软件安装时候,如报root用户问题,需要新创建用户
在新创建用户下进行启动,并由root用户权限进行授权。
例如:
groupadd elk
useradd elk -g elk
passwd elk
授权文件
chown -R elk(用户名):elk(组名) elk-xxx.xxx.(具体软件包)
su elk
启动各工具 elk三个包,都是在bin目录下 ./+(工具全拼的名字)
3.Centos7开放及查看端口
1、开放端口 firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口 firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口 firewall-cmd --reload # 配置立即生效 2、查看防火墙所有开放的端口 firewall-cmd --zone=public --list-ports 3.、关闭防火墙 如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估 systemctl stop firewalld.service 4、查看防火墙状态 firewall-cmd --state 5、查看监听的端口 netstat -lnpt
-
实现第一步:log日志=> logstash=>elasticsearch=>kibana
-
实现第二步:nginx 的 log日志=> logstash=>elasticsearch=>kibana
> `- 实现第三步:nginx 的 log日志=> logstash=>redis => logstash => elasticsearch => kibana 介入redis增加缓冲----------------------主要看这步
过程是一步步走出来的:
首先,nginx的输入日志文件
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 /home/project/access.log; 这是修改位置,输出与接收位置相同,
shipper配置文件,
input {
stdin {}
file {
path => "/home/project/access.log" 来自于nginx的日志文件
start_position => beginning 从头开始读,防止漏读
codec => multiline {
negate => true
pattern => '^d'
what => 'previous'
}
}
}
output {
stdout {
codec => rubydebug
}
redis { =======》 这是输出到redis上
host => "localhost"
data_type => "list" ==》输出格式,可以是json
key => "logstash"
}
}
redis,目前没有做修改
indexer配置文件 redis与logstash对接,输出到e和k上,
input {
redis {
host => "localhost"
type => "redis"
data_type => "list"
key => "logstash"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts=>["localhost:9200"]
index=>"logstash-%{+YYYY.MM.dd}"
}
}
最终左图:nginx 介入 shipper.conf文件中 (logstash) shipper输出到redis上,indexer.conf配置redis准入,elastisearch输入到kibana上,最终形成日志处理监控。
最终网页输出版就是如此的清晰透彻,方便业务异常的定位。
就不用在说哪哪哪哪去搜什么error匹配了,



