07_Elastic Stack 从入门到实践(七)—1
一、Filebeat入门之读取 Nginx 日志文件
1、首先启动 Elasticsearch 集群 和 Nginx 服务,打开GoogleChrome 浏览器,点击 elasticsearch-head 插件,连接Elasticsearch 集群 服务器。
# 查看网卡名
$ ip addr
# 修改网卡配置,改为静态IP
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
[root@manager1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=192.168.67.199
NETMASK=255.255.255.0
GATEWAY=192.168.67.1
DNS1=8.8.8.8
DNS2=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=43f2469a-7ff2-418f-ac9a-3bc5a3f14d46
DEVICE=enp0s3
ONBOOT=yes
# 保存并退出编辑 :wq
# 修改 elasticsearch 集群配置
vim /dzs168/es-cluster/elasticsearch-6.5.4/config/elasticsearch.yml
#node1主节点
cluster.name: es-dzs168-cluster
node.name: node01
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.67.199","192.168.67.71","192.168.67.207"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
# node02 的配置
cluster.name: es-dzs168-cluster
node.name: node02
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.67.199","192.168.67.71","192.168.67.207"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
# node03从节点
cluster.name: es-dzs168-cluster
node.name: node03
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.67.199","192.168.67.71","192.168.67.207"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: “*”
# (192.168.67.199虚拟机上)关闭防火墙,切换到 elsearch用户,启动elasticsearch
$ systemctl stop firewalld
$ su elsearch
$ /dzs168/es-cluster/elasticsearch-6.5.4/bin/elasticsearch
# 查看80端口占用情况,如果占用,杀死进程ID
[root@manager1 ~]# netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 964/httpd
[root@manager1 ~]# kill 964
# 启动nginx服务
$ /usr/local/nginx/nginx/sbin/nginx
# 可通过浏览器访问nginx页面(默认80端口):http://192.168.67.199/
# (192.168.67.71虚拟机上)关闭防火墙,切换到 elsearch用户,启动elasticsearch
$ systemctl stop firewalld
$ su elsearch
$ /dzs168/es-cluster/elasticsearch-6.5.4/bin/elasticsearch
# (192.168.67.207虚拟机上)关闭防火墙,切换到 elsearch用户,启动elasticsearch
$ systemctl stop firewalld
$ su elsearch
$ /dzs168/es-cluster/elasticsearch-6.5.4/bin/elasticsearch
2、实操示例1:
1)查看网卡名,修改网卡配置为静态IP
2)查看80端口占用情况,启动 nginx 服务,通过浏览器地址访问测试
3)启动 elsticsearch 集群服务,打开GoogleChrome 浏览器,点击 elasticsearch-head 插件,连接Elasticsearch 集群 服务器
3、filebeat 读取nginx日志文件:创建配置文件dzs168-nginx.yml 添加输出到 nginx
# 切换目录
cd /dzs168/beats/filebeat-6.5.4-linux-x86_64/
# 复制配置文件
$ cp dzs168-log.yml dzs168-nginx.yml
# 修改配置文件dzs168-nginx.yml 添加如下内容
vim /dzs168/beats/filebeat-6.5.4-linux-x86_64/dzs168-nginx.yml
# 内容如下(注意.yml 文件格式):
[elsearch@manager1 root]$ vim /dzs168/beats/filebeat-6.5.4-linux-x86_64/dzs168-nginx.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/nginx/nginx/logs/*.log
tags: [“nginx”] #添加自定义tag,便于后续处理
fields: #添加自定义字段
from: dzs168-im
fields_under_root: true #true为添加根节点,false为添加到子节点
setup.template.settings:
index.number_of_shards: 3 #指定索引的分片数
output.elasticsearch: #指定ES配置
hosts: ["192.168.67.199","192.168.67.71","192.168.67.207"]
#output.console:
## pretty: true
## enable: true
# 启动filebeat
/dzs168/beats/filebeat-6.5.4-linux-x86_64/filebeat -e -c /dzs168/beats/filebeat-6.5.4-linux-x86_64/dzs168-nginx.yml
4、示例2:打开谷歌浏览器,连接 elasticsearch虚拟机服务器,进行查看。
二、Filebeat入门之 Module 的使用(nginx module)
1、查看 filebeat 的 Module模块
在 filebeat 中有大量的module 可以简化配置,直接使用。
$ /dzs168/beats/filebeat-6.5.4-linux-x86_64/filebeat modules list
# 或者
$ cd /dzs168/beats/filebeat-6.5.4-linux-x86_64/
$ ./filebeat modules list
[root@manager1 filebeat-6.5.4-linux-x86_64]# ./filebeat modules list
Enabled:
Disabled:
apache2
auditd
elasticsearch
haproxy
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
suricata
system
traefik
[root@manager1 filebeat-6.5.4-linux-x86_64]#
可以看到,内置了很多的module,但是都没有启用,如果需要启用需要进行enable操作:
2、filebeat 启用或禁用 nginx Module 模块。
./filebeat modules enable nginx #启动
./filebeat modules disable nginx #禁用
[root@manager1 filebeat-6.5.4-linux-x86_64]# ./filebeat modules enable nginx
Enabled nginx
[root@manager1 filebeat-6.5.4-linux-x86_64]#
[root@manager1 filebeat-6.5.4-linux-x86_64]# ./filebeat modules list
Enabled:
nginx
Disabled:
apache2
auditd
elasticsearch
haproxy
icinga
iis
kafka
kibana
logstash
mongodb
mysql
osquery
postgresql
redis
suricata
system
traefik
[root@manager1 filebeat-6.5.4-linux-x86_64]#
3、配置 nginx module
# 或者
$ cd /dzs168/beats/filebeat-6.5.4-linux-x86_64/
# 打开并编辑配置文件
[root@manager1 filebeat-6.5.4-linux-x86_64]# vim ./modules.d/nginx.yml
- module: nginx
# Access logs
access:
enabled: true
var.paths: ["/usr/local/nginx/nginx/logs/access.log*"]
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:
# Error logs
error:
enabled: true
var.paths: ["/usr/local/nginx/nginx/logs/error.log*"]
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:
4、配置 filebeat
# 切换目录
cd /dzs168/beats/filebeat-6.5.4-linux-x86_64/
# 修改配置文件dzs168-nginx.yml 添加如下内容
$ vim ./dzs168-nginx.yml
# 或者
$ vim /dzs168/beats/filebeat-6.5.4-linux-x86_64/dzs168-nginx.yml
# 内容如下(注意.yml 文件格式):
[root@manager1 filebeat-6.5.4-linux-x86_64]# vim /dzs168/beats/filebeat-6.5.4-linux-x86_64/dzs168-nginx.yml
filebeat.inputs:
#- type: log
# enabled: true
# paths:
# - /usr/local/nginx/nginx/logs/*.log
# tags: [“nginx”] #添加自定义tag,便于后续处理
# fields: #添加自定义字段
# from: dzs168-im
# fields_under_root: true #true为添加根节点,false为添加到子节点
setup.template.settings:
index.number_of_shards: 3 #指定索引的分片数
output.elasticsearch: #指定ES配置
hosts: ["192.168.67.199","192.168.67.71","192.168.67.207"]
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
Reload.enabled: false
#output.console:
## pretty: true
## enable: true
# 启动filebeat(会出错,提示安装ES的ingest-user-agent, ingest-geoip 插件)
/dzs168/beats/filebeat-6.5.4-linux-x86_64/filebeat -e -c /dzs168/beats/filebeat-6.5.4-linux-x86_64/dzs168-nginx.yml
5、解决方法
需要在 ElasticSearch集群中安装ingest-user-agent, ingest-geoip 插件。
1)下载 ingest-user-agent.tar、ingest-geoip.tar、ingest-geoip-conf.tar 3个文件(或者下载ingest-user-agent-6.5.4.zip和ingest-geoip-6.5.4.zip),并上传至虚拟机服务器。
https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-user-agent/ingest-user-agent-6.5.4.zip
https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-geoip/ingest-geoip-6.5.4.zip
2)把 ingest-user-agent.tar、ingest-geoip.tar 解压到ElasticSearch集群的 /dzs168/es-cluster/elasticsearch-6.5.4/pluges 目录下。(或者把ingest-user-agent-6.5.4.zip和ingest-geoip-6.5.4.zip解压至 ./pluges/ 目录下)
3)把ingest-geoip-conf.tar
解压到ElasticSearch集群 /dzs168/es-cluster/elasticsearch-6.5.4/config/ 目录下(把 ./pluges/ingest-geoip-6.5.4/config/* 复制到 ./config 目录下)。
# 1、(192.168.67.199虚拟机上操作)
# 切换用户与目录
$ su elsearch
$ cd /dzs168/es-cluster/elasticsearch-6.5.4/
# 解压ingest-user-agent.tar、ingest-geoip.tar到指定plugins目录中。
$ tar -xvf ingest-geoip.tar -C ./plugins/
$ tar -xvf ingest-user-agent.tar -C ./plugins/
# 或者(如果没有安装unzip可以先安装:yum install unzip)
$ mkdir ./plugins/ingest-user-agent/
$ mkdir ./plugins/ingest-geoip/
$ unzip -d ./plugins/ingest-user-agent/ ingest-user-agent-6.5.4.zip
$ unzip -d ./plugins/ingest-geoip/ ingest-geoip-6.5.4.zip
# 解压ingest-geoip-conf.tar到指定config目录中。
$ tar -xvf ingest-geoip-conf.tar -C ./config/
# 或者
$ mkdir ./config/ingest-geoip/
$ cp -r ./plugins/ingest-geoip/config/* ./config/ingest-geoip/
# 2. 把 ingest-user-agent、ingest-geoip、ingest-geoip-conf复制到(192.168.67.71虚拟机上)对应的目录下。
$ scp -r ./plugins/* elsearch@192.168.67.71:/dzs168/es-cluster/elasticsearch-6.5.4/plugins/
$ scp -r ./config/ingest-geoip elsearch@192.168.67.71:/dzs168/es-cluster/elasticsearch-6.5.4/config/
# 3. 把 ingest-user-agent、ingest-geoip、ingest-geoip-conf复制到(192.168.67.207虚拟机上)对应的目录下。
$ scp -r ./plugins/* elsearch@192.168.67.207:/dzs168/es-cluster/elasticsearch-6.5.4/plugins/
$ scp -r ./config/ingest-geoip elsearch@192.168.67.207:/dzs168/es-cluster/elasticsearch-6.5.4/config/
4)重新启动 ElasticSearch 集群
$ systemctl stop firewalld
$ su elsearch
$ /dzs168/es-cluster/elasticsearch-6.5.4/bin/elasticsearch
5)重新启动 nginx服务和filebeat 刷新 nginx页面,查看日志记录。
# 在 192.168.67.199 的虚拟机上操作
# 查看80端口占用情况,如果占用,杀死进程ID
[root@manager1 ~]# netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 964/httpd
[root@manager1 ~]# kill 964
# 启动nginx服务
$ /usr/local/nginx/nginx/sbin/nginx
# 切换目录,启动filebeat
$ cd /dzs168/beats/filebeat-6.5.4-linux-x86_64/
./filebeat -e -c dzs168-nginx.yml
# 或者
$ /dzs168/beats/filebeat-6.5.4-linux-x86_64/filebeat -e -c /dzs168/beats/filebeat-6.5.4-linux-x86_64/dzs168-nginx.yml
6、实操示例:
1)查看 filebeat 的 Module模块
2)filebeat 启用或禁用 nginx Module 模块。再次查看 filebeat 的 Module
3)配置 filebeat 的 nginx module
4)配置 filebeat 后,启动报错
5)重新配置 ElasticSearch 集群,并重新启动。
三、Metricbeat入门之简介以及组成
1、Metricbeat简介
1)Metricbeat :是轻量型指标采集器。用于从系统和服务收集指标。Metricbeat能够以一种轻量型的方式,输送各种系统和服务统计数据,从CPU到内存,从Redis到Nginx,不一而足。
2)Metricbeat定期收集操作系统或应用服务的指标数据
3)Metricbeat存储到Elasticsearch中,进行实时分析
2、Metricbeat组成
1)Metricbeat有2部分组成,一部分是Module,另一部分为Metricset。
2)Module
收集的对象,如:mysql、redis、nginx、操作系统等;
3)Metricset
收集指标的集合,如:cpu、memory、network等。
3、以 Redis Module 为例,Metricbeat组成 示意图如下:
四、Metricbeat入门之部署与收集系统指标
1、下载metricbeat,如:metricbeat-6.5.4-linux-x86_64.tar.gz,并上传至虚拟机服务器。
metricbeat-6.5.4-linux-x86_64.tar.gz 下载地址:
https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.5.4-linux-x86_64.tar.gz
metricbeat 各个版本下载地址:
https://www.elastic.co/downloads/past-releases#metricbeat
2、解压metricbeat-6.5.4-linux-x86_64.tar.gz
# 切换目录
$ cd /dzs168/beat/
$ tar -zxvf metricbeat-6.5.4-linux-x86_64.tar.gz
3、编辑修改metricbeat配置文件
# 切换目录
$ cd /dzs168/beats/metricbeat-6.5.4-linux-x86_64/
$ vim ./metricbeat.yml
$ [root@manager1 beats]# vim /dzs168/beats/metricbeat-6.5.4-linux-x86_64/metricbeat.yml
# 内容如下:
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: ["192.168.67.199:9200","192.168.67.71:9200","192.168.67.207:9200"]
processors:
- add_host_metadata: ~
- add_c1oud_metadata: ~
4、启动 Metricbeat
# 切换目录
$ cd /dzs168/beats/metricbeat-6.5.4-linux-x86_64/
#启动
./metricbeat -e
$ /dzs168/beats/metricbeat-6.5.4-linux-x86_64/metricbeat
5、打开谷歌浏览器,连接elasticsearch 集群,查看监控情况。
6、进入到 /dzs168/beats/metricbeat-6.5.4-linux-x86_64/modules.d目录,查看 system.yml 文件内容。
# 切换目录
$ cd /dzs168/beats/metricbeat-6.5.4-linux-x86_64/modules.d
[root@manager1 modules.d]# cat system.yml
# 内容如下:
# Module: system
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/6.5/metricbeat-module-system.html
- module: system
period: 10s
metricsets:
- cpu
- load
- memory
- network
- process
- process_summary
#- core
#- diskio
#- socket
process.include_top_n:
by_cpu: 5 # include top 5 processes by CPU
by_memory: 5 # include top 5 processes by memory
- module: system
period: 1m
metricsets:
- filesystem
- fsstat
processors:
- drop_event.when.regexp:
system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'
- module: system
period: 15m
metricsets:
- uptime
#- module: system
# period: 5m
# metricsets:
# - raid
# raid.mount_point: '/'
[root@manager1 modules.d]#
五、Metricbeat入门之Module以及Nginx Module的使用
1、Metricbeat Module查看列表
# 切换目录
$ cd /dzs168/beats/metricbeat-6.5.4-linux-x86_64/
# 查看列表
./metricbeat modules list
2、Nginx Module 开启 nginx 状态查询
在nginx中,需要开启状态查询,才能查询到指标数据。
# 停止nginx服务
$ ./nginx -s stop
# 切换到nginx源码目录
$ cd /usr/local/nginx/nginx-1.14.2
#重新编译nginx
./configure --prefix=/usr/local/nginx/nginx --with-http_stub_status_module
make
make install
# 进入到nginx 主程序目录,查询版本信息
$ cd /usr/local/nginx/nginx/sbin/
./nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/usr/local/nginx/nginx --with-http_stub_status_module
#配置nginx
$ cd /usr/local/nginx/nginx/conf/
vim nginx.conf
location /nginx-status {
stub_status on;
access_log off;
}
# 使配置生效
$ cd /usr/local/nginx/nginx/sbin/
$ ./nginx -s reload
./nginx -s stop
./nginx
3、浏览器地址栏输入:如:192.168.67.199/nginx-status 访问nginx,查看结果,多刷新几次网页,再次查看。
4、结果说明:
Active connections: 2
server accepts handled requests
8 8 22
Reading: 0 Writing: 1 Waiting: 1
1)Active connections :正在处理的活动连接数
2)server accepts handled requests
第一个 server 表示Nginx启动到现在共处理了8个连接
第二个 accepts 表示Nginx启动到现在共成功创建8次握手
第三个handled requests表示总共处理了22次请求
请求丢失数=握手数.连接数,可以看出目前为止没有丢失请求
3)Reading: 0 Writing: 1 Waiting: 1
Reading:Nginx读取到客户端的Header信息数
Writing :Nginx返回给客户端Header 信息数
Waiting:Nginx已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive的情况下,这个值等于Active-(Reading+Writing) )。
4、配置 nginx module 启动 metricbeat
# 切换目录
$ cd /dzs168/beats/metricbeat-6.5.4-linux-x86_64/
#启用nginx module
./metricbeat modules enable nginx
Enabled nginx
# 切换目录
$ cd /dzs168/beats/metricbeat-6.5.4-linux-x86_64/
#修改nginx module 配置
vim ./modules.d/nginx.yml
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/6.5/metricbeat-module-nginx.html
- module: nginx
#metricsets:
# - stubstatus
period: 10s
# Nginx hosts
# hosts: ["http://127.0.0.1"]
hosts: ["http://192.168.67.199"]
# Path to server status. Default server-status
#server_status_path: "server-status"
server_status_path: "nginx-status"
#username: "user"
#password: "secret"
# 切换目录
$ cd /dzs168/beat/metricbeat-6.5.4-linux-x86_64/
# 启动metricbeat
./metricbeat -e
# 浏览器访问ElasticSearch集群,可以看到 nginx 指标数据已经写入到 ElasticSearch 中。
5、测试示例:
上一节关联链接请点击:
06_Elastic Stack 从入门到实践(六)
暂无评论内容