从零开始的Docker [ 5 ] --- ELK+Filebeat + kibana 容器化、Docker compose

文章目录

  • 容器技术 Docker 应用
    • 一、ELK 容器化
      • 1.获取镜像
      • 2.启动
    • 二、Logstash 容器化
      • 1.配置文件
      • 2.正常启动
    • 三、logstash 配置
      • 1.Log4j2 文件的方式配置
      • 2.Loging API 的方式配置
        • a. 查看日志配置信息
        • b. 更新日志级别
        • c. 重置日志级别
      • 3.慢日志
        • a.配置
        • b.启用慢日志
    • 四、Filebeat 容器化
      • 1.获取镜像
      • 2.设置配置文件
      • 3.运行容器
        • a.制作日志文件
        • b.使用自定义的配置文件运行容器
    • 五、ELK+Filebeat + kibana 容器化
      • 1.elasticsearch
        • a.创建上下文环境
        • b.创建自定义的网络
        • c.运行容器
        • d.检查 elasticserch 集群状态
      • 2.Logstash
        • a.准备管道配置文件
        • b.Dockerfile
        • c.构建和运行
      • 3.Filebeat
        • a. 准备源数据
        • b. 准备配置文件
        • c. Dockerfile
        • d.构建和运行
      • 4.kibana
        • a. 默认的配置
        • b. 这样运行 kibana 容器
        • c. 检查是否自动发现了我们创建的索引
    • 六、Docker compose
      • 1.安装
        • 1.1 下载
        • 1.2 修改为可执行权限
        • 1.3 验证安装
        • 1.4 子命令补全
      • 2.简单使用
        • 2.1 首先在一个指定的目录中编辑一个 `docker-compose.yml` 文件,
        • 2.2 以后台的方式运行: up -d
        • 2.3 列出 docker-compse 所有容器
        • 2.4 列出当前 docker-compose 管理的所有的服务
      • 3 添加一个新的容器进入已有的 compose 项目中
        • 3.1 编辑 compose 文件,并添加新的容器的声明
        • 3.2 更新 compose 项目

容器技术 Docker 应用

1 端口发布
-p 宿主机的 ip:宿主机的端口:容器端口

-p 宿主机的端口:容器端口

80:80
8000:80

-p 宿主机的 ip::容器端口

2 服务容器化
官方镜像:
- Docker hub
- mysql
- 这个服务本身的官方
- oracel mysql 团队

关注点
- 环境变量
- 默认配置文件路径(绑定)
配置文件尽量使用原始的容器产生,作为宿主机的配置文件
- 默认是数据目录(mysql 的数据)

  • nginx

  • mysql

    • MYSQL_ROOT_PASSWORD
    • /etc/my.cnf
    • /var/lib/mysql
  • php

    • /var/www/html
    • /usr/local/etc/php/

一、ELK 容器化

1.获取镜像

官方文档 点我直达

官方镜像 点我直达

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2-amd64

2.启动

开发模式

docker run -d --name ela -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.2

动态查看日志文件

docker logs -f ela

查看健康状态

curl http://127.0.0.1:9200/_cat/health

1611121277 05:41:17 docker-cluster green 1 1 0 0 0 0 0 0 - 100.0%
[root@Docker1 ~]# docker exec -it ela bash
[root@e34305d08f29 elasticsearch]# pwd
/usr/share/elasticsearch
[root@e34305d08f29 elasticsearch]# cat /usr/share/elasticsearch/config/elasticsearch.yml 
cluster.name: "docker-cluster"
network.host: 0.0.0.0

二、Logstash 容器化

docker pull docker.elastic.co/logstash/logstash:7.10.0

1.配置文件

可以将本地的含有配置文件的整个目录以 bind-mounts 的方式和容器内的目录 /usr/share/logstash/pipeline/ 进行映射。

测试

docker run --rm docker.elastic.co/logstash/logstash:7.10.0


