使用 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
共有 0 条评论