經過一番研究,我已經解決了我的自定義apache容器中的日誌轉發器的問題。
我不知道爲什麼「標準重定向」(使用/ dev/stdout或/ proc/self/fd/1)無法正常工作,我跟蹤的解決方案稱爲「帶有日誌代理的sidecar容器」
1)創建configMag文件,其中將設置一個fluentd配置:
apiVersion: v1
data:
fluentd.conf: |
<source>
type tail
format none
path /var/log/access.log
pos_file /var/log/access.log.pos
tag count.format1
</source>
<source>
type tail
format none
path /var/log/error.log
pos_file /var/log/error.log.pos
tag count.format2
</source>
<match **>
type google_cloud
</match>
kind: ConfigMap
metadata:
name: my-fluentd-config
2)創建2個容器莢:自定義的Apache +日誌劑。兩個容器都會安裝一個日誌文件夾。只有登錄代理將安裝fluentd配置:
apiVersion: v1
kind: Pod
metadata:
name: my-sidecar
labels:
app: my-sidecar
spec:
volumes:
- name: varlog
emptyDir: {}
- name: config-volume
configMap:
name: my-fluentd-config
containers:
- name: my-apache
image: <your_custom_image_repository>
ports:
- containerPort: 80
name: http
protocol: TCP
volumeMounts:
- name: varlog
mountPath: /var/log
- name: log-agent
image: gcr.io/google_containers/fluentd-gcp:1.30
env:
- name: FLUENTD_ARGS
value: -c /etc/fluentd-config/fluentd.conf
volumeMounts:
- name: varlog
mountPath: /var/log
- name: config-volume
mountPath: /etc/fluentd-config
3)進入了我的Apache容器:
和變化/檢查httpd.conf中使用下列文件:
ErrorLog /var/log/error.log
CustomLog /var/log/access.log common
(如果你改變了某些東西,記得重新啓動apache ..)
4)現在,在谷歌雲端控制檯 - >日誌記錄,你就可以看到爲Stackdriver apache的訪問/錯誤日誌中包含的過濾器:
resource.type="container"
labels."compute.googleapis.com/resource_name"="my-sidecar"
我試圖創建一個鏈接到/ dev /標準輸出(例如),但不起作用。 我也檢查了我的純apache2容器的httpd.conf,訪問日誌設置爲: CustomLog/proc/self/fd/1 common 和容器日誌與Stackdriver一起工作。 要再次嘗試我改變了這樣的純HTTP的訪問日誌: 的CustomLog「日誌/訪問日誌」組合 然後我創建的鏈接爲: access.log裏 - >的/ dev /標準輸出 ,並且在這種情況下,日誌工作。 但是,如果我對我的自定義apache進行了相同的嘗試,我從來沒有看到Stackdriver上的任何日誌.. – suikoy
您可以檢查配置文件中的access_log是否打開? –
如果我設置CustomLog「logs/access_log」,其中access_log是一個文件而不是一個鏈接,我確實在我的自定義apache上工作,我可以看到我的web服務器上的每個訪問權限。當我嘗試將日誌重定向到/ dev/stdout或/ proc/self/fd/1時,問題就出現了。在這種情況下,Apache總是工作,但我無法看到任何stackdriver或kubernetes日誌... – suikoy