OpenShift-日志管理

简介

OpenShift平台的日志聚合和管理是在EFK方案的基础上实现的。EFK主要汇集来自Host和App的运行日志,包括多个容器和已删除的Pods。

EFK Stack是在EFK上修改的版本,由以下部分组成:

  • Elasticsearch:存储所有日志的额对象存储

  • Fluentd:从节点收集日志并推送给ES

  • Kibana:ES的Web UI

  • Curator:从ES删除旧日志

部署EFK Stack

EFK Stack使用Ansible Playbook部署日志管理组件。

origin-logging-elasticsearch服务至少需要有物理内存8G的Node节点

由于网络原因,提前下载images
docker pull docker.io/openshift/origin-logging-fluentd:latest
docker pull openshift/origin-logging-curator:latest
docker pull openshift/origin-logging-kibana:latest
docker pull openshift/origin-logging-elasticsearch:latest
ansible-playbook /root/openshift-ansible/playbooks/byo/openshift-cluster/openshift-logging.yml
./media/image1.png
验证服务正常
./media/image2.png

访问Kibana

通过Route创建的URL进行访问:https://kibana.router.default.svc.cluster.local/

(配置好DNS或者Hosts)

./media/image3.png

日志管理操作

  1. 允许集群成员查看集群日志

默认情况下,只有集群管理员才能访问日志管理,若要允许普通成员访问则需要开启配置

oc project logging
oc edit configmap/logging-elasticsearch
openshift.operations.allow_cluster_reader 配置为true
./media/image4.png
或者在部署前修改playbbok
vim /root/openshift-ansible/roles/openshift_logging/defaults/main.yml
openshift_logging_es_allows_cluster_reader配置true
./media/image5.png
  1. Fluentd

Fluentd使用Systemd Journal作为日志源,默认情况下,Fluentd分别从/ var / log /
messages和
/var/log/containers/\<container>.log中读取系统日志和容器日志。您可以改为使用systemd日志作为日志源。有三个库存参数可用:

参数 概述
openshift_logging_use_journal 缺省值为空,它配置Fluentd以检查Docker正在使用哪个日志驱动程序。如果Docker正在使用–log-driver=journald,Fluentd将从systemd日志中读取数据,否则,它会假定docker正在使用json-file日志驱动程序并从/ var / log文件源读取数据。您可以将openshift_logging_use_journal选项指定 为true或false明确指出要使用哪个日志源。使用systemd日志需要docker-1.10或更高版本,并且必须配置Docker以使用–log-driver=journald。
openshift_logging_journal_read_from_head 如果此设置为false,Fluentd将从日志末尾开始读取,忽略历史日志。如果这个设置是true,Fluentd开始从日志的开头读取日志。
  1. 修改kibana URL
/etc/origin/master/master-config.yaml
… assetConfig: … loggingPublicURL: “https://kibana.example.com"
必须为https
oc scale dc/logging-kibana –replicas=2
  1. Curator配置

Curator允许管理员配置按计划自动执行的预定Elasticsearch维护操作。它计划每天根据其配置执行操作。每个Elasticsearch群集只推荐一个Curator
pod,配置参数

变量名 描述
\$PROJECT_NAME 项目的实际名称,例如myapp-devel。对于OpenShift Origin 操作 日志,请使用该名称.operations作为项目名称。
\$ACTION 目前只delete允许采取行动。
\$UNIT 其中一个days,weeks或months。
\$VALUE 单位数的整数。
.defaults 使用.defaults的\$PROJECT_NAME设置为未指定的项目的默认值。
runhour (数量)以24小时格式运行策展人作业的一天中的小时。用于.defaults。
runminute (数字)运行策展人作业的小时数。用于.defaults。
例如,要将Curator配置为:
  • 删除比myapp-dev项目早的索引1 day

    • 删除myapp-qe项目中早于的索引1 week

      • 删除操作日志比8 weeks

        • 删除30 days旧的所有其他项目索引

        • 每天午夜运行策展人工作

使用: MYAPP-dev的: 删除: 天数:1 MYAPP - 即: 删除: 周:1 .operations: 删除: 周:8 .defaults: 删除: 天数:30 runhour: 0 runminute:0
创建curator配置
编辑提供的ConfigMap
oc edit configmap/logging-curator
代替提供的ConfigMap:
create /path/to/mycuratorconfig.yaml oc create configmap logging-curator -o yaml \ –from-file=config.yaml=/path/to/mycuratorconfig.yaml \ \ oc replace -f -
完成更改后,重新部署
oc rollout latest dc/logging-curator oc rollout latest dc/logging-curator-ops