下载:https://www.elastic.co/cn/downloads/beats/filebeat
tar -xvf filebeat-6.5.4-linux-x86_64.tar.gz
#创建如下配置文件 haoke.yml
filebeat.inputs:
- type: stdin
enabled: true
setup.template.settings:
index.number_of_shards: 3
output.console:
pretty: true
enable: true
#启动filebeat
# -e:输出到标准输出,默认输出到syslog和logs下
# -c:指定配置文件
# -d:输出debug信息
#./filebeat -e -c haoke.yml -d "publish"
./filebeat -e -c haoke.yml
#输入hello进行测试
hello
#配置读取文件项 haoke-log.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /opt/elasticsearch/ElasticStack/logs/*.log
setup.template.settings:
index.number_of_shards: 3
output.console:
pretty: true
enable: true
#启动filebeat
./filebeat -e -c haoke-log.yml
#/opt/elasticsearch/ElasticStack/logs/下创建test01.log文件,并输入如下内容
123
#观察filebeat输出
filebeat.inputs:
- type: log
enabled: true
paths:
- /opt/elasticsearch/ElasticStack/logs/*.log
tags: ["web"] #添加自定义tag.便于后续的处理
fields: #添加自定义字段
from: haoke-im
fields_under_root: true #为true为添加到根节点,false为添加到子节点
setup.template.settings:
index.number_of_shards: 3
output.console:
pretty: true
enable: true
#启动filebeat
./filebeat -e -c haoke-log.yml
#/opt/elasticsearch/ElasticStack/logs/下创建test01.log文件,并输入如下内容
456
#观察filebeat输出
filebeat.inputs:
- type: log
enabled: true
paths:
- /opt/elasticsearch/ElasticStack/logs/*.log
tags: ["web"] #添加自定义tag.便于后续的处理
fields: #添加自定义字段
from: haoke-im
fields_under_root: false #为true为添加到根节点,false为添加到子节点
setup.template.settings:
index.number_of_shards: 3
output.elasticsearch: #指定输出ES
hosts: ["172.16.124.131:9200","172.16.124.131:9201","172.16.124.131:9202"]
FilBeat由两个主要组件组成: prospector和harvester
/(FilBeat目录)/data/registry
文件中.前面要想实现日志数据的读取以及处理都是自己手动配置的.其实,在FileBeat中,有大量的Module,可以简化我们的配置,直接就可以使用:
我们可以通过./filebeat modules enable redis
来启用redis module,同样我们也可以通过./filebeat modules disable redis
来禁用redis module
cd modules.d/
vim redis.yml
#如下是默认配置
- module: redis
# Main logs
log:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths: ["/var/log/redis/redis-server.log*"]
# Slow logs, retrieved via the Redis API (SLOWLOG)
slowlog:
enabled: true
# The Redis hosts to connect to.
#var.hosts: ["localhost:6379"]
# Optional, the password to use when connecting to Redis.
#var.password:
#Host模式
docker create --name redis-node01 --net host -v /opt/redis/data/node01:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf --port 6379 --loglevel debug --logfile nodes-node01.log
docker create --name redis-node02 --net host -v /opt/redis/data/node02:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf --port 6380 --loglevel debug --logfile nodes-node02.log
docker create --name redis-node03 --net host -v /opt/redis/data/node03:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf --port 6381 --loglevel debug --logfile nodes-node03.log
#启动容器
docker start redis-node01 redis-node02 redis-node03
#开始组建集群
#进入redis-node01进行操作
docker exec -it redis-node01 /bin/bash
#组建集群(172.16.124.131是主机的ip地址)
redis-cli --cluster create 172.16.124.131:6379 172.16.124.131:6380 172.16.124.131:6381 --cluster-replicas 0
loglevel日志等级分为:debug,verbose,notice,warning
vim haoke-redis.yml
#配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /opt/redis/data/node01/*.log
setup.template.settings:
index.number_of_shards: 3
output.console:
pretty: true
enable: true
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
output.elasticsearch: #指定输出ES
hosts: ["172.16.124.131:9200","172.16.124.131:9201","172.16.124.131:9202"]
#启动
./filebeat -e -c haoke-redis.yml --modules redis -d "publish"
其他Modules用法参考官方文档:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html
Metricbeat有2部分组成,一部分是Module,另一部分为Metricset
vi metricbeat.yml
#修改metricbeat的配置文件如下:
metricbeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings;
index.number_of_shards: 1
index.codec: best_compression
setup.kibana:
output.elasticsearch:
hosts: ["172.16.124.131:9200","172.16.124.131:9201","172.16.124.131:9202"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
#启动
./metricbeat -e
启动之后默认是采集的system中的数据
我们这一次测试Redis的Module,修改(metricbeat安装目录)/modules.d
目录下的redis.yml,激活redis的module./metricbeat modules enable redis
启动./metricbeat -e
其余modules:https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html
# 解压安装包
tar -xvf kibana-6.5.4-linux-x86_64.tar.gz
#修改配置文件
vim config/kibana.yml
server.host: "172.16.124.131" #对外暴露服务的地址
elasticsearch.url: "http://172.16.124.131:9200" #配置ElasticSearch
#启动
./bin/kibana
#通过浏览器进行访问
http://172.16.124.131:5601/app/kibana
#创建配置文件
server.host: "172.16.124.131"
elasticsearch.url: "http://172.16.124.131:9200"
#拉取镜像
docker pull kibana:6.5.4
#创建容器
docker create --name kibana --net host -v /opt/elasticsearch/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:6.5.4
#启动容器
docker start kibana
#通过浏览器进行访问
http://172.16.124.131:5601/app/kibana
#修改metricbeat配置
setup.kibana:
host: "172.16.124.131:5601"
#安装仪表盘到kibana
./metricbeat setup --dashboards
#启动
./metricbeat -e
#修改haoke-redis配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /opt/redis/data/node01/*.log
setup.template.settings:
index.number_of_shards: 3
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
output.elasticsearch: #指定输出ES
hosts: ["172.16.124.131:9200","172.16.124.131:9201","172.16.124.131:9202"]
setup.kibana:
host: "172.16.124.131:5601"
#安装仪表盘到kibana
./filebeat -c haoke-redis.yml setup
#启动
./filebeat -e -c haoke-redis.yml
#检查jdk环境,要求jdk1.8+
java -version
#解压安装包
tar -xvf logstash-6.5.4.tar.gz
#启动
bin/logstash -e 'input { stdin { } } output { stdout {} }'
#很多软件包在yum里面没有的,解决的方法,就是使用epel源,也就是安装epel-release软件包。EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS等系统。可以在下面的网址上找到对应的系统版本,架构的软件包
yum install epel-release
yum install -y nginx
#/usr/sbin/nginx:主程序
#/etc/nginx:存放配置文件
#/usr/share/nginx:存放静态文件
#/var/log/nginx:存放日志
#nginx服务命令
systemctl start nginx
#查看日志
tail -f /var/log/nginx/access.log
vim haoke-nginx.yml
#配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
tags: ["log"]
fields:
from: nginx
fields_under_root: false
output.logstash:
hosts: ["172.16.124.131:5044"]
#启动
./filebeat -e -c haoke-nginx.yml
#现在启动会报错,因为Logstash还没有启动
#在Logstash安装目录下vi haoke-logstash.conf
#配置文件
input {
beats {
port => 5044
}
}
output {
stdout {
codec => rubydebug }
}
#启动 --config.test_and_exit 用于测试配置文件是否正确
bin/logstash -f haoke-logstash.conf --config.test_and_exit
#正式启动 --config.reload.automatic 热加载配置文件,修改配置文件后无需重新启动
bin/logstash -f haoke-logstash.conf --config.reload.automatic
启动Filebeat:./filebeat -e -c haoke-nginx.yml
控制台已经输出Nginx的日志.
在前面的输出中,可以看出,虽然可以拿到日志信息,但是信息格式并不友好.比如说:不能直接拿到日志中的ip地址;
vim /etc/nginx/nginx.conf
#配置文件
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
#加载nginx
nginx -s reload
2. 编写nginx-patterns文件(在Logstash安装目录下)
NGINX_ACCESS %{
IPORHOST:remote_addr} - %{
USERNAME:remote_user} \[%{
HTTPDATE:time_local}\] \"%{
DATA:request}\" %{
INT:status} %{
NUMBER:bytes_sent} \"%{
DATA:http_referer}\" \"%{
DATA:http_user_agent}\"
#配置文件
input {
beats {
port => 5044
}
}
filter {
grok {
patterns_dir => "/opt/elasticsearch/ElasticStack/logstash-6.5.4/nginx-patterns"
match => {
"message" => "%{NGINX_ACCESS}"}
remove_tag => [ "_grokparsefailure" ]
add_tag => [ "nginx_access" ]
}
}
output {
stdout {
codec => rubydebug }
}
启动bin/logstash -f haoke-logstash.conf --config.reload.automatic
vi haoke-logstash.conf
#配置文件
output {
elasticsearch {
hosts => ["172.16.124.131:9200","172.16.124.131:9201","172.16.124.131:9202"]
}
}
启动测试bin/logstash -f haoke-logstash.conf --config.reload.automatic
在kibana中查看,也可以制作可视化