Container Compute Service (ACS) Alibaba Cloud Simple Log Service (SLS) ile entegredir. ACS kümesi oluştururken günlük hizmetini etkinleştirerek konteyner standart çıktısı (stdout) ve konteynerlerdeki metin dosyaları dahil olmak üzere kümedeki konteyner günlüklerini hızlıca toplayabilirsiniz. Bu konu, bir ACS kümesinde pod ortam değişkenlerini kullanarak uygulama günlüklerinin nasıl toplanacağını açıklar.
1. Adım: Günlük Hizmeti eklentisini etkinleştirme
Bir ACS kümesi oluştururken Enable Log Service seçeneğini işaretleyerek Günlük Hizmeti eklentisini otomatik olarak etkinleştirebilirsiniz. Küme oluşturma sırasında bu seçeneği işaretlemediyseniz mevcut bir küme için eklentiyi etkinleştirmek üzere aşağıdaki adımları izleyin.
ACS konsolu adresine gidin. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol gezinme bölmesinde Add-ons seçeneğine tıklayın.
Logs and Monitoring bölümünde alibaba-log-controller öğesini bulun. Install seçeneğine tıklayın. Açılan Install iletişim kutusunda OK düğmesine tıklayın.
alibaba-log-controller için özel yapılandırma ve ortam değişkenleri tanımladıysanız yükseltme işlemi bu parametrelerin üzerine yazar ve bunları yeniden yapılandırmanız gerekir.
2. Adım: Uygulama oluşturma sırasında günlük toplamayı yapılandırma
Bir uygulama oluştururken konsol sihirbazını veya YAML dosyasını kullanarak konteyner günlüklerini toplayacak şekilde yapılandırma yapabilirsiniz.
Konsol sihirbazı
ACS konsolu adresine gidin. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol gezinme bölmesinde Workloads > Deployments yolunu izleyin.
-
Deployments sayfasında Namespace açılır listesinden bir ad alanı seçin. Ardından sağ üst köşede Create from Image seçeneğine tıklayın.
NotBu örnekte bir Deployment kullanılmaktadır ancak süreç StatefulSets gibi diğer iş yükü türleri için de aynıdır.
-
Basic Information sekmesinde Application Name, Replicas: ve Type değerlerini belirtin. Next düğmesine tıklayarak Container sayfasına gidin.
NotBu bölümde yalnızca Simple Log Service ile ilgili yapılandırmalar açıklanmaktadır. Diğer uygulama yapılandırma öğeleri hakkında bilgi için bkz. Durumsuz iş yükü oluşturma (Deployment).
-
Log bölümünde günlüklerle ilgili bilgileri yapılandırın.
-
Collection Configuration değerini belirtin.
Yeni bir toplama yapılandırması oluşturmak için + simgesine tıklayın. Her yapılandırma bir Logstore ve bir Log Path in Container (Can be set to stdout) değerinden oluşur.
-
Logstore: Toplanan günlüklerin depolanacağı Logstore için bir ad belirtin. Logstore yoksa ACS bunu kümeyle ilişkili Simple Log Service Projesinde otomatik olarak oluşturur.
NotVarsayılan olarak yeni oluşturulan bir Logstore'daki günlükler 90 gün boyunca saklanır.
-
Log Path in Container: Günlüklerin toplanacağı yolu belirtin. Örneğin Tomcat'ten metin günlüklerini toplamak için /usr/local/tomcat/logs/catalina.*.log kullanın.
NotBu parametreyi stdout olarak ayarlarsanız konteynerin stdout ve stderr çıktıları toplanır.
Her giriş belirtilen Logstore için bir toplama yapılandırması oluşturur. Varsayılan olarak günlükler basit modda (satır satır) toplanır.
Örnek: Logstore adını access olarak ve konteynerdeki günlük yolunu
/usr/local/tomcat/logs/catalina.*.logolarak ayarlayın. Başka bir Logstore adını catalina ve yolustdoutolarak ayarlayın. Not: Günlük aracı eklentisinin kümeye dağıtıldığından emin olun.
-
-
Custom Tag değerini ayarlayın.
Yeni bir özel etiket oluşturmak için + simgesine tıklayın. Her özel etiket toplanan günlüklere eklenen bir anahtar-değer çiftidir. Bu etiketleri konteyner günlüklerinize sürüm numarası gibi meta veriler eklemek için kullanın.
Tag Name alanına
releasegirin. Tag Value alanına1.0.0girin.
-
-
Yapılandırmayı tamamladıktan sonra sağ üst köşedeki Next düğmesine tıklayın.
Sonraki işlemler hakkında bilgi için bkz. Durumsuz iş yükü oluşturma (Deployment).
YAML dosyası
ACS konsolu adresine gidin. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde yolunu izleyin.
-
Deployments sayfasında Namespace açılır listesinden bir ad alanı seçin. Ardından sağ üst köşede Create from YAML seçeneğine tıklayın.
NotBu örnekte bir Deployment kullanılmaktadır ancak süreç StatefulSets gibi diğer iş yükü türleri için de aynıdır.
-
YAML dosyasını yapılandırın.
YAML dosyasının sözdizimi Kubernetes sözdizimiyle aynıdır. Konteyner için bir toplama yapılandırması belirtmek üzere
envkullanarak bir Collection Configuration ve bir Custom Tag eklemeniz gerekir. Aşağıdaki kod basit bir pod örneği sunar:apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Gereksinimlerinize göre aşağıdaki sırayla ayarları yapılandırın.
NotGelişmiş günlük toplama gereksinimleri hakkında daha fazla bilgi için bkz. 3. Adım: Gelişmiş günlük toplama parametreleri.
-
Ortam değişkenlerini kullanarak bir Collection Configuration ve bir Custom Tag oluşturun. Yapılandırma ile ilgili tüm ortam değişkenleri
aliyun_logs_ön ekiyle başlar.-
Toplama yapılandırması oluşturun.
apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Örnekte
aliyun_logs_{key}formatı kullanılarak iki toplama yapılandırması oluşturulmuştur. İlgili{key}değerlerilog-stdoutvelog-varlogşeklindedir.aliyun_logs_log-stdout: Bu değişken konteynerinstdoutçıktısı için bir toplama yapılandırması oluşturur. Toplanan günlüklerLogstoreadlılog-stdoutöğesine gönderilir. İlgili Simple Log Service toplama yapılandırmasının adı dalog-stdoutoluplog-stdoutLogstorekullanır.aliyun_logs_log-varlog: Bu ortam değişkeniLogstoreadlılog-varlogöğesini oluşturan ve günlük toplama yolunu /var/log/*.log olarak ayarlayan bir yapılandırma belirtir. İlgili Simple Log Service toplama yapılandırmasının adı dalog-varlogşeklindedir. Bu yapılandırmanın amacı bir konteynerden /var/log/*.log dosyalarının içeriğini toplamak ve bunulog-varlogLogstoreöğesine göndermektir.
-
Özel etiket oluşturun.
apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Simple Log Service bu etiketi konteynerden toplanan tüm günlüklere otomatik olarak bir alan olarak ekler. Bu örnekte değişken adının
mytag1kısmıalt çizgi (_) içermeyen herhangi bir adolabilir.
-
-
stdout dışında bir toplama yolu belirtirseniz pod belirtiminde karşılık gelen bir
volumeMountsda tanımlamanız gerekir.Örnekte toplama yapılandırması /var/log/*.log dosyalarının toplanmasını içerir. Bu nedenle buna uygun olarak /var/log için bir
volumeMountseklenmiştir.
-
YAML dosyasını yazdıktan sonra yapılandırmayı ACS kümesine uygulamak için Create düğmesine tıklayın.
3. Adım: Gelişmiş günlük toplama parametreleri
Belirli günlük toplama gereksinimleri için gelişmiş parametreleri yapılandırmak üzere çeşitli ortam değişkenlerini kullanabilirsiniz.
Parametre | Açıklama | Örnek | Notlar |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | İsteğe bağlıdır. Değer {tag-key}={tag-value} formatında olmalıdır ve günlüklerin tanımlanmasına yardımcı olur. | | Uygulanamaz. |
aliyun_logs_{key}_project | İsteğe bağlıdır. SLS Projesi. Bu ortam değişkeni ayarlanmazsa varsayılan olarak eklenti kurulumu sırasında seçilen Projeye atanır. | | Proje Günlük Hizmeti eklentisinin çalıştığı bölgeyle aynı bölgede olmalıdır. |
aliyun_logs_{key}_logstore | İsteğe bağlıdır. SLS Logstore. Bu ortam değişkeni ayarlanmazsa Logstore adı varsayılan olarak {key} değerine atanır. | | Uygulanamaz. |
aliyun_logs_{key}_shard | İsteğe bağlıdır. Logstore için oluşturulacak parça sayısı. Geçerli değerler: 1 ila 10. Bu ortam değişkeni ayarlanmazsa varsayılan değer 2'dir. Not Bu parametre yalnızca bir Logstore oluşturulduğunda geçerlidir; mevcut Logstore'ları etkilemez. | | Uygulanamaz. |
aliyun_logs_{key}_ttl | İsteğe bağlıdır. Günlüklerin gün cinsinden saklama süresi. Geçerli değerler: 1 ila 3650.
Not Bu parametre yalnızca bir Logstore oluşturulduğunda geçerlidir; mevcut Logstore'ları etkilemez. | | Uygulanamaz. |
aliyun_logs_{key}_machinegroup | İsteğe bağlıdır. Uygulama için makine grubu. Bu ortam değişkeni ayarlanmazsa varsayılan olarak Günlük Hizmeti eklentisi kurulumu sırasında seçilen makine grubuna atanır. Bu parametrenin nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Özel kullanım durumu 2: Farklı uygulamalardan gelen günlükleri farklı Projelere yönlendirme. | | Uygulanamaz. |
aliyun_logs_{key}_logstoremode | İsteğe bağlıdır. SLS Logstore türü. Bu parametre belirtilmezse varsayılan değer standard olur. Geçerli değerler: Not Bu parametre yalnızca bir Logstore oluşturulduğunda geçerlidir; mevcut Logstore'ları etkilemez.
|
| Uygulanamaz. |
-
Kullanım durumu 1: Tek bir Logstore'a toplama
Birden fazla uygulamadan gelen verileri aynı Logstore'a toplamak için aliyun_logs_{key}_logstore parametresini ayarlayabilirsiniz. Örneğin aşağıdaki yapılandırma iki uygulamanın stdout çıktısını toplar ve
stdout-logstoreLogstore'una gönderir.Örnekte Uygulama 1 için
{key}değeriapp1-stdoutve Uygulama 2 için{key}değeriapp2-stdoutşeklindedir.Uygulama 1 için ortam değişkenleri:
apiVersion: v1 kind: Pod metadata: name: my-demo-1 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Uygulama 2 için ortam değişkenleri:
apiVersion: v1 kind: Pod metadata: name: my-demo-2 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"] -
Kullanım durumu 2: Günlükleri farklı Projelere yönlendirme
Farklı uygulamalardan gelen günlükleri toplamak ve bunları farklı Projelere yönlendirmek için şu adımları izleyin:
Her Projede
k8s-group-{cluster-id}adlı özel tanımlayıcıya sahip bir makine grubu oluşturun; burada{cluster-id}küme kimliğidir. Makine grubu adı özelleştirilebilir.-
Her uygulama için ortam değişkenlerinde Proje, Logstore ve makine grubu bilgilerini yapılandırın. Makine grubu adı önceki adımda oluşturduğunuz ad olmalıdır.
Aşağıdaki örnekte Uygulama 1 için
{key}değeriapp1-stdoutve Uygulama 2 için{key}değeriapp2-stdoutşeklindedir. Her iki uygulama da aynı Kubernetes kümesindeyse aynı makine grubunu kullanabilirler.Uygulama 1 için ortam değişkenleri:
apiVersion: v1 kind: Pod metadata: name: my-demo-1 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_project value: app1-project - name: aliyun_logs_app1-stdout_logstore value: app1-logstore - name: aliyun_logs_app1-stdout_machinegroup value: app1-machine-group command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Uygulama 2 için ortam değişkenleri:
apiVersion: v1 kind: Pod metadata: name: my-demo-2 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Configure environment variables for Application 2 - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_project value: app2-project - name: aliyun_logs_app2-stdout_logstore value: app2-logstore - name: aliyun_logs_app2-stdout_machinegroup value: app1-machine-group command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
4. Adım: Günlükleri SLS konsolunda görüntüleme
Bu örnek konsol sihirbazıyla oluşturulan bir uygulamanın günlüklerinin nasıl görüntüleneceğini gösterir. Yapılandırma tamamlandığında Simple Log Service uygulama günlüklerini otomatik olarak toplar ve bu günlükleri SLS konsolunda görüntüleyebilirsiniz.
SLS konsolu adresine gidin.
Projects bölümünde ACS kümesine karşılık gelen Projeyi seçin. Varsayılan olarak Projenin adı k8s-log-{ACS-Cluster-ID} şeklindedir. Ardından Logstores sekmesine gidin.
-
Logstore listesinde toplama yapılandırmasında belirttiğiniz Logstore'u bulun. Logstore adının üzerine gelin. Logstore adının sağ tarafındaki
simgesine ve ardından Search & Analysis seçeneğine tıklayın.Günlük sorgulama sayfasında uygulama stdout günlüklerini ve konteynerden gelen metin günlüklerini görüntüleyebilirsiniz. Özel etiket günlüklerde bir alan olarak görünür.
Daha fazla bilgi
Simple Log Service'i kullanarak Kubernetes konteyner günlüklerini topladıktan sonra toplanan Kubernetes konteyner günlüklerini SLS konsolunda görüntüleyebilirsiniz.
Sorun giderme bilgileri için bkz. Günlük toplama hatalarını giderme.