docker ELK+filebeat+fluentd和compose的简单使用

ELK+Filebeat

关于docker elk安装可以翻阅上一个博客

filebeat 是基于原先 logstash-forwarder 的源码改造出来的。换句话说:filebeat 就是新版的 logstash-forwarder,也会是 ELK Stack 在 shipper 端的第一选择。

Filebeat的架构设计

在这里插入图片描述
当我们安装完filebeat之后,我们可以在filebeat的安装目录下看到两个文件

  • filebeat.template.json (输出的文件格式,在filebeat的template中指定,当服务启动时,会被加载)

  • filebeat.yml(所有的配置都在该文件下进行)

filebeat是用来收集日志的,那么在filebeat.yml中会配置指定的监听文件,也就是上图中的一个个log,这个log的目录是在prospectors中设置,在看配置文件的时候便可以很明白的看出来,对于prospectors定位每个日志文件,Filebeat启动harvester。每个harvester读取新的内容一个日志文件,新的日志数据发送到spooler(后台处理程序),它汇集的事件和聚合数据发送到你已经配置了Filebeat输出。

filebeat安装

环境:docker elk 7.7.0版本
filebeat 7.7.0 版本
关闭防火墙或开启相应端口

注:elk与filebeat版本要保持一致否则容易初始化失败
下载网址:https://www.elastic.co/cn/downloads/past-releases/filebeat-7-7-0

提供一个我自己的github网址可以直接下载rpm包:https://github.com/mrlxxx/filebeat.git

docker ps
0065c4b64b67        sebp/elk:770        "/usr/local/bin/star…"   4 hours ago         Up 39 minutes       0.0.0.0:5044->5044/tcp, 0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 9300/tcp   elk
##elk运行保证端口全部开启

##下载安装filebeat
git clone https://github.com/mrlxxx/filebeat.git
cd filebeat
rpm -ivh filebeat-7.7.0-x86_64.rpm 

