集群curl扩展

curl扩展  时间:2021-04-11  阅读:()
OpenShiftContainerPlatform4.
2日志记录在OpenShiftContainerPlatform4.
2中配置集群日志记录LastUpdated:2020-08-21OpenShiftContainerPlatform4.
2日志记录在OpenShiftContainerPlatform4.
2中配置集群日志记录法律通告法律通告Copyright2020RedHat,Inc.
ThetextofandillustrationsinthisdocumentarelicensedbyRedHatunderaCreativeCommonsAttribution–ShareAlike3.
0Unportedlicense("CC-BY-SA").
AnexplanationofCC-BY-SAisavailableathttp://creativecommons.
org/licenses/by-sa/3.
0/.
InaccordancewithCC-BY-SA,ifyoudistributethisdocumentoranadaptationofit,youmustprovidetheURLfortheoriginalversion.
RedHat,asthelicensorofthisdocument,waivestherighttoenforce,andagreesnottoassert,Section4dofCC-BY-SAtothefullestextentpermittedbyapplicablelaw.
RedHat,RedHatEnterpriseLinux,theShadowmanlogo,theRedHatlogo,JBoss,OpenShift,Fedora,theInfinitylogo,andRHCEaretrademarksofRedHat,Inc.
,registeredintheUnitedStatesandothercountries.
LinuxistheregisteredtrademarkofLinusTorvaldsintheUnitedStatesandothercountries.
JavaisaregisteredtrademarkofOracleand/oritsaffiliates.
XFSisatrademarkofSiliconGraphicsInternationalCorp.
oritssubsidiariesintheUnitedStatesand/orothercountries.
MySQLisaregisteredtrademarkofMySQLABintheUnitedStates,theEuropeanUnionandothercountries.
Node.
jsisanofficialtrademarkofJoyent.
RedHatisnotformallyrelatedtoorendorsedbytheofficialJoyentNode.
jsopensourceorcommercialproject.
TheOpenStackWordMarkandOpenStacklogoareeitherregisteredtrademarks/servicemarksortrademarks/servicemarksoftheOpenStackFoundation,intheUnitedStatesandothercountriesandareusedwiththeOpenStackFoundation'spermission.
Wearenotaffiliatedwith,endorsedorsponsoredbytheOpenStackFoundation,ortheOpenStackcommunity.
Allothertrademarksarethepropertyoftheirrespectiveowners.
摘要摘要本文提供有关安装、配置和使用集群日志记录的说明,该功能可汇总多个OpenShiftContainerPlatform服务的日志.
目目录录第第1章章关于集群日志关于集群日志记录记录和和OPENSHIFTCONTAINERPLATFORM1.
1.
关于集群日志记录第第2章章关于部署集群日志关于部署集群日志记录记录2.
1.
关于部署和配置集群日志记录2.
2.
集群日志记录和OPENSHIFTCONTAINERPLATFORM的存储注意事项2.
3.
其他资源第第3章章部署集群日志部署集群日志记录记录3.
1.
使用CLI安装ELASTICSEARCHOPERATOR3.
2.
使用WEB控制台安装CLUSTERLOGGINGOPERATOR.
3.
3.
使用CLI安装CLUSTERLOGGINGOPERATOR3.
4.
其他资源第第4章章升升级级集群日志集群日志记录记录4.
1.
更新集群日志记录第第5章章使用事件路由器使用事件路由器5.
1.
部署和配置事件路由器第第6章章查查看集群日志看集群日志6.
1.
查看集群日志6.
2.
在OPENSHIFTCONTAINERPLATFORMWEB控制台中查看集群日志第第7章章使用使用KIBANA查查看集群日志看集群日志7.
1.
启动KIBANA第第8章章配置集群日志配置集群日志记录记录部署部署8.
1.
关于配置集群日志记录8.
2.
更改集群日志记录管理状态8.
3.
配置集群日志记录8.
4.
配置ELASTICSEARCH以存储和整理日志数据8.
5.
配置KIBANA8.
6.
ELASTICSEARCH数据策展8.
7.
配置日志记录收集器8.
8.
使用容忍度来控制集群日志记录POD放置8.
9.
将OPENSHIFTCONTAINERPLATFORM日志发送到外部设备8.
10.
配置SYSTEMD-JOURNALD和FLUENTD第第9章章查查看看ELASTICSEARCH状状态态9.
1.
查看ELASTICSEARCH状态9.
2.
查看ELASTICSEARCH组件状态第第10章章查查看集群日志看集群日志记录记录状状态态10.
1.
查看CLUSTERLOGGINGOPERATOR的状态10.
2.
查看集群日志记录组件的状态第第11章章使用使用节节点点选择选择器移器移动动集群日志集群日志记录资记录资源源11.
1.
移动集群日志记录资源第第12章章手手动滚动动滚动部署部署ELASTICSEARCH12.
1.
执行ELASTICSEARCH集群滚动重启第第13章章KIBANA故障排除故障排除13.
1.
KUBERNETES登录循环故障排除448811111212151923242429293333333535363639414350546065707679798286869092929696100100目目录录113.
2.
排查查看KIBANA控制台时的KUBERNETES密码错误13.
3.
排查查看KIBANA控制台时的KUBERNETES503错误第第14章章导导出字段出字段14.
1.
默认导出的字段14.
2.
SYSTEMD导出字段14.
3.
KUBERNETES导出字段14.
4.
容器导出字段14.
5.
OVIRT导出字段14.
6.
AUSHAPE导出字段14.
7.
TLOG导出字段第第15章章卸卸载载集群日志集群日志记录记录15.
1.
从OPENSHIFTCONTAINERPLATFORM卸载集群日志记录100100102102117119120121122122124124OpenShiftContainerPlatform4.
2日志日志记录记录2目目录录3第1章关于集群日志记录和OPENSHIFTCONTAINERPLATFORM作为集群管理员,您可以部署集群日志记录来聚合OpenShiftContainerPlatform集群中的所有日志,如节点系统日志、应用程序容器日志等.
1.
1.
关于集群日志记录OpenShiftContainerPlatform集群管理员可以使用一些CLI命令和OpenShiftContainerPlatformWeb控制台安装ElasticsearchOperator和ClusterLoggingOperator,以此部署集群日志记录.
安装Operator后,可创建集群日志记录自定义资源(CR)以调度集群日志记录pod和支持集群日志记录所需的其他资源.
Operator负责部署、升级和维护集群日志记录.
您可以通过修改集群日志记录自定义资源(CR)(名为instance)来配置集群日志记录.
CR定义包括日志记录堆栈的所有组件在内的完整集群日志记录部署,以收集、存储和视觉化日志.
ClusterLoggingOperator监控ClusterLogging自定义资源并相应地调整日志记录部署.
管理员和应用程序开发人员可以查看他们具有查看访问权限的项目的日志.
1.
1.
1.
关于集群日志记录组件集群日志记录组件基于Elasticsearch、Fluentd或Rsyslog以及Kibana(EFK).
收集器Fluentd部署到OpenShiftContainerPlatform集群中的每个节点.
它收集所有节点和容器日志,并将它们写入Elasticsearch(ES).
Kibana是一个集中式WebUI,用户和管理员可以在其中使用汇总的数据创建丰富的视觉化和仪表板.
目前有5种不同类型的集群日志记录组件:logStore(存储)-存储日志的位置.
当前的实现是Elasticsearch.
collection(收集)-此组件从节点收集日志,将日志格式化并存储到logStore中.
当前的实现是Fluentd.
visualization(可视化)-此UI组件用于查看日志、图形和图表等.
当前的实现是Kibana.
curation(策展)-此组件按日志时间进行筛检.
当前的实现是Curator.
eventrouting-用来把OpenShiftContainerPlatform的事件转发到集群日志记录的组件.
当前的实现是EventRouter.
除非特别说明,在本文中我们可能会互换使用日志存储或Elasticsearch、视觉化或Kibana、策展或Curator、收集或Fluentd.
1.
1.
2.
关于日志存储OpenShiftContainerPlatform使用Elasticsearch(ES)将日志数据从Fluentd整理到数据存储或索引中.
Elasticsearch将各个索引进一步划分成多个碎片(称为分片),分散到Elasticsearch集群中的一组Elasticsearch节点上.
您可以配置Elasticsearch来为分片制作拷贝(称为副本).
Elasticsearch也将这些副本分散到多个Elasticsearch节点上.
借助ClusterLogging自定义资源,您可以在自定义资源定义(CRD)中指定复制策略,以提供数据冗余和故障恢复能力.
注意注意OpenShiftContainerPlatform4.
2日志日志记录记录4注意注意索引模板的主分片数量等于Elasticsearch数据节点的数目.
ClusterLoggingOperator和相应的ElasticsearchOperator确保每个Elasticsearch节点都使用带有自身存储卷的唯一Deployment来进行部署.
您可以使用集群日志记录自定义资源(CR)来增加Elasticsearch节点的数量.
如需有关选择存储和网络位置的注意事项,请参考Elastic文档,如下所示.
注意注意高可用性Elasticsearch环境需要至少三个Elasticsearch节点,各自在不同的主机上.
Elasticsearch索引中应用的基于角色的访问控制(RBAC)可让开发人员控制对日志的访问.
使用project.
{project_name}.
{project_uuid}.
*格式对索引进行访问将会根据特定项目中的用户权限进行限制.
如需更多信息,请参阅Elasticsearch(ES).
1.
1.
3.
关于日志记录收集器OpenShiftContainerPlatform使用Fluentd来收集集群的相关数据.
日志记录收集器部署为OpenShiftContainerPlatform中的DaemonSet,将各个Pod部署到每个OpenShiftContainerPlatform节点中.
journald是系统日志源,提供来自操作系统、容器运行时和OpenShiftContainerPlatform的日志消息.
容器运行时提供少许信息来标识日志消息的来源,如项目、容器名称和容器ID.
这不足以唯一地标识日志来源.
如果在日志收集器开始处理日志之前删除了具有指定名称和项目的Pod,则来自API服务器的信息(如标签和注解)可能会不可用.
可能没有办法区分来自名称相似的Pod和项目的日志消息,也无法追溯日志的来源.
这种局限性意味着日志收集和规范化仅属于尽力而尽力而为为.
重要重要可用的容器运行时提供少许信息来标识日志消息来源,无法确保唯一的个别日志消息,也不能保证可以追溯这些消息的来源.
如需更多信息,请参阅Fluentd.
1.
1.
4.
关于日志记录视觉化OpenShiftContainerPlatform使用Kibana显示由Fluentd收集并由Elasticsearch索引的日志数据.
Kibana是基于浏览器的控制台界面,可通过直方图、折线图、饼图、热图、内置地理空间支持和其他视觉化方式,来查询、探索和视觉化您的Elasticsearch数据.
如需更多信息,请参阅Kibana.
1.
1.
5.
关于日志记录策展ElasticsearchCurator工具在全局范围和/或以项目为基础执行调度的维护操作.
Curator根据其配置执行操作.
建议每个Elasticsearch集群仅使用一个CuratorPod.
spec:curation:第第1章章关于集群日志关于集群日志记录记录和和OPENSHIFTCONTAINERPLATFORM51以cron格式指定Curator计划.
如需更多信息,请参阅Curator.
1.
1.
6.
关于事件路由EventRouter是一个pod,它将OpenShiftContainerPlatform事件转发到集群日志记录系统.
您必须手动部署EventRouter.
EventRouter收集事件并将其转换为JSON格式,并将其输出到STDOUT.
Fluentd将事件编制成.
operations索引.
1.
1.
7.
集群日志记录自定义资源(CR)要更改集群日志记录部署,请创建并修改集群日志记录自定义资源(CR).
本文根据需要提供了有关创建或修改CR的说明.
以下是集群日志记录的典型自定义资源的示例.
集群日志集群日志记录记录CR示例示例type:"curator"resources:curator:schedule:"303***"1apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance"namespace:openshift-loggingspec:managementState:"Managed"logStore:type:"elasticsearch"elasticsearch:nodeCount:2resources:limits:memory:2Girequests:cpu:200mmemory:2Gistorage:storageClassName:"gp2"size:"200G"redundancyPolicy:"SingleRedundancy"visualization:type:"kibana"kibana:resources:limits:memory:1Girequests:OpenShiftContainerPlatform4.
2日志日志记录记录6cpu:500mmemory:1Giproxy:resources:limits:memory:100Mirequests:cpu:100mmemory:100Mireplicas:2curation:type:"curator"curator:resources:limits:memory:200Mirequests:cpu:200mmemory:200Mischedule:"*/10****"collection:logs:type:"fluentd"fluentd:resources:limits:memory:1Girequests:cpu:200mmemory:1Gi第第1章章关于集群日志关于集群日志记录记录和和OPENSHIFTCONTAINERPLATFORM7第2章关于部署集群日志记录在将集群日志记录安装到OpenShiftContainerPlatform集群前,请先查阅以下小节.
2.
1.
关于部署和配置集群日志记录OpenShiftContainerPlatform集群日志记录已设计为可搭配默认配置使用,该配置针对中小型OpenShiftContainerPlatform集群进行了调优.
以下安装说明包括一个示例集群日志记录自定义资源(CR),您可以用它来创建集群日志记录实例并配置集群日志记录部署.
如果要使用默认集群日志记录安装,可直接使用示例CR.
如果要自定义部署,请根据需要对示例CR进行更改.
下文介绍了在安装集群日志记录实例或安装后修改时可以进行的配置.
请参阅"配置"部分来了解有关使用各个组件的更多信息,包括可以在集群日志记录自定义资源之外进行的修改.
2.
1.
1.
配置和调优集群日志记录您可以通过修改openshift-logging项目中部署的集群日志记录自定义资源来配置集群日志记录环境.
您可以在安装时或安装后修改以下任何组件:内存和内存和CPU您可以使用有效的内存和CPU值修改resources块,以此调整各个组件的CPU和内存限值:spec:logStore:elasticsearch:resources:limits:cpu:memory:requests:cpu:1memory:16Gitype:"elasticsearch"collection:logs:fluentd:resources:limits:cpu:memory:requests:cpu:memory:type:"fluentd"visualization:kibana:resources:limits:cpu:memory:OpenShiftContainerPlatform4.
2日志日志记录记录8requests:cpu:memory:type:kibanacuration:curator:resources:limits:memory:200Mirequests:cpu:200mmemory:200Mitype:"curator"Elasticsearch存存储储您可以使用storageClassname和size参数,为Elasticsearch集群配置持久性存储类和大小.
ClusterLoggingOperator基于这些参数为Elasticsearch集群中的每个数据节点创建PersistentVolumeClaim.
spec:logStore:type:"elasticsearch"elasticsearch:nodeCount:3storage:storageClassName:"gp2"size:"200G"本例中指定,集群中的每个数据节点将绑定到请求200G的gp2存储的PersistentVolumeClaim.
每个主分片将由单个副本支持.
注意注意省略storage块会导致部署中仅包含临时存储.
spec:logStore:type:"elasticsearch"elasticsearch:nodeCount:3storage:{}Elasticsearch复制策略复制策略您可以通过设置策略来定义如何在集群中的数据节点之间复制Elasticsearch分片:FullRedundancy.
各个索引的分片完整复制到每个数据节点上.
MultipleRedundancy.
各个索引的分片分布到一半数据节点上.
SingleRedundancy.
各个分片具有单个副本.
只要存在至少两个数据节点,日志就能始终可用且可恢复.
ZeroRedundancy.
所有分片均无副本.
如果节点关闭或发生故障,则可能无法获得日志数据.
第第2章章关于部署集群日志关于部署集群日志记录记录9Curator调调度度以cron格式指定Curator的调度.
spec:curation:type:"curator"resources:curator:schedule:"303***"2.
1.
2.
修改后集群日志记录自定义资源示例以下是使用前述选项修改的集群日志记录自定义资源的示例.
修改后集群日志修改后集群日志记录记录自定自定义资义资源示例源示例apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance"namespace:"openshift-logging"spec:managementState:"Managed"logStore:type:"elasticsearch"elasticsearch:nodeCount:2resources:limits:memory:2Girequests:cpu:200mmemory:2Gistorage:{}redundancyPolicy:"SingleRedundancy"visualization:type:"kibana"kibana:resources:limits:memory:1Girequests:cpu:500mmemory:1Gireplicas:1curation:type:"curator"curator:resources:limits:memory:200Mirequests:cpu:200mmemory:200MiOpenShiftContainerPlatform4.
2日志日志记录记录10schedule:"*/5****"collection:logs:type:"fluentd"fluentd:resources:limits:memory:1Girequests:cpu:200mmemory:1Gi2.
2.
集群日志记录和OPENSHIFTCONTAINERPLATFORM的存储注意事项每个Elasticsearch部署都需要一个持久性卷,以便每个数据节点均有一个数据卷.
在OpenShiftContainerPlatform中,这可以使用PVC来实现.
ElasticsearchOperator使用Elasticsearch资源名称来命名PVC.
如需更多详细信息,请参阅"Elasticsearch持久性存储".
Fluentd将systemdjournal和/var/log/containers/的所有日志都传输到Elasticsearch.
因此,请提前考虑需要的数据量,并且注意要聚合应用程序的日志数据.
一些Elasticsearch用户发现,有必要使绝对存储消耗始终保持在50%左右并处于70%以下.
这有助于避免Elasticsearch在进行大型数据合并操作期间变得无响应.
默认情况下,达到85%时Elasticsearch会停止向节点分配新数据,达到90%时Elasticsearch会尝试将现有分片从节点重新定位到其他节点(若有可能).
但是,如果存储消耗低于85%时无节点有可用存储空间,Elasticsearch会拒绝创建新索引并且变为RED.
注意注意这些高、低水位线值是当前版本中的Elasticsearch默认值.
您可以修改这些值,但需要同时将修改应用到警报.
警报基于这些默认值.
2.
3.
其他资源如需有关安装Operator的更多信息,请参阅从OperatorHub安装Operator.
第第2章章关于部署集群日志关于部署集群日志记录记录1112第3章部署集群日志记录您可以通过部署Elasticsearch和ClusterLoggingOperator来安装集群日志记录.
ElasticsearchOperator负责创建并管理由集群日志记录使用的Elasticsearch集群.
ClusterLoggingOperator负责创建并管理日志记录堆栈的组件.
将集群日志记录部署到OpenShiftContainerPlatform的过程涉及以下任务:查阅关于部署集群日志记录中的安装选项.
查阅集群日志记录存储注意事项.
安装ElasticsearchOperator和ClusterLoggingOperator.
3.
1.
使用CLI安装ELASTICSEARCHOPERATOR您必必须须按照以下说明来使用CLI安装ElasticsearchOperator.
先决条件先决条件确保具有Elasticsearch所需的持久性存储.
注意每个Elasticsearch节点都需要自己的存储卷.
Elasticsearch是内存密集型应用程序.
每个Elasticsearch节点都需要16G内存来满足内存请求和限值.
最初的OpenShiftContainerPlatform节点组可能不足以支持Elasticsearch集群.
您必须在OpenShiftContainerPlatform集群中添加额外的节点,才能使用建议或更高的内存来运行.
每个Elasticsearch节点都可以在较低的内存设置下运行,但在生产部署中不建议这样做.
流程流程使用CLI安装ElasticsearchOperator:1.
为ElasticsearchOperator创建一个命名空间.
a.
为ElasticsearchOperator创建一个命名空间对象YAML文件(例如eo-namespace.
yaml):您必须指定openshift-operators-redhat命名空间.
为了防止可能与指标(metrics)冲突,您应该将PrometheusClusterMonitoring堆栈配置为从openshift-operators-redhat命名空间中提取指标数据,而不是从openshift-operators命名空间中提取.
openshift-operators命名空间可能会包含社区提供的operator.
这些operator不被信任,其发布的metric可能与OpenShiftContainerPlatformmetric的名称相同,从而导致冲突.
您必须按照所示指定该标签,以确保集群监控提取openshift-operators-redhat命名空间.
apiVersion:v1kind:Namespacemetadata:name:openshift-operators-redhat1annotations:openshift.
io/node-selector:""labels:openshift.
io/cluster-monitoring:"true"2OpenShiftContainerPlatform4.
2日志日志记录记录121123b.
创建命名空间:$occreate-f.
yaml例如:$occreate-feo-namespace.
yaml2.
通过创建以下对象来安装ElasticsearchOperator:a.
为ElasticsearchOperator创建OperatorGroup对象YAML文件(例如eo-og.
yaml):您必须指定openshift-operators-redhat命名空间.
b.
创建OperatorGroup对象:$occreate-f.
yaml例如:$occreate-feo-og.
yamlc.
创建Subscription对象YAML文件(例如eo-sub.
yaml)来订阅Operator的命名空间.
订阅订阅示例示例您必须指定openshift-operators-redhat命名空间.
指定4.
2作为频道.
指定redhat-operators.
如果OpenShiftContainerPlatform集群安装在受限网络中(也称为断开连接的集群),请指定配置OperatorLifecycleManager(OLM)时创建的CatalogSource对象的名称.
apiVersion:operators.
coreos.
com/v1kind:OperatorGroupmetadata:name:openshift-operators-redhatnamespace:openshift-operators-redhat1spec:{}apiVersion:operators.
coreos.
com/v1alpha1kind:Subscriptionmetadata:name:"elasticsearch-operator"namespace:"openshift-operators-redhat"1spec:channel:"4.
2"2installPlanApproval:"Automatic"source:"redhat-operators"3sourceNamespace:"openshift-marketplace"name:"elasticsearch-operator"第第3章章部署集群日志部署集群日志记录记录13d.
创建订阅对象:$occreate-f.
yaml例如:$occreate-feo-sub.
yamle.
更改到openshift-operators-redhat项目:$ocprojectopenshift-operators-redhatNowusingproject"openshift-operators-redhat"f.
创建基于角色的访问控制(RBAC)对象文件(例如eo-rbac.
yaml),向Prometheus授予openshift-operators-redhat命名空间的访问权限:g.
创建RBAC对象:$occreate-f.
yaml例如:apiVersion:rbac.
authorization.
k8s.
io/v1kind:Rolemetadata:name:prometheus-k8snamespace:openshift-operators-redhatrules:-apiGroups:-""resources:-services-endpoints-podsverbs:-get-list-watch---apiVersion:rbac.
authorization.
k8s.
io/v1kind:RoleBindingmetadata:name:prometheus-k8snamespace:openshift-operators-redhatroleRef:apiGroup:rbac.
authorization.
k8s.
iokind:Rolename:prometheus-k8ssubjects:-kind:ServiceAccountname:prometheus-k8snamespace:openshift-operators-redhatOpenShiftContainerPlatform4.
2日志日志记录记录14$occreate-feo-rbac.
yamlElasticsearchOperator已安装到openshift-operators-redhat命名空间,并且复制到集群中的每个项目.
3.
验证Operator安装:ocgetcsv--all-namespacesNAMESPACENAMEDISPLAYVERSIONREPLACESPHASEdefaultelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeededkube-node-leaseelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeededkube-publicelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeededkube-systemelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeededopenshift-apiserver-operatorelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeededopenshift-apiserverelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeededopenshift-authentication-operatorelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeededopenshift-authenticationelasticsearch-operator.
4.
2.
1-202002032140ElasticsearchOperator4.
2.
1-202002032140Succeeded.
.
.
每个命名空间中都应该有一个ElasticsearchOperator.
版本号可能与所示不同.
后后续续步步骤骤使用控制台或CLI安装ClusterLoggingOperator.
3.
2.
使用WEB控制台安装CLUSTERLOGGINGOPERATOR.
使用OpenShiftContainerPlatformweb控制台安装ClusterLoggingOperator.
注意注意您不能通过web控制台或使用ocnew-project命令创建名称以openshift-开始的项目.
您必须使用一个YAML对象文件创建一个命名空间(Namespace),并运行occreate-f.
yaml命令,如下所示.
流程流程使用OpenShiftContainerPlatformweb控制台安装ClusterLoggingOperator:1.
为ClusterLoggingOperator创建一个命名空间.
您必须使用CLI创建命名空间.
a.
为ClusterLoggingOperator创建一个命名空间对象YAML文件(例如,clo-namespace.
yaml):apiVersion:v1第第3章章部署集群日志部署集群日志记录记录1512如下所示指定这些值.
b.
创建命名空间:$occreate-f.
yaml例如:$occreate-fclo-namespace.
yaml2.
安装ClusterLoggingOperator:a.
在OpenShiftContainerPlatformWeb控制台中,点击Operators→OperatorHub.
b.
从可用Operator列表中选择ClusterLogging,再点击Install.
c.
在CreateOperatorSubscription页面中,在Aspecificnamespaceonthecluster下选择openshift-logging.
然后,点击Subscribe.
3.
验证ClusterLoggingOperator已被安装.
a.
切换到Operators→InstalledOperators页面.
b.
确保openshift-logging项目中列出的ClusterLogging的Status为InstallSucceeded.
注意注意在安装过程中,Operator可能会显示Failed状态.
如果Operator随后被安装并显示InstallSucceeded信息,则可以忽略Failed信息.
如果Operator没有被成功安装,请按照以下步骤进行故障排除:切换到Operators→InstalledOperators页面,并检查Status列中是否有任何错误或故障.
切换到Workloads→Pods页面,并检查openshift-logging和openshift-operators-redhat项目中报告问题的Pod的日志.
4.
创建集群日志记录实例:a.
切换到Administration→CustomResourceDefinitions页面.
b.
在CustomResourceDefinitions页面上,点ClusterLogging.
c.
在CustomResourceDefinitionOverview页面上,从Actions菜单中选择ViewInstances.
kind:Namespacemetadata:name:openshift-logging1annotations:openshift.
io/node-selector:""2labels:openshift.
io/cluster-logging:"true"openshift.
io/cluster-monitoring:"true"OpenShiftContainerPlatform4.
2日志日志记录记录16123456d.
在ClusterLoggings页面上,点击CreateClusterLogging.
您可能需要刷新页面来加载数据.
e.
将YAML项中的代码替换为以下内容:注意注意此默认集群日志记录配置应该可以支持不同的环境.
请参考有关调优和配置集群日志记录组件的主题,以了解有关可对集群日志记录集群进行修改的信息.
名称必须是instance.
集群日志记录管理状态.
在大多数情况下,如果更改了集群日志记录的默认值,则必须将其设置为Unmanaged.
但是,非受管部署不接收更新,直到集群日志记录重新变为受管状态为止.
如需更多信息,请参阅更改集群日志更改集群日志记录记录管理状管理状态态.
用于配置Elasticsearch的设置.
通过使用CR,您可以配置分片复制策略和持久性存储.
如需更多信息,请参阅配置配置Elasticsearch.
指定Elasticsearch节点的数量.
请参阅此列表后面的备注.
指定集群中的每个Elasticsearch节点都绑定到持久性卷声明.
用于配置Kibana的设置.
通过使用CR,您可以扩展Kibana来实现冗余性,并为Kibana节点配置CPU和内存.
如需更多信息,请参阅配置配置Kibana.
apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance"1namespace:"openshift-logging"spec:managementState:"Managed"2logStore:type:"elasticsearch"3elasticsearch:nodeCount:34storage:storageClassName:gp25size:200GredundancyPolicy:"SingleRedundancy"visualization:type:"kibana"6kibana:replicas:1curation:type:"curator"7curator:schedule:"303***"collection:logs:type:"fluentd"8fluentd:{}第第3章章部署集群日志部署集群日志记录记录1778用于配置Curator的设置.
通过使用CR,您可以设置Curator调度.
如需更多信息,请参阅配置配置Curator.
用于配置Fluentd的设置.
通过使用CR,您可以配置FluentdCPU和内存限值.
如需更多信息,请参阅配置配置Fluentd.
注意注意Elasticsearchmaster节点的最大数量为三个.
如果您将nodeCount指定为大于3,OpenShiftContainerPlatform只会创建三个符合Master节点条件的Elasticsearch节点(具有master、client和data角色).
其余Elasticsearch节点创建为"仅数据"节点,使用client和data角色.
Master节点执行集群范围的操作,如创建或删除索引、分配分片和跟踪节点等.
数据节点保管分片,并执行与数据相关的操作,如CRUD、搜索和聚合等.
与数据相关的操作会占用大量I/O、内存和CPU.
务必要监控这些资源,并在当前节点过载时添加更多数据节点.
例如,如果nodeCount=4,则创建以下节点:$ocgetdeploymentcluster-logging-operator1/11118helasticsearch-cd-x6kdekli-10/1106m54selasticsearch-cdm-x6kdekli-11/11118helasticsearch-cdm-x6kdekli-20/1106m49selasticsearch-cdm-x6kdekli-30/1106m44s索引模板的主分片数量等于Elasticsearch数据节点的数目.
f.
点击Create.
这将创建集群日志记录自定义资源和Elasticsearch自定义资源,您可以通过编辑它们来更改用于集群日志记录的集群.
5.
验证安装:a.
切换到Workloads→Pods页面.
b.
选择openshift-logging项目.
您应该会看到几个用于集群日志记录、Elasticsearch、Fluentd和Kibana的Pod,类似于以下列表:cluster-logging-operator-cb795f8dc-xkckcelasticsearch-cdm-b3nqzchd-1-5c6797-67kfzelasticsearch-cdm-b3nqzchd-2-6657f4-wtprvelasticsearch-cdm-b3nqzchd-3-588c65-clg7gfluentd-2c7dgfluentd-9z7kkfluentd-br7r2fluentd-fn2sbOpenShiftContainerPlatform4.
2日志日志记录记录1812fluentd-pb2f8fluentd-zqgqxkibana-7fb4fd4cc9-bvt4p3.
3.
使用CLI安装CLUSTERLOGGINGOPERATOR您可以使用OpenShiftContainerPlatformCLI安装ClusterLoggingOperator.
ClusterLoggingOperator负责创建并管理日志记录堆栈的组件.
流程流程使用CLI安装ClusterLoggingOperator:1.
为ClusterLoggingOperator创建命名空间:a.
为ClusterLoggingOperator创建一个命名空间对象YAML文件(例如,clo-namespace.
yaml):b.
创建命名空间:$occreate-f.
yaml例如:$occreate-fclo-namespace.
yaml2.
通过创建以下对象来安装ClusterLoggingOperator:a.
为ClusterLoggingOperator创建一个OperatorGroup对象YAML文件(例如,clo-og.
yaml):您必须指定openshift-logging命名空间.
apiVersion:v1kind:Namespacemetadata:name:openshift-loggingannotations:openshift.
io/node-selector:""labels:openshift.
io/cluster-logging:"true"openshift.
io/cluster-monitoring:"true"apiVersion:operators.
coreos.
com/v1kind:OperatorGroupmetadata:name:cluster-loggingnamespace:openshift-logging1spec:targetNamespaces:-openshift-logging2第第3章章部署集群日志部署集群日志记录记录19123b.
创建OperatorGroup对象:$occreate-f.
yaml例如:$occreate-fclo-og.
yamlc.
创建一个Subscription对象YAML文件(例如,clo-sub.
yaml)来向Operator订阅一个Namespace.
订阅订阅示例示例您必须指定openshift-logging命名空间.
指定4.
2作为频道.
指定redhat-operators.
如果OpenShiftContainerPlatform集群安装在受限网络中(也称为断开连接的集群),请指定配置OperatorLifecycleManager(OLM)时创建的CatalogSource对象的名称.
d.
创建订阅对象:$occreate-f.
yaml例如:$occreate-fclo-sub.
yamlClusterLoggingOperator已安装到openshift-logging命名空间.
3.
验证Operator安装:在openshift-logging命名空间中应该有一个ClusterLoggingOperator.
版本号可能与所示不同.
ocgetcsv--all-namespacesNAMESPACENAMEDISPLAYVERSIONREPLACESPHASE.
.
.
apiVersion:operators.
coreos.
com/v1alpha1kind:Subscriptionmetadata:name:cluster-loggingnamespace:openshift-logging1spec:channel:"4.
2"2name:cluster-loggingsource:redhat-operators3sourceNamespace:openshift-marketplaceOpenShiftContainerPlatform4.
2日志日志记录记录2012345openshift-loggingclusterlogging.
4.
2.
1-202002032140ClusterLogging4.
2.
1-202002032140Succeeded.
.
.
4.
创建集群日志记录(ClusterLogging)实例:a.
为ClusterLoggingOperator创建实例对象YAML文件(如clo-instance.
yaml):注意注意此默认集群日志记录配置应该可以支持不同的环境.
请参考有关调优和配置集群日志记录组件的主题,以了解有关可对集群日志记录集群进行修改的信息.
名称必须是instance.
集群日志记录管理状态.
在大多数情况下,如果更改了集群日志记录的默认值,则必须将其设置为Unmanaged.
但是,在ClusterLogging返回到Managed状态前,非受管部署不接收更新.
如需更多信息,请参阅更改集群日志更改集群日志记录记录管理状管理状态态.
用于配置Elasticsearch的设置.
通过使用子定义资源(CR),您可以配置分片复制策略和持久性存储.
如需更多信息,请参阅配置配置Elasticsearch.
指定Elasticsearch节点的数量.
请参阅此列表后面的备注.
指定集群中的每个Elasticsearch节点都绑定到持久性卷声明.
用于配置Kibana的设置.
通过使用CR,您可以扩展Kibana来实现冗余性,并为apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance"1namespace:"openshift-logging"spec:managementState:"Managed"2logStore:type:"elasticsearch"3elasticsearch:nodeCount:34storage:storageClassName:gp25size:200GredundancyPolicy:"SingleRedundancy"visualization:type:"kibana"6kibana:replicas:1curation:type:"curator"7curator:schedule:"303***"collection:logs:type:"fluentd"8fluentd:{}第第3章章部署集群日志部署集群日志记录记录21678用于配置Kibana的设置.
通过使用CR,您可以扩展Kibana来实现冗余性,并为Kibana节点配置CPU和内存.
如需更多信息,请参阅配置配置Kibana.
用于配置Curator的设置.
通过使用CR,您可以设置Curator调度.
如需更多信息,请参阅配置配置Curator.
用于配置Fluentd的设置.
通过使用CR,您可以配置FluentdCPU和内存限值.
如需更多信息,请参阅配置配置Fluentd.
注意注意Elasticsearchmaster节点的最大数量为三个.
如果您将nodeCount指定为大于3,OpenShiftContainerPlatform只会创建三个符合Master节点条件的Elasticsearch节点(具有master、client和data角色).
其余Elasticsearch节点创建为"仅数据"节点,使用client和data角色.
Master节点执行集群范围的操作,如创建或删除索引、分配分片和跟踪节点等.
数据节点保管分片,并执行与数据相关的操作,如CRUD、搜索和聚合等.
与数据相关的操作会占用大量I/O、内存和CPU.
务必要监控这些资源,并在当前节点过载时添加更多数据节点.
例如,如果nodeCount=4,则创建以下节点:$ocgetdeploymentcluster-logging-operator1/11118helasticsearch-cd-x6kdekli-11/1106m54selasticsearch-cdm-x6kdekli-11/11118helasticsearch-cdm-x6kdekli-21/1106m49selasticsearch-cdm-x6kdekli-31/1106m44s索引模板的主分片数量等于Elasticsearch数据节点的数目.
b.
创建实例:$occreate-f.
yaml例如:$occreate-fclo-instance.
yaml5.
通过列出openshift-logging项目中的Pod来验证安装.
您应该会看到几个用于ClusterLogging、Elasticsearch、Fluentd和Kibana的Pod,类似于以下内容:ocgetpods-nopenshift-loggingNAMEREADYSTATUSRESTARTSAGEcluster-logging-operator-66f77ffccb-ppzbg1/1Running07melasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp2/2Running02m40selasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc2/2Running02m36selasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm22/2Running02m4sfluentd-587vb1/1Running02m26sfluentd-7mpb91/1Running02m30sfluentd-flm6j1/1Running02m33sOpenShiftContainerPlatform4.
2日志日志记录记录22fluentd-gn4rn1/1Running02m26sfluentd-nlgb61/1Running02m30sfluentd-snpkt1/1Running02m28skibana-d6d5668c5-rppqm2/2Running02m39s3.
4.
其他资源如需有关安装Operator的更多信息,请参阅从OperatorHub安装Operator.
第第3章章部署集群日志部署集群日志记录记录23第4章升级集群日志记录在将OpenShiftContainerPlatform集群从4.
1升级到4.
2后,必须将集群日志记录从4.
1升级到4.
2.
注意注意由于默认的全局目录命名空间和CatalogSource发生变化,如果您根据Elasticsearch安装所述,从YAML文件手动创建CatalogSourceConfig和Subscription对象,您需要更新这些对象,以便在升级前指向新的目录命名空间和源,如下所示.
4.
1.
更新集群日志记录升级OpenShiftContainerPlatform集群后,您可以通过更新ElasticsearchOperator和ClusterLoggingOperator将集群日志记录从4.
1升级到4.
2.
先决条件先决条件将集群从4.
1升级到4.
2.
确保集群日志记录健康:所有Pod都为Ready状态.
Elasticsearch集群处于健康状态.
流程流程1.
编辑CatalogSourceConfig(CSC)和Subscription对象,以指向新的Namespace和Cource:a.
通过CLI,获取ElasticsearchCSC的名称:$ocgetcsc--all-namespacesNAMESPACENAMESTATUSMESSAGEAGEopenshift-marketplacecertified-operatorsSucceededTheobjecthasbeensuccessfullyreconciled42mopenshift-marketplacecommunity-operatorsSucceededTheobjecthasbeensuccessfullyreconciled42mopenshift-marketplaceelasticsearchSucceededTheobjecthasbeensuccessfullyreconciled27mopenshift-marketplaceinstalled-redhat-defaultSucceededTheobjecthasbeensuccessfullyreconciled26mopenshift-marketplaceinstalled-redhat-openshift-loggingSucceededTheobjecthasbeensuccessfullyreconciled18mopenshift-marketplaceredhat-operatorsSucceededTheobjecthasbeensuccessfullyreconciled42mb.
按如下方式编辑该文件:$oceditcscelasticsearch-nopenshift-marketplaceapiVersion:operators.
coreos.
com/v1kind:CatalogSourceConfigmetadata:OpenShiftContainerPlatform4.
2日志日志记录记录24112creationTimestamp:"2020-02-18T15:09:00Z"finalizers:-finalizer.
catalogsourceconfigs.
operators.
coreos.
comgeneration:3name:elasticsearchnamespace:openshift-marketplaceresourceVersion:"17694"selfLink:/apis/operators.
coreos.
com/v1/namespaces/openshift-marketplace/catalogsourceconfigs/elasticsearchuid:97c0cd55-5260-11ea-873c-02939b2f528fspec:csDisplayName:CustomcsPublisher:Custompackages:elasticsearch-operatortargetNamespace:openshift-operators-redhatsource:redhat-operators1将当前值改为redhat-operators.
c.
获取ElasticsearchSubscription对象的名称:$ocgetsubNAMEPACKAGESOURCECHANNELelasticsearch-pj7pfelasticsearch-operatorelasticsearchpreviewd.
按如下方式编辑该文件:$oceditsubelasticsearch-pj7pfapiVersion:operators.
coreos.
com/v1alpha1kind:Subscriptionmetadata:creationTimestamp:"2020-02-17T17:51:18Z"generateName:elasticsearch-generation:2name:elasticsearch-p5k7nnamespace:openshift-operators-redhatresourceVersion:"38098"selfLink:/apis/operators.
coreos.
com/v1alpha1/namespaces/openshift-operators-redhat/subscriptions/elasticsearch-p5k7nuid:19f6df33-51ae-11ea-82b9-027dfdb65ec2spec:channel:"4.
2"installPlanApproval:Automaticname:elasticsearch-operatorsource:redhat-operators1sourceNamespace:openshift-marketplace2.
.
.
.
将当前值改为redhat-operators.
将当前值改为openshift-marketplace.
第第4章章升升级级集群日志集群日志记录记录252.
升级ElasticsearchOperator:a.
在Web控制台中点击OperatorManagement.
b.
将项目更改为allprojects.
c.
点与Elasticsearch订阅名称相同的ElasticsearchOperator.
d.
点Subscription→Channel.
e.
在ChangeSubscriptionUpdateChannel窗口中,选择4.
2并点Save.
f.
等待几秒钟,然后点Operators→InstalledOperators.
ElasticsearchOperator显示为4.
2版本.
例如:ElasticsearchOperator4.
2.
0-201909201915providedbyRedHat,Inc3.
升级ClusterLoggingOperator:a.
在Web控制台中点击OperatorManagement.
b.
将项目更改为allprojects.
c.
点ClusterLoggingOperator.
d.
点Subscription→Channel.
e.
在ChangeSubscriptionUpdateChannel窗口中,选择4.
2并点Save.
f.
等待几秒钟,然后点Operators→InstalledOperators.
ClusterLoggingOperator显示为4.
2版本.
例如:ClusterLogging4.
2.
0-201909201915providedbyRedHat,Inc4.
检查日志记录组件:a.
确保ElasticsearchPod使用的是4.
2镜像:$ocgetpod-oyaml-nopenshift-logging--selectorcomponent=elasticsearch|grep'image:'image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2.
0-201909201915OpenShiftContainerPlatform4.
2日志日志记录记录26image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915b.
确保所有ElasticsearchPod都处于Ready状态:$ocgetpod-nopenshift-logging--selectorcomponent=elasticsearchNAMEREADYSTATUSRESTARTSAGEelasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk2/2Running031melasticsearch-cdm-1pbrl44l-2-5c6d87589f-gx5hk2/2Running030melasticsearch-cdm-1pbrl44l-3-88df5d47-m45jc2/2Running029mc.
确保Elasticsearch集群健康:ocexec-nopenshift-logging-celasticsearchelasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk--es_cluster_health{"cluster_name":"elasticsearch","status":"green",.
.
.
.
d.
确保日志记录收集器Pod使用的是4.
2镜像:$ocgetpod-nopenshift-logging--selectorlogging-infra=fluentd-oyaml|grep'image:'image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2.
0-201909201915e.
确保KibanaPod使用的是4.
2镜像:$ocgetpod-nopenshift-logging--selectorlogging-infra=kibana-oyaml|grep'image:'image:registry.
redhat.
io/openshift4/ose-logging-kibana5:v4.
2.
0-201909210748image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915image:registry.
redhat.
io/openshift4/ose-logging-kibana5:v4.
2.
0-201909210748image:registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
2.
0-201909201915f.
确保CuratorCronJob使用的是4.
2镜像:第第4章章升升级级集群日志集群日志记录记录27$$ocgetCronJobcurator-nopenshift-logging-oyaml|grep'image:'image:registry.
redhat.
io/openshift4/ose-logging-curator5:v4.
2.
0-201909201915OpenShiftContainerPlatform4.
2日志日志记录记录28第5章使用事件路由器事件路由器(EventRouter)与OpenShiftContainerPlatform通信,并将OpenShiftContainerPlatform事件输出到发生事件的Pod的日志中.
如果部署了集群日志记录,您可以在Kibana中查看OpenShiftContainerPlatform事件.
5.
1.
部署和配置事件路由器使用以下步骤将事件路由器部署到集群中.
以下Template对象创建事件路由器所需的服务帐户、ClusterRole和ClusterRoleBinding.
先决条件先决条件需要适当的权限,以便能创建服务帐户和更新集群角色绑定.
例如,您可以使用具有cluster-admin角色的用户来运行以下模板.
设置TRANSFORM_EVENTS=true,以便在Elasticsearch中处理和存储事件路由器事件.
将集群日志记录设置为非受管状态.
启用TRANSFORM_EVENTS功能.
$ocsetenvds/fluentdTRANSFORM_EVENTS=true流程流程1.
为事件路由器创建模板:kind:TemplateapiVersion:v1metadata:name:eventrouter-templateannotations:description:"Apodforwardingkuberneteseventstoclusterloggingstack.
"tags:"events,EFK,logging,cluster-logging"objects:-kind:ServiceAccount1apiVersion:v1metadata:name:eventrouternamespace:${NAMESPACE}-kind:ClusterRole2apiVersion:v1metadata:name:event-readerrules:3-apiGroups:[""]resources:["events"]verbs:["get","watch","list"]-kind:ClusterRoleBinding4apiVersion:v1metadata:第第5章章使用事件路由器使用事件路由器29name:event-reader-bindingsubjects:-kind:ServiceAccountname:eventrouternamespace:${NAMESPACE}roleRef:kind:ClusterRolename:event-reader-kind:ConfigMapapiVersion:v1metadata:name:eventrouternamespace:${NAMESPACE}data:config.
json:|-{"sink":"stdout"}-kind:DeploymentapiVersion:apps/v1metadata:name:eventrouternamespace:${NAMESPACE}labels:component:eventrouterlogging-infra:eventrouterprovider:openshiftspec:selector:matchLabels:component:eventrouterlogging-infra:eventrouterprovider:openshiftreplicas:1template:metadata:labels:component:eventrouterlogging-infra:eventrouterprovider:openshiftname:eventrouterspec:serviceAccount:eventroutercontainers:-name:kube-eventrouterimage:${IMAGE}imagePullPolicy:IfNotPresentresources:limits:memory:${MEMORY}requests:cpu:${CPU}memory:${MEMORY}volumeMounts:-name:config-volumemountPath:/etc/eventrouterOpenShiftContainerPlatform4.
2日志日志记录记录3012345678为事件路由器创建服务帐户.
创建用于监控集群中事件的集群角色.
授予events资源get、watch和list权限.
创建一个ClusterRoleBinding将ClusterRole绑定到ServiceAccount.
为事件路由器指定镜像版本.
为事件路由器Pod指定内存限值.
默认值为"128Mi".
指定分配给事件路由器的最小CPU数量.
默认值为"100m".
指定要部署事件路由器的命名空间.
默认值为openshift-logging.
该值必须与为ServiceAccount和ClusterRoleBinding指定的值相同.
该项目指示您可以在Kibana中查找事件的位置:如果事件路由器Pod部署到默认项目中,如kube-*和openshift-*,您可以在.
operation索引下查找事件.
如果事件路由器Pod部署到其他项目中,您可以在使用项目命名空间的索引下查找事件.
2.
使用以下命令来处理和应用模板:$ocprocess-f|ocapply-f-例如:$ocprocess-feventrouter.
yaml|ocapply-f-serviceaccount/logging-eventroutercreatedclusterrole.
authorization.
openshift.
io/event-readercreatedclusterrolebinding.
authorization.
openshift.
io/event-reader-bindingcreatedconfigmap/logging-eventroutercreateddeployment.
apps/logging-eventroutercreatedvolumes:-name:config-volumeconfigMap:name:eventrouterparameters:-name:IMAGE5displayName:Imagevalue:"registry.
redhat.
io/openshift4/ose-logging-eventrouter:latest"-name:MEMORY6displayName:Memoryvalue:"128Mi"-name:CPU7displayName:CPUvalue:"100m"-name:NAMESPACE8displayName:Namespacevalue:"openshift-logging"第第5章章使用事件路由器使用事件路由器313.
验证是否安装了事件路由器:$ocgetpods--selectorcomponent=eventrouter-onamepod/logging-eventrouter-d649f97c8-qvv8r$oclogslogging-eventrouter-d649f97c8-qvv8r{"verb":"ADDED","event":{"metadata":{"name":"elasticsearch-operator.
v0.
0.
1.
158f402e25397146","namespace":"openshift-operators","selfLink":"/api/v1/namespaces/openshift-operators/events/elasticsearch-operator.
v0.
0.
1.
158f402e25397146","uid":"37b7ff11-4f1a-11e9-a7ad-0271b2ca69f0","resourceVersion":"523264","creationTimestamp":"2019-03-25T16:22:43Z"},"involvedObject":{"kind":"ClusterServiceVersion","namespace":"openshift-operators","name":"elasticsearch-operator.
v0.
0.
1","uid":"27b2ca6d-4f1a-11e9-8fba-0ea949ad61f6","apiVersion":"operators.
coreos.
com/v1alpha1","resourceVersion":"523096"},"reason":"InstallSucceeded","message":"waitingforinstallcomponentstoreporthealthy","source":{"component":"operator-lifecycle-manager"},"firstTimestamp":"2019-03-25T16:22:43Z","lastTimestamp":"2019-03-25T16:22:43Z","count":1,"type":"Normal"}}OpenShiftContainerPlatform4.
2日志日志记录记录3211第6章查看集群日志您可以使用CLI或通过OpenShiftContainerPlatformweb控制台查看OpenShiftContainerPlatform集群的日志.
6.
1.
查看集群日志您可以在CLI中查看集群日志.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程查看集群日志:1.
确定日志位置是文件还是CONSOLE(stdout).
$oc-nopenshift-loggingsetenvdaemonset/fluentd--list|grepLOGGING_FILE_PATH2.
根据日志位置来执行日志记录命令:如果LOGGING_FILE_PATH指向某一文件(默认设置),请从Pod所在的项目中使用logs程序来打印Fluentd日志文件的内容:$ocexec--logs1指定日志收集器Pod的名称.
注意logs前面的空格.
例如:$ocexecfluentd-ht42r-nopenshift-logging--logs如果使用的是LOGGING_FILE_PATH=console,日志收集器会将日志记录写入到stdout/stderr`.
您可以使用oclogs[-f]命令来检索日志,其中-f可选.
$oclogs-f-nopenshift-logging1指定日志收集器Pod的名称.
使用-f选项可以跟踪正在写进日志中的内容.
例如:$oclogs-ffluentd-ht42r-nopenshift-logging输出的日志文件内容.
默认情况下,Fluentd从日志的末尾开始读取日志.
6.
2.
在OPENSHIFTCONTAINERPLATFORMWEB控制台中查看集群日志第第6章章查查看集群日志看集群日志33您可以在OpenShiftContainerPlatformWeb控制台中查看集群日志.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程查看集群日志:1.
在OpenShiftContainerPlatform控制台中,进入Workloads→Pods.
2.
从下拉菜单中选择openshift-logging项目.
3.
点带有fluentd前缀的某一个日志记录收集器Pod.
4.
点击Logs.
默认情况下,Fluentd从日志的末尾开始读取日志.
OpenShiftContainerPlatform4.
2日志日志记录记录34第7章使用KIBANA查看集群日志在安装集群日志记录时会部署Kibanaweb控制台.
7.
1.
启动KIBANAKibana是基于浏览器的控制台界面,可通过直方图、折线图、饼图、热图、内置地理空间支持和其他视觉化方式,来查询、探索和视觉化您的日志数据.
流程流程启动Kibana:1.
在OpenShiftContainerPlatform控制台中点Monitoring→Logging.
2.
使用用来登录到OpenShiftContainerPlatform控制台的相同凭证进行登录.
Kibana界面将出现.
您现在可以:使用Discover页面搜索并浏览您的数据.
使用Visualize页面对数据进行图表显示.
使用Dashboard页面创建并查看自定义仪表板.
使用并配置Kibana界面的内容超出了本文档的范围.
相关信息,请参阅Kibana文档.
第第7章章使用使用KIBANA查查看集群日志看集群日志35第8章配置集群日志记录部署8.
1.
关于配置集群日志记录将集群日志记录安装到OpenShiftContainerPlatform集群中后,您可以进行以下配置.
注意注意除非另有说明,否则在执行这些配置之前,必须将集群日志记录设置为非受管状态.
如需更多信息,请参阅更改集群日志记录管理状态.
处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
如需了解更多信息,请参阅非受管Operator的支持策略8.
1.
1.
关于部署和配置集群日志记录OpenShiftContainerPlatform集群日志记录已设计为可搭配默认配置使用,该配置针对中小型OpenShiftContainerPlatform集群进行了调优.
以下安装说明包括一个示例集群日志记录自定义资源(CR),您可以用它来创建集群日志记录实例并配置集群日志记录部署.
如果要使用默认集群日志记录安装,可直接使用示例CR.
如果要自定义部署,请根据需要对示例CR进行更改.
下文介绍了在安装集群日志记录实例或安装后修改时可以进行的配置.
请参阅"配置"部分来了解有关使用各个组件的更多信息,包括可以在集群日志记录自定义资源之外进行的修改.
8.
1.
1.
1.
配置和配置和调优调优集群日志集群日志记录记录您可以通过修改openshift-logging项目中部署的集群日志记录自定义资源来配置集群日志记录环境.
您可以在安装时或安装后修改以下任何组件:内存和内存和CPU您可以使用有效的内存和CPU值修改resources块,以此调整各个组件的CPU和内存限值:spec:logStore:elasticsearch:resources:limits:cpu:memory:requests:cpu:1memory:16Gitype:"elasticsearch"collection:logs:fluentd:resources:limits:cpu:OpenShiftContainerPlatform4.
2日志日志记录记录36memory:requests:cpu:memory:type:"fluentd"visualization:kibana:resources:limits:cpu:memory:requests:cpu:memory:type:kibanacuration:curator:resources:limits:memory:200Mirequests:cpu:200mmemory:200Mitype:"curator"Elasticsearch存存储储您可以使用storageClassname和size参数,为Elasticsearch集群配置持久性存储类和大小.
ClusterLoggingOperator基于这些参数为Elasticsearch集群中的每个数据节点创建PersistentVolumeClaim.
spec:logStore:type:"elasticsearch"elasticsearch:nodeCount:3storage:storageClassName:"gp2"size:"200G"本例中指定,集群中的每个数据节点将绑定到请求200G的gp2存储的PersistentVolumeClaim.
每个主分片将由单个副本支持.
注意注意省略storage块会导致部署中仅包含临时存储.
spec:logStore:type:"elasticsearch"elasticsearch:nodeCount:3storage:{}Elasticsearch复制策略复制策略第第8章章配置集群日志配置集群日志记录记录部署部署37您可以通过设置策略来定义如何在集群中的数据节点之间复制Elasticsearch分片:FullRedundancy.
各个索引的分片完整复制到每个数据节点上.
MultipleRedundancy.
各个索引的分片分布到一半数据节点上.
SingleRedundancy.
各个分片具有单个副本.
只要存在至少两个数据节点,日志就能始终可用且可恢复.
ZeroRedundancy.
所有分片均无副本.
如果节点关闭或发生故障,则可能无法获得日志数据.
Curator调调度度以cron格式指定Curator的调度.
spec:curation:type:"curator"resources:curator:schedule:"303***"8.
1.
1.
2.
修改后集群日志修改后集群日志记录记录自定自定义资义资源示例源示例以下是使用前述选项修改的集群日志记录自定义资源的示例.
修改后集群日志修改后集群日志记录记录自定自定义资义资源示例源示例apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance"namespace:"openshift-logging"spec:managementState:"Managed"logStore:type:"elasticsearch"elasticsearch:nodeCount:2resources:limits:memory:2Girequests:cpu:200mmemory:2Gistorage:{}redundancyPolicy:"SingleRedundancy"visualization:type:"kibana"kibana:resources:limits:memory:1Girequests:OpenShiftContainerPlatform4.
2日志日志记录记录38cpu:500mmemory:1Gireplicas:1curation:type:"curator"curator:resources:limits:memory:200Mirequests:cpu:200mmemory:200Mischedule:"*/5****"collection:logs:type:"fluentd"fluentd:resources:limits:memory:1Girequests:cpu:200mmemory:1Gi8.
2.
更改集群日志记录管理状态若要修改由ClusterLoggingOperator或ElasticsearchOperator管理的特定组件,您必须将Operator设置为非受管状态.
在非受管状态下,Operator不响应CR中的变化.
处于非托管状态时,管理员完全掌控各个组件的配置和升级.
重要重要处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
如需了解更多信息,请参阅非受管Operator的支持策略在受管状态下,ClusterLoggingOperator(CLO)会对集群日志记录自定义资源(CR)中的更改进行相应,并对日志部署进行相应的调整.
OpenShiftContainerPlatform文档在预备步骤中指明何时您必须将OpenShiftContainerPlatform集群设置为"非受管(Unmanaged)"状态.
注意注意如果将ElasticsearchOperator(EO)设置为非受管状态,并将ClusterLoggingOperator(CLO)保留为受管状态,则CLO会还原您对EO进行的更改,因为EO由CLO进行管理.
8.
2.
1.
更改集群日志记录管理状态您必须将ClusterLoggingOperator设置为非受管状态,才能修改由此Operator管理的组件:CuratorCronJob;第第8章章配置集群日志配置集群日志记录记录部署部署391ElasticsearchCR;KibanaDeployment;日志收集器DaemonSet.
如果您在受管状态下对这些组件进行更改,则ClusterLoggingOperator将还原这些更改.
注意注意在ClusterLoggingOperator返回到受管状态之前,非受管集群日志记录环境不会接收更新.
先决条件先决条件必须安装ClusterLoggingOperator.
流程流程1.
在openshift-logging项目中编辑集群日志记录自定义资源(CR):$oceditClusterLogginginstance将管理状态指定为Managed或Unmanaged.
8.
2.
2.
更改Elasticsearch管理状态您必须将ElasticsearchOperator设置为非受管状态,才能修改由此Operator管理的Elasticsearch部署文件:如果您在受管状态下对这些组件进行更改,则ElasticsearchOperator将还原这些更改.
注意注意在ElasticsearchOperator返回到受管状态之前,非受管Elasticsearch集群不会接收更新.
先决条件先决条件必须安装ElasticsearchOperator.
$oceditClusterLogginginstanceapiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance".
.
.
.
spec:managementState:"Managed"1OpenShiftContainerPlatform4.
2日志日志记录记录401具有openshift-logging项目中ElasticsearchCR的名称:$ocget-nopenshift-loggingElasticsearchNAMEAGEelasticsearch28h流程流程编辑openshift-logging项目中的Elasticsearch自定义资源(CR):将管理状态指定为Managed或Unmanaged.
注意注意如果将ElasticsearchOperator(EO)设置为非受管状态,并将ClusterLoggingOperator(CLO)保留为受管状态,则CLO会还原您对EO进行的更改,因为EO由CLO进行管理.
8.
3.
配置集群日志记录可以使用部署在openshift-logging项目中的集群日志记录自定义资源(CR)来配置集群日志记录.
ClusterLoggingOperator会监控集群日志记录CR的更改,创建任何缺少的日志记录组件,并相应地调整日志记录部署.
集群日志记录CR基于集群日志记录自定义资源定义(CRD),后者定义完整的集群日志记录部署,包括日志记录堆栈中用于收集、存储和视觉化日志的所有组件.
集群日志集群日志记录记录自定自定义资义资源源(CR)示例示例$oceditElasticsearchelasticsearchapiVersion:logging.
openshift.
io/v1kind:Elasticsearchmetadata:name:elasticsearch.
.
.
.
spec:managementState:"Managed"1apiVersion:logging.
openshift.
io/v1kind:ClusterLoggingmetadata:creationTimestamp:'2019-03-20T18:07:02Z'generation:1name:instancenamespace:openshift-loggingspec:collection:logs:第第8章章配置集群日志配置集群日志记录记录部署部署41您可以对集群日志记录进行以下配置:可以将集群日志记录置于非受管状态,使管理员能够完全掌控各个组件的配置和升级.
可以通过在cluster-logging-operator部署中修改适当的环境变量,覆盖每个集群日志记录组件的镜像.
可以使用节点选择器为日志记录组件指定特定的节点.
8.
3.
1.
了解集群日志记录组件镜像集群日志记录中有多个组件,各自通过一个或多个镜像实施.
每个镜像都由openshift-logging项目的cluster-logging-operator部署中定义的环境变量指定的,并且不应更改.
您可以通过运行以下命令来查看镜像:$oc-nopenshift-loggingsetenvdeployment/cluster-logging-operator--list|grep_IMAGEELASTICSEARCH_IMAGE=registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
21FLUENTD_IMAGE=registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
22KIBANA_IMAGE=registry.
redhat.
io/openshift4/ose-logging-kibana5:v4.
23CURATOR_IMAGE=registry.
redhat.
io/openshift4/ose-logging-curator5:v4.
24OAUTH_PROXY_IMAGE=registry.
redhat.
io/openshift4/ose-oauth-proxy:v4.
25fluentd:resources:nulltype:fluentdcuration:curator:resources:nullschedule:303***type:curatorlogStore:elasticsearch:nodeCount:3redundancyPolicy:SingleRedundancyresources:limits:cpu:memory:requests:cpu:memory:storage:{}type:elasticsearchmanagementState:Managedvisualization:kibana:proxy:resources:nullreplicas:1resources:nulltype:kibanaOpenShiftContainerPlatform4.
2日志日志记录记录4212345ELASTICSEARCH_IMAGE部署Elasticsearch.
FLUENTD_IMAGE部署Fluentd.
KIBANA_IMAGE部署Kibana.
CURATOR_IMAGE部署Curator.
OAUTH_PROXY_IMAGE为OpenShiftContainerPlatform定义OAUTH.
这些值可能视您的环境而异.
重要重要日志记录路由由ClusterLoggingOperator管理,用户无法修改它.
8.
4.
配置ELASTICSEARCH以存储和整理日志数据OpenShiftContainerPlatform使用Elasticsearch(ES)来存储和整理日志数据.
您可以对Elasticsearch部署进行的一些修改包括:Elasticsearch集群存储;如何在集群中的数据节点之间复制分片,包括从完整复制到不复制;允许外部对Elasticsearch数据进行访问.
注意注意不支持缩减Elasticsearch节点.
缩减规模时,ElasticsearchPod可能会被意外删除,这可能导致未分配分片,并且丢失副本分片.
Elasticsearch是内存密集型应用程序.
每个Elasticsearch节点需要16G内存来满足内存请求(requests)和限值(limits)的需要,除非集群日志记录自定义资源中另有指定.
最初的OpenShiftContainerPlatform节点组可能不足以支持Elasticsearch集群.
您必须在OpenShiftContainerPlatform集群中添加额外的节点,才能使用建议或更高的内存来运行.
每个Elasticsearch节点都可以在较低的内存设置下运行,但在生产部署中不建议这样做.
注意注意如果将ElasticsearchOperator(EO)设置为非受管状态,并将ClusterLoggingOperator(CLO)保留为受管状态,则CLO会还原您对EO进行的更改,因为EO由CLO进行管理.
8.
4.
1.
配置ElasticsearchCPU和内存限值每个组件规格都允许调整CPU和内存限值.
您应该无需手动调整这些值,因为ElasticsearchOperator会设置适当的值以满足环境的要求.
每个Elasticsearch节点都可以在较低的内存设置下运行,但在生产部署中不建不建议议这样做.
对于生产环境,为每个Pod应该分配的数量应不少于默认的16Gi.
最好为每个Pod分配不超过64Gi的尽量多的数量.
第第8章章配置集群日志配置集群日志记录记录部署部署431先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
在openshift-logging项目中编辑集群日志记录自定义资源(CR):$oceditClusterLogginginstance根据需要指定CPU和内存限值.
如果这些值留白,则ElasticsearchOperator会设置默认值,它们应足以满足大多数部署的需要.
如果调整了ElasticsearchCPU和内存的数量,您必须同时更改请求值和限制值.
例如:Kubernetes一般遵循节点CPU配置,DOES不允许Elasticsearch使用指定的限制.
为requests和limits设置相同的值可以确保Elasticseach可以使用您需要它们使用的CPU和内存数量(假定节点有足够可用CPU和内存).
8.
4.
2.
配置Elasticsearch复制策略您可以定义如何在集群中的数据节点之间复制Elasticsearch分片:先决条件先决条件必须安装ClusterLogging和Elasticsearch.
apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance".
.
.
.
spec:logStore:type:"elasticsearch"elasticsearch:resources:1limits:memory:"16Gi"requests:cpu:"1"memory:"16Gi"resources:limits:cpu:"8"memory:"32Gi"requests:cpu:"8"memory:"32Gi"OpenShiftContainerPlatform4.
2日志日志记录记录441流程流程1.
在openshift-logging项目中编辑集群日志记录自定义资源(CR):oceditclusterlogginginstance为分片指定冗余策略.
更改会在保存后应用.
FullRedundancy:Elasticsearch将每个索引的主分片完整复制到每个数据节点.
这可提供最高的安全性,但代价是需要最大数量的磁盘并且性能最差.
MultipleRedundancy:Elasticsearch将每个索引的主分片完整复制到一半的数据节点.
这可在安全性和性能之间提供很好的折衷.
SingleRedundancy:Elasticsearch为每个索引的主分片制作一个副本.
只要存在至少两个数据节点,日志就能始终可用且可恢复.
使用5个或更多节点时,性能胜过MultipleRedundancy.
您不能将此策略应用于单个Elasticsearch节点的部署.
ZeroRedundancy:Elasticsearch不制作主分片的副本.
如果节点关闭或发生故障,则可能无法获得日志数据.
如果您更关注性能而非安全性,或者实施了自己的磁盘/PVC备份/恢复策略,可以考虑使用此模式.
注意注意索引模板的主分片数量等于Elasticsearch数据节点的数目.
8.
4.
3.
配置Elasticsearch存储Elasticsearch需要持久性存储.
存储速度越快,Elasticsearch性能越高.
警告警告在Elasticsearch存储中不支持将NFS存储用作卷或持久性卷(或者通过NAS比如Gluster),因为Lucene依赖于NFS不提供的文件系统行为.
数据崩溃和其他问题可能会发生.
apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance".
.
.
.
spec:logStore:type:"elasticsearch"elasticsearch:redundancyPolicy:"SingleRedundancy"1第第8章章配置集群日志配置集群日志记录记录部署部署45先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
编辑集群日志记录CR,将集群中的每个数据节点指定为绑定到PVC.
本例中指定,集群中的每个数据节点都绑定到请求"200G"的AWS通用SSD(gp2)存储的PVC.
8.
4.
4.
为Elasticsearch配置emptyDir存储您可以将emptyDir与Elasticsearch搭配使用来创建一个临时部署,临时部署一旦重启其中所有Pod的数据都会丢失.
注意注意使用emptyDir时,如果重启或重新部署Elasticsearch,数据将会丢失.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
编辑集群日志记录CR以指定emptyDir:8.
4.
5.
将Elasticsearch公开为路由默认情况下,无法从日志记录集群外部访问部署了集群日志记录的Elasticsearch.
您可以启用一个re-encryptiontermination模式的路由,以实现外部对Elasticsearch的访问来获取数据.
apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance".
.
.
.
spec:logStore:type:"elasticsearch"elasticsearch:nodeCount:3storage:storageClassName:"gp2"size:"200G"spec:logStore:type:"elasticsearch"elasticsearch:nodeCount:3storage:{}OpenShiftContainerPlatform4.
2日志日志记录记录46另外,还可以在外部创建一个重新加密路由,使用OpenShiftContainerPlatform令牌和已安装的ElasticsearchCA证书以从外部访问Elasticsearch.
然后,使用包含以下信息的cURL请求来访问Elasticsearch节点:Authorization:Bearer${token}Elasticsearch重新加密路由和ElasticsearchAPI请求.
在内部,您可以使用Elasticsearch集群IP访问Elastiscearch:您可以使用以下命令之一获取Elasticsearch集群IP:$ocgetserviceelasticsearch-ojsonpath={.
spec.
clusterIP}-nopenshift-logging172.
30.
183.
229ocgetserviceelasticsearchNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEelasticsearchClusterIP172.
30.
183.
2299200/TCP22h$ocexecelasticsearch-cdm-oplnhinv-1-5746475887-fj2f8--curl-tlsv1.
2--insecure-H"Authorization:Bearer${token}""https://172.
30.
183.
229:9200/_cat/health"%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed1002910029001080108先决条件先决条件必须安装ClusterLogging和Elasticsearch.
您必须具有项目的访问权限,以便能访问其日志.
流程流程对外部公开Elasticsearch:1.
进入openshift-logging项目:$ocprojectopenshift-logging2.
从Elasticsearch提取CA证书并写入admin-ca文件:$ocextractsecret/elasticsearch--to=.
--keys=admin-caadmin-ca3.
以YAML文件形式创建Elasticsearch服务的路由:a.
使用以下内容创建一个YAML文件:apiVersion:route.
openshift.
io/v1kind:Routemetadata:第第8章章配置集群日志配置集群日志记录记录部署部署471添加ElasticsearchCA证书或使用下一步中的命令.
您不必设置一些重新加密路由所需的spec.
tls.
key、spec.
tls.
certificate和spec.
tls.
caCertificate参数.
b.
运行以下命令将ElasticsearchCA证书添加到您创建的路由YAML中:cat.
/admin-ca|sed-e"s/file-name>.
yamlc.
创建路由:$occreate-f.
yamlroute.
route.
openshift.
io/elasticsearchcreated4.
检查是否公开了Elasticsearch服务:a.
获取此ServiceAccount的令牌,以便在请求中使用:$token=$(ocwhoami-t)b.
将您创建的Elasticsearch路由设置为环境变量.
$routeES=`ocgetrouteelasticsearch-ojsonpath={.
spec.
host}`c.
要验证路由是否创建成功,请运行以下命令来通过公开的路由访问Elasticsearch:curl-tlsv1.
2--insecure-H"Authorization:Bearer${token}""https://${routeES}/.
operations.
*/_searchsize=1"|jq其响应类似于如下:%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed100944100944006200:00:150:00:15204{"took":441,"timed_out":false,"_shards":{"total":3,"successful":3,"skipped":0,"failed":0},name:elasticsearchnamespace:openshift-loggingspec:host:to:kind:Servicename:elasticsearchtls:termination:reencryptdestinationCACertificate:|1OpenShiftContainerPlatform4.
2日志日志记录记录48"hits":{"total":89157,"max_score":1,"hits":[{"_index":".
operations.
2019.
03.
15","_type":"com.
example.
viaq.
common","_id":"ODdiNWIyYzAtMjg5Ni0TAtNWE3MDY1MjMzNTc3","_score":1,"_source":{"_SOURCE_MONOTONIC_TIMESTAMP":"673396","systemd":{"t":{"BOOT_ID":"246c34ee9cdeecb41a608e94","MACHINE_ID":"e904a0bb5efd3e36badee0c","TRANSPORT":"kernel"},"u":{"SYSLOG_FACILITY":"0","SYSLOG_IDENTIFIER":"kernel"}},"level":"info","message":"acpiphp:Slot[30]registered","hostname":"localhost.
localdomain","pipeline_metadata":{"collector":{"ipaddr4":"10.
128.
2.
12","ipaddr6":"fe80::xx:xxxx:fe4c:5b09","inputname":"fluent-plugin-systemd","name":"fluentd","received_at":"2019-03-15T20:25:06.
273017+00:00","version":"1.
3.
21.
6.
0"}},"@timestamp":"2019-03-15T20:00:13.
808226+00:00","viaq_msg_id":"ODdiNWIyYzAtMYTAtNWE3MDY1MjMzNTc3"}}]}}8.
4.
6.
关于Elasticsearch警报规则您可以在Prometheus中查看这些警报规则.
警警报报描述描述重要性重要性ElasticsearchClusterNotHealthy集群健康状态为RED至少有2分钟.
集群不接受写操作,分片可能缺失或者master节点尚未选定.
criticalElasticsearchClusterNotHealthy集群健康状态为YELLOW至少有20分钟.
某些分片副本尚未分配.
warning第第8章章配置集群日志配置集群日志记录记录部署部署49ElasticsearchBulkRequestsRejectionJumps集群中节点的批量拒绝率高.
此节点可能无法跟上索引速度.
warningElasticsearchNodeDiskWatermarkReached集群中节点已达到磁盘低水位线.
分片无法再分配给此节点.
应该考虑向节点添加更多磁盘空间.
alertElasticsearchNodeDiskWatermarkReached集群中节点已达到磁盘高水位线.
若有可能,某些分片将重新分配到其他节点.
确保向节点添加更多磁盘空间,或者丢弃分配给此节点的旧索引.
highElasticsearchJVMHeapUseHigh集群中节点上的JVM堆使用量为alertAggregatedLoggingSystemCPUHigh集群中节点上的系统CPU使用率是alertElasticsearchProcessCPUHigh集群中节点上的ES进程CPU使用率是alert警警报报描述描述重要性重要性8.
5.
配置KIBANAOpenShiftContainerPlatform使用Kibana显示由Fluentd收集并由Elasticsearch索引的日志数据.
您可以扩展Kibana来实现冗余性,并为Kibana节点配置CPU和内存.
注意注意除非另有说明,否则在执行这些配置之前,必须将集群日志记录设置为非受管状态.
如需更多信息,请参阅更改集群日志记录管理状态.
处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
如需了解更多信息,请参阅非受管Operator的支持策略8.
5.
1.
配置KibanaCPU和内存限值每个组件规格都允许调整CPU和内存限值.
流程流程1.
在openshift-logging项目中编辑集群日志记录自定义资源(CR):$oceditClusterLogginginstanceapiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:OpenShiftContainerPlatform4.
2日志日志记录记录50121指定要为每个节点分配的CPU和内存限值.
指定要为Kibana代理分配的CPU和内存限值.
8.
5.
2.
扩展Kibana以实现冗余您可以扩展Kibana部署以实现冗余.
流程1.
在openshift-logging项目中编辑集群日志记录自定义资源(CR):$oceditClusterLogginginstance指定Kibana节点的数量.
name:"instance".
.
.
.
spec:visualization:type:"kibana"kibana:replicas:resources:1limits:memory:1Girequests:cpu:500mmemory:1Giproxy:2resources:limits:memory:100Mirequests:cpu:100mmemory:100Mi$oceditClusterLogginginstanceapiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance".
.
.
.
spec:visualization:type:"kibana"kibana:replicas:11第第8章章配置集群日志配置集群日志记录记录部署部署5112348.
5.
3.
使用容忍度(toleration)来控制KibanaPod放置您可以通过在Pod上使用容限(toleration)来控制KibanaPod在哪些节点上运行,并防止其他工作负载使用这些节点.
您可以通过集群日志记录自定义资源(CR)将容限应用到KibanaPod,并通过节点规格将污点(taint)应用到节点.
节点上的污点是一个key:value对,它指示节点排斥所有不容许该污点的Pod.
通过使用没有在其他Pod上使用的特定key:value对,可以确保仅KibanaPod能够在该节点上运行.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
使用以下命令,将污点添加到要在其上调度KibanaPod的节点:$ocadmtaintnodes=:例如:$ocadmtaintnodesnode1kibana=node:NoExecute本例在node1上放置一个键为kibana且值为node的污点,污点效果是NoExecute.
您必须使用NoExecute污点设置.
NoExecute仅调度与污点匹配的Pod,并删除不匹配的现有Pod.
2.
编辑集群日志记录自定义资源(CR)的visualization部分,以配置KibanaPod的容忍度:指定添加到节点的键.
指定Exists运算符,以要求匹配key/value/effect参数.
指定NoExecute效果.
(可选)指定tolerationSeconds参数,以设置Pod在被逐出前可以保持绑定到节点的时长.
此容忍度与ocadmtaint命令创建的污点匹配.
具有此容限的Pod能够调度到node1上.
8.
5.
4.
安装KibanaVisualize工具借助Kibana的Visualize选项卡,您可以创建用于监控容器日志的视觉化和仪表板,让管理员用户(cluster-admin或cluster-reader)能够按照部署、命名空间、Pod和容器来查看日志.
visualization:type:"kibana"kibana:tolerations:-key:"kibana"1operator:"Exists"2effect:"NoExecute"3tolerationSeconds:60004OpenShiftContainerPlatform4.
2日志日志记录记录521流程流程加载仪表板和其他KibanaUI对象:1.
若有必要,可获取安装ClusterLoggingOperator时默认创建的Kibana路由:$ocgetroutes-nopenshift-loggingNAMESPACENAMEHOST/PORTPATHSERVICESPORTTERMINATIONWILDCARDopenshift-loggingkibanakibana-openshift-logging.
apps.
openshift.
comkibanareencrypt/RedirectNone2.
获取ElasticsearchPod的名称.
$ocgetpods-lcomponent=elasticsearchNAMEREADYSTATUSRESTARTSAGEelasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k2/2Running022helasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj72/2Running022helasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr2/2Running022h3.
创建此过程需要的用户级配置:a.
以您想要添加仪表板的用户身份登录到Kibana仪表板.
https://kibana-openshift-logging.
apps.
openshift.
com1Kibana路由所在的URL.
b.
如果显示AuthorizeAccess页面,请选择所有权限,再点Allowselectedpermissions.
c.
退出Kibana仪表板.
4.
使用任何ElastiscearchPod的名称,从Pod所在的项目运行以下命令:$ocexec--es_load_kibana_ui_objects例如:$ocexecelasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k--es_load_kibana_ui_objects注意注意Kibana对象(如视觉化、仪表板等)的元数据以.
kibana.
{user_hash}索引格式保存在Elasticsearch中.
您可以使用userhash=$(echo-n$username|sha1sum|awk'{print$1}')命令获取user_hash.
默认情况下,Kibanashared_ops索引模式允许具有集群管理员角色的所有用户共享索引,并将这个Kibana对象元数据保存到.
kibana索引中.
任何自定义仪表板都可以通过使用导入/导出功能,或通过使用curl命令将元数据插入Elasticsearch索引来为特定用户导入.
第第8章章配置集群日志配置集群日志记录记录部署部署5318.
6.
ELASTICSEARCH数据策展ElasticsearchCurator工具在全局范围和/或以项目为基础执行调度的维护操作.
Curator根据其配置执行操作.
ClusterLoggingOperator将安装Curator及其配置.
您可以使用集群日志记录自定义资源配置Curatorcron计划,其他配置选项则可在openshift-logging项目中的CuratorConfigMapcurator(融合了Curator配置文件curator5.
yaml以及OpenShiftContainerPlatform自定义配置文件config.
yaml)中找到.
OpenShiftContainerPlatform在内部使用config.
yaml来生成Curatoraction文件.
(可选)您可以直接使用此action文件.
通过编辑此文件,您可以使用Curator提供的可定期运行的任何操作.
但是,仅建议高级用户使用此功能,因为修改文件可能会对集群造成破坏,并可能导致从Elasticsearch中删除必要的索引/设置.
大多数用户仅需修改Curator配置映射,无需编辑action文件.
8.
6.
1.
配置Curator计划您可以使用由集群日志记录安装创建的集群日志记录自定义资源来指定Curator的调度.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程配置Curator调度:1.
编辑openshift-logging项目中的集群日志记录自定义资源:$oceditclusterlogginginstance以cron格式指定Curator的调度.
注意注意时区是根据CuratorPod运行所在的主机节点设置的.
8.
6.
2.
配置Curator索引删除您可以配置Curator,以根据保留设置删除Elasticsearch数据.
您可以配置在特定项目范围内的设置,也可以配置全局范围的设置.
全局设置应用到任何未指定的项目.
特定项目范围内的设置会覆盖全局设置.
apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance".
.
.
curation:curator:schedule:303***1type:curatorOpenShiftContainerPlatform4.
2日志日志记录记录54先决条件先决条件必须安装集群日志记录.
流程流程删除索引:1.
编辑OpenShiftContainerPlatform自定义Curator配置文件:$oceditconfigmap/curator2.
根据需要设置以下参数:可用的参数如下:表表8.
1.
项项目目选项选项变变量名称量名称描述描述project_name项目的实际名称,例如myapp-devel.
对于OpenShiftContainerPlatformoperations日志,请使用.
operations作为项目名称.
action当前只支持delete.
unit用于删除的期限,可以是days、weeks或months.
value单位数.
表表8.
2.
过滤选项过滤选项变变量名称量名称描述描述.
defaults使用.
defaults作为project_name,可为尚未指定的项目设置默认值.
.
regex与项目名称匹配的正则表达式列表.
pattern有效且正确转义的正则表达式,用单引号括起.
例如,要将Curator配置为:删除myapp-dev项目中存在时间超过1天天的索引删除myapp-qe项目中存在时间超过1个星期个星期的索引删除存在时间超过8个星期个星期的operations日志config.
yaml:|project_name:actionunit:value第第8章章配置集群日志配置集群日志记录记录部署部署55删除所有其他项目中存在时间超过31天天的索引删除与^project\.
.
+\-dev.
*$正则表达式匹配且存在时间超过1天的索引删除与^project\.
.
+\-test.
*$正则表达式匹配且存在时间超过2天的索引使用:重要重要当您将months用作操作的$UNIT时,Curator会从当月的第一天开始计算,而不是当月的当天.
例如,如果今天是4月15日,并且您想要删除目前存在时间已达2个月的索引(delete:months:2),Curator不会删除日期在2月15日前的索引,而是会删除日期在2月1日前的索引.
也就是说,它会退回到当前月份的第一天,然后从该日期起返回两个整月.
如果您想使Curator准确一些,则最好使用days(例如delete:days:30).
8.
6.
3.
Curator故障排除您可以参照本节中的信息来调试Curator.
例如,如果Curator处于失败状态,但日志消息未提供原因,您可以提高日志级别并触发新任务,而不必等待另一次调度运行cron任务.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程启用Curator调试日志并手动触发下一次Curator操作1.
启用Curator的调试日志:config.
yaml:|.
defaults:delete:days:31.
operations:delete:weeks:8myapp-dev:delete:days:1myapp-qe:delete:weeks:1.
regex:-pattern:'^project\.
.
+\-dev\.
.
*$'delete:days:1-pattern:'^project\.
.
+\-test\.
.
*$'delete:days:2OpenShiftContainerPlatform4.
2日志日志记录记录561$ocsetenvcronjob/curatorCURATOR_LOG_LEVEL=DEBUGCURATOR_SCRIPT_LOG_LEVEL=DEBUG指定日志级别:CRITICAL:Curator仅显示严重消息.
ERROR:Curator仅显示错误和严重消息.
WARNING:Curator仅显示错误、警告和严重消息.
INFO:Curator仅显示参考、错误、警告和严重消息.
DEBUG:除上述所有消息外,Curator仅显示调试消息.
默认值为INFO.
注意注意集群日志记录在OpenShiftContainerPlatform打包程序脚本(run.
sh和convert.
py)中使用OpenShiftContainerPlatform自定义环境变量CURATOR_SCRIPT_LOG_LEVEL.
根据需要,环境变量采用与CURATOR_LOG_LEVEL相同的值进行脚本调试.
1.
触发下一次Curator迭代:$occreatejob--from=cronjob/curator2.
使用以下命令来控制CronJob:暂停CronJob:$ocpatchcronjobcurator-p'{"spec":{"suspend":true}}'恢复CronJob:$ocpatchcronjobcurator-p'{"spec":{"suspend":false}}'更改CronJob调度:$ocpatchcronjobcurator-p'{"spec":{"schedule":"001schedule选项接受cron格式的调度.
8.
6.
4.
在脚本化部署中配置Curator如果必须在脚本化部署中配置Curator,请使用本节中的信息.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
将集群日志记录设置为非受管状态.
第第8章章配置集群日志配置集群日志记录记录部署部署57流程流程在脚本中使用以下代码片段配置Curator:如果是脚本化部署1.
创建并修改配置:a.
从Curator配置映射中复制Curator配置文件和OpenShiftContainerPlatform自定义配置文件,并为它们分别创建单独的文件:$ocextractconfigmap/curator--keys=curator5.
yaml,config.
yaml--to=/my/configb.
编辑/my/config/curator5.
yaml和/my/config/config.
yaml文件.
2.
删除现有的Curator配置映射,并将编辑后的YAML文件添加到新Curator配置映射中.
$ocdeleteconfigmapcurator;sleep1$occreateconfigmapcurator\--from-file=curator5.
yaml=/my/config/curator5.
yaml\--from-file=config.
yaml=/my/config/config.
yaml\;sleep1下一次操作将使用此配置.
如果使用action文件:1.
创建并修改配置:a.
从Curator配置映射中复制Curator配置文件和action文件,并为它们分别创建单独的文件:$ocextractconfigmap/curator--keys=curator5.
yaml,actions.
yaml--to=/my/configb.
编辑/my/config/curator5.
yaml和/my/config/actions.
yaml文件.
2.
删除现有的Curator配置映射,并将编辑后的YAML文件添加到新Curator配置映射中.
$ocdeleteconfigmapcurator;sleep1$occreateconfigmapcurator\--from-file=curator5.
yaml=/my/config/curator5.
yaml\--from-file=actions.
yaml=/my/config/actions.
yaml\;sleep1下一次操作将使用此配置.
8.
6.
5.
使用CuratorAction文件openshift-logging项目中的CuratorConfigMap包含一个Curatoraction文件,您可以在其中配置任何要定期运行的Curator操作.
不过,使用action文件时,OpenShiftContainerPlatform会忽略curatorConfigMap中的config.
yaml部分,它配置为用于确保不误删重要的内部索引.
若要使用action文件,您应在配置中添加排除规则来保留这些索引.
您还必须按照本主题中的步骤,手动添加所有其他模式.
重要重要OpenShiftContainerPlatform4.
2日志日志记录记录58重要重要action和config.
yaml是互斥的配置文件.
一旦存在action文件,OpenShiftContainerPlatform就会忽略config.
yaml文件.
仅建议高级用户使用action文件,因为使用该文件可能会对集群造成破坏,并可能导致从Elasticsearch中删除必要的索引/设置.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
将集群日志记录设置为非受管状态.
处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
流程流程配置Curator以删除索引:1.
编辑CuratorConfigMap:oceditcm/curator-nopenshift-logging2.
对action文件进行以下更改:actions:1:action:delete_indices1description:>-Delete.
operationsindicesolderthan30days.
Ignoretheerrorifthefilterdoesnotresultinanactionablelistofindices(ignore_empty_list).
Seehttps://www.
elastic.
co/guide/en/elasticsearch/client/curator/5.
2/ex_delete_indices.
htmloptions:#Swallowcurator.
exception.
NoIndicesexceptionignore_empty_list:True#Inseconds,defaultis300timeout_override:${CURATOR_TIMEOUT}#Don'tswallowanyotherexceptionscontinue_if_exception:False#Optionallydisableaction,usefulfordebuggingdisable_action:False#AllfiltersareboundbylogicalANDfilters:2-filtertype:patternkind:regexvalue:'^\.
operations\.
.
*$'exclude:False3-filtertype:age#Parsetimestampfromindexnamesource:namedirection:oldertimestring:'%Y.
%m.
%d'unit:daysunit_count:30exclude:False第第8章章配置集群日志配置集群日志记录记录部署部署59123指定delete_indices以删除指定的索引.
使用filers参数以指定要删除的索引.
如需这些参数的信息,请参阅ElasticsearchCurator文档.
指定false以允许删除索引.
8.
7.
配置日志记录收集器OpenShiftContainerPlatform使用Fluentd从集群中收集操作和应用程序日志,并借助KubernetesPod和命名空间元数据丰富这些日志.
您可以配置日志轮转和日志位置,使用外部日志聚合器,以及为日志收集器进行其他配置.
注意注意除非另有说明,否则在执行这些配置之前,必须将集群日志记录设置为非受管状态.
如需更多信息,请参阅更改集群日志记录管理状态.
处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
如需了解更多信息,请参阅非受管Operator的支持策略8.
7.
1.
查看日志记录收集器Pod您可以使用ocgetpods--all-namespaces-owide命令查看部署了Fluentd的节点.
流程流程在openshift-logging项目中运行以下命令:$ocgetpods--all-namespaces-owide|grepfluentdNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATEDNODEREADINESSGATESfluentd-5mr281/1Running04m56s10.
129.
2.
12ip-10-0-164-233.
ec2.
internalfluentd-cnc4c1/1Running04m56s10.
128.
2.
13ip-10-0-155-142.
ec2.
internalfluentd-nlp8z1/1Running04m56s10.
131.
0.
13ip-10-0-138-77.
ec2.
internalfluentd-rknlk1/1Running04m56s10.
128.
0.
33ip-10-0-128-130.
ec2.
internalfluentd-rsm491/1Running04m56s10.
129.
0.
37ip-10-0-163-191.
ec2.
internalfluentd-wjt8s1/1Running04m56s10.
130.
0.
42ip-10-0-156-251.
ec2.
internal8.
7.
2.
配置日志收集器CPU和内存限值日志收集器允许对CPU和内存限值进行调整.
流程流程OpenShiftContainerPlatform4.
2日志日志记录记录60111.
在openshift-logging项目中编辑集群日志记录自定义资源(CR):$oceditClusterLogginginstance根据需要指定CPU和内存限值及请求.
显示的值是默认值.
8.
7.
3.
配置所收集日志的位置日志收集器根据LOGGING_FILE_PATH环境变量,将日志写入到指定的文件或默认位置/var/log/fluentd/fluentd.
log.
先决条件先决条件将集群日志记录设置为非受管状态.
处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
流程流程设置Fluentd日志的输出位置:1.
编辑fluentdDaemonset中的LOGGING_FILE_PATH参数.
您可以指定特定的文件或console:spec:template:spec:containers:env:-name:LOGGING_FILE_PATHvalue:console1指定日志输出方法:$oceditClusterLogginginstanceapiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance".
.
.
.
spec:collection:logs:fluentd:resources:limits:1cpu:250mmemory:1Girequests:cpu:250mmemory:1Gi第第8章章配置集群日志配置集群日志记录记录部署部署61通过console利用Fluentd默认位置.
使用oclogs[-f]命令来检索日志.
使用将日志输出发送到指定的文件.
使用ocexec—logs命令获取日志数据.
这是默认的设置.
或者,使用CLI:$oc-nopenshift-loggingsetenvdaemonset/fluentdLOGGING_FILE_PATH=/logs/fluentd.
log8.
7.
4.
日志收集节流对于特别冗长的项目,管理员可以减慢日志收集器在处理日志之前读取日志的速度.
使用节流时,您有意减慢读取日志的速度,因此Kibana可能需要更长的时间才会显示记录.
警告警告节流可能会导致日志聚合落后于配置的项目;如果在Fluentd赶上之前删除了Pod,则日志条目可能会丢失.
注意注意使用systemd系统日志作为日志源时,节流不起作用.
节流的实施取决于各个项目中个别日志文件是否能够减慢读取速度.
从系统日志中读取时,只有一个日志源,而没有日志文件,因此无法使用基于文件的节流.
没有办法可以限制读取到Fluentd进程中的日志条目.
先决条件先决条件将集群日志记录设置为非受管状态.
流程流程1.
要配置Fluentd以限制特定项目,请于部署后在FluentdConfigMap中编辑节流配置:$oceditconfigmap/fluentdthrottle-config.
yaml键的格式是YAML文件,其包含项目名称以及各个节点上希望读取日志的速度.
默认值为每个节点一次读取1000行.
例如:throttle-config.
yaml:|-opensift-logging:read_lines_limit:10-.
operations:read_lines_limit:1008.
7.
5.
了解Fluentd的缓冲数据块限制OpenShiftContainerPlatform4.
2日志日志记录记录62如果Fluentd日志记录器无法满足大量日志的需求,则需要切换到文件缓冲来降低内存用量并防止数据丢失.
Fluentd文件缓冲以数据块的形式存储记录.
数据块存储在缓冲区中.
注意注意要按如下修改Fluentddaemonset中的FILE_BUFFER_LIMIT或BUFFER_SIZE_LIMIT参数,您需要把集群日志系统设置为未管理(unmanaged)状态.
处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
Fluentdbuffer_chunk_limit由环境变量BUFFER_SIZE_LIMIT决定,其默认值为8m.
每个输出的文件缓冲区大小由环境变量FILE_BUFFER_LIMIT决定,其默认值为256Mi.
持久性卷大小必须大于FILE_BUFFER_LIMIT与输出相乘的结果.
例如,Fluentdpod上应通过PVC或主机挂载准备持久性卷/var/lib/fluentd.
然后,将该区域用作文件缓冲区.
buffer_type和buffer_path在Fluentd配置文件中进行配置,如下所示:$egrep"buffer_type|buffer_path"*.
confoutput-es-config.
conf:buffer_typefilebuffer_path`/var/lib/fluentd/buffer-output-es-config`output-es-ops-config.
conf:buffer_typefilebuffer_path`/var/lib/fluentd/buffer-output-es-ops-config`Fluentdbuffer_queue_limit是变量BUFFER_QUEUE_LIMIT的值.
默认值为32.
环境变量BUFFER_QUEUE_LIMIT计算为(FILE_BUFFER_LIMIT/(number_of_outputs*BUFFER_SIZE_LIMIT)).
如果BUFFER_QUEUE_LIMIT变量具有默认值:FILE_BUFFER_LIMIT=256Minumber_of_outputs=1BUFFER_SIZE_LIMIT=8Mibuffer_queue_limit的值为32.
若要更改buffer_queue_limit,您必须更改FILE_BUFFER_LIMIT的值.
在这个公式中,如果所有日志都发送到单个资源,则number_of_outputs为1,否则每多一个资源就会递增1.
例如,number_of_outputs的值为:1-如果所有日志都发送到单个Elasticsearchpod2-如果应用程序日志发送到Elasticsearchpod,并且ops日志发送到另一个Elasticsearchpod4-如果应用程序日志发送到一个Elasticsearchpod,ops日志发送到另一个Elasticsearchpod,并且这两者都转发到其他Fluentd实例8.
7.
6.
使用环境变量配置日志记录收集器第第8章章配置集群日志配置集群日志记录记录部署部署63您可以使用环境变量来修改Fluentd日志收集器的配置.
如需可用环境变量的列表,请参见Github中的FluentdREADME.
先决条件先决条件将集群日志记录设置为非受管状态.
处于非受管状态的Operator不被正式支持,集群管理员需要完全掌控各个组件的配置和升级.
流程流程根据需要设置任何Fluentd环境变量:ocsetenvds/fluentd=例如:ocsetenvds/fluentdLOGGING_FILE_AGE=308.
7.
7.
关于日志记录收集器警报以下警报由日志记录收集器生成,可以在PrometheusUI的Alerts选项卡上查看.
所有日志记录收集器警报都列在OpenShiftContainerPlatformWeb控制台的Monitoring→Alerts页面中.
警报处于以下状态之一:Firing:在超时期限内警报条件为true.
点击在触发警报末尾的Options菜单,以查看更多信息或使警告静音.
Pending:警报条件当前为true,但尚未达到超时时间.
NotFiring:当前未触发警报.
表表8.
3.
FluentdPrometheus警警报报警警报报消息消息描述描述重要性重要性FluentdErrorsHighInthelastminute,errorsreportedbyfluentd.
Fluentd报告的问题数量超过了指定数量(默认值为10).
CriticalFluentdNodeDownPrometheuscouldnotscrapefluentdformorethan10m.
Fluentd报告Prometheus可能无法抓取特定的Fluentd实例.
CriticalFluentdQueueLengthBurstInthelastminute,fluentdbufferqueuelengthincreasedmorethan32.
Currentvalueis.
Fluentd报告自己已不堪重负.
WarningOpenShiftContainerPlatform4.
2日志日志记录记录64FluentdQueueLengthIncreasingInthelast12h,fluentdbufferqueuelengthconstantlyincreasedmorethan1.
Currentvalueis.
Fluentd报告队列使用方法问题.
Critical警警报报消息消息描述描述重要性重要性8.
8.
使用容忍度来控制集群日志记录POD放置您可以使用污点和容忍度来确保集群日志记录Pod在特定节点上运行,并确保其他工作负载不在这些节点上运行.
污点和容忍度是简单的key:value对.
节点上的污点指示节点排斥所有不容许该污点的Pod.
key是最长为253个字符的任意字符串,value则是最长为63个字符的任意字符串.
字符串必须以字母或数字开头,并且可以包含字母、数字、连字符、句点和下划线.
具有容忍度的集群日志具有容忍度的集群日志记录记录CR的示例的示例apiVersion:"logging.
openshift.
io/v1"kind:"ClusterLogging"metadata:name:"instance"namespace:openshift-loggingspec:managementState:"Managed"logStore:type:"elasticsearch"elasticsearch:nodeCount:1tolerations:1-key:"logging"operator:"Exists"effect:"NoExecute"tolerationSeconds:6000resources:limits:memory:8Girequests:cpu:100mmemory:1Gistorage:{}redundancyPolicy:"ZeroRedundancy"visualization:type:"kibana"kibana:tolerations:2-key:"logging"operator:"Exists"第第8章章配置集群日志配置集群日志记录记录部署部署651234此容忍度添加到ElasticsearchPod.
此容忍度添加到KibanaPod.
此容忍度添加到CuratorPod.
此容忍度添加到日志记录收集器Pod.
8.
8.
1.
使用容忍度来控制ElasticsearchPod放置您可以通过在Pod上使用容忍度来控制ElasticsearchPod在哪些节点上运行,并防止其他工作负载使用这些节点.
您可以通过集群日志记录自定义资源(CR)将容忍度应用到ElasticsearchPod,并通过节点规格将污点应effect:"NoExecute"tolerationSeconds:6000resources:limits:memory:2Girequests:cpu:100mmemory:1Gireplicas:1curation:type:"curator"curator:tolerations:3-key:"logging"operator:"Exists"effect:"NoExecute"tolerationSeconds:6000resources:limits:memory:200Mirequests:cpu:100mmemory:100Mischedule:"*/5****"collection:logs:type:"fluentd"fluentd:tolerations:4-key:"logging"operator:"Exists"effect:"NoExecute"tolerationSeconds:6000resources:limits:memory:2Girequests:cpu:100mmemory:1GiOpenShiftContainerPlatform4.
2日志日志记录记录661234您可以通过集群日志记录自定义资源(CR)将容忍度应用到ElasticsearchPod,并通过节点规格将污点应用到节点.
节点上的污点是一个key:value对,它指示节点排斥所有不容许该污点的Pod.
通过使用不在其他Pod上的特定key:value对,可以确保仅ElasticseachPod能够在该节点上运行.
默认情况下,ElasticsearchPod具有以下容忍度:先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
使用以下命令,将污点添加到要在其上调度集群日志记录Pod的节点:$ocadmtaintnodes=:例如:$ocadmtaintnodesnode1elasticsearch=node:NoExecute本例在node1上放置一个键为elasticsearch且值为node的污点,污点效果是NoExecute.
具有NoExecute效果的节点仅调度与污点匹配的Pod,并删除不匹配的现有Pod.
2.
编辑集群日志记录自定义资源(CR)的logstore部分,以配置ElasticsearchPod的容忍度:指定添加到节点的键.
指定Existsoperator需要节点上有一个带有键为elasticsearch的污点.
指定NoExecute效果.
(可选)指定tolerationSeconds参数,以设置Pod在被逐出前可以保持绑定到节点的时长.
此容忍度与ocadmtaint命令创建的污点匹配.
具有此容忍度的Pod可以调度到node1上.
8.
8.
2.
使用容忍度(toleration)来控制KibanaPod放置tolerations:-effect:"NoExecute"key:"node.
kubernetes.
io/disk-pressure"operator:"Exists"logStore:type:"elasticsearch"elasticsearch:nodeCount:1tolerations:-key:"elasticsearch"1operator:"Exists"2effect:"NoExecute"3tolerationSeconds:60004第第8章章配置集群日志配置集群日志记录记录部署部署671234您可以通过在Pod上使用容限(toleration)来控制KibanaPod在哪些节点上运行,并防止其他工作负载使用这些节点.
您可以通过集群日志记录自定义资源(CR)将容限应用到KibanaPod,并通过节点规格将污点(taint)应用到节点.
节点上的污点是一个key:value对,它指示节点排斥所有不容许该污点的Pod.
通过使用没有在其他Pod上使用的特定key:value对,可以确保仅KibanaPod能够在该节点上运行.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
使用以下命令,将污点添加到要在其上调度KibanaPod的节点:$ocadmtaintnodes=:例如:$ocadmtaintnodesnode1kibana=node:NoExecute本例在node1上放置一个键为kibana且值为node的污点,污点效果是NoExecute.
您必须使用NoExecute污点设置.
NoExecute仅调度与污点匹配的Pod,并删除不匹配的现有Pod.
2.
编辑集群日志记录自定义资源(CR)的visualization部分,以配置KibanaPod的容忍度:指定添加到节点的键.
指定Exists运算符,以要求匹配key/value/effect参数.
指定NoExecute效果.
(可选)指定tolerationSeconds参数,以设置Pod在被逐出前可以保持绑定到节点的时长.
此容忍度与ocadmtaint命令创建的污点匹配.
具有此容限的Pod能够调度到node1上.
8.
8.
3.
使用容忍度来控制CuratorPod放置您可以通过在Pod上使用容忍度来控制CuratorPod在哪些节点上运行,并防止其他工作负载使用这些节点.
您可以通过集群日志记录自定义资源(CR)将容忍度应用到CuratorPod,并通过节点规格将污点应用到visualization:type:"kibana"kibana:tolerations:-key:"kibana"1operator:"Exists"2effect:"NoExecute"3tolerationSeconds:60004OpenShiftContainerPlatform4.
2日志日志记录记录681234您可以通过集群日志记录自定义资源(CR)将容忍度应用到CuratorPod,并通过节点规格将污点应用到节点.
节点上的污点是一个key:value对,它指示节点排斥所有不容许该污点的Pod.
通过使用没有在其他Pod上使用的特定key:value对,可以确保仅CuratorPod能够在该节点上运行.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
使用以下命令,将污点添加到要在其上调度CuratorPod的节点:$ocadmtaintnodes=:例如:$ocadmtaintnodesnode1curator=node:NoExecute本例在node1上放置一个键为curator且值为node的污点,污点效果是NoExecute.
您必须使用NoExecute污点设置.
NoExecute仅调度与污点匹配的Pod,并删除不匹配的现有Pod.
2.
编辑集群日志记录自定义资源(CR)的curation部分,以配置CuratorPod的容忍度:指定添加到节点的键.
指定Exists运算符,以要求匹配key/value/effect参数.
指定NoExecute效果.
(可选)指定tolerationSeconds参数,以设置Pod在被逐出前可以保持绑定到节点的时长.
此容忍度与ocadmtaint命令创建的污点匹配.
具有此容限的Pod能够调度到node1上.
8.
8.
4.
使用容忍度来控制日志收集器Pod放置您可以通过在Pod上使用容忍度来确保日志记录收集器Pod在哪些节点上运行,并防止其他工作负载使用这些节点.
您可以通过集群日志记录自定义资源(CR)将容忍度应用到日志记录收集器Pod,并通过节点规格将污点应用到节点.
您可以使用污点和容限来确保Pod不会因为内存和CPU问题而被驱除.
默认情况下,日志记录收集器Pod具有以下容忍度:curation:type:"curator"curator:tolerations:-key:"curator"1operator:"Exists"2effect:"NoExecute"3tolerationSeconds:60004第第8章章配置集群日志配置集群日志记录记录部署部署691234先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
使用以下命令,将污点添加到要在其上调度日志记录收集器Pod的节点:$ocadmtaintnodes=:例如:$ocadmtaintnodesnode1collector=node:NoExecute本例在node1上放置一个键为collector且值为node的污点,污点效果是NoExecute.
您必须使用NoExecute污点设置.
NoExecute仅调度与污点匹配的Pod,并删除不匹配的现有Pod.
2.
编辑集群日志记录自定义资源(CR)的collection部分,以配置日志记录收集器Pod的容忍度:指定添加到节点的键.
指定Exists运算符,以要求匹配key/value/effect参数.
指定NoExecute效果.
(可选)指定tolerationSeconds参数,以设置Pod在被逐出前可以保持绑定到节点的时长.
此容忍度与ocadmtaint命令创建的污点匹配.
具有此容限的Pod能够调度到node1上.
8.
8.
5.
其他资源如需有关污点和容忍度的更多信息,请参见使用节点污点控制Pod位置.
8.
9.
将OPENSHIFTCONTAINERPLATFORM日志发送到外部设备您可以将Elasticsearch日志发送到外部设备,如外部托管的Elasticsearch实例或外部syslog服务器.
还tolerations:-key:"node-role.
kubernetes.
io/master"operator:"Exists"effect:"NoExecute"collection:logs:type:"fluentd"rsyslog:tolerations:-key:"collector"1operator:"Exists"2effect:"NoExecute"3tolerationSeconds:60004OpenShiftContainerPlatform4.
2日志日志记录记录70您可以将Elasticsearch日志发送到外部设备,如外部托管的Elasticsearch实例或外部syslog服务器.
还可以配置Fluentd,使其将日志发送到外部日志聚合器.
注意注意除非另有说明,否则在执行这些配置之前,必须将集群日志记录设置为非受管状态.
如需更多信息,请参阅更改集群日志记录管理状态.
8.
9.
1.
配置日志收集器以将日志发送到外部Elasticsearch实例日志收集器将日志发送到Elasticsearch部署配置的ES_HOST、ES_PORT、OPS_HOST和OPS_PORT环境变量的值.
应用程序日志定向到ES_HOST目的地,操作日志则定向到OPS_HOST.
注意注意不支持将日志直接发送到AWSElasticsearch实例.
使用FluentdSecureForward将日志定向到由您控制并且配置了fluent-plugin-aws-Elasticsearch-service插件的Fluentd实例.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
将集群日志记录设置为非受管状态.
流程流程将日志定向到特定的Elasticsearch实例:1.
在openshift-logging项目中编辑fluentdDaemonSet.
$oceditds/fluentdspec:template:spec:containers:env:-name:ES_HOSTvalue:elasticsearch-name:ES_PORTvalue:'9200'-name:ES_CLIENT_CERTvalue:/etc/fluent/keys/app-cert-name:ES_CLIENT_KEYvalue:/etc/fluent/keys/app-key-name:ES_CAvalue:/etc/fluent/keys/app-ca-name:OPS_HOSTvalue:elasticsearch-name:OPS_PORTvalue:'9200'-name:OPS_CLIENT_CERTvalue:/etc/fluent/keys/infra-cert-name:OPS_CLIENT_KEY第第8章章配置集群日志配置集群日志记录记录部署部署7112.
将ES_HOST和OPS_HOST设为相同的目的地,同时确保ES_PORT和OPS_PORT也具有相同的值,使外部Elasticsearch实例同时包含应用程序日志和操作日志.
3.
为TLS配置外部托管的Elasticsearch实例.
仅允许使用相互TLS的外部托管Elasticsearch实例.
注意注意如果不使用提供的Kibana和Elasticsearch镜像,您将没有同样的多租户功能,您的数据也不会由用户访问权限限制到特定的项目.
8.
9.
2.
配置日志收集器以将日志发送到外部syslog服务器在主机上使用fluent-plugin-remote-syslog插件,将日志发送到外部syslog服务器.
先决条件先决条件将集群日志记录设置为非受管状态.
流程流程1.
在openshift-logging项目中设置fluentdDaemonSet的环境变量.
所需的远程syslog主机.
每个主机都需要.
这将建立两个目的地.
host1上的syslog服务器将在默认端口514上接收消息,host2则在端口5555上接收相同的消息.
2.
或者,您可以在openshift-logging项目中自行配置自定义fluentdDaemonSet.
Fluentd环环境境变变量量参数参数描述描述USE_REMOTE_SYSLOG默认值为false.
设置为true可启用fluent-plugin-remote-sysloggemvalue:/etc/fluent/keys/infra-key-name:OPS_CAvalue:/etc/fluent/keys/infra-caspec:template:spec:containers:-name:fluentdimage:'registry.
redhat.
io/openshift4/ose-logging-fluentd:v4.
2'env:-name:REMOTE_SYSLOG_HOST1value:host1-name:REMOTE_SYSLOG_HOST_BACKUPvalue:host2-name:REMOTE_SYSLOG_PORT_BACKUPvalue:5555OpenShiftContainerPlatform4.
2日志日志记录记录72REMOTE_SYSLOG_HOST(必需)远程syslog服务器的主机名或IP地址.
REMOTE_SYSLOG_PORT要连接的端口号.
默认值为514.
REMOTE_SYSLOG_SEVERITY设置syslog严重性级别.
默认值为debug.
REMOTE_SYSLOG_FACILITY设置syslog工具.
默认值为local0.
REMOTE_SYSLOG_USE_RECORD默认值为false.
设置为true可使用记录的严重性和工具字段对syslog消息进行设置.
REMOTE_SYSLOG_REMOVE_TAG_PREFIX从标签中删除前缀,默认为''(空白).
REMOTE_SYSLOG_TAG_KEY如果指定,则使用此字段作为要在记录上查看的键,以对syslog消息设置标签.
REMOTE_SYSLOG_PAYLOAD_KEY如果指定,则使用此字段作为要在记录上查看的键,以对syslog消息设置有效负载.
REMOTE_SYSLOG_TYPE设置传输层协议类型.
默认为syslog_buffered,它设定TCP协议.
要切换到UDP,请将其设定为syslog.
参数参数描述描述警告警告这种实施是不安全的,应当仅在能保证不嗅探连接的环境中使用.
8.
9.
3.
配置Fluentd将日志发送到外部日志聚合器您可以使用out_forward插件,将Fluentd配置为将其日志的副本发送到外部日志聚合器,而不是默认的Elasticsearch.
在本地托管的Fluentd处理日志记录之后,您可以从那里进一步处理日志记录.
forward插件仅被Fluentd支持.
out_forward插件实现客户端(发送方),in_forward实现服务器端(接收方).
要将OpenShiftContainerPlatform配置为使用out_forward来发送日志,在openshift-logging命名空间内创建一个名为secure-forward的ConfigMap来指向一个接收器.
在接收器上,配置in_forward插件来接收来自OpenShiftContainerPlatform的日志.
有关使用in_forward插件的详情,请参考Fluentd文档.
第第8章章配置集群日志配置集群日志记录记录部署部署73默默认认secure-forward.
conf部分部分流程流程将Fluentd日志的副本发送到外部日志聚合器:1.
编辑Fluentd配置映射的secure-forward.
conf部分:$oceditconfigmap/fluentd-nopenshift-logging2.
输入外部Fluentd服务器的名称、主机和端口.
##@typeforward##self_hostname${hostname}#${hostname}isaplaceholder.
#shared_key##transporttls#tls_verify_hostnametrue#Setfalsetoignoreservercerthostname.
#tls_cert_path/path/for/certificate/ca_cert.
pem##@typefile#path'/var/lib/fluentd/forward'#queued_chunks_limit_size"#{ENV['BUFFER_QUEUE_LIMIT']||'1024'}"#chunk_limit_size"#{ENV['BUFFER_SIZE_LIMIT']||'1m'}"#flush_interval"#{ENV['FORWARD_FLUSH_INTERVAL']||'5s'}"#flush_at_shutdown"#{ENV['FLUSH_AT_SHUTDOWN']||'false'}"#flush_thread_count"#{ENV['FLUSH_THREAD_COUNT']||2}"#retry_max_interval"#{ENV['FORWARD_RETRY_WAIT']||'300'}"#retry_forevertrue##thesystemdjournald0.
0.
8inputpluginwilljustthrowawayrecordsifthebuffer##queuelimitishit-'block'willhaltfurtherreadsandkeepretryingtoflushthe##buffertotheremote-defaultis'exception'becausein_tailhandlesthatcase#overflow_action"#{ENV['BUFFER_QUEUE_FULL_ACTION']||'exception'}"###hostserver.
fqdn.
example.
com#orIP#port24284###host203.
0.
113.
8#ipaddresstoconnect#nameserver.
fqdn.
example.
com#Thenameoftheserver.
UsedforloggingandcertificateverificationinTLStransport(whenhostisaddress).
####hostserver.
fqdn.
example.
com#orIP#port24284###host203.
0.
113.
8#ipaddresstoconnectOpenShiftContainerPlatform4.
2日志日志记录记录741234123例如:(可选),为这个外部集合器输入一个名称.
指定外部集合器的主机名或IP.
指定外部聚合器的端口.
另外,还可添加额外的外部聚合器.
3.
将您的CA证书和私钥的路径添加到secure-forward.
conf部分:指定自动生成的证书通用名称(CN)的默认值.
指定一个用于验证的共享密钥.
指定CA证书的路径.
例如:要使用mTLS,请参阅Fluentd文档来获取有关客户端证书和密钥参数及其他设置的信息.
4.
将用于secure-forward.
conf的证书添加到FluentdPod上挂载的现有secret#nameserver.
fqdn.
example.
com#Thenameoftheserver.
UsedforloggingandcertificateverificationinTLStransport(whenhostisaddress).
#nameexternalserver11host192.
168.
1.
12port2422434nameexternalserver1host192.
168.
1.
2port24224##self_hostname${hostname}#${hostname}isaplaceholder.
1#shared_key2##tls_cert_path/path/for/certificate/ca_cert.
pem3self_hostnameclient.
fqdn.
localshared_keycluster_logging_keytls_cert_path/etc/fluent/keys/ca.
crt第第8章章配置集群日志配置集群日志记录记录部署部署754.
将用于secure-forward.
conf的证书添加到FluentdPod上挂载的现有secret中.
your_ca_cert和your_private_key值必须与configmap/fluentd的secure-forward.
conf中指定的值匹配:$ocpatchsecrets/fluentd--type=json\--patch"[{'op':'add','path':'/data/your_ca_cert','value':'$(base64-w0/path/to/your_ca_cert.
pem)'}]"$ocpatchsecrets/fluentd--type=json\--patch"[{'op':'add','path':'/data/your_private_key','value':'$(base64-w0/path/to/your_private_key.
pem)'}]"注意注意将your_private_key替换为一个通用名称.
这个链接指向JSON路径,而不是主机系统上的路径.
例如:$ocpatchsecrets/fluentd--type=json\--patch"[{'op':'add','path':'/data/ca.
crt','value':'$(base64-w0/etc/fluent/keys/ca.
crt)'}]"$ocpatchsecrets/fluentd--type=json\--patch"[{'op':'add','path':'/data/ext-agg','value':'$(base64-w0/etc/fluent/keys/ext-agg.
pem)'}]"5.
在外部聚合器上配置secure-forward.
conf文件,以安全地接受来自Fluentd的信息.
配置外部聚合器时,它必须能够安全地接受来自Fluentd的消息.
您可以参阅如何设置inforward插件及out_forward插件.
8.
10.
配置SYSTEMD-JOURNALD和FLUENTDFluentd需要从日志(journal)中读取数据.
因为日志默认设置非常低,它可能无法跟上系统服务的日志记录率,所以日志条目可能会丢失.
我们推荐设置RateLimitInterval=1s和RateLimitBurst=10000(如有必要甚至更高)以防止日志丢失条目.
8.
10.
1.
为集群日志记录配置systemd-journald随着项目的扩展,默认的日志记录环境可能需要进行一些调整.
例如,如果有缺少日志数据的情况,则可能需要提高journald的速率限制.
您可以调整在指定时间段内保留的消息数量,以确保集群日志记录在不丢弃日志的情况下不会使用过量资源.
您还可以确定是否压缩日志、日志需要保留的时间、如何存储日志,以及其他设置.
流程流程1.
使用所需设置创建journald.
conf文件:Compress=no1ForwardToConsole=yes2ForwardToSyslog=no3OpenShiftContainerPlatform4.
2日志日志记录记录761234567891011MaxRetentionSec=304RateLimitBurst=100005RateLimitInterval=1s6Storage=volatile7SyncIntervalSec=1s8SystemMaxUse=8g9SystemKeepFree=20%10SystemMaxFileSize10M11指定是否要在将日志写入文件系统前压缩日志.
指定yes来压缩消息,或指定no不压缩信息.
默认为yes.
配置是否转发日志信息.
每个默认值为no.
指定:ForwardToConsole将日志转发到系统控制台.
ForwardToKsmg将日志转发到内核日志缓冲.
ForwardToSyslog将日志转发到syslog守护进程.
ForwardToWall将信息作为墙信息转发给所有登录的用户.
指定存储日志条目的最长时间.
输入秒数.
或包括一个单位:"year"、"month"、"week"、"day"、"h"或"m".
输入0来禁用.
默认值为1month.
配置速率限制.
在RateLimitIntervalSec定义的时间段内,如果接收的日志数量超过了RateLimitBurst指定的值,则以后的所有信息都会被丢弃,直到该时间段结束.
建议您设置RateLimitInterval=1s和RateLimitBurst=10000,它们是默认值.
指定日志的存储方式.
默认为persistent:volatile在/var/log/journal/中存储内存中的日志数据.
persistent把日志保存到磁盘的/var/log/journal/.
如果这个目录步存在,systemd将会创建这个目录.
auto如果目录存在,把日志保存在/var/log/journal/中.
如果不存在,systemd会临时将日志保存在/run/systemd/journal中.
none不存储日志.
systemd丢弃所有日志.
指定在将ERR,WARNING,NOTICE,INFO和DEBUG日志同步到磁盘上前等待的超时时间.
systemd在接收到CRIT,ALERT或EMERG日志后会立即进行同步.
默认值为1s.
指定日志可以使用的最大值.
默认值为8g.
指定systemd必须保留多少磁盘空间.
默认值为20%.
指定保存在/var/log/journal中的独立日志文件的最大大小.
默认值为10M.
注意注意如果删除速率限制,您可能会看到系统日志记录守护进程的CPU使用率增加,因为它需要处理在以前可以被限制掉的信息.
如需了解更多关于systemd设置的信息,请参阅第第8章章配置集群日志配置集群日志记录记录部署部署7712如需了解更多关于systemd设置的信息,请参阅https://www.
freedesktop.
org/software/systemd/man/journald.
conf.
html.
该页面中列出的默认设置可能不适用于OpenShiftContainerPlatform.
2.
将journal.
conf文件转换为base64:$exportjrnl_cnf=$(cat/journald.
conf|base64-w0)3.
为master或worker创建新的MachineConfig,并添加journal.
conf参数:例如:为journal.
conf文件设置权限.
建议把选项设置为0644.
指定到base64编码的journal.
conf文件的路径.
4.
创建MachineConfig:$ocapply-f.
yaml控制器会检测新的MachineConfig,并生成新的rendered-worker-版本.
5.
监控新配置在每个节点中的应用状态:$ocdescribemachineconfigpool/workerName:workerNamespace:Labels:machineconfiguration.
openshift.
io/mco-built-in=Annotations:APIVersion:machineconfiguration.
openshift.
io/v1Kind:MachineConfigPool.
.
.
Conditions:Message:Reason:Allnodesareupdatingtorendered-worker-913514517bcea7c93bd446f4830bc64e.
.
.
config:storage:files:-contents:source:data:text/plain;charset=utf-8;base64,${jrnl_cnf}verification:{}filesystem:rootmode:06441path:/etc/systemd/journald.
conf2systemd:{}OpenShiftContainerPlatform4.
2日志日志记录记录78第9章查看ELASTICSEARCH状态您可以查看ElasticsearchOperator的状态,以及多个Elasticsearch组件的状态.
9.
1.
查看ELASTICSEARCH状态您可以查看Elasticsearch集群的状态.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
进入openshift-logging项目.
$ocprojectopenshift-logging2.
查看Elasticsearch集群状态:a.
获取Elasticsearch实例的名称:$ocgetElasticsearchNAMEAGEelasticsearch5h9mb.
获取Elasticsearch状态:$ocgetElasticsearch-oyaml例如:$ocgetElasticsearchelasticsearch-nopenshift-logging-oyaml输出中包含类似于如下的信息:status:1cluster:2activePrimaryShards:30activeShards:60initializingShards:0numDataNodes:3numNodes:3pendingTasks:0relocatingShards:0status:greenunassignedShards:0clusterHealth:""conditions:[]3nodes:4-deploymentName:elasticsearch-cdm-zjf34ved-1upgradeStatus:{}第第9章章查查看看ELASTICSEARCH状状态态79123-deploymentName:elasticsearch-cdm-zjf34ved-2upgradeStatus:{}-deploymentName:elasticsearch-cdm-zjf34ved-3upgradeStatus:{}pods:5client:failed:[]notReady:[]ready:-elasticsearch-cdm-zjf34ved-1-6d7fbf844f-sn422-elasticsearch-cdm-zjf34ved-2-dfbd988bc-qkzjz-elasticsearch-cdm-zjf34ved-3-c8f566f7c-t7zktdata:failed:[]notReady:[]ready:-elasticsearch-cdm-zjf34ved-1-6d7fbf844f-sn422-elasticsearch-cdm-zjf34ved-2-dfbd988bc-qkzjz-elasticsearch-cdm-zjf34ved-3-c8f566f7c-t7zktmaster:failed:[]notReady:[]ready:-elasticsearch-cdm-zjf34ved-1-6d7fbf844f-sn422-elasticsearch-cdm-zjf34ved-2-dfbd988bc-qkzjz-elasticsearch-cdm-zjf34ved-3-c8f566f7c-t7zktshardAllocationEnabled:all在输出中,集群状态字段显示在status小节中.
Elasticsearch集群的状态:活跃的主分片的数量.
活跃分片的数量.
正在初始化的分片的数量.
Elasticsearch数据节点的数量.
Elasticsearch节点的总数.
待处理的任务数量.
Elasticsearch状态:green、red或yellow.
未分配分片的数量.
任何状态条件(若存在).
Elasticsearch集群状态代表了当无法放置容器时来自于调度程序的原因.
显示与以下情况有关的所有事件:容器正在等待Elasticsearch和代理容器.
容器因Elasticsearch和代理容器而终止.
Pod不可调度.
此外还显示适用于多个问题的情况,具体请参阅情况消息示例情况消息示例.
OpenShiftContainerPlatform4.
2日志日志记录记录8045集群中的Elasticsearch节点,以及upgradeStatus.
集群中的Elasticsearch客户端、数据和master节点,列在failed、notReady或ready状态下.
9.
1.
1.
情况消息示例以下是来自Elasticsearch实例的Status部分的一些情况消息的示例.
此状态消息表示节点已超过配置的低水位线,并且没有分片将分配给此节点.
status:nodes:-conditions:-lastTransitionTime:2019-03-15T15:57:22Zmessage:Diskstorageusagefornodeis27.
5gb(36.
74%).
Shardswillbenotbeallocatedonthisnode.
reason:DiskWatermarkLowstatus:"True"type:NodeStoragedeploymentName:example-elasticsearch-cdm-0-1upgradeStatus:{}此状态消息表示节点已超过配置的高水位线,并且分片将重新定位到其他节点.
status:nodes:-conditions:-lastTransitionTime:2019-03-15T16:04:45Zmessage:Diskstorageusagefornodeis27.
5gb(36.
74%).
Shardswillberelocatedfromthisnode.
reason:DiskWatermarkHighstatus:"True"type:NodeStoragedeploymentName:example-elasticsearch-cdm-0-1upgradeStatus:{}此状态消息表示CR中的Elasticsearch节点选择器与集群中的任何节点都不匹配:status:nodes:-conditions:-lastTransitionTime:2019-04-10T02:26:24Zmessage:'0/8nodesareavailable:8node(s)didn''tmatchnodeselector.
'reason:Unschedulablestatus:"True"type:Unschedulable此状态消息表示ElasticsearchCR使用了不存在的PVC.
status:nodes:-conditions:第第9章章查查看看ELASTICSEARCH状状态态81-lastTransitionTime:2019-04-10T05:55:51Zmessage:podhasunboundimmediatePersistentVolumeClaims(repeated5times)reason:Unschedulablestatus:Truetype:Unschedulable此状态消息表示Elasticsearch集群没有足够的节点来支持Elasticsearch冗余策略.
status:clusterHealth:""conditions:-lastTransitionTime:2019-04-17T20:01:31Zmessage:WrongRedundancyPolicyselected.
ChoosedifferentRedundancyPolicyoraddmorenodeswithdatarolesreason:InvalidSettingsstatus:"True"type:InvalidRedundancy此状态消息表示集群中包含太多master节点:status:clusterHealth:greenconditions:-lastTransitionTime:'2019-04-17T20:12:34Z'message:>-Invalidmasternodescount.
Pleaseensuretherearenomorethan3totalnodeswithmasterrolesreason:InvalidSettingsstatus:'True'type:InvalidMasters9.
2.
查看ELASTICSEARCH组件状态您可以查看多个Elasticsearch组件的状态.
Elasticsearch索引索引您可以查看Elasticsearch索引的状态.
1.
获取ElasticsearchPod的名称:$ocgetpods--selectorcomponent=elasticsearch-onamepod/elasticsearch-cdm-1godmszn-1-6f8495-vp4lwpod/elasticsearch-cdm-1godmszn-2-5769cf-9ms2npod/elasticsearch-cdm-1godmszn-3-f66f7d-zqkz72.
获取索引的状态:$ocexecelasticsearch-cdm-1godmszn-1-6f8495-vp4lw--indicesDefaultingcontainernametoelasticsearch.
Use'ocdescribepod/elasticsearch-cdm-1godmszn-1-6f8495-vp4lw-nopenshift-logging'toseeallofthecontainersinthispod.
WedApr1005:42:12UTC2019OpenShiftContainerPlatform4.
2日志日志记录记录82healthstatusindexuuidprirepdocs.
countdocs.
deletedstore.
sizepri.
store.
sizeredopen.
kibana.
647a750f1787408bf50088234ec0edd5a6a9b2acN7iCbRjSSc2bGhn8Cpc7Jg21greenopen.
operations.
2019.
04.
10GTewEJEzQjaus9QjvBBnGg312176114039291956greenopen.
operations.
2019.
04.
11ausZHoKxTNOoBvv9RlXfrw311494624029471475greenopen.
kibana9Fltn1D0QHSnFMXpphZ--Q111000greenopen.
searchguardchOwDnQlSsqhfSPcot1Yiw115100ElasticsearchPod您可以查看ElasticsearchPod的状态.
1.
获取Pod的名称:$ocgetpods--selectorcomponent=elasticsearch-onamepod/elasticsearch-cdm-1godmszn-1-6f8495-vp4lwpod/elasticsearch-cdm-1godmszn-2-5769cf-9ms2npod/elasticsearch-cdm-1godmszn-3-f66f7d-zqkz72.
获取Pod的状态:ocdescribepodelasticsearch-cdm-1godmszn-1-6f8495-vp4lw输出中包括以下状态信息:.
.
.
.
Status:Running.
.
.
.
Containers:elasticsearch:ContainerID:cri-o://b7d44e0a9ea486e27f47763f5bb4c39dfd2State:RunningStarted:Mon,08Apr201910:17:56-0400Ready:TrueRestartCount:0Readiness:exec[/usr/share/elasticsearch/probe/readiness.
sh]delay=10stimeout=30speriod=5s#success=1#failure=3.
.
.
.
proxy:ContainerID:cri-o://3f77032abaddbb1652c116278652908dc01860320b8a4e741d06894b2f8f9aa1State:RunningStarted:Mon,08Apr201910:18:38-0400Ready:TrueRestartCount:0第第9章章查查看看ELASTICSEARCH状状态态83.
.
.
.
Conditions:TypeStatusInitializedTrueReadyTrueContainersReadyTruePodScheduledTrue.
.
.
.
Events:Elasticsearch部署配置部署配置您可以查看Elasticsearch部署配置的状态.
1.
获取部署配置的名称:$ocgetdeployment--selectorcomponent=elasticsearch-onamedeployment.
extensions/elasticsearch-cdm-1gon-1deployment.
extensions/elasticsearch-cdm-1gon-2deployment.
extensions/elasticsearch-cdm-1gon-32.
获取部署配置状态:$ocdescribedeploymentelasticsearch-cdm-1gon-1输出中包括以下状态信息:.
.
.
.
Containers:elasticsearch:Image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2Readiness:exec[/usr/share/elasticsearch/probe/readiness.
sh]delay=10stimeout=30speriod=5s#success=1#failure=3.
.
.
.
Conditions:TypeStatusReasonProgressingUnknownDeploymentPausedAvailableTrueMinimumReplicasAvailable.
.
.
.
Events:ElasticsearchReplicaSet您可以查看ElasticsearchReplicaSet的状态.
1.
获取副本集的名称:OpenShiftContainerPlatform4.
2日志日志记录记录84$ocgetreplicaSet--selectorcomponent=elasticsearch-onamereplicaset.
extensions/elasticsearch-cdm-1gon-1-6f8495replicaset.
extensions/elasticsearch-cdm-1gon-2-5769cfreplicaset.
extensions/elasticsearch-cdm-1gon-3-f66f7d2.
获取副本集的状态:$ocdescribereplicaSetelasticsearch-cdm-1gon-1-6f8495输出中包括以下状态信息:.
.
.
.
Containers:elasticsearch:Image:registry.
redhat.
io/openshift4/ose-logging-elasticsearch5:v4.
2Readiness:exec[/usr/share/elasticsearch/probe/readiness.
sh]delay=10stimeout=30speriod=5s#success=1#failure=3.
.
.
.
Events:第第9章章查查看看ELASTICSEARCH状状态态85第10章查看集群日志记录状态您可以查看ClusterLoggingOperator的状态以及多个集群日志记录组件的状态.
10.
1.
查看CLUSTERLOGGINGOPERATOR的状态您可以查看ClusterLoggingOperator的状态.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
进入openshift-logging项目.
$ocprojectopenshift-logging2.
查看集群日志记录状态:a.
获取集群日志记录状态:$ocgetclusterlogginginstance-oyaml输出中包含类似于如下的信息:apiVersion:logging.
openshift.
io/v1kind:ClusterLogging.
.
.
.
status:1collection:logs:fluentdStatus:daemonSet:fluentd2nodes:fluentd-2rhqp:ip-10-0-169-13.
ec2.
internalfluentd-6fgjh:ip-10-0-165-244.
ec2.
internalfluentd-6l2ff:ip-10-0-128-218.
ec2.
internalfluentd-54nx5:ip-10-0-139-30.
ec2.
internalfluentd-flpnn:ip-10-0-147-228.
ec2.
internalfluentd-n2frh:ip-10-0-157-45.
ec2.
internalpods:failed:[]notReady:[]ready:-fluentd-2rhqp-fluentd-54nx5-fluentd-6fgjh-fluentd-6l2ff-fluentd-flpnn-fluentd-n2frhcuration:3OpenShiftContainerPlatform4.
2日志日志记录记录861234curatorStatus:-cronJobs:curatorschedules:303***suspended:falselogstore:4elasticsearchStatus:-ShardAllocationEnabled:allcluster:activePrimaryShards:5activeShards:5initializingShards:0numDataNodes:1numNodes:1pendingTasks:0relocatingShards:0status:greenunassignedShards:0clusterName:elasticsearchnodeConditions:elasticsearch-cdm-mkkdys93-1:nodeCount:1pods:client:failed:notReady:ready:-elasticsearch-cdm-mkkdys93-1-7f7c6-mjm7cdata:failed:notReady:ready:-elasticsearch-cdm-mkkdys93-1-7f7c6-mjm7cmaster:failed:notReady:ready:-elasticsearch-cdm-mkkdys93-1-7f7c6-mjm7cvisualization:5kibanaStatus:-deployment:kibanapods:failed:[]notReady:[]ready:-kibana-7fb4fd4cc9-f2nlsreplicaSets:-kibana-7fb4fd4cc9replicas:1在输出中,集群状态字段显示在status小节中.
FluentdPod的相关信息.
CuratorPod的相关信息.
ElasticsearchPod的相关信息,包括Elasticsearch集群健康状态green、yellow或red.
第第10章章查查看集群日志看集群日志记录记录状状态态875red.
KibanaPod的相关信息.
10.
1.
1.
情况消息示例以下示例是来自集群日志记录实例的Status.
Nodes部分的一些情况消息.
类似于以下内容的状态消息表示节点已超过配置的低水位线,并且没有分片将分配给此节点:nodes:-conditions:-lastTransitionTime:2019-03-15T15:57:22Zmessage:Diskstorageusagefornodeis27.
5gb(36.
74%).
Shardswillbenotbeallocatedonthisnode.
reason:DiskWatermarkLowstatus:"True"type:NodeStoragedeploymentName:example-elasticsearch-clientdatamaster-0-1upgradeStatus:{}类似于以下内容的状态消息表示节点已超过配置的高水位线,并且分片将重新定位到其他节点:nodes:-conditions:-lastTransitionTime:2019-03-15T16:04:45Zmessage:Diskstorageusagefornodeis27.
5gb(36.
74%).
Shardswillberelocatedfromthisnode.
reason:DiskWatermarkHighstatus:"True"type:NodeStoragedeploymentName:cluster-logging-operatorupgradeStatus:{}类似于以下内容的状态消息表示CR中的Elasticsearch节点选择器与集群中的任何节点都不匹配:ElasticsearchStatus:ShardAllocationEnabled:shardallocationunknownCluster:ActivePrimaryShards:0ActiveShards:0InitializingShards:0NumDataNodes:0NumNodes:0PendingTasks:0RelocatingShards:0Status:clusterhealthunknownUnassignedShards:0ClusterName:elasticsearchNodeConditions:elasticsearch-cdm-mkkdys93-1:LastTransitionTime:2019-06-26T03:37:32ZMessage:0/5nodesareavailable:5node(s)didn'tmatchnodeselector.
Reason:UnschedulableOpenShiftContainerPlatform4.
2日志日志记录记录88Status:TrueType:Unschedulableelasticsearch-cdm-mkkdys93-2:NodeCount:2Pods:Client:Failed:NotReady:elasticsearch-cdm-mkkdys93-1-75dd69dccd-f7f49elasticsearch-cdm-mkkdys93-2-67c64f5f4c-n58vlReady:Data:Failed:NotReady:elasticsearch-cdm-mkkdys93-1-75dd69dccd-f7f49elasticsearch-cdm-mkkdys93-2-67c64f5f4c-n58vlReady:Master:Failed:NotReady:elasticsearch-cdm-mkkdys93-1-75dd69dccd-f7f49elasticsearch-cdm-mkkdys93-2-67c64f5f4c-n58vlReady:类似于以下内容的状态消息表示请求的PVC无法绑定到PV:NodeConditions:elasticsearch-cdm-mkkdys93-1:LastTransitionTime:2019-06-26T03:37:32ZMessage:podhasunboundimmediatePersistentVolumeClaims(repeated5times)Reason:UnschedulableStatus:TrueType:Unschedulable类似于以下内容的状态消息表示无法调度CuratorPod,因为节点选择器与任何节点都不匹配:Curation:CuratorStatus:ClusterCondition:curator-1561518900-cjx8d:LastTransitionTime:2019-06-26T03:20:08ZReason:CompletedStatus:TrueType:ContainerTerminatedcurator-1561519200-zqxxj:LastTransitionTime:2019-06-26T03:20:01ZMessage:0/5nodesareavailable:1Insufficientcpu,5node(s)didn'tmatchnodeselector.
Reason:UnschedulableStatus:TrueType:UnschedulableCronJobs:curatorSchedules:*/5****Suspended:false第第10章章查查看集群日志看集群日志记录记录状状态态89类似于以下内容的状态消息表示无法调度FluentdPod,因为节点选择器与任何节点都不匹配:Status:Collection:Logs:FluentdStatus:DaemonSet:fluentdNodes:Pods:Failed:NotReady:Ready:10.
2.
查看集群日志记录组件的状态您可以查看多个集群日志记录组件的状态.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程1.
进入openshift-logging项目.
$ocprojectopenshift-logging2.
查看集群日志记录部署的状态:$ocdescribedeploymentcluster-logging-operator输出中包括以下状态信息:Name:cluster-logging-operator.
.
.
.
Conditions:TypeStatusReasonAvailableTrueMinimumReplicasAvailableProgressingTrueNewReplicaSetAvailable.
.
.
.
Events:TypeReasonAgeFromMessageNormalScalingReplicaSet62mdeployment-controllerScaledupreplicasetcluster-logging-operator-574b8987dfto1----3.
查看集群日志记录ReplicaSet的状态:OpenShiftContainerPlatform4.
2日志日志记录记录90a.
获取ReplicaSet的名称:$ocgetreplicasetNAMEDESIREDCURRENTREADYAGEcluster-logging-operator-574b8987df111159melasticsearch-cdm-uhr537yu-1-6869694fb111157melasticsearch-cdm-uhr537yu-2-857b6d676f111156melasticsearch-cdm-uhr537yu-3-5b6fdd8cfd111155mkibana-5bd5544f87111157mb.
获取ReplicaSet的状态:$ocdescribereplicasetcluster-logging-operator-574b8987df输出中包括以下状态信息:Name:cluster-logging-operator-574b8987df.
.
.
.
Replicas:1current/1desiredPodsStatus:1Running/0Waiting/0Succeeded/0Failed.
.
.
.
Events:TypeReasonAgeFromMessageNormalSuccessfulCreate66mreplicaset-controllerCreatedpod:cluster-logging-operator-574b8987df-qjhqv----第第10章章查查看集群日志看集群日志记录记录状状态态91第11章使用节点选择器移动集群日志记录资源您可以使用节点选择器,将Elasticsearch、Kibana和CuratorPod部署到不同的节点上.
11.
1.
移动集群日志记录资源您可以配置ClusterLoggingOperator,以将任何或所有ClusterLogging组件、Elasticsearch、Kibana和Curator的Pod部署到不同的节点上.
您无法将ClusterLoggingOperatorPod从其安装位置移走.
例如,您可以因为CPU、内存和磁盘要求较高而将ElasticsearchPod移到一个单独的节点上.
注意注意您应该将MachineSet设置为至少使用6个副本.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
默认情况下没有安装这些功能.
流程流程1.
编辑openshift-logging项目中的集群日志记录自定义资源:$oceditClusterLogginginstanceapiVersion:logging.
openshift.
io/v1kind:ClusterLogging.
.
.
.
spec:collection:logs:fluentd:resources:nulltype:fluentdcuration:curator:nodeSelector:1node-role.
kubernetes.
io/infra:''resources:nullschedule:303***type:curatorlogStore:elasticsearch:nodeCount:3nodeSelector:2node-role.
kubernetes.
io/infra:''redundancyPolicy:SingleRedundancyresources:limits:cpu:500mmemory:16Girequests:OpenShiftContainerPlatform4.
2日志日志记录记录921234cpu:500mmemory:16Gistorage:{}type:elasticsearchmanagementState:Managedvisualization:kibana:nodeSelector:3node-role.
kubernetes.
io/infra:''4proxy:resources:nullreplicas:1resources:nulltype:kibana.
.
.
.
添加nodeSelector参数,并设为适用于您想要移动的组件的值.
您可以根据为节点指定的值,按所示格式使用nodeSelector或使用:对.
验证验证步步骤骤要验证组件是否已移动,您可以使用ocgetpod-owide命令.
例如:您需要移动来自ip-10-0-147-79.
us-east-2.
compute.
internal节点上的Kibanapod:$ocgetpodkibana-5b8bdf44f9-ccpq9-owideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATEDNODEREADINESSGATESkibana-5b8bdf44f9-ccpq92/2Running027s10.
129.
2.
18ip-10-0-147-79.
us-east-2.
compute.
internal您需要将KibanaPod移到ip-10-0-139-48.
us-east-2.
compute.
internal节点,该节点是一个专用的基础架构节点:$ocgetnodesNAMESTATUSROLESAGEVERSIONip-10-0-133-216.
us-east-2.
compute.
internalReadymaster60mv1.
16.
2ip-10-0-139-146.
us-east-2.
compute.
internalReadymaster60mv1.
16.
2ip-10-0-139-192.
us-east-2.
compute.
internalReadyworker51mv1.
16.
2ip-10-0-139-241.
us-east-2.
compute.
internalReadyworker51mv1.
16.
2ip-10-0-147-79.
us-east-2.
compute.
internalReadyworker51mv1.
16.
2ip-10-0-152-241.
us-east-2.
compute.
internalReadymaster60mv1.
16.
2ip-10-0-139-48.
us-east-2.
compute.
internalReadyinfra51mv1.
16.
2请注意,该节点具有node-role.
kubernetes.
io/infra:"label:$ocgetnodeip-10-0-139-48.
us-east-2.
compute.
internal-oyamlkind:NodeapiVersion:v1metadata:第第11章章使用使用节节点点选择选择器移器移动动集群日志集群日志记录资记录资源源9312name:ip-10-0-139-48.
us-east-2.
compute.
internalselfLink:/api/v1/nodes/ip-10-0-139-48.
us-east-2.
compute.
internaluid:62038aa9-661f-41d7-ba93-b5f1b6ef8751resourceVersion:'39083'creationTimestamp:'2020-04-13T19:07:55Z'labels:node-role.
kubernetes.
io/infra:''.
.
.
.
要移动KibanaPod,请编辑集群日志记录CR以添加节点选择器:apiVersion:logging.
openshift.
io/v1kind:ClusterLogging.
.
.
.
spec:.
.
.
.
visualization:kibana:nodeSelector:1node-role.
kubernetes.
io/infra:''2proxy:resources:nullreplicas:1resources:nulltype:kibana添加节点选择器以匹配节点规格中的label.
保存CR后,当前KibanaPod将被终止,新的Pod会被部署:$ocgetpodsNAMEREADYSTATUSRESTARTSAGEcluster-logging-operator-84d98649c4-zb9g71/1Running029melasticsearch-cdm-hwv01pf7-1-56588f554f-kpmlg2/2Running028melasticsearch-cdm-hwv01pf7-2-84c877d75d-75wqj2/2Running028melasticsearch-cdm-hwv01pf7-3-f5d95b87b-4nx782/2Running028mfluentd-42dzz1/1Running028mfluentd-d74rq1/1Running028mfluentd-m5vr91/1Running028mfluentd-nkxl71/1Running028mfluentd-pdvqb1/1Running028mfluentd-tflh61/1Running028mkibana-5b8bdf44f9-ccpq92/2Terminating04m11skibana-7d85dcffc8-bfpfp2/2Running033s新pod位于ip-10-0-139-48.
us-east-2.
compute.
internal节点上:$ocgetpodkibana-7d85dcffc8-bfpfp-owideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATEDNODEREADINESSGATESOpenShiftContainerPlatform4.
2日志日志记录记录94kibana-7d85dcffc8-bfpfp2/2Running043s10.
131.
0.
22ip-10-0-139-48.
us-east-2.
compute.
internal片刻后,原始KibanaPod将被删除.
$ocgetpodsNAMEREADYSTATUSRESTARTSAGEcluster-logging-operator-84d98649c4-zb9g71/1Running030melasticsearch-cdm-hwv01pf7-1-56588f554f-kpmlg2/2Running029melasticsearch-cdm-hwv01pf7-2-84c877d75d-75wqj2/2Running029melasticsearch-cdm-hwv01pf7-3-f5d95b87b-4nx782/2Running029mfluentd-42dzz1/1Running029mfluentd-d74rq1/1Running029mfluentd-m5vr91/1Running029mfluentd-nkxl71/1Running029mfluentd-pdvqb1/1Running029mfluentd-tflh61/1Running029mkibana-7d85dcffc8-bfpfp2/2Running062s第第11章章使用使用节节点点选择选择器移器移动动集群日志集群日志记录资记录资源源95第12章手动滚动部署ELASTICSEARCHOpenShiftContainerPlatform支持Elasticsearch集群滚动重启.
滚动重启可以在不需要Elasticsearch集群下线的情况下,将适用的更改应用到Elasticsearch集群(这需要已配置了三个master).
Elasticsearch集群保持联机和可运行状态,节点则逐一脱机.
12.
1.
执行ELASTICSEARCH集群滚动重启在更改elasticsearchConfigMap或任何elasticsearch-*部署配置时,执行滚动重启.
此外,如果运行ElasticsearchPod的节点需要重启,则建议滚动重启.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程执行集群滚动重启:1.
进入openshift-logging项目:$ocprojectopenshift-logging2.
使用以下命令,从Elasticsearch提取CA证书并写入到admin-ca文件:$ocextractsecret/elasticsearch--to=.
--keys=admin-caadmin-ca3.
执行分片同步刷新,确保在关机之前没有等待写入磁盘的待定操作:$ocexec-celasticsearch--curl-s--cacert/etc/elasticsearch/secret/admin-ca--cert/etc/elasticsearch/secret/admin-cert--key/etc/elasticsearch/secret/admin-key-XPOST'https://localhost:9200/_flush/synced'例如:ocexec-celasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6--curl-s--cacert/etc/elasticsearch/secret/admin-ca--cert/etc/elasticsearch/secret/admin-cert--key/etc/elasticsearch/secret/admin-key-XPOST'https://localhost:9200/_flush/synced'4.
使用OpenShiftContainerPlatformes_util工具防止在有意关闭节点时进行分片平衡:$ocexec-celasticsearch--es_util--query=_cluster/settings-XPUT'https://localhost:9200/_cluster/settings'-d'{"transient":{"cluster.
routing.
allocation.
enable":"none"}}'例如:$ocexecelasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6-celasticsearch--es_util--query=_cluster/settingspretty=true-XPUT'https://localhost:9200/_cluster/settings'-d'{"transient":{"cluster.
routing.
allocation.
enable":"none"}}'OpenShiftContainerPlatform4.
2日志日志记录记录96{"acknowledged":true,"persistent":{},"transient":{"cluster":{"routing":{"allocation":{"enable":"none"}}}}5.
完成后,会在每个部署中都有一个ES集群:a.
默认情况下,OpenShiftContainerPlatformElasticsearch集群会阻止向其节点推出部署.
使用以下命令来允许推出部署并允许Pod获取更改:$ocrolloutresumedeployment/例如:$ocrolloutresumedeployment/elasticsearch-cdm-0-1deployment.
extensions/elasticsearch-cdm-0-1resumed部署了一个新Pod.
当Pod具有就绪的容器后,就能继续进行下一部署.
$ocgetpods|grepelasticsearch-*NAMEREADYSTATUSRESTARTSAGEelasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k2/2Running022helasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj72/2Running022helasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr2/2Running022hb.
完成后,重置Pod以禁止推出部署:$ocrolloutpausedeployment/例如:$ocrolloutpausedeployment/elasticsearch-cdm-0-1deployment.
extensions/elasticsearch-cdm-0-1pausedc.
检查Elasticsearch集群是否处于green状态:$ocexec-celasticsearch--es_util--query=_cluster/healthpretty=true注意注意第第12章章手手动滚动动滚动部署部署ELASTICSEARCH971注意注意如果您对先前命令中使用的ElasticsearchPod执行了推出部署,该Pod将不再存在,并且此处需要使用新的Pod名称.
例如:$ocexecelasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6-celasticsearch--es_util--query=_cluster/healthpretty=true{"cluster_name":"elasticsearch","status":"green",1"timed_out":false,"number_of_nodes":3,"number_of_data_nodes":3,"active_primary_shards":8,"active_shards":16,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":1,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.
0}在继续操作之前,请确保此参数为green.
6.
如果更改了Elasticsearch配置映射,请对每个ElasticsearchPod重复这些步骤.
7.
推出集群的所有部署后,重新启用分片平衡:$ocexec-celasticsearch--es_util--query=_cluster/settings-XPUT'https://localhost:9200/_cluster/settings'-d'{"transient":{"cluster.
routing.
allocation.
enable":"none"}}'例如:$ocexecelasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6-celasticsearch--es_util--query=_cluster/settingspretty=true-XPUT'https://localhost:9200/_cluster/settings'-d'{"transient":{"cluster.
routing.
allocation.
enable":"all"}}'{"acknowledged":true,"persistent":{},"transient":{"cluster":{"routing":{"allocation":{"enable":"all"}}OpenShiftContainerPlatform4.
2日志日志记录记录98}}}第第12章章手手动滚动动滚动部署部署ELASTICSEARCH99第13章KIBANA故障排除将Kibana控制台与OpenShiftContainerPlatform搭配使用可能导致一些问题.
这些问题容易解决,但在出现问题时没有提供有用的错误消息.
如果在OpenShiftContainerPlatform中部署Kibana时遇到任何问题,请检查以下故障排除章节.
13.
1.
KUBERNETES登录循环故障排除Kibana控制台上的OAuth2代理必须与master主机的OAuth2服务器共享一个secret.
如果两台服务器上的secret不相同,则可能导致登录循环,造成您不断重定向到Kibana登录页面.
流程流程解决此问题的步骤:1.
运行以下命令以删除当前的OAuthClient:$ocdeleteoauthclient/kibana-proxy13.
2.
排查查看KIBANA控制台时的KUBERNETES密码错误尝试访问Kibana控制台时,您可能会收到浏览器错误:{"error":"invalid_request","error_description":"Therequestismissingarequiredparameter,includesaninvalidparametervalue,includesaparametermorethanonce,orisotherwisemalformed.
"}这可能是由OAuth2客户端与服务器之间不匹配造成的.
客户端的返回地址必须在白名单中,这样服务器才能在登录后安全地重定向回此地址.
通过替换OAuthClient条目来解决此问题.
流程流程替换OAuthClient条目:1.
运行以下命令以删除当前的OAuthClient:$ocdeleteoauthclient/kibana-proxy如果问题仍然存在,请检查您是否通过OAuth客户端中列出的URL来访问Kibana.
通过转发端口(例如1443)而非标准的443HTTPS端口访问URL可能会造成此问题.
您可以通过编辑OAuth客户端来调整服务器白名单:$oceditoauthclient/kibana-proxy13.
3.
排查查看KIBANA控制台时的KUBERNETES503错误如果在查看Kibana控制台时收到代理错误,原因可能是以下两个问题之一:Kibana可能无法识别Pod.
如果Elasticsearch启动缓慢,则Kibana可能会在尝试访问它时超时.
检查相关服务是否具有任何端点:OpenShiftContainerPlatform4.
2日志日志记录记录100$ocdescribeservicekibanaName:kibana[.
.
.
]Endpoints:如果有任何KibanaPod处于活动状态,则会列出端点.
如果没有,请检查KibanaPod和部署的状态.
您可能需要缩减部署,然后再次备份.
用于访问Kibana服务的路由已被屏蔽.
如果您在一个项目中执行测试部署,然后在另一项目中进行部署,但没有彻底删除第一个部署,可能会发生这种情况.
当多个路由发送到同一目的地时,默认路由器将仅路由到最先创建的路由.
检查有问题的路由,以查看是否在多个位置定义了该路由:$ocgetroute--all-namespaces--selectorlogging-infra=support第第13章章KIBANA故障排除故障排除101第14章导出字段这些字段由日志记录系统导出,可从Elasticsearch和Kibana搜索.
在搜索时,请使用完整的带句点字段名称.
例如,对于Elasticsearch/_searchURL,若要查找KubernetesPod名称,请使用/_search/q=kubernetes.
pod_name:name-of-my-pod.
以下小节中描述的字段可能不出现在您的日志记录存储中.
并非所有这些字段都会出现在每条记录中.
这些字段划分为如下类别:exported-fields-Defaultexported-fields-systemdexported-fields-kubernetesexported-fields-pipeline_metadataexported-fields-ovirtexported-fields-aushapeexported-fields-tlog14.
1.
默认导出的字段这些默认字段由日志记录系统导出,Elasticsearch和Kibana可从对它们进行搜索.
默认字段是顶级字段和collectd*字段顶级顶级字段字段顶级字段对于每个应用程序都是通用的,并且可能会出现在每条记录中.
对于Elasticsearch模板,顶级字段在模板的映射部分中填充default的实际映射.
参数参数描述描述@timestamp此UTC值标记日志有效负载的创建时间,如果创建时间未知,则标记首次收集日志有效负载的时间.
这是日志处理管道尽力确定何时生成日志有效负载的方法.
添加@前缀惯例,可注明字段保留给特定用途.
使用Elasticsearch时,大多数工具默认查找@timestamp.
例如,格式是2015-01-2414:06:05.
071000.
geoip这是机器的geo-ip.
hostnamehostname是生成原始有效负载的实体的完全限定域名(FQDN).
此字段尝试生成此上下文.
有时候,生成它的实体知道其上下文.
但在其他时候,实体本身具有受限的命名空间,为收集器或规范化程序所知.
ipaddr4源服务器的IPv4地址,可以是数组.
ipaddr6源服务器的IPv6地址(若有).
OpenShiftContainerPlatform4.
2日志日志记录记录102level由python的日志记录模块rsyslog(severitytext属性)提供的日志记录级别.
misc/sys/syslog.
h列出了可能的值,另外还有trace和unknown.
例如,"alertcritdebugemergerrinfonoticetraceunknownwarning".
注意trace不在syslog.
h列表中,但许多应用程序都用到它.
.
只有在日志记录系统获取了不理解的值时,才应使用unknown.
另外,还需要注意它是最高级别.
trace可以视为比debug的级别更高级且产生更详细的信息.
error已弃用,请使用err.
将panic转换为emerg.
将warn转换为warning.
通常可以使用misc/sys/syslog.
h上列出的优先级值来映射syslog/journalPRIORITY中的数值.
其他日志记录系统的日志级别和优先级应映射到最接近的匹配项.
请参阅python日志记录中的示例.
message典型的日志条目消息或有效负载.
可以从中剥离由收集器或规范化程序提取的元数据,这些元数据采用UTF-8编码.
pid这是日志记录实体(若有)的进程ID.
service与日志记录实体(若有)关联的服务的名称.
例如,syslogAPP-NAME属性映射到service字段.
tags(可选)由Operator定义的标签的列表,这些标签由收集器或规范化程序放置在每个日志上.
有效负载可以是含有空格分隔字符串令牌的字符串,也可以是字符串令牌的JSON列表.
file文件的可选路径,该文件包含对文件路径的收集器TODO分析器而言是本地的日志条目.
offset偏移值可以表示文件中日志行开头的字节数(从零或一算起),或者表示日志行号(从零或一算起),只要这些值在单个日志的上下文中严格单调递增.
允许对这些值换行,以表示日志文件的新版本(轮转).
namespace_name将这条记录与共享其名称的namespace关联.
这个值不会存储下来,而是用于将记录与适当的namespace相关联,以进行访问控制和视觉化.
通常,这个值在标签中给出,但如果协议不支持发送标签,则可以使用此字段.
如果存在此字段,它将覆盖标签(tag)或kubernetes.
namespace_name中指定的namespace.
namespace_uuid与namespace_name关联的uuid.
这个值不会存储下来,而是用于将记录与适当的命名空间相关联,以进行访问控制和视觉化.
如果存在此字段,它将覆盖kubernetes.
namespace_uuid给出的uuid.
这也将会导致针对此日志记录跳过Kubernetes元数据查找.
参数参数描述描述collectd字段字段以下字段代表命名空间指标元数据.
第第14章章导导出字段出字段103参数参数描述描述collectd.
interval类型:浮点数collectd间隔.
collectd.
plugin类型:字符串collectd插件.
collectd.
plugin_instance类型:字符串collectd插件实例.
collectd.
type_instance类型:字符串collectd类类型型实实例例.
collectd.
type类型:字符串collectd类型.
collectd.
dstypes类型:字符串collectddstypes.
collectd.
processes字段.
字段.
以下字段对应于collectd进程插件.
参数参数描述描述collectd.
processes.
ps_state类型:整数.
collectdps_state型进程插件.
collectd.
processes.
ps_disk_ops字段字段collectdps_disk_ops型进程插件.
参数参数描述描述collectd.
processes.
ps_disk_ops.
read类型:浮点数TODOcollectd.
processes.
ps_disk_ops.
write类型:浮点数TODOOpenShiftContainerPlatform4.
2日志日志记录记录104collectd.
processes.
ps_vm类型:整数collectdps_vm型进程插件.
collectd.
processes.
ps_rss类型:整数collectdps_rss型进程插件.
collectd.
processes.
ps_data类型:整数collectdps_data型进程插件.
collectd.
processes.
ps_code类型:整数collectdps_code型进程插件.
collectd.
processes.
ps_stacksize类型:整数collectdps_stacksize型进程插件.
参数参数描述描述collectd.
processes.
ps_cputime字段字段collectdps_cputime型进程插件.
参数参数描述描述collectd.
processes.
ps_cputime.
user类型:浮点数TODOcollectd.
processes.
ps_cputime.
syst类型:浮点数TODOcollectd.
processes.
ps_count字段字段collectdps_count型进程插件.
参数参数描述描述collectd.
processes.
ps_count.
processes类型:整数TODOcollectd.
processes.
ps_count.
threads类型:整数TODOcollectd.
processes.
ps_pagefaults字段字段第第14章章导导出字段出字段105collectdps_pagefaults型进程插件.
参数参数描述描述collectd.
processes.
ps_pagefaults.
majflt类型:浮点数TODOcollectd.
processes.
ps_pagefaults.
minflt类型:浮点数TODOcollectd.
processes.
ps_disk_octets字段字段collectdps_disk_octets型进程插件.
参数参数描述描述collectd.
processes.
ps_disk_octets.
read类型:浮点数TODOcollectd.
processes.
ps_disk_octets.
write类型:浮点数TODOcollectd.
processes.
fork_rate类型:浮点数collectdfork_rate型进程插件.
collectd.
disk字段字段对应于collectd磁盘插件.
collectd.
disk.
disk_merged字段字段collectddisk_merged型磁盘插件.
参数参数描述描述collectd.
disk.
disk_merged.
read类型:浮点数TODOcollectd.
disk.
disk_merged.
write类型:浮点数TODOcollectd.
disk.
disk_octets字段字段collectddisk_octets型磁盘插件.
OpenShiftContainerPlatform4.
2日志日志记录记录106参数参数描述描述collectd.
disk.
disk_octets.
read类型:浮点数TODOcollectd.
disk.
disk_octets.
write类型:浮点数TODOcollectd.
disk.
disk_time字段字段collectddisk_time型磁盘插件.
参数参数描述描述collectd.
disk.
disk_time.
read类型:浮点数TODOcollectd.
disk.
disk_time.
write类型:浮点数TODOcollectd.
disk.
disk_ops字段字段collectddisk_ops型磁盘插件.
参数参数描述描述collectd.
disk.
disk_ops.
read类型:浮点数TODOcollectd.
disk.
disk_ops.
write类型:浮点数TODOcollectd.
disk.
pending_operations类型:整数collectdpending_operations型磁盘插件.
collectd.
disk.
disk_io_time字段字段collectddisk_io_time型磁盘插件.
参数参数描述描述collectd.
disk.
disk_io_time.
io_time类型:浮点数TODO第第14章章导导出字段出字段107collectd.
disk.
disk_io_time.
weighted_io_time类型:浮点数TODO参数参数描述描述collectd.
interface字段字段对应于collectd接口插件.
collectd.
interface.
if_octets字段字段collectdif_octets型接口插件.
参数参数描述描述collectd.
interface.
if_octets.
rx类型:浮点数TODOcollectd.
interface.
if_octets.
tx类型:浮点数TODOcollectd.
interface.
if_packets字段字段collectdif_packets型接口插件.
参数参数描述描述collectd.
interface.
if_packets.
rx类型:浮点数TODOcollectd.
interface.
if_packets.
tx类型:浮点数TODOcollectd.
interface.
if_errors字段字段collectdif_errors型接口插件.
参数参数描述描述collectd.
interface.
if_errors.
rx类型:浮点数TODOcollectd.
interface.
if_errors.
tx类型:浮点数TODOOpenShiftContainerPlatform4.
2日志日志记录记录108collectd.
interface.
if_dropped字段字段collectdif_dropped型接口插件.
参数参数描述描述collectd.
interface.
if_dropped.
rx类型:浮点数TODOcollectd.
interface.
if_dropped.
tx类型:浮点数TODOcollectd.
virt字段字段对应于collectdvirt插件.
collectd.
virt.
if_octets字段字段collectdif_octets型virt插件.
参数参数描述描述collectd.
virt.
if_octets.
rx类型:浮点数TODOcollectd.
virt.
if_octets.
tx类型:浮点数TODOcollectd.
virt.
if_packets字段字段collectdif_packets型virt插件.
参数参数描述描述collectd.
virt.
if_packets.
rx类型:浮点数TODOcollectd.
virt.
if_packets.
tx类型:浮点数TODOcollectd.
virt.
if_errors字段字段collectdif_errors型virt插件.
参数参数描述描述第第14章章导导出字段出字段109collectd.
virt.
if_errors.
rx类型:浮点数TODOcollectd.
virt.
if_errors.
tx类型:浮点数TODO参数参数描述描述collectd.
virt.
if_dropped字段字段collectdif_dropped型virt插件.
参数参数描述描述collectd.
virt.
if_dropped.
rx类型:浮点数TODOcollectd.
virt.
if_dropped.
tx类型:浮点数TODOcollectd.
virt.
disk_ops字段字段collectddisk_ops型virt插件.
参数参数描述描述collectd.
virt.
disk_ops.
read类型:浮点数TODOcollectd.
virt.
disk_ops.
write类型:浮点数TODOcollectd.
virt.
disk_octets字段字段collectddisk_octets型virt插件.
参数参数描述描述collectd.
virt.
disk_octets.
read类型:浮点数TODOcollectd.
virt.
disk_octets.
write类型:浮点数TODOOpenShiftContainerPlatform4.
2日志日志记录记录110collectd.
virt.
memory类型:浮点数collectd内存型virt插件.
collectd.
virt.
virt_vcpu类型:浮点数collectdvirt_vcpu型virt插件.
collectd.
virt.
virt_cpu_total类型:浮点数collectdvirt_cpu_total型virt插件.
参数参数描述描述collectd.
CPU字段字段对应于collectdCPU插件.
参数参数描述描述collectd.
CPU.
percent类型:浮点数collectd百分比型CPU插件.
collectd.
df字段字段对应于collectddf插件.
参数参数描述描述collectd.
df.
df_complex类型:浮点数collectddf_complex型df插件.
collectd.
df.
percent_bytes类型:浮点数collectdpercent_bytes型df插件.
collectd.
entropy字段字段对应于collectd熵插件.
参数参数描述描述collectd.
entropy.
entropy类型:整数collectd熵型熵插件.
collectd.
memory字段字段对应于collectd内存插件.
第第14章章导导出字段出字段111参数参数描述描述collectd.
memory.
memory类型:浮点数collectd内存型内存插件.
collectd.
memory.
percent类型:浮点数collectd百分比型内存插件.
collectd.
swap字段字段对应于collectd交换插件.
参数参数描述描述collectd.
swap.
swap类型:整数collectd交换型交换插件.
collectd.
swap.
swap_io类型:整数collectdswap_io型交换插件.
collectd.
load字段字段对应于collectd负载插件.
collectd.
load.
load字段字段collectd负载型负载插件.
参数参数描述描述collectd.
load.
load.
shortterm类型:浮点数TODOcollectd.
load.
load.
midterm类型:浮点数TODOcollectd.
load.
load.
longterm类型:浮点数TODOcollectd.
aggregation字段字段对应于collectd聚合插件.
OpenShiftContainerPlatform4.
2日志日志记录记录112参数参数描述描述collectd.
aggregation.
percent类型:浮点数TODOcollectd.
statsd字段字段对应于collectdstatsd插件.
参数参数描述描述collectd.
statsd.
host_cpu类型:整数collectdCPU型statsd插件.
collectd.
statsd.
host_elapsed_time类型:整数collectdelapsed_time型statsd插件.
collectd.
statsd.
host_memory类型:整数collectd内存型statsd插件.
collectd.
statsd.
host_nic_speed类型:整数collectdnic_speed型statsd插件.
collectd.
statsd.
host_nic_rx类型:整数collectdnic_rx型statsd插件.
collectd.
statsd.
host_nic_tx类型:整数collectdnic_tx型statsd插件.
collectd.
statsd.
host_nic_rx_dropped类型:整数collectdnic_rx_dropped型statsd插件.
collectd.
statsd.
host_nic_tx_dropped类型:整数collectdnic_tx_dropped型statsd插件.
collectd.
statsd.
host_nic_rx_errors类型:整数collectdnic_rx_errors型statsd插件.
collectd.
statsd.
host_nic_tx_errors类型:整数collectdnic_tx_errors型statsd插件.
第第14章章导导出字段出字段113collectd.
statsd.
host_storage类型:整数collectd存储型statsd插件.
collectd.
statsd.
host_swap类型:整数collectd交换型statsd插件.
collectd.
statsd.
host_vdsm类型:整数collectdVDSM型statsd插件.
collectd.
statsd.
host_vms类型:整数collectdVMS型statsd插件.
collectd.
statsd.
vm_nic_tx_dropped类型:整数collectdnic_tx_dropped型statsd插件.
collectd.
statsd.
vm_nic_rx_bytes类型:整数collectdnic_rx_bytes型statsd插件.
collectd.
statsd.
vm_nic_tx_bytes类型:整数collectdnic_tx_bytes型statsd插件.
collectd.
statsd.
vm_balloon_min类型:整数collectdballoon_min型statsd插件.
collectd.
statsd.
vm_balloon_max类型:整数collectdballoon_max型statsd插件.
collectd.
statsd.
vm_balloon_target类型:整数collectdballoon_target型statsd插件.
collectd.
statsd.
vm_balloon_cur类型:整数collectdballoon_cur型statsd插件.
collectd.
statsd.
vm_cpu_sys类型:整数collectdcpu_sys型statsd插件.
参数参数描述描述OpenShiftContainerPlatform4.
2日志日志记录记录114collectd.
statsd.
vm_cpu_usage类型:整数collectdcpu_usage型statsd插件.
collectd.
statsd.
vm_disk_read_ops类型:整数collectddisk_read_ops型statsd插件.
collectd.
statsd.
vm_disk_write_ops类型:整数statsd插件的collectddisk_write_ops类型.
collectd.
statsd.
vm_disk_flush_latency类型:整数collectddisk_flush_latency型statsd插件.
collectd.
statsd.
vm_disk_apparent_size类型:整数collectddisk_apparent_size型statsd插件.
collectd.
statsd.
vm_disk_write_bytes类型:整数collectddisk_write_bytes型statsd插件.
collectd.
statsd.
vm_disk_write_rate类型:整数collectddisk_write_rate型statsd插件.
collectd.
statsd.
vm_disk_true_size类型:整数collectddisk_true_size型statsd插件.
collectd.
statsd.
vm_disk_read_rate类型:整数collectddisk_read_rate型statsd插件.
collectd.
statsd.
vm_disk_write_latency类型:整数collectddisk_write_latency型statsd插件.
collectd.
statsd.
vm_disk_read_latency类型:整数collectddisk_read_latency型statsd插件.
collectd.
statsd.
vm_disk_read_bytes类型:整数collectddisk_read_bytes型statsd插件.
参数参数描述描述第第14章章导导出字段出字段115collectd.
statsd.
vm_nic_rx_dropped类型:整数collectdnic_rx_dropped型statsd插件.
collectd.
statsd.
vm_cpu_user类型:整数collectdcpu_user型statsd插件.
collectd.
statsd.
vm_nic_rx_errors类型:整数collectdnic_rx_errors型statsd插件.
collectd.
statsd.
vm_nic_tx_errors类型:整数collectdnic_tx_errors型statsd插件.
collectd.
statsd.
vm_nic_speed类型:整数collectdnic_speed型statsd插件.
参数参数描述描述collectd.
postgresql字段字段对应于collectdpostgresql插件.
参数参数描述描述collectd.
postgresql.
pg_n_tup_g类型:整数collectdpg_n_tup_g型postgresql插件.
collectd.
postgresql.
pg_n_tup_c类型:整数collectdpg_n_tup_c型postgresql插件.
collectd.
postgresql.
pg_numbackends类型:整数collectdpg_numbackends型postgresql插件.
collectd.
postgresql.
pg_xact类型:整数collectdpg_xact型postgresql插件.
collectd.
postgresql.
pg_db_size类型:整数collectdpg_db_size型postgresql插件.
collectd.
postgresql.
pg_blks类型:整数collectdpg_blks型postgresql插件.
OpenShiftContainerPlatform4.
2日志日志记录记录11614.
2.
SYSTEMD导出字段以下systemd字段由OpenShiftContainerPlatform集群日志记录导出,可从Elasticsearch和Kibana搜索.
包括特定于systemd系统日志的常用字段.
应用程序可能会向系统日志写入自己的字段.
这些字段在systemd.
u命名空间下提供.
RESULT和UNIT就是这样的两个字段.
systemd.
k字段字段下表包含systemd内核相关的元数据.
参数参数描述描述systemd.
k.
KERNEL_DEVICEsystemd.
k.
KERNEL_DEVICE是内核设备名称.
systemd.
k.
KERNEL_SUBSYSTEMsystemd.
k.
KERNEL_SUBSYSTEM是内核子系统名称.
systemd.
k.
UDEV_DEVLINKsystemd.
k.
UDEV_DEVLINK包含指向节点的额外符号链接名称.
systemd.
k.
UDEV_DEVNODEsystemd.
k.
UDEV_DEVNODE是设备的节点路径.
systemd.
k.
UDEV_SYSNAMEsystemd.
k.
UDEV_SYSNAME是内核设备名称.
systemd.
t字段字段systemd.
t字段字段是可信的系统日志字段,由系统日志隐式添加,无法通过客户端代码更改.
参数参数描述描述systemd.
t.
AUDIT_LOGINUIDsystemd.
t.
AUDIT_LOGINUID是系统日志录入进程的用户ID.
systemd.
t.
BOOT_IDsystemd.
t.
BOOT_ID是内核启动ID.
systemd.
t.
AUDIT_SESSIONsystemd.
t.
AUDIT_SESSION是系统日志录入进程的会话.
systemd.
t.
CAP_EFFECTIVEsystemd.
t.
CAP_EFFECTIVE代表系统日志录入进程的功能.
systemd.
t.
CMDLINEsystemd.
t.
CMDLINE是系统日志录入进程的命令行.
systemd.
t.
COMMsystemd.
t.
COMM是系统日志录入进程的名称.
systemd.
t.
EXEsystemd.
t.
EXE是系统日志录入进程的可执行路径.
第第14章章导导出字段出字段117systemd.
t.
GIDsystemd.
t.
GID是系统日志录入进程的组ID.
systemd.
t.
HOSTNAMEsystemd.
t.
HOSTNAME是主机的名称.
systemd.
t.
MACHINE_IDsystemd.
t.
MACHINE_ID是主机的机器ID.
systemd.
t.
PIDsystemd.
t.
PID是系统日志录入进程的进程ID.
systemd.
t.
SELINUX_CONTEXTsystemd.
t.
SELINUX_CONTEXT是系统日志录入进程的安全性上下文或标签.
systemd.
t.
SOURCE_REALTIME_TIMESTAMPsystemd.
t.
SOURCE_REALTIME_TIMESTAMP是消息的最早、最可靠的时间戳.
这会转换为RFC3339NS格式.
systemd.
t.
SYSTEMD_CGROUPsystemd.
t.
SYSTEMD_CGROUP是systemd控制组路径.
systemd.
t.
SYSTEMD_OWNER_UIDsystemd.
t.
SYSTEMD_OWNER_UID是会话的所有者ID.
systemd.
t.
SYSTEMD_SESSIONsystemd.
t.
SYSTEMD_SESSION(若适用)是systemd会话ID.
systemd.
t.
SYSTEMD_SLICEsystemd.
t.
SYSTEMD_SLICE是系统日志录入进程的切片单元.
systemd.
t.
SYSTEMD_UNITsystemd.
t.
SYSTEMD_UNIT是会话的单元名称.
systemd.
t.
SYSTEMD_USER_UNITsystemd.
t.
SYSTEMD_USER_UNIT(若适用)是会话的用户单元名称.
systemd.
t.
TRANSPORTsystemd.
t.
TRANSPORT是系统日志服务的录入方法.
这包括audit、driver、syslog、journal、stdout和kernel.
systemd.
t.
UIDsystemd.
t.
UID是系统日志录入进程的用户ID.
systemd.
t.
SYSLOG_FACILITYsystemd.
t.
SYSLOG_FACILITY字段含有syslog的工具,格式为十进制字符串.
systemd.
t.
SYSLOG_IDENTIFIERsystemd.
t.
systemd.
t.
SYSLOG_IDENTIFIER是syslog的标识符.
systemd.
t.
SYSLOG_PIDSYSLOG_PID是syslog的客户端进程ID.
参数参数描述描述systemd.
u字段字段OpenShiftContainerPlatform4.
2日志日志记录记录118systemd.
uFields直接从客户端传递,并存入在系统日志中.
参数参数描述描述systemd.
u.
CODE_FILEsystemd.
u.
CODE_FILE是含有源的文件名的代码位置.
systemd.
u.
CODE_FUNCTIONsystemd.
u.
CODE_FUNCTION是含有源的功能的代码位置.
systemd.
u.
CODE_LINEsystemd.
u.
CODE_LINE是含有源的行号的代码位置.
systemd.
u.
ERRNOsystemd.
u.
ERRNO(若存在)是低级错误编号,是采用数值格式的十进制字符串.
systemd.
u.
MESSAGE_IDsystemd.
u.
MESSAGE_ID是用于识别消息类型的消息标识符ID.
systemd.
u.
RESULT仅供私下使用.
systemd.
u.
UNIT仅供私下使用.
14.
3.
KUBERNETES导出字段以下Kubernetes字段由OpenShiftContainerPlatform集群日志记录导出,可从Elasticsearch和Kibana搜索.
特定于Kubernetes元数据的命名空间.
kubernetes.
pod_name是Pod的名称.
kubernetes.
labels字段字段附加至OpenShift对象的标签是kubernetes.
labels.
每个标签名都是标签字段的子字段.
每个标签名称都会进行去句点处理,即名称中的句点都被替换成下划线.
参数参数描述描述kubernetes.
pod_idPod的KubernetesID.
kubernetes.
namespace_nameKubernetes中命名空间的名称.
kubernetes.
namespace_idKubernetes中命名空间的ID.
kubernetes.
hostKubernetes节点名称.
kubernetes.
container_nameKubernetes中容器的名称.
kubernetes.
labels.
deployment与Kubernetes对象关联的部署.
第第14章章导导出字段出字段119kubernetes.
labels.
deploymentconfig与Kubernetes对象关联的部署配置.
kubernetes.
labels.
component与Kubernetes对象关联的组件.
kubernetes.
labels.
provider与Kubernetes对象关联的提供程序.
参数参数描述描述kubernetes.
annotations字段字段与OpenShift对象关联的注解是kubernetes.
annotations字段.
14.
4.
容器导出字段以下Docker字段由OpenShiftContainerPlatform集群日志记录导出,可被Elasticsearch和Kibana搜索.
特定于docker容器的元数据的命名空间.
docker.
container_id是Docker容器ID.
pipeline_metadata.
collector字段字段本节包含与收集器相关的元数据.
参数参数描述描述pipeline_metadata.
collector.
hostname收集器的FQDN.
可能与日志的实际发出者的FQDN不同.
pipeline_metadata.
collector.
name收集器的名称.
pipeline_metadata.
collector.
version收集器的版本.
pipeline_metadata.
collector.
ipaddr4收集器服务器的IPv4地址,可以是一个数组.
pipeline_metadata.
collector.
ipaddr6收集器服务器的IPv6地址,可以是一个数组.
pipeline_metadata.
collector.
inputname收集器接收日志消息的方式,可以是TCP/UDP或imjournal/imfile.
pipeline_metadata.
collector.
received_at收集器收到消息的时间.
pipeline_metadata.
collector.
original_raw_message原始的未解析日志消息,由收集器收集或者尽可能与源接近.
OpenShiftContainerPlatform4.
2日志日志记录记录120pipeline_metadata.
normalizer字段字段本节包含与规范化程序相关的元数据.
参数参数描述描述pipeline_metadata.
normalizer.
hostname规范化程序的FQDN.
pipeline_metadata.
normalizer.
name规范化程序的名称.
pipeline_metadata.
normalizer.
version规范化程序的版本.
pipeline_metadata.
normalizer.
ipaddr4规范化程序服务器的IPv4地址,可以是数组.
pipeline_metadata.
normalizer.
ipaddr6规范化程序服务器的IPv6地址,可以是数组.
pipeline_metadata.
normalizer.
inputname规范化程序接收日志消息的方式,可以是TCP/UDP.
pipeline_metadata.
normalizer.
received_at规范化程序收到消息的时间.
pipeline_metadata.
normalizer.
original_raw_message原始的未解析日志消息,与规范化程序收到的一致.
pipeline_metadata.
trace该字段记录消息的轨迹.
每个收集器和规范化程序都会附加关于自身的信息,以及处理消息的日期和时间.
14.
5.
OVIRT导出字段以下oVirt字段由OpenShiftContainerPlatform集群日志记录导出,可从Elasticsearch和Kibana搜索.
oVirt元数据的命名空间.
参数参数描述描述ovirt.
entity数据源、主机、VMS和引擎的类型.
ovirt.
host_idoVirt主机UUID.
ovirt.
engine字段字段oVirt引擎相关元数据的命名空间.
oVirt引擎的FQDN是ovirt.
engine.
fqdn第第14章章导导出字段出字段12114.
6.
AUSHAPE导出字段以下Aushape字段由OpenShiftContainerPlatform集群日志记录导出,可从Elasticsearch和Kibana搜索.
通过Aushape转换的审计事件.
如需更多信息,请参阅Aushape.
参数参数描述描述aushape.
serial审计事件序列号.
aushape.
node发生审计事件的主机的名称.
aushape.
error在转换事件时Aushape遇到的错误.
aushape.
trimmed相对于事件对象的JSONPath表达式的数组,用于指定因为事件大小限制而删除了内容的对象或数组.
空字符串表示事件删除了内容,空数组表示裁剪是由未指定的对象和数组造成的.
aushape.
text代表原始审计事件的一组日志记录字符串.
aushape.
data字段字段与Aushape相关的已解析审计事件数据.
参数参数描述描述aushape.
data.
avc类型:嵌套aushape.
data.
execve类型:字符串aushape.
data.
netfilter_cfg类型:嵌套aushape.
data.
obj_pid类型:嵌套aushape.
data.
path类型:嵌套14.
7.
TLOG导出字段以下Tlog字段由OpenShiftContainerPlatform集群日志记录系统导出,可从Elasticsearch和Kibana搜索.
记录消息的Tlog终端I/O.
如需更多信息,请参阅Tlog.
参数参数描述描述tlog.
ver消息格式版本号.
OpenShiftContainerPlatform4.
2日志日志记录记录122tlog.
user记录的用户名.
tlog.
term终端类型名称.
tlog.
session所记录会话的审计会话ID.
tlog.
id会话内消息的ID.
tlog.
pos消息在会话内的位置,以毫秒为单位.
tlog.
timing此消息的事件的时间分布.
tlog.
in_txt清理掉无效字符的输入文本.
tlog.
in_bin清理掉的无效输入字符,以字节数为单位.
tlog.
out_txt清理掉无效字符的输出文本.
tlog.
out_bin清理掉的无效输出字符,以字节数为单位.
参数参数描述描述第第14章章导导出字段出字段123第15章卸载集群日志记录您可以从OpenShiftContainerPlatform集群中移除集群日志记录.
15.
1.
从OPENSHIFTCONTAINERPLATFORM卸载集群日志记录您可以从集群中移除集群日志记录.
先决条件先决条件必须安装ClusterLogging和Elasticsearch.
流程流程移除集群日志记录:1.
使用以下命令,移除部署期间生成的一切内容.
$ocdeleteclusterlogginginstance-nopenshift-logging2.
使用以下命令,删除Operator实例已被删除后保留的持久性卷声明(PVC):$ocdeletepvc--all-nopenshift-loggingOpenShiftContainerPlatform4.
2日志日志记录记录124

Megalayer 香港CN2优化线路VPS主机速度和性能综合评测

对于Megalayer云服务器提供商在之前也有对于他们家的美国服务器和香港服务器进行过评测和介绍,但是对于大部分网友来说需要独立服务器和站群服务器并不是特别的普及,我们很多网友使用较多的还是云服务器或者VPS主机比较多。在前面也有在"Megalayer新增香港VPS主机 1GB内存 50GB SSD 2M带宽 月59元"文章中有介绍到Megalayer商家有新增香港CN2优化VPS主机。那时候看这...

3G流量免费高防CDN 50-200G防御

简介酷盾安全怎么样?酷盾安全,隶属于云南酷番云计算有限公司,主要提供高防CDN服务,高防服务器等,分为中国境内CDN,和境外CDN和二个产品,均支持SSL。目前CDN处于内测阶段,目前是免费的,套餐包0.01一个。3G流量(高防CDN)用完了继续续费或者购买升级包即可。有兴趣的可以看看,需要实名的。官方网站: :点击进入官网云南酷番云计算有限公司优惠方案流量3G,用完了不够再次购买或者升级套餐流量...

数脉科技:香港服务器低至350元/月;阿里云CN2+BGP线路,带宽10M30M50M100M

数脉科技(shuhost)8月促销:香港独立服务器,自营BGP、CN2+BGP、阿里云线路,新客立减400港币/月,老用户按照优惠码减免!香港服务器带宽可选10Mbps、30Mbps、50Mbps、100Mbps带宽,支持中文本Windows、Linux等系统。数脉香港特价阿里云10MbpsCN2,e3-1230v2,16G内存,1T HDD 或 240G SSD,10Mbps带宽,IPv41个,...

curl扩展为你推荐
重庆云网科技股份有限公司wordpress模板wordpress的模版怎么用aspweb服务器如何搭建简易Asp Web服务器linux防火墙设置怎样用iptables配置好Linux防火墙?新iphone也将禁售iPhone停用怎么解锁 三种处理方法详解cisco2960配置Cisco2960是二层交换机,怎么可以进入配置界面进行配置。不是说二层交换机不需要配置吗?netshwinsockreset开始-运行-输入CMD-确定-输入netsh winsock reset,按Enter确定。然后重启。 是什么意思ipad代理苹果官网购买ipad要几天易名网诚询,易名网注册的域名怎么转到喜欢的网页上啊?小型汽车网上自主编号申请成都新车上牌办理流程和办理条件是如何的
郑州虚拟主机 vps论坛 花生壳免费域名申请 申请免费域名 香港托管 seovip NetSpeeder php空间申请 1g空间 微软服务器操作系统 789电视剧 联通网站 独立主机 lamp怎么读 酸酸乳 阿里云邮箱个人版 电信主机托管 美国asp空间 百度新闻源申请 傲盾代理 更多