简介
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 |
|---|
日志管理操作
- 允许集群成员查看集群日志
默认情况下,只有集群管理员才能访问日志管理,若要允许普通成员访问则需要开启配置
| 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 |
- 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开始从日志的开头读取日志。 |
- 修改kibana URL
| /etc/origin/master/master-config.yaml |
|---|
| … assetConfig: … loggingPublicURL: “https://kibana.example.com" … |
| 必须为https |
| oc scale dc/logging-kibana –replicas=2 |
- 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 |