いくつかの調査の後、私はカスタムApacheのコンテナからログフォワーダの問題を解決しました。
"標準のリダイレクト"(/ dev/stdoutまたは/ proc/self/fd/1を使用)が動作しない理由はわかりませんが、これは "ロギングエージェントを備えたサイドカーコンテナ"
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 +ログエージェント
1)を使用すると、fluentdの構成を設定しますconfigMagファイルを作成します。どちらのコンテナもログフォルダをマウントします。
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には、次のファイル使用しているチェック/変更:
をエージェントがfluentd設定がマウントされますのみをログに記録
ErrorLog /var/log/error.log
CustomLog /var/log/access.log common
(あなたが何かを変更した場合は、apacheを再起動する必要があります。Googleクラウドコンソールでの今)
4) - >あなたのようなフィルターでのStackdriverでのApacheのアクセス/エラーログを確認することができますログ:私はは/ devへのリンクを作成しようとした
resource.type="container"
labels."compute.googleapis.com/resource_name"="my-sidecar"
/stdout(たとえば)、動作しません。 私の純粋なapache2コンテナのhttpd.confもチェックしました。アクセスログは CustomLog/proc/self/fd/1に設定されています。 であり、コンテナログはStackdriverで動作しています。 は、私は、このように純粋なHTTPのアクセスログを変更し、別の試みようにするには: - >は/ dev/stdoutを と、この場合も のaccess.log: を組み合わせ のCustomLog「ログ/ access_logのを」私は、リンクを作成しましたログが機能します。 私のカスタムApacheで同じ試行をした場合、Stackdriverのログは表示されません。 – suikoy
設定ファイルのaccess_logがオンになっているかどうか確認できますか? –
CustomLog "logs/access_log"を設定すると、実際に私のカスタムApacheで動作していますが、access_logはファイルでリンクではなく、Webサーバー上のすべてのアクセスを見ることができます。問題は、ログを/ dev/stdoutまたは/ proc/self/fd/1にリダイレクトしようとするときに発生します。その場合は、apacheは常に動作していますが、スタックドライバやkubernetesログに何も表示されません。 – suikoy