giriiş
Bu eğitimde, DigitalOcean Uygulama Platformu üzerinde konuşlandırılmış bir web uygulaması kullanarak DigitalOcean üzerinde yönetilen bir PostgreSQL veritabanı için toplu metriklerin nasıl toplanacağını öğreneceksiniz.
Bu gösteri için örnek bir Node.js uygulaması kullanacaksınız ve bunu bu eğitimde oluşturacağınız Managed DigitalOcean PostgreSQL veritabanına bağlayacaksınız.
Bu eğitimin sonunda, bir App Platform web uygulamasına bağlı yönetilen bir PostgreSQL veritabanından metrikleri toplayan ve görüntüleyen bir Prometheus panosuna sahip olacaksınız.
Ön koşullar
Başlamadan önce aşağıdaki ön koşullara sahip olduğunuzdan emin olun:
- Bir DigitalOcean hesabı.
- Uygulama Platformunda konuşlandırılmış bir Node.js uygulaması örneği.
- Postgres veritabanı dağıtıldı ve App Platform uygulamasına bağlandı.
- Okuma/yazma (RW) erişimiyle oluşturulmuş kişisel bir erişim belirteci. Kendinize ait bir kişisel erişim belirteci oluşturmak için bu eğitimi takip edebilirsiniz.
Adım 1 – Yönetilen bir PostgreSQL veritabanı kurulumu
Öncelikle bir PostgreSQL veritabanı oluşturarak başlayalım.
DigitalOcean bulut kontrol panelinizdeki Veritabanları bölümüne gidin.
"Veritabanı Kümesi Oluştur"a tıklayın ve PostgreSQL'i seçin. Aşağıdaki görselde gösterildiği gibi bir veri merkezi bölgesi ve bir VPC ağı seçmeniz gerekiyor:
Daha sonra veritabanı olarak PostgreSQL'i seçin ve veritabanınız için diğer ayarları seçin.
Veritabanı ayarlarını yapılandırın, ekrandaki talimatları izleyin ve Veritabanı kümesi oluştur'a tıklayın.
PostgreSQL yönetilen veritabanı kümesi oluşturulduktan sonra, aşağıdaki sekmelerde genel bakışını, içgörülerini, raporlarını ve ayarlarını inceleyebilirsiniz:
Adım 2 – Uygulama platformunda bir Node.js web uygulaması örneği dağıtın
Örnek bir Node.js uygulamasını dağıtmak için adımları takip edebilir veya Uygulama Platformunda örnek bir Node.js uygulaması oluşturmak için bu github deposunu kullanabilirsiniz.
İkincisini kullanıyorsanız, bulutta bir kopyasını saklamak için bu GitHub deposunu GitHub hesabınıza aktarmanız gerekir. GitHub deposundaki "Fork" düğmesine tıklayın ve ekrandaki talimatları izleyin.
Şimdi DigitalOcean bulut portalına giriş yapın ve Uygulama Oluştur -> Uygulama Platformu'na gidin.
Ardından, "Diğer: Örnek bir uygulama seçin" altında, Örnek Uygulama açılır menüsünden Node.js örnek uygulamasını seçin ve İleri'ye tıklayın.
Uygulama kaynaklarını, genel yapılandırmayı ve ortam değişkenlerini ayarlamak için ekrandaki talimatları izleyin ve İleri'ye tıklayın. İşlem tamamlandığında, genel uygulama yapılandırmasını inceleyin. İşlem tamamlandığında Kaynak Oluştur'a tıklayın. Uygulamayı oluşturduktan sonra, uygulama platformuna dağıtılması biraz zaman alacaktır.
Uygulama dağıtılıp oluşturulduktan sonra, uygulama genel bakışını kontrol edebilir ve dağıtılan uygulamayı tarayıcınızda ziyaret edebilirsiniz.
Adım 3 – PostgreSQL veritabanını Uygulama Platformuna bağlayın
Bu adımda, bu eğitimin 1. Adımında oluşturulan yönetilen PostgreSQL veritabanını, 2. Adımda oluşturulan Node.js uygulama örneğine bağlayacaksınız.
Dağıtılan uygulama platformu uygulamanıza gidin, dağıtılan uygulama panonuzdaki Oluştur düğmesine tıklayın ve "Veritabanı Oluştur/Ekle"ye tıklayın:
Daha sonra "Daha Önce Oluşturulmuş DigitalOcean Veritabanı"nı seçin ve yakın zamanda dağıtılan PostgreSQL yönetilen veritabanı kümesini seçip alt taraftaki "Veritabanını Ekle" butonuna tıklayın.
Veritabanı Genel Bakış bölümünde Uygulama Platformu uygulamasının güvenilir kaynak olarak başarıyla eklendiğini doğrulayabilirsiniz.
Adım 4 – /metrics uç noktasından Kazınabilir Metrikleri Alın
/metrics uç noktası aracılığıyla veritabanı kümenizin metriklerini programatik olarak görüntüleyebilirsiniz. Bu uç nokta, kontrol panelindeki İçgörüler sekmesinde erişebileceğiniz metriklerin yirmi katından fazlasını içerir.
Metrik uç noktasına curl komutuyla erişebilir veya Postman'ı kullanarak bu metrikleri Prometheus gibi bir izleme sisteminde görselleştirebilirsiniz.
Öncelikle, DigitalOcean kontrol panelindeki API bölümüne gidin ve yeni bir kişisel erişim belirteci oluşturun ve "Tam Erişimli Belirteç Oluştur"a tıklayın. Erişim belirtecini not edin, çünkü sonraki adımlarda buna ihtiyacınız olacak.
Bu örnekte, tüm HTTP isteklerini yürütmek için Postman kullanacaksınız. Veya API isteklerine yanıt almak için App Platform örneğinizden curl komutlarını çalıştırabilirsiniz.
Hostname ve port bilgisini alın.
Öncelikle https://api.digitalocean.com/v2/databases/{UUID} adresine bir GET isteği göndererek küme ölçümlerinizin ana bilgisayar adını almanız gerekir.
App Platform örneğinizden aşağıdaki curl komutunu çalıştırın. Bunu yapmak için konsol bölümüne gidin:
Ana bilgisayar adını ve veritabanı kimlik bilgilerini almak için aşağıdaki komutu kullanın
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl --silent -XGET --location 'https://api.digitalocean.com/v2/databases/{UUID}' --header 'Content-Type: application/json' --header "Authorization: Bearer $RO_DIGITALOCEAN_TOKEN"Lütfen {UUID} ve $RO_DIGITALOCEAN_TOKEN'ı yönetilen PostgreSQL veritabanınızın UUID'si ve kişisel erişim parolanızla değiştirin.
Bu komut size yönetilen PostgreSQL veritabanı kümesinin ayrıntılarını içeren bir çıktı vermelidir:
Output
"database": {
"id": "192a6077-d103-4e72-bd2c-e370fd6b5608",
"name": "db-postgresql-nyc3-66505",
"engine": "pg",
"version": "16",
"semantic_version": "16.3",
"connection": {
"protocol": "postgresql",
"uri": "postgresql://doadmin:AVNS_uVoGq5jCPdaxW3hghhV@db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "AVNS_uVoGq5jCPdaxW3hghhV",
"ssl": true
},
"private_connection": {
"protocol": "postgresql",
"uri": "postgresql://doadmin:AVNS_uVoGq5jCPdaxW3hghhV@private-db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "private-db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "AVNS_uVoGq5jCPdaxW3hghhV",
"ssl": true
},
"metrics_endpoints": [
{
"host": "db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 9273
}
],
"users": [
{
"name": "doadmin",
"role": "primary",
"password": "XXXXXXXXXXX"
}
],
"db_names": [
"defaultdb"
],
"num_nodes": 1,
"region": "nyc3",
"status": "online",
"created_at": "2024-06-10T21:04:32Z",
"maintenance_window": {
"day": "monday",
"hour": "00:07:46",
"pending": false
},
"size": "db-s-1vcpu-1gb",
"tags": [
"testtestnn"
],
"private_network_uuid": "xxxxxxxxxx",
"project_id": "xxxxxxxxxxx",
"read_only": false,
"version_end_of_life": "2028-11-09T00:00:00Z",
"version_end_of_availability": "2028-05-09T00:00:00Z",
"storage_size_mib": 10240
}
}Yukarıdaki çıktıda, lütfen ana bilgisayar/bağlantı noktası çiftine dikkat edin. Bizim örneğimizde, ana bilgisayar db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com ve bağlantı noktası 9273'tür.
Ayrıca sisteminize Postman yüklediyseniz ve sisteminizin IP adresini veritabanının güvenilir kaynak ayarlarında güvenilir kaynak olarak eklediyseniz, yukarıdaki HTTP GET isteğini Postman'da çalıştırabilirsiniz.
https://api.digitalocean.com/v2/databases/{UUID} URL'sini ekleyin ve yetkilendirme sekmesi altındaki kişisel erişim kodunuzu taşıyıcı belirteci olarak seçilen doğrulama türüyle değiştirin.
Küme ölçümlerinin doğrulanmasını alın
Ardından, küme metrikleri kimlik bilgilerinize ihtiyacınız olacak. Bunları, https://api.digitalocean.com/v2/databases/metrics/credentials adresine bir yönetici veya yazma belirteci ile GET isteği göndererek alabilirsiniz.
App Platform örnek uygulamasından aşağıdaki curl komutunu kullanın:
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl --silent -XGET --location 'https://api.digitalocean.com/v2/databases/metrics/credentials' --header 'Content-Type: application/json' --header "Authorization: Bearer xxxxxxxxxxxxxxxxx"Size kullanıcı adı ve parola ile küme ölçümleri kimlik bilgilerini vermesi gerekir.
Output{
"credentials": {
"basic_auth_username": "prom2prh",
"basic_auth_password": "xxxxxxxxxxxxx"
}
}/metrics uç noktasına erişin
cURL kullanarak uç noktaya erişmek için https://$HOST:9273/metrics adresine bir GET isteği gönderin ve ana bilgisayar adı, kullanıcı adı ve parola değişkenlerini önceki adımlarda bulduğunuz kimlik bilgileriyle değiştirin:
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl -XGET -k -u $USERNAME:$PASSWORD https://$HOST:9273/metricsAşağıdaki gibi bir sürü meta veriyi size sunması gerekir:
Output...
1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0.7
# HELP system_n_cpus Telegraf collected metric
# TYPE system_n_cpus gauge
system_n_cpus{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 1
# HELP system_n_unique_users Telegraf collected metric
# TYPE system_n_unique_users gauge
system_n_unique_users{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0
# HELP system_n_users Telegraf collected metric
# TYPE system_n_users gauge
system_n_users{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0
# HELP system_uptime Telegraf collected metric
# TYPE system_uptime counter
system_uptime{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 640073
...Adım 5 – Prometheus ile ölçümleri görselleştirin
Prometheus kullanarak uç noktaya erişmek için, aşağıdaki yapılandırmayı prometheus.yml dosyasına kopyalayın; ana bilgisayar adı, kullanıcı adı, parola ve CA sertifika yolunu değiştirin. Bu, Prometheus'u uç noktaya erişmek için gerekli tüm kimlik bilgilerini kullanacak şekilde yapılandırır:
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'dbaas_cluster_metrics_svc_discovery'
scheme: https
tls_config:
ca_file: /path/to/ca.crt
dns_sd_configs:
- names:
- $TARGET_ADDRESS
type: 'A'
port: 9273
refresh_interval: 15s
metrics_path: '/metrics'
basic_auth:
username: $BASIC_AUTH_USERNAME
password: $BASIC_AUTH_PASSWORDLütfen $TARGET_ADDRESS, $BASIC_AUTH_USERNAME ve $BASIC_AUTH_PASSWORD değerlerini yukarıdaki adımlarda elde edilen ana bilgisayar adı, kullanıcı adı ve parola ile değiştirin.
Ardından aşağıdaki bağlantı betiğini up.sh adlı bir dosyaya kopyalayın. Bu betik envsubst'ı çalıştıracak ve önceki adımdaki yapılandırmayla bir Prometheus konteyneri başlatacaktır.
#!/bin/bash
envsubst < prometheus.yml > /tmp/dbaas-prometheus.yml
docker run -p 9090:9090 \
-v /tmp/dbaas-prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheusBirden fazla ana makinenin çalışır durumda olduğunu doğrulamak için tarayıcınızda http://localhost:9090/targets adresine gidin.
Daha sonra http://localhost:9090/graph adresine giderek Prometheus'tan veritabanı metriklerini sorgulayın.
Daha fazla ayrıntı için Prometheus DNS SD belgelerine ve TLS yapılandırma belgelerine bakın.
Her bir metriği öğrenmek ve anlamak için bu resmi PostgreSQL İzleme İstatistikleri belgesine göz atabilirsiniz.
Ayrıca yönetilen bir PostgreSQL veritabanı için kazınabilir metriklerin nasıl toplanacağı hakkında daha fazla bilgi edinebilirsiniz.
Sonuç
Bu eğitim, DigitalOcean uygulama platformu ve Prometheus'ta kurulu bir Node.js web uygulaması kullanarak, DigitalOcean'da yönetilen bir PostgreSQL veritabanından metrikleri nasıl oluşturacağınızı ve toplayacağınızı öğretecektir. Toplanabilir metrikleri etkinleştirerek, veritabanlarınızın performansını ve durumunu kolayca izleyebilir, optimum performans sağlayabilir ve olası sorunları gidermek için derinlemesine sorun giderme adımları uygulayabilirsiniz.


























