# 07_Elastic Stack 从入门到实践(七)—1

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 从入门到实践(六)

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
随机推荐
  • 暂无相关文章
  • 评论 抢沙发

    请登录后发表评论

      暂无评论内容