Docker环境 ELK快速部署

环境 Centos 7.4 , Docker version 17.12

Docker至少3GB内存;

内核配置

echo '
vm.max_map_count = 262144
net.core.somaxconn=65535
'>>/etc/sysctl.conf
sysctl -p

#创建elk

 #下载elk镜像
docker pull sebp/elk #创建volume(推荐)
docker volume create elk-es
docker volume ls #创建elk容器
sudo docker run -dit --name elk \
-p 5601:5601 -p 9200:9200 -p 5044:5044 \
-v elk-es:/var/lib/elasticsearch \
-v /etc/localtime:/etc/localtime \
sebp/elk

保持时区一致-v /etc/localtime:/etc/localtime

内存限制 -e ES_MIN_MEM=1G -e ES_MAX_MEM=3G

查看

docker ps -l
#访问测试
curl localhost:9200
curl localhost:5601
#浏览器访问kabana ip:5601

#logstash 客户端访问配置

 #logstash配置文件目录 /etc/logstash/conf.d/
#关闭logstash的ssl验证(生产环境建议使用自签证书)
docker exec -it elk sed -i 's/ssl/#ssl/' /etc/logstash/conf.d/02-beats-input.conf
#重启ELK容器
docker restart elk

##############################

#客户端使用centos+nginx+filebeat测试

下载centos镜像

docker pull centos

创建Dockerfile文档,自定义镜像,安装filebeat、nginx

