目录
部署filebeat
安装nginx
安装nginx
启动nginx
编辑 安装filebeat
1)上传软件包
2)解压缩软件
3)修改配置文件
4)启动服务
设置开机自启
logstash配置
1)配置 logstash文件
2)启动logstash
3)开机自启
Kibana配置
1)创建索引
2)添加时间过滤器
3)查看日志
编辑 4)添加过滤器
1.添加类型为 log.file.path 的过滤器
2.过滤cong12这台主机的nginx错误日志
我们在主机(cong12)上部署nginx服务,然后安装filebeat,使用filebeat收集nginx日志文件
把收集的日志文件发送给 logstash 过滤日志,过滤完的日志保存到 elasticsearch,最终通过kibnan展示
点击可查看:ELK部署
可选rpm包安装和源码包的方式
Nginx官网下载地址:
http://nginx.org/en/download.html
上传软件包
安装依赖包:
yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
预编译:
groupadd www
useradd -g www www -s /sbin/nologin
tar zxf nginx-1.10.3.tar.gz
cd nginx-1.10.3
[root@cong12 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www
[root@cong12 nginx-1.10.3]# make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx
查看端口:
访问nginx默认测试页
直接下载官方发布的二进制包的,可以访问 Download Logstash Free | Get Started Now | Elastic 页面找对应操作系统和版本,点击下载即可
tar -zxvf filebeat-7.3.0-linux-x86_64.tar.gz -C /usr/local/
重命名:
mv /usr/local/filebeat-7.3.0-linux-x86_64 /usr/local/filebeat
filebeat.yml配置主要有两个部分,一个是日志收集,一个是日志输出的配置
如想收集某些日志文件在 paths 下写日志存放的决定路径
vim /usr/local/filebeat/filebeat.yml
- type: log # type: log 读取日志文件的每一行(默认)
enabled: true #enabled: true 该配置是否生效,如果改为false,将不收集该配置的日志
paths: # paths: 要抓取日志的全路径
- /usr/local/nginx/logs/*.log #添加收集httpd服务日志
#- /var/log/* #将该行注释掉
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch: # Elasticsearch这部分全部注释掉,不直接把日志文件传输到ES
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
#----------------------------- Logstash output --------------------------------
output.logstash: #取消注释,把日志放到logstash中
# The Logstash hosts
hosts: ["192.168.30.11:5044"] #取消注释,输出到Logstash的地址和端口
#logging.level: warning #调整日志级别
注:把日志传输到 logstash 需让 logstash 监听 filebeat 5044端口
cd /usr/local/filebeat/
[root@cong12 filebeat]# ./filebeat & #后台运行
或
./filebeat -e -c filebeat.yml &
-e: 记录到stderr(标准输出(设备)文件,对应终端的屏幕),并禁用syslog 文件输出
-c: 指定用于Filebeat的配置文件, 如果未指定-c标志,则使用默认配置文件filebeat.yml
查看服务进程
ps -ef | grep filebeat
echo "cd /usr/local/filebeat/ && ./filebeat -e -c filebeat.yml & " >> /etc/rc.local
chmod +x /etc/rc.local
logstash有三个插件:input (接收)、filter(过滤)、output(传输)
input{
beats { #从Elastic beats接收事件
codec => plain{charset => "UTF-8"} #设置编解码器为utf8
port => "5044" #要监听的端口
}
}
output {
stdout { #标准输出,把收集的日志在当前终端显示,方便测试服务连通性
codec => "rubydebug" #编解码器为rubydebug
}
elasticsearch { #把收集的日志发送给elasticsearch
hosts => [ "192.168.30.11:9200" ] # elasticsearch的服务器地址
index => "nginx-logs-%{+YYYY.MM.dd}" #创建索引
}
}
logstash -f /usr/local/logstash-7.3.0/config/http_logstash.conf
如果报错:
这是因为我这台主机已经启动了 logstash实例使用的数据目录,有两种方式解决:
1.杀死之前运行的进程,将 /etc/rc.local 文件下设置的开机自启删除。
2.如要运行多个实例 ,使用选项 --path.data=/dir为要启动的logstash实例指定一个路径
我采用的第二种方法:
logstash -f /usr/local/logstash-7.3.0/config/http_logstash.conf --path.data=/tmp
后台运行:
nohup logstash -f /usr/local/logstash-7.3.0/config/http_logstash.conf --path.data=/tmp &
echo "nohup logstash -f /usr/local/logstash-7.3.0/config/http_logstash.conf &" >> /etc/rc.local
访问 Kibana: 192.168.30.11:5601
打开新建的索引去查看收集到的日志,可以通过刚才添加的时间过滤器查看你想要的看到的日志
我们可以在搜到的日志添加过滤器,过滤出我们想要的内容,比如,我想看下nginx的错误日志,那么添加一个log.file.path为/usr/local/nginx/logs/error.log的过滤器,如果我们监控的服务器比较多,我可以查看特定的主机的nginx错误日志。
按照主机名做过滤,过滤主机的字段名称叫agent.hostname,添加agent.hostname为cong12的过滤器,所有的过滤器字段在显示的日志上面可以看到。
到此 ELK+filebeat 部署完成