如何将OpenShift日志和事件发送到Splunk
作为群集管理员,我们肯定会希望汇总来自OpenShift Container Platform群集的所有日志,例如容器日志,节点系统日志,应用程序容器日志等。在本文中,我们将安排群集日志记录Pod和其他必要的资源,以支持向Splunk发送日志,事件和群集指标。
我们将使用Splunk Connect for Kubernetes,它提供了一种导入和搜索Splunk中的OpenShift或者Kubernetes日志,对象和指标数据的方法。 Splunk Connect for Kubernetes在开发这些工具时利用并支持多个CNCF组件,以将数据导入Splunk。
设置要求
对于此设置,我们需要以下项目。
使用oc命令行工具配置的OpenShift Cluster。需要管理访问权限.Splunk Enterprise 7.0或者更高版本工作站中已安装头盔至少两个Splunk索引HTTP事件收集器用于验证事件数据的HEC令牌
为此,将在OpenShift上部署三种类型的部署:用于收集OpenShift对象中的更改的部署;每个OpenShift节点上的一个DaemonSet用于度量标准收集;每个OpenShift节点上的一个DaemonSet用于日志收集。
实际的实现将如下图所示。
创建Helm索引
我们将至少需要两个索引才能进行此部署。一个用于日志和事件,另一个用于度量。
以管理员用户身份登录到Splunk:
创建事件和日志索引。输入数据类型应为事件。
对于Metrics Index,输入数据类型可以是Metrics。
确认索引可用。
建立Splunk HEC凭证
HTTP事件收集器(HEC)使我们可以通过HTTP和安全HTTP(HTTPS)协议将数据和应用程序事件发送到Splunk部署。由于HEC使用基于令牌的身份验证模型,因此我们需要生成新令牌。
这是在"数据输入"配置部分下完成的。
选择" HTTP事件收集器",然后填写名称,然后单击"下一步"。
在下一页中,允许令牌写入我们创建的两个索引。
查看并提交设置。
安装头盔
如果我们尚未在工作站或者堡垒服务器中安装头盔,请查看以下链接中的教程。
在Kubernetes集群上安装和使用Helm 3
我们可以通过检查头盔的可用版本来验证安装。
$helm version version.BuildInfo{Version:"v3.4.0", GitCommit:"7090a89efc8a18f3d8178bf47d2462450349a004", GitTreeState:"clean", GoVersion:"go1.14.10"}
为Kubernetes部署Splunk Connect
为Splunk connect名称空间创建名称空间。
$oc new-project splunk-hec-logging
创建项目后,它应该是我们当前的工作项目。但是我们也可以随时切换到项目。
$oc project splunk-hec-logging
为安装创建值yaml文件。
$vim ocp-splunk-hec-values.yaml
我的已被修改为类似于以下内容。
global: logLevel: info journalLogPath: /run/log/journal splunk: hec: host: <splunk-ip> # Set Splunk IP address port: <splunk-hec-port> # Set Splunk HEC port protocol: http token: <hec-token> # Hec token created insecureSSL: true indexName: <indexname> # default index if others not set kubernetes: clusterName: "<clustername>" openshift: true splunk-kubernetes-metrics: enabled: true splunk: hec: host: <splunk-ip> port: <splunk-hec-port> protocol: <hec-protocol> token: <hec-token> insecureSSL: true indexName: <metrics-indexname> kubernetes: openshift: true splunk-kubernetes-logging: enabled: true logLevel: debug splunk: hec: host: <splunk-ip> port: <splunk-hec-port> protocol: <hec-protocol> token: <hec-token> insecureSSL: true indexName: <logging-indexname> containers: logFormatType: cri logs: kube-audit: from: file: path: /var/log/kube-apiserver/audit.log splunk-kubernetes-objects: enabled: true kubernetes: openshift: true splunk: hec: host: <splunk-ip> port: <splunk-hec-port> protocol: <hec-protocol> token: <hec-token> insecureSSL: true indexName: <objects-indexname>
相应地填写值,然后开始部署。在安装之前获取最新版本的URL。
helm install splunk-kubernetes-logging -f ocp-splunk-hec-values.yaml https://github.com/splunk/splunk-connect-for-kubernetes/releases/download/1.4.3/splunk-connect-for-kubernetes-1.4.3.tgz
部署输出:
NAME: splunk-kubernetes-logging LAST DEPLOYED: Thu Oct 22 22:22:51 2017 NAMESPACE: splunk-logging STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: ███████╗██████╗ ██╗ ██╗ ██╗███╗ ██╗██╗ ██╗██╗ ██╔════╝██╔══██╗██║ ██║ ██║████╗ ██║██║ ██╔╝╚██╗ ███████╗██████╔╝██║ ██║ ██║██╔██╗ ██║█████╔╝ ╚██╗ ╚════██║██╔═══╝ ██║ ██║ ██║██║╚██╗██║██╔═██╗ ██╔╝ ███████║██║ ███████╗╚██████╔╝██║ ╚████║██║ ██╗██╔╝ ╚══════╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ Listen to your data. Splunk Connect for Kubernetes is spinning up in your cluster. After a few minutes, you should see data being indexed in your Splunk. If you get stuck, we're here to help. Look for answers here: http://docs.splunk.com
检查正在运行的节点:
$oc get pods NAME READY STATUS RESTARTS AGE splunk-kubernetes-logging-splunk-kubernetes-metrics-4bvkp 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-4skrm 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-55f8t 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-7xj2n 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-8r2vj 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-agg-5bppqqn 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-f8psk 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-fp88w 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-s45wx 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-metrics-xtq5g 1/1 Running 0 48s splunk-kubernetes-logging-splunk-kubernetes-objects-b4f8f4m67vg 1/1 Running 0 48s
将特权SCC分配给服务帐户
for sa in $(oc get sa --no-headers | grep splunk | awk '{ print }'); do oc adm policy add-scc-to-user privileged -z $sa done
登录到Splunk,然后检查是否正在发送日志,事件和指标。