echo '
FROM centos MAINTAINER Elven <elven89@qq.com> && \
ENV TZ "Asia/Shanghai" && \
ENV TERM xterm #use aliyun source,and install#
RUN curl -s http://mirrors.aliyun.com/repo/Centos-7.repo>/etc/yum.repos.d/CentOS-Base.repo && \
curl -s http://mirrors.aliyun.com/repo/epel-7.repo>/etc/yum.repos.d/epel.repo && \
sed -i "/aliyuncs.com/d" /etc/yum.repos.d/*.repo && \
yum install -y net-tools tar && \
rm -rf /var/cache/yum/* /tmp/* /var/tmp/* /root/*.cfg #install filebeat
ENV FILEBEAT_VERSION=6.2.3
RUN rpm -Uvh https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-x86_64.rpm && \
systemctl enable filebeat.service
ADD filebeat.yml /etc/filebeat/filebeat.yml #install nginx
RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm && \
yum install nginx -y && \
systemctl enable nginx.service && \
yum clean all EXPOSE 80 ENTRYPOINT ["/usr/sbin/init"]
'>Dockerfile

创建filebeat配置文件

echo '#filebeat#
filebeat.prospectors:
#nginx
- input_type: log
enable: yes
#tags: nginx-access
paths:
- /var/log/nginx/access.log
exclude_lines: ["^$"]
fields:
type: "nginx-access"
fields_under_root: true
#logstash
output.logstash:
hosts: ["elk:5044"]
'>filebeat.yml

创建镜像filebeat-nginx

docker build -t filebeat-nginx .

查看镜像

docker images

创建容器filebeat-nginx

sudo docker run --privileged -dit --name filebeat-nginx \
--link elk -p 82:80 filebeat-nginx

挖坑 centos镜像使用--privileged参数,启动/usr/sbin/init ,才可使用systemctl管理服务

查看

docker ps -l
netstat -lntp |grep 82
docker exec -it filebeat-nginx netstat -lntp
curl localhost:82

浏览器访问ip:82 能访问nginx页面

首次打开,需要添加索引

Management管理-->Index Patterns索引模式-->Create index pattern创建索引模式

填写filebeat-* (索引名)-->Next step-->选择如@timestamp-->Create index pattern ,完成

elk镜像自带nginx日志切割实例文件

/opt/logstash/patterns/nginx

/etc/logstash/conf.d/11-nginx.conf


#调试

 #进入elk容器
docker exec -it elk /bin/bash #安装网络工具net-tools
apt install net-tools -y
#查看启动端口
netstat -lntp #logstash检测配置
/opt/logstash/bin/logstash -t -f /opt/logstash/config/logstash.yml
#终端启动
service logstash stop
/opt/logstash/bin/logstash -f /opt/logstash/config/logstash.yml #进入filebeat-nginx容器
docker exec -it filebeat-nginx /bin/bash #filebeat调试
systemctl stop filebeat
/usr/share/filebeat/bin/filebeat -configtest -c /etc/filebeat/filebeat.yml
/usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml -d "publish"

#汉化kibana (可选)

查看ELK Dockerfile文档得知系统基于ubuntu:16

 #进入elk容器
docker exec -it elk /bin/bash #配置国内源
echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial xenial-updates main universe restricted multiverse'>>/etc/apt/sources.list
echo 'deb-src http://mirrors.aliyun.com/ubuntu/ xenial xenial-updates main restricted multiverse universe'>>/etc/apt/sources.list
apt-get update #安装git
apt install git -y
git --version
#安装python
apt install python -y
python -V #汉化kibana
cd /opt
git clone https://github.com/anbai-inc/Kibana_Hanization.git
cd Kibana_Hanization
python main.py /opt/kibana #重启kibana
service kibana restart #Ctrl+D快捷键退出容器

##############################

使用curl命令操作Elasticsearch索引

 #查询索引
curl 'localhost:9200/_cat/indices?v' #创建索引test-index
curl -XPUT 'localhost:9200/test-index?pretty' #删除索引
curl -XDELETE 'localhost:9200/test-index'

##############################

官方文档

Docker ELK文档

http://elk-docker.readthedocs.io/

Docker Hub官网 ELK

https://hub.docker.com/r/sebp/elk/

github elk

https://github.com/spujadas/elk-docker

https://github.com/spujadas/elk-docker/blob/master/nginx-filebeat/Dockerfile

Docker环境 ELK 快速部署的更多相关文章

  1. •搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机

    本节所讲内容: 实战:搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机 LAMP架构:??? Linux+Apache+Mysql+PHP Linux+Apache+Mysql/MariaDB ...

  2. Docker环境的持续部署优化实践

    最近两周优化了我们持续部署的程序,收效显著,记录下来分享给大家 背景介绍 那年公司快速成长,频繁上线新项目,每上线一个项目,就需要新申请一批机器,初始化,部署依赖的服务环境,一个脚本行天下 那年项目发 ...

  3. HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线

    HyperLedger/Fabric SDK Docker Image 该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container ( ...

  4. .netcore mvc docker环境jenkins一键部署(DevOps)

    [前言] DevOps方面的文章很早之前就想分享了,挤出一点时间把前段时间搭建的一些提高开发效率的东西给大家分享一下吧. 本文介绍了一个.netcore mvc web项目,从项目push到githu ...

  5. Docker环境下eShopOnContainers部署

    从头开始学eShopOnContainers--Visual Studio 2017环境配置 https://www.cnblogs.com/dusthunter/p/9973815.html 一.安 ...

  6. 开发环境中快速部署Oracle Essbase(Rapid deployment of oracle essbase in development envrioments)

    版本:Oracle Enterprise Performance Management System Release11.1.2.4 快速部署自动安装组件: Essbase Oracle Essbas ...

  7. ELK快速部署及使用~

    Elastic Stack 开发人员不能登陆线上服务器查看详细日志 各个系统都有日志,日志数据分散难以查找 日志数据量大,查询速度慢,或者数据不够实时 官网地址:https://www.elastic ...

  8. s2 Docker环境的快速搭建方法

    常规linux下安装 centos7 下配置docker源并安装 cat >/etc/yum.repos.d/docker.repo< [dockerrepo] name=Docker R ...

  9. 制作nodejs项目镜像,实现docker下的快速部署

    前言 前面的文章<centos7+ docker1.12 实践部署docker及配置direct_lvm>中,已经实践了如何在centos7下安装,配置docker, 所以接下来就打算去制 ...

随机推荐

  1. Win10系统Python虚拟环境安装

    1.安装virtualenv 若要使用python虚拟环境进行开发,首先需要安装virtualenv. 命令:pip install virtualenv 2.安装虚拟环境 命令:virtualenv ...

  2. Spark:reduceByKey函数的用法

    reduceByKey函数API: def reduceByKey(partitioner: Partitioner, func: JFunction2[V, V, V]): JavaPairRDD[ ...

  3. Extensions in UWP Community Toolkit - Visual Extensions

    概述 UWP Community Toolkit Extensions 中有一个为可视元素提供的扩展 - VisualExtensions,本篇我们结合代码详细讲解 VisualExtensions ...

  4. 用js来实现那些数据结构07(链表01-链表的实现)

    前面讲解了数组,栈和队列.其实大家回想一下.它们有很多相似的地方.甚至栈和队列这两种数据结构在js中的实现方式也都是基于数组.无论增删的方式.遵循的原则如何,它们都是有序集合的列表.在js中,我们新建 ...

  5. 灰狼呼唤着同胞(brethren)

    先求出确定边的联通块,有cnt块,显然方案数为2^(cnt-1) 联通块用dfs很好求 但此题还有并查集解法,且与一道叫团伙的题很像 边为0为敌人,1为朋友,敌人的敌人是朋友,朋友的朋友是朋友,正好对 ...

  6. 洛谷P3168 [CQOI2015]任务查询系统

    #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #in ...

  7. 【hihoCoder 1419】重复旋律4

    Description 小 Hi 平时的一大兴趣爱好就是演奏钢琴. 我们知道一个音乐旋律被表示为长度为 N的数构成的数列. 小 Hi 在练习过很多曲子以后发现很多作品中的旋律有重复的部分. 我们把一段 ...

  8. poj 1755 半平面交+不等式

    Triathlon Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6461   Accepted: 1643 Descrip ...

  9. bzoj2007 NOI2010 网络流转对偶图

    2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2775  Solved: 1331[Submit][Status] ...

  10. Python使用wmi获取Windows相关信息

    在使用Python获取Windows系统上的相关的信息可以使用WMI接口来获取, 什么是wmi? WMI是一项核心的Windows管理技术,WMI作为一种规范和基础结构,通过它可以访问.配置.管理和监 ...