您的位置:首页 > 运维架构 > Docker

ELK实践

2017-11-14 14:24 316 查看
ES启动

docker run --name myes -d -p 9200:9200 -p 9300:9300 elasticsearch


kibana启动

docker run --name mykibana --link myes:es -e ELASTICSEARCH_URL=http://es:9200 -p 5601:5601 -d kibana


logstash启动

启动 配置 filebeats

docker run -it —rm -p 5044:5044 -v "/Users/jiangtao/logstash-conf":/config-dir logstash -f /config-dir/logstash-beats.conf


一定要开5044,不然filebeats连不上

filebeats启动

docker run -d -v /var/run/docker.sock:/tmp/docker.sock  -e LOGSTASH_HOST=192.168.1.115 -e LOGSTASH_PORT=5044 -e SHIPPER_NAME=$(hostname) bargenson/filebeat


参数:

LOGSTASH_HOST=192.168.1.115 logstash的ip地址

LOGSTASH_PORT=5044 logstash 端口

SHIPPER_NAME=$(hostname) 不知道何用这样写死

log-driver 使用

docker run -it --rm --log-driver=syslog --log-opt syslog-address=udp://localhost:25826 --log-opt syslog-facility=daemon myapp


参数:

syslog-facility=daemon 指定日志级别为守护进程

syslog-address=udp://localhost:25826 logstash服务器(tcp|udp)

log-driver=syslog 有多种

es-head 启动

起动时配置跨域:本地目录覆盖(切记把docker里原文件放入)

docker run -d  -p 9200:9200 -p 9300:9300 -v  /Users/jiangtao/config:/usr/share/elasticsearch/config  elasticsearch


修改elasticsearch.yml加入,并起动时拉入

http.cors.enabled: true

http.cors.allow-origin: “*”

起动es-head

docker run -p 9100:9100 mobz/elasticsearch-head:5-alpine


注意

(不推荐直接覆盖container的配置目录)挂入本地目录和配置文件

docker run -d -p 9200:9200 -p 9300:9300 -v /Users/jiangtao:/data -e -Des.config=/data/elasticsearch.yml elasticsearch1


参数:-v /Users/jiangtao:/data 本地目录:docker container 里的目录

参数:-e 加参数必加,否则异常:ERROR: D is not a recognized option

这里面有两个坑:

1.ELASTICSEARCH_URL的ip配置,可以直接写成服务器的docker machine的ip

要么先用link ,再用link的别名–link myes:es -e ELASTICSEARCH_URL=http://es:9200

注意:直接用myes不行

参数:—network。 network有none,host,bridge,”container:name or id” 四种配置(docker network ls查看)

host 可以查看本机所有服务

none 没有ip地址。只能用link

bridge 默认的

container:name or id 是完全复用现成container的网络配置

端口使用注意

-p 80:80 指定映射端口

-P 将容器内的端口随机映射

network 用法

查看

docker network ls

添加

docker network create mynet

使用

docker network connect myapp

docker run –net mynet myapp

查看网络信息

docker inspect mynet

可看当前网络连接了哪些容器

start up with config 写法

docker run -it --rm -v "$PWD/logstash-conf":/config-dir logstash -f /config-dir/logstash-sms.conf


参数说明: -v “$PWD/logstash-conf”:/config-dir 挂目录到docker容器上

注意$PWD参数

logstash收集日志三种方式:filebeats、log-driver、logspout、logz.io

filebeats在小的docker-machine上用,收集整个machine的日志

log-driver 每个容器启动时独立使用 非常灵活

logspout、logz.io 待研究
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息