Tag - docker

docker consul registrator consul-template HA    2017-07-19 20:54:24    11

compose文件:

version: '2'
services:
    consul-server:
        image: gliderlabs/consul-server:0.6
        command: -bootstrap -advertise 192.168.10.138
        hostname: consul-server
        ports:
            - "8400:8400"
            - "8500:8500"
            - "8600:53/udp"

    registrator:
        image: gliderlabs/registrator:latest
        command: consul://consul-server:8500
        hostname: registrator
        depends_on:
            - consul-server
        volumes:
            - /var/run/docker.sock:/tmp/docker.sock
    app:
      image: tutum/hello-world:latest
      environment:
        # Environment variables used by registrator to register services in consul
        SERVICE_NAME: app
        SERVICE_TAGS: sample
      ports:
        - "8081:80"
      depends_on:
        - consul-template-nginx
# Nginx Load Balancer
    consul-template-nginx:
      image: 1science/nginx:1.9.6-consul
      ports:
        - 80:80
      volumes:
        - ./etc/consul-template:/etc/consul-tem
elasticsearch docker    2017-07-19 20:34:47    11

1、下载镜像:
docker pull index.docker.io/library/elasticsearch:2.3.3

2、修改配置文件:
分别创建目录:
/usr/share/elasticsearch/config
/usr/share/elasticsearch/data
config目录中创建文件:elasticsearch.yml ,内容如下:
-------------------------------------------------- elasticsearch.yml内容 -------------------------------------------------
network.host: 192.168.10.136
-------------------------------------------------- elasticsearch.yml内容 -------------------------------------------------
config目录中创建文件:logging.yml,内容入下
-------------------------------------------------- logging.yml内容 ------------------------------------------------------
# you can override this using by setting a system property, for example -Des.logger.level=DEBUG
es.logger.level: INFO
rootLogger: ${es.logger.level}, console
logger:
# log action execution errors for easier debugging
action: DEBUG
# reduce the logging for aws, too much is logged under the default INFO
com.amazonaws: WARN

appender:
console:
type: console
layout:
type: consolePattern
conversionPattern: "[%d{ISO8601}][%
elasticsearch docker Dockerfile    2017-07-19 20:25:33    10
官方给出的elasticsearch镜像需要做不少的修改,并且个人感觉镜像有点太大,所以萌生了自己做镜像的想法
此Docker镜像基于alpine的jre8镜像(使用alpine的原因就是没有太多不必要的组件和命令,docker内部也不需要太多组件)

所需文件目录及介绍:
# 文件目录介绍
* elasticsearch 目录为build docker镜像必要文件,主要替换elasticsearch启动文件(bin目录,主要是修改以root用户启动,参考文章:http://blog.csdn.net/gsying1474/article/details/51939294)和添加中文分词插件IK(plugins目录,主要添加了中文分词插件,参考文章:http://blog.csdn.net/gsying1474/article/details/51909027

Dockerfile文件代码:
 
FROM anapsix/alpine-java:jre8
MAINTAINER firewarm LightingLiu <liuyg@liuyingguang.cn>
ENV ES_PKG_NAME elasticsearch-2.3.3
ADD $ES_PKG_NAME.tar.gz /usr/share/
ADD elasticsearch/ /usr/share/$ES_PKG_NAME/
RUN cd /usr/share/ && \
mv $ES_PKG_NAME elasticsearch && \
chmod +x /usr/share/elasticsearch/bin/*
ENV PATH /usr/share/elasticsearch/bin:$PATH
# Define default command.
CMD ["elasticsearch"]
EXPOSE 9200
EXPOSE 9300

# 此处的Dockerfile解决了如下问题:
1. Docker内部以root启动
2. elasticsearch中文分词插件IK

# build命令
docker build -t firewarm/elasticsearch:2.3.3.1 .

# 镜像使用方式
docker run -v /home/elasticsearch/config:/usr/share/elast
CentOS7 EFK docker elasticsearch fluent kibana 日志    2017-07-19 20:11:59    22

Fluentd并非是专用于日志文件收集的,而是一个通用的信息收集、整理、转发的流式数据处理工具,日志收集只是它十分典型的一个运用场景。重要的是,Fluentd的日志收集功能对容器支持十分完备,远远胜于Logstash等传统日志收集工具。一方面得益于Fluentd社区开发了几种专用于Docker日志文件的收集插件,这些插件能够在Fluentd收集完Docker日志以后自动为它加上容器相关的信息,比较推荐其中的fluent-plugin-docker-metadata-filter这一款插件,它提供的信息颇为齐全。Logstash对于这方面依然比较空缺,GitHub上唯一能够找到的一款社区插件也已经在一年前就停止开发。另一方面,当前Docker官方支持的日志驱动除了默认的使用本地目录,还可以直接发送到远程的日志存储或日志采集服务,而其中日志采集服务目前仅仅支持Splunk和Fluentd,同样没有Logstash等老一辈开源日志工具的踪影。

安装elasticsearch

安装JDK或者openJDK(这里以openJDK为例)

  1. [root@elk elk]# yum install java-1.8.0-openjdk -y

安装elasticsearch

  1. [root@elk elk]# wget -c https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.3/elasticsearch-2.3.3.rpm
  2. [root@elk elk]# yum localinstall elasticsearch-2.3.3.rpm -y
  3. .....
  4. Installing : elasticsearch-2.3.3-1.noarch 1/1
  5. ### NOT starting on installation,
docker java logback EFK    2017-07-19 19:53:38    13

继续上篇文章java logback 向 EFK 写入日志
此篇文章主要讲述在docker环境下EFK与logback的整合,主要解决java项目在docker环境下,向EFK输出日志的问题:
1. 上篇文章中的方法虽然可以向EFK写入日志,但是在集群环境中,无法区分容器,除非自己在日志的msg中写入相关信息,然而往往会被分词器分开,这点比较麻烦
2. 虽然上篇文章中的logback-more-appenders可以使用DataFluentAppender方式来向elasticsearch添加额外的fields,但是这里也同时存在一个问题,就是msg中的部分信息,会被拆分成多个field,导致msg信息不再完整,以及从kibana上面查看日志非常不便

下面来一起看看我是如何解决的(部分内容跟上篇文章同)

打包日志插件(此处有不同)

源码地址:fluentd-logback-appender(此插件是我基于logback-more-appenders源码进行的改进,使得在使用FluentLogbackAppender类的时候,也可以添加额外的fields)

关于此插件的打包,这里不多做说明,相应jar包可以在刘迎光的nexus中找到,搜索“fluentd-logback-appender”即可

项目引用

pom.xml文件添加依赖

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.firewarm</g
2/3