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/
官方文档 点我直达
官方镜像 点我直达
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2-amd64
开发模式
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
docker pull docker.elastic.co/logstash/logstash:7.10.0
可以将本地的含有配置文件的整个目录以
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 }
}
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
}
}
配置日志级别和输出名字示例
logger.elasticsearchoutput.name = logstash.outputs.elasticsearch
logger.elasticsearchoutput.level = debug
可以通过日志记录API动态更新日志记录级别。这些设置立即生效,无需重启。
curl -XGET 'localhost:9600/_node/logging?pretty'
curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type: application/json' -d'
{
"logger.logstash.outputs.elasticsearch" : "DEBUG",
"logger.logstash.codecs.rubydebug" : "DEBUG"
}
'
要重置可能已通过日志记录API动态更新的任何日志记录级别,请发送PUT请求 _node/logging/reset。所有日志记录级别都将恢复为log4j2.properties文件中指定的值。
curl -XPUT 'localhost:9600/_node/logging/reset?pretty'
日志文件位置
您可以使用--path.logs
设置指定日志文件位置。
Logstash
的Slowlog
添加了对通过管道时在特定事件上花费了异常时间记录的功能。就像普通的应用程序日志一样,您可以在--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
。
这些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毫秒的事件。
日志包括导致速度缓慢的完整事件和过滤器配置。
docker pull docker.elastic.co/beats/filebeat:7.10.0
容器内的配置文件位置是 /usr/share/filebeat/filebeat.yml
这里放到自己创的目录下实验