##修改配置文件 大概行数已经标出来,yml类型文件注意格式一致
vim /etc/filebeat/filebeat.yml
 23   # Change to true to enable this input configuration.
 24   enabled: true
 25 
 26   # Paths that should be crawled and fetched. Glob based paths.
 27   paths:
 28     - /var/lib/docker/containers/*/*.log
 29     - /var/log/messages

115 #============================== Kibana =====================================
116 
117 # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
118 # This requires a Kibana endpoint configuration.
119 setup.kibana:
120 
121   # Kibana Host
122   # Scheme and port can be left out and will be set to the default (http and 5601)
123   # In case you specify and additional path, the scheme is required: http://localhost:5601/path
124   # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
125   host: "192.168.1.10:5601"


149 #-------------------------- Elasticsearch output ------------------------------
150 output.elasticsearch:
151   # Array of hosts to connect to.
152   hosts: ["192.168.1.10:9200"]


##启用并配置elasticsearch模块
filebeat modules enable elasticsearch

##初始化filebeat
filebeat setup

##启动服务
systemctl start filebeat
systemctl enable filebeat

运行一个容器在网页中查看相关日志信息

docker run -d  busybox sh -c 'while true ; do echo "this test1 from busy";sleep 10;done;'

##访问ip:5601

在这里插入图片描述

在这里插入图片描述

也可以按照网页上的步骤安装filebeat
直接拉到最下方
在这里插入图片描述
结果如图

在这里插入图片描述

Fluentd

Fluentd是一个开源的数据收集器,专为处理数据流设计,使用JSON作为数据格式。它采用了插件式的架构,具有高可扩展性高可用性,同时还实现了高可靠的信息转发。具备每天收集5000+台服务器上5T的日志数据,每秒处理50000条消息的性能;

Fluentd是由Fluent+d得来,d生动形象地标明了它是以一个守护进程的方式运行。官网上将其描述为data collector,在使用上,我们可以把各种不同来源的信息,首先发送给Fluentd,接着Fluentd根据配置通过不同的插件把信息转发到不同的 地方,比如文件、SaaS Platform、数据库,甚至可以转发到另一个Fluentd

ELK+filebeat+fluentd

使用filebeat将fluentd收集到的日志转发给ELK

##下载
docker pull fluent/fluentd

##创建目录
mkdir /data

##运行
docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log fluent/fluentd

##修改filebeat.yml配置文件
26   # Paths that should be crawled and fetched. Glob based paths.
 27   paths:
 28     #- /var/lib/docker/containers/*/*.log
 29     #- /var/log/messages
 30     - /data/*.log
 31     #- c:\programdata\elasticsearch\logs\*
 
 ##重启filebeat
 systemctl restart filebeat

##运行容器验证
docker run -d --log-driver=fluentd busybox sh -c 'while true; do echo "this is fluentd log-A";sleep 10; done;'
docker run -d --log-driver=fluentd busybox sh -c 'while true; do echo "this is fluentd log-B";sleep 10; done;'

## --log-driver=fluentd
指定容器的日志驱动为fluend 

##网页查看

在这里插入图片描述

compose的简单使用

docker镜像在创建之后,往往需要自己手动pull来获取镜像,然后执行run命令来运行。当服务需要用到多种容器,容器之间又产生了各种依赖和连接的时候,部署一个服务的手动操作是令人感到十分厌烦的。
docker-compose技术,就是通过一个 .yml 配置文件,将所有的容器的部署方法、文件映射、容器连接等等一系列的配置写在一个配置文件里,最后只需要执行docker-compose up命令就会像执行脚本一样的去一个个安装容器并自动部署他们,极大的便利了复杂服务的部署

官网地址:https://docs.docker.com/compose/install/

安装部署

##下载
curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

##权限
chmod +x /usr/local/bin/docker-compose

##链接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

常用命令

docker-compose --help

#用来创建或重新创建服务使用的镜像
docker-compose build
例如:docker-compose build service_a    #创建一个镜像名叫service_a

#用于通过容器发送SIGKILL信号强行停止服务
docker-compose kill

#显示service的日志信息
docker-compose logs


#暂停和恢复服务
docker-compose pause/unpause
docker-compose pause    #暂停服务
docker-compose unpause  #恢复被暂停的服务

#用于查看服务中的端口与物理机的映射关系
docker-compose port
例如:docker-compose port nginx_web 80  #查看服务中80端口映射到物理机上的那个端口

#用于显示当前项目下的容器
dokcer-compose ps
注意,此命令与docker ps不同作用,此命令会显示停止后的容器(状态为Exited),只针对某个项目。

#用于拉取服务依赖的镜像
docker-compose pull


#用于重启某个服务中的所有容器
docker-compose restart
例如:docker-compose restart service_name  #只有正在运行的服务可以使用重启命令,停止的服务是不可以重启

#删除停止的服务(服务里的容器)
docker-compose rm
-f    #强制删除
-v    #删除与容器相关的卷(volumes)


#用于在服务中运行一个一次性的命令
docker-compose run

这个命令会新建一个容器,它的配置和srvice的配置相同。但两者之间还是有两点不同之处
1、run指定的命令会直接覆盖掉service配置中指定的命令
2、run命令启动的容器不会创建在service配置中指定的端口,如果需要指定使用--service-ports指定


#启动/停止运行某个服务的所有容器
docker-compose start/stop
docker-compose start 启动运行某个服务的所有容器
docker-compose stop 停止运行某个服务的所有容器

#指定某个服务启动的容器个数
docker-compose scale
docker-compose scale --help


备注:
docker-compose 运行时是需要指定service名称,可以同时指定多个,也可以不指定。不指定时默认就是对配置文件中所有的service执行命令。
-f    #用于指定配置文件
-p    #用于指定项目名称

docker-compose配置文件实例

mkdir composetest
mkdir composetest/webserver
mkdir composetest/nginx

vim composetest/docker-compose.yml


version: "3"								#指定语法的版本
services:									#定义服务
  nginx:									#服务的名称
    container_name: web-nginx				#容器的名称
    image: nginx							#镜像
    restart: always
    ports:									#端口,可以指定多个
      - 80:80
    volumes:								#挂载目录
      - ./webserver:/webserver
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

目录结构

cd composetest/


tree
.
├── docker-compose.yml
├── nginx
│   ├── default.conf					##nginx的配置文件,没有的话可以先运行一个nginx容器复制出来
│   └── default.conf\ 
└── webserver
    └── index.html



index.html
cat webserver/index.html 
this is composetest test html from nginx


default.conf
cat nginx/default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /webserver;
        index  index.html index.htm;
    }

运行

docker-compose up -d

docker-compose ps
  Name            Command          State         Ports       
-------------------------------------------------------------
web-nginx   nginx -g daemon off;   Up      0.0.0.0:80->80/tcp

访问验证

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值