使用 log-pilot+elasticsearch+kibana 收集docker容器日志

前言

一台机器上运行了多个容器,每个容器都有自己的日志,如果一个个通过 docker logs 去查看很不方便,所以这里我们部署 log-pilot+elasticsearch+kibanna 来对日志进行收集管理,方便查看。

  • log-pilot:用于收集容器的日志;
  • elasticsearch:用于存储所收集的日志;
  • kibana:用于展示收集的日志。

 

部署服务端

分配一台服务器作为专门的日志服务器。

 

安装Docker环境

首先安装docker环境,请参考CentOS 7 安装 Docker-CE 并配置阿里云加速器

开放端口:80, 5601, 9200, 9300

如果是在云上环境,请开放安全组:

 

安装 elasticsearch 容器

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/docker.html

1. 修改内核参数:

vim /etc/sysctl.conf 添加如下:

vm.max_map_count=262144

执行 sysctl -p 生效。

 

2.创建外部挂载目录和配置文件

mkdir -p /data/elasticsearch/{config,data,plugins}
chmod 777 /data/elasticsearch/data/
echo "http.host: 0.0.0.0" >> /data/elasticsearch/config/elasticsearch.yml

 

3. 下载镜像

docker pull elasticsearch:6.8.13

 

4.创建elasticsearch容器并启动

docker run -d --restart=always \
--name elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:6.8.13

 

5.浏览器中输入http://IP:9200,能够成功返回信息则成功。

http://IP:9200/_cat/indices?v 可查看索引。

 

安装 kibana 容器

官方文档:https://www.elastic.co/guide/en/kibana/6.8/docker.html

1. 下载镜像:

docker pull kibana:6.8.13

 

2.创建Kibana容器并启动

docker run -d --restart=always --link b5b99f27589b:elasticsearch -p 5601:5601 kibana:6.8.13

注: b5b99f27589b 为elasticsearch的容器ID,通过 docker ps -a 查看。

 

3.浏览器中输入http://IP:5601/app/kibana,成功访问到页面则Kibana安装成功。

 

部署客户端

在需要收集日志的服务器上运行 log-pilot 容器。

部署 log-pilot 容器

注:ELASTICSEARCH_HOST=192.168.1.251 的IP请替换为你自己的elasticsearch服务器IP。

docker run -d --restart=always \
--name logpilot \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /:/host --privileged \
-e FILEBEAT_OUTPUT=elasticsearch \
-e ELASTICSEARCH_HOST=192.168.1.251 \
-e ELASTICSEARCH_PORT=9200 \
registry.cn-hangzhou.aliyuncs.com/acs/log-pilot:0.9.7-filebeat

 

安装 nginx

kibanna默认访问没有账户控制,只要开放访问所有人都可以访问,不安全,所以我们需要在服务器端安装nginx,主要用于配置访问kibanna时添加账户认证。

安装:

wget https://raw.githubusercontent.com/alexchenx/alex-tools/master/install-nginx.sh
sh install-nginx.sh

 

vi /data/app/nginx/conf/vhost/default.conf

将内容修改如下:

#
server {
        listen 80;
        server_name localhost;

        access_log logs/access.log main;
        error_log  logs/error.log;

        auth_basic "Restricted Access";
        auth_basic_user_file /data/app/nginx/conf/vhost/htpasswd.users;

        location / {
                proxy_pass http://127.0.0.1:5601;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
}

保存退出。

 

添加账户:

yum install -y httpd-tools

添加alex用户:
htpasswd -c /data/app/nginx/conf/vhost/htpasswd.users alex

再添加simon用户:
htpasswd /data/app/nginx/conf/vhost/htpasswd.users simon

 

验证配置并重新加载配置:

/data/app/nginx/sbin/nginx -t
/data/app/nginx/sbin/nginx -s reload

访问 http://IP/ 此时就需要输入账户才能查看了。

 

修改端口:

为了安全,请关闭端口5601对外访问,将9200、9300授权指定的客户端机器访问。

 

Elasticsearch health status显示为yellow解决方法:

https://www.zhangbj.com/p/283.html

 

版权声明:
作者:admin
链接:https://www.chenxie.net/archives/2380.html
来源:蜀小陈
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录