[root@Docker1 ~]# mkdir ela
[root@Docker1 ~]# cd ela/
[root@Docker1 ela]# cat logstash_stdout.conf
input {
   
  beats {
   
    port => 5044             # 监听的端口
    host => "0.0.0.0"      # 监听的本地 ip 地址,这里是全部地址
  }
}
output {
   
  stdout {
    codec => rubydebug }
}

2.正常启动

docker run -itd --rm --name=log --mount type=bind,src=$(pwd)/logstash_stdout.conf,dst=/usrl/share/logstash/pipeline/logstash.conf docker.elastic.co/logstash/logstash:7.10.0

查看状态是否启动成功

docker logs log 
docker ps |grep logstash

查看之前自定义的内容

[root@Docker1 ela]# docker exec -it log bash
bash-4.2$ pwd
/usr/share/logstash
bash-4.2$ ls config/
jvm.options  log4j2.properties  logstash-sample.conf  logstash.yml  pipelines.yml  startup.options
bash-4.2$ vi  pipeline/logstash.conf 
bash-4.2$ cat  pipeline/logstash.conf 
input {
   
  beats {
   
    port => 5044
  }
}

output {
   
  stdout {
   
    codec => rubydebug
  }
}

三、logstash 配置

1.Log4j2 文件的方式配置

配置日志级别和输出名字示例

logger.elasticsearchoutput.name = logstash.outputs.elasticsearch
logger.elasticsearchoutput.level = debug

2.Loging API 的方式配置

可以通过日志记录API动态更新日志记录级别。这些设置立即生效,无需重启。

a. 查看日志配置信息
curl -XGET 'localhost:9600/_node/logging?pretty'
b. 更新日志级别
curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type: application/json' -d'
{
    "logger.logstash.outputs.elasticsearch" : "DEBUG",
    "logger.logstash.codecs.rubydebug" : "DEBUG"
}
'
c. 重置日志级别

要重置可能已通过日志记录API动态更新的任何日志记录级别,请发送PUT请求 _node/logging/reset。所有日志记录级别都将恢复为log4j2.properties文件中指定的值。

curl -XPUT 'localhost:9600/_node/logging/reset?pretty'

日志文件位置
您可以使用--path.logs设置指定日志文件位置。

3.慢日志

a.配置

LogstashSlowlog添加了对通过管道时在特定事件上花费了异常时间记录的功能。就像普通的应用程序日志一样,您可以在--path.logs目录中找到slowlogs

logstash.yml 可以使用以下选项在设置文件中配置Slowlog

slowlog.threshold.warn (default: -1)
slowlog.threshold.info (default: -1)
slowlog.threshold.debug (default: -1)
slowlog.threshold.trace (default: -1)

默认情况下禁用Slowlog。默认阈值设置 -1nanos为表示无限阈值。不会调用slowlog

b.启用慢日志

这些slowlog.threshold字段使用时间值格式,可以实现各种触发间隔。您可以使用以下时间单位指定范围:

nanos(纳秒)
micros(微秒)
ms(毫秒)
s (秒)
m(分钟)
h(小时)
d(天)。

当您提高日志级别时,Slowlog 会变得更加敏感并记录更多事件。

Example:

slowlog.threshold.warn: 2s
slowlog.threshold.info: 1s
slowlog.threshold.debug: 500ms
slowlog.threshold.trace: 100ms

在这个例子中:

如果日志级别设置为warn,则日志显示处理时间超过2秒的事件。
如果日志级别设置为info,则日志显示要处理的时间超过1秒的事件。
如果日志级别设置为trace,则日志显示要处理的时间超过100毫秒的事件。
如果日志级别设置为debug,则日志显示处理时间超过500毫秒的事件。
日志包括导致速度缓慢的完整事件和过滤器配置。

四、Filebeat 容器化

1.获取镜像

docker pull docker.elastic.co/beats/filebeat:7.10.0

2.设置配置文件

容器内的配置文件位置是 /usr/share/filebeat/filebeat.yml

这里放到自己创的目录下实验

 
 

你可能感兴趣的:(从零开始的Docker,docker,linux,docker-compose,elk,容器化)