Cara memantau

Dokumen ini menjelaskan teknik pemantauan komponen yang didukung oleh infrastruktur lokal deployment Apigee Edge.

Ringkasan

Edge mendukung beberapa cara untuk mendapatkan detail tentang layanan serta memeriksa status. Tabel berikut mencantumkan jenis pemeriksaan yang dapat Anda lakukan pada setiap akun yang memenuhi syarat layanan:

API Pengelolaan
Layanan Penggunaan Memori [JMX*] Pemeriksaan Layanan Status Deployment Pengguna/Organisasi/ axstatus Pemeriksaan database Status apigee-service apigee-monit**
Server Pengelolaan
Message Processor
Postgres
Qpid
Router
Info Lebih Lanjut Info Lebih Lanjut Info Lebih Lanjut Info Lebih Lanjut Info Lebih Lanjut Info Lebih Lanjut Info Lebih Lanjut

* Sebelum dapat menggunakan JMX, Anda harus mengaktifkannya, sebagaimana yang dijelaskan dalam Mengaktifkan JMX.

** Layanan apigee-monit memeriksa apakah komponen aktif dan akan mencoba untuk memulai ulang jika belum. Untuk informasi selengkapnya, lihat Pemulihan mandiri dengan apigee-monit.

Port pemantauan JMX dan Management API

Setiap komponen mendukung panggilan pemantauan JMX dan Management API di port yang berbeda. Tujuan Tabel berikut mencantumkan port JMX dan Management API untuk setiap jenis server:

Komponen Port JMX Port Management API
Server Pengelolaan 1099 8080
Router 1100 8081
Message Processor 1101 8082
Qpid 1102 8083
Postgres 1103 8084

Menggunakan JMX untuk memantau

Proses pemantauan untuk Server Pengelolaan, Pemroses Pesan, Qpid, dan Postgres menggunakan JMX. Namun, JMX diaktifkan secara default hanya untuk Cassandra, dan dinonaktifkan secara default untuk semua komponen Edge lainnya. Oleh karena itu, Anda harus mengaktifkan JMX satu per satu untuk setiap komponen sebelum dapat memantaunya.

Autentikasi JMX tidak diaktifkan secara default. Anda dapat mengaktifkan autentikasi JMX untuk semua komponen. Untuk Cassandra, gunakan petunjuk di Aktifkan autentikasi JMX untuk Cassandra.

Aktifkan JMX

JMX diaktifkan secara default hanya untuk Cassandra, dan dinonaktifkan secara default untuk semua Edge lainnya komponen. Bagian ini menjelaskan cara mengaktifkan JMX untuk komponen Edge lainnya.

Untuk mengaktifkan JMX:

  1. Edit file konfigurasi komponen. File ini ada di opt/apigee/edge-component_name/bin/start. Dalam produksi lingkungan, file konfigurasi ini akan berada di komputer yang berbeda.

    Pilih dari lokasi file berikut ini pada setiap server:

    • Server Pengelolaan: /opt/apigee/edge-management-server/bin/start
    • Pemroses Pesan: /opt/apigee/edge-message-processor/bin/start
    • Postgres: /opt/apigee/edge-postgres-server/bin/start
    • Qpid: /opt/apigee/edge-qpid-server/bin/start
    • Router: /opt/apigee/edge-router/bin/start

    Misalnya, file konfigurasi Server Manajemen di servernya berada di /opt/apigee/edge-management-server/bin/start.

  2. Tambahkan opsi com.sun.management.jmxremote berikut ke exec yang memulai komponen:
    -Dcom.sun.management.jmxremote \
      -Dcom.sun.management.jmxremote.port=port_number \
      -Dcom.sun.management.jmxremote.local.only=false \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false

    Dengan port_number adalah port JMX untuk layanan. Untuk mendapatkan JMX layanan Anda nomor port Anda, lihat port pemantauan JMX dan Management API.

    Misalnya, untuk mengaktifkan JMX di Server Pengelolaan, tambahkan baris berikut ke opsi Pengelolaan File konfigurasi server:

    exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts \
      -Djava.security.auth.login.config=$conf_path/jaas.config \
      -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path \
      -Ddata.dir=$data_dir \
      -Dcom.sun.management.jmxremote \
      -Dcom.sun.management.jmxremote.port=1099 \
      -Dcom.sun.management.jmxremote.local.only=false \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false \
       $* $debug_options com.apigee.kernel.MicroKernel

    Contoh ini menentukan port 1099 untuk Server Pengelolaan. Seperti yang disebutkan sebelumnya, masing-masing memiliki nomor porta sendiri.

    Baris yang diedit dalam file konfigurasi terlihat seperti berikut:

    exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false $* $debug_options com.apigee.kernel.MicroKernel
  3. Simpan file konfigurasi.
  4. Mulai ulang komponen dengan perintah restart.

    Misalnya, untuk memulai ulang Server Pengelolaan, jalankan perintah berikut:

    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

Autentikasi untuk JMX tidak diaktifkan secara default. Anda dapat mengaktifkan autentikasi JMX untuk semua komponen, seperti yang dijelaskan dalam Mengaktifkan autentikasi JMX. Untuk mengaktifkan JMX untuk Cassandra, lihat Aktifkan autentikasi JMX untuk Cassandra.

Aktifkan autentikasi JMX

Autentikasi JMX tidak diaktifkan secara default. Anda dapat mengaktifkan autentikasi JMX untuk semua komponen. Untuk Cassandra, gunakan petunjuk di Mengaktifkan autentikasi JMX untuk Cassandra

Untuk mengaktifkan autentikasi JMX, jalankan tindakan change_jmx_auth berikut pada semua node:

/opt/apigee/apigee-service/bin/apigee-service component_name change_jmx_auth [options|-f config_file]

Dengan keterangan:

  • component adalah salah satu dari yang berikut:
    • edge-management-server
    • edge-message-processor
    • edge-postgres-server
    • edge-qpid-server
    • edge-router
  • options menentukan hal berikut:
    • -u username
    • -p password
    • -e [y|n] (aktifkan atau nonaktifkan)
  • config_file menetapkan lokasi file konfigurasi tempat Anda menentukan hal berikut:
    • JMX_USERNAME=username
    • JMX_ENABLED=y|n
    • JMX_PASSWORD=password (jika tidak ditetapkan atau tidak diteruskan dengan -p, Anda akan diminta)

Anda dapat menggunakan opsi baris perintah atau file konfigurasi untuk menentukan nama pengguna, {i>password<i}, dan mengaktifkan/menonaktifkan status. Anda tidak menetapkan serangkaian opsi dan konfigurasi .

Contoh berikut mengaktifkan autentikasi JMX untuk Server Pengelolaan menggunakan perintah opsi baris:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -u foo -p bar -e y

Contoh berikut menggunakan file konfigurasi, bukan opsi command line:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -f /tmp/my-config-file

Jika Anda menjalankan Edge pada beberapa node, jalankan perintah pada semua node, dengan menentukan nama pengguna dan {i>password<i}.

Untuk menonaktifkan autentikasi JMX pada command line, gunakan "-e n" , sebagai berikut contoh menampilkan:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -e n

Memantau dengan JConsole

Gunakan JConsole (alat yang mematuhi JMX) untuk mengelola dan memantau health check dan memproses statistik. Dengan JConsole, Anda dapat menggunakan statistik JMX yang diekspos oleh server Anda dan menampilkannya di antarmuka grafis. Untuk informasi selengkapnya, lihat Menggunakan JConsole.

JConsole menggunakan URL layanan berikut untuk memantau atribut JMX (MBean) yang ditawarkan melalui JMX:

service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi

Dengan keterangan:

  • IP_address adalah alamat IP server yang ingin Anda pantau.
  • port_number adalah nomor port JMX dari server yang ingin Anda memantau.

Misalnya, untuk memantau Server Pengelolaan, berikan perintah seperti berikut (dengan asumsi alamat IP server adalah 216.3.128.12):

service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi

Perhatikan bahwa contoh ini menentukan port 1099, yang merupakan port Management Server JMX. Untuk lainnya lihat port pemantauan JMX dan Management API.

Tabel berikut menunjukkan statistik JMX generik:

JMX MBean Atribut JMX

Memori

HeapMemoryUsage

NonHeapMemoryUsage

Penggunaan

Memantau dengan Management API

Edge menyertakan beberapa API yang dapat Anda gunakan untuk melakukan pemeriksaan layanan pada server memeriksa pengguna, organisasi, dan deployment Anda. Bagian ini menjelaskan API tersebut.

Melakukan pemeriksaan layanan

Management API menyediakan beberapa endpoint untuk memantau dan mendiagnosis masalah layanan IT perusahaan mereka. Endpoint ini mencakup:

Endpoint Deskripsi
/servers/self/up

Memeriksa apakah layanan sedang berjalan. Panggilan API ini tidak mengharuskan Anda melakukan otentikasi.

Jika layanan berjalan, endpoint ini akan menampilkan respons berikut:

<ServerField>
  <Up>true</Up>
</ServerField>

Jika layanan tidak berjalan, Anda akan mendapatkan respons seperti berikut (bergantung pada layanan yang digunakan dan cara Anda memeriksanya):

curl: Failed connect to localhost:port_number; Connection refused
/servers/self

Menampilkan informasi tentang layanan, termasuk:

  • Properti konfigurasi
  • Waktu mulai dan waktu habis
  • Informasi build, RPM, dan UUID
  • Nama host dan alamat IP internal dan eksternal
  • Region dan pod
  • Properti <isUp>, yang menunjukkan apakah layanan sedang berjalan atau tidak

Panggilan API ini mengharuskan Anda melakukan autentikasi dengan kredensial admin Apigee.

Untuk menggunakan endpoint ini, panggil utilitas seperti curl dengan perintah yang menggunakan sintaksis berikut:

curl http://host:port_number/v1/servers/self/up -H "Accept: [application/json|application/xml]"
curl http://host:port_number/v1/servers/self -u username:password -H "Accept: [application/json|application/xml]"

Dengan keterangan:

  • host adalah alamat IP server yang ingin Anda periksa. Jika Anda masuk ke server, Anda dapat menggunakan "localhost"; jika tidak, tentukan juga alamat IP server sebagai nama pengguna dan {i>password<i}.
  • port_number adalah port Management API untuk server yang ingin Anda periksa. Ini adalah porta yang berbeda untuk setiap jenis komponen. Misalnya, Server Pengelolaan Port Management API adalah 8080. Untuk mengetahui daftar nomor port Management API yang dapat digunakan, lihat Port pemantauan JMX dan Management API

Untuk mengubah format respons, Anda dapat menentukan header Accept sebagai &quot;application/json&quot; atau "application/xml".

Contoh berikut mendapatkan status Router di localhost (port 8081):

curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"

Contoh berikut mendapatkan informasi tentang Message Processor di 216.3.128.12 (port 8082):

curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password
  -H "Accept: application/xml"

Memantau status pengguna, organisasi, dan deployment

Anda dapat menggunakan Management API untuk memantau pengguna, organisasi, dan status deployment proxy di Server Pengelolaan dan Pemroses Pesan dengan mengeluarkan perintah berikut:

curl http://host:port_number/v1/users -u sysAdminEmail:password
curl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password

Dengan port_number adalah 8080 untuk Server Pengelolaan atau 8082 untuk Pesan Pemroses.

Panggilan ini mengharuskan Anda untuk melakukan autentikasi dengan nama pengguna administrasi sistem dan {i>password<i}.

Server akan menampilkan instance "di-deploy" untuk semua panggilan. Jika gagal, lakukan langkah berikut:

  1. Periksa log server untuk menemukan error. Log tersebut terdapat di:
    • Server Pengelolaan: opt/apigee/var/log/edge-management-server
    • Pemroses Pesan: opt/apigee/var/log/edge-message-processor
  2. Lakukan panggilan ke server untuk memeriksa apakah server berfungsi dengan baik.
  3. Hapus server dari ELB, lalu mulai ulang:
    /opt/apigee/apigee-service/bin/apigee-service service_name restart

    Dengan lokasi service_name:

    • edge-management-server
    • edge-message-processor

Memeriksa status dengan perintah apigee-service

Anda dapat memecahkan masalah layanan Edge menggunakan perintah apigee-service saat Anda {i>login<i} ke server yang menjalankan layanan.

Untuk memeriksa status layanan dengan apigee-service:

  1. Login ke server dan jalankan perintah berikut:
    /opt/apigee/apigee-service/bin/apigee-service service_name status

    Dengan service_name adalah salah satu dari yang berikut:

    • Server Pengelolaan: edge-management-server
    • Pemroses Pesan: edge-message-processor
    • Postgres: edge-postgres-server
    • Qpid: edge-qpid-server
    • Router: edge-router

    Contoh:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
  2. Jika layanan tidak berjalan, mulai layanan:
    /opt/apigee/apigee-service/bin/apigee-service service_name start
  3. Setelah memulai ulang layanan, periksa apakah layanan berfungsi, dengan menggunakan Perintah apigee-service status yang Anda gunakan sebelumnya atau dengan menggunakan Management API dijelaskan dalam Memantau dengan Management API.

    Contoh:

    curl -v http://localhost:port_number/v1/servers/self/up

    Dengan port_number adalah port Management API untuk layanan.

    Contoh ini mengasumsikan bahwa Anda login ke server dan dapat menggunakan "localhost" sebagai nama host. Untuk memeriksa status dari jarak jauh dengan Management API, Anda harus menentukan IP server dan menyertakan nama pengguna dan {i>password<i} administrator sistem di API Anda panggilan telepon.

Pemantauan postgres

Postgres mendukung beberapa utilitas yang dapat Anda gunakan untuk memeriksa statusnya. Utilitas ini akan dijelaskan dalam bagian berikut.

Periksa organisasi dan lingkungan di Postgres

Anda dapat memeriksa nama organisasi dan lingkungan yang sudah terinstal di Server Postgres dengan mengeluarkan perintah curl berikut:

curl -v http://postgres_IP:8084/v1/servers/self/organizations

Sistem harus menampilkan nama organisasi dan lingkungan.

Memverifikasi status analisis

Anda dapat memverifikasi status server analisis Postgres dan Qpid dengan mengeluarkan Perintah curl:

curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus

Sistem akan menampilkan status berhasil untuk semua server analisis, seperti contoh berikut menampilkan:

{
  "environments" : [ {
    "components" : [ {
      "message" : "success at Thu Feb 28 10:27:38 CET 2013",
      "name" : "pg",
      "status" : "SUCCESS",
      "uuid" : "[c678d16c-7990-4a5a-ae19-a99f925fcb93]"
     }, {
      "message" : "success at Thu Feb 28 10:29:03 CET 2013",
      "name" : "qs",
      "status" : "SUCCESS",
      "uuid" : "[ee9f0db7-a9d3-4d21-96c5-1a15b0bf0adf]"
     } ],
    "message" : "",
    "name" : "prod"
   } ],
  "organization" : "acme",
  "status" : "SUCCESS"
}

Database PostgreSQL

Bagian ini menjelaskan teknik yang dapat Anda gunakan secara khusus untuk memantau Postgres di skrip untuk menyiapkan database.

Menggunakan skrip check_postgres.pl

Untuk memantau {i>database<i} PostgreSQL, Anda dapat menggunakan skrip pemantauan standar, check_postgres.pl. Untuk informasi selengkapnya, lihat http://bucardo.org/wiki/Check_postgres.

Sebelum Anda menjalankan skrip:

  1. Anda harus menginstal skrip check_postgres.pl di setiap node Postgres.
  2. Pastikan Anda telah menginstal perl-Time-HiRes.x86_64, yaitu modul Perl yang mengimplementasikan alarm resolusi tinggi, tidur, gettimeofday, dan timer interval. Sebagai contoh, Anda dapat menginstalnya dengan menggunakan perintah berikut:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: Sebelum menggunakan check_postgres.pl pada CentOS v7, instal RPM perl-Data-Dumper.x86_64.

output check_postgres.pl

Output default panggilan API yang menggunakan check_postgres.pl adalah Nagios yang kompatibel. Setelah menginstal skrip, lakukan pemeriksaan berikut:

  1. Periksa ukuran database:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800 GB' --critical='900 GB'
  2. Memeriksa jumlah koneksi masuk ke database dan membandingkannya dengan jumlah maksimum yang diizinkan koneksi:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
  3. Periksa apakah database berjalan dan tersedia:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Periksa kapasitas disk:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
  5. Periksa jumlah organisasi dan lingkungan yang diaktivasi di node Postgres:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select count(*) as result from pg_tables where schemaname='analytics' and tablename like '%fact'" --warning='80' --critical='90' --valtype=integer

Menjalankan pemeriksaan database

Anda dapat memastikan bahwa tabel yang tepat telah dibuat di database PostgreSQL. Login ke PostgreSQL menggunakan perintah berikut:

psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee

Kemudian, jalankan:

\d analytics."org.env.fact"

Memeriksa status respons proses postgres

Anda dapat melakukan pemeriksaan API pada mesin Postgres dengan memanggil curl berikut berikut:

curl -v http://postgres_IP:8084/v1/servers/self/health

Perintah ini menampilkan status ACTIVE saat proses postgres aktif. Jika Proses postgres tidak aktif dan berjalan. Proses ini akan menampilkan status INACTIVE.

Resource postgres

Untuk informasi tambahan tentang pemantauan layanan Postgres, lihat referensi berikut:

Apache Cassandra

JMX diaktifkan secara default untuk Cassandra dan akses JMX jarak jauh ke Cassandra tidak memerlukan {i>password<i}.

Aktifkan autentikasi JMX untuk Cassandra

Anda dapat mengaktifkan autentikasi JMX untuk Cassandra. Setelah melakukannya, Anda akan diminta untuk meneruskan nama pengguna dan {i>password<i} ke semua panggilan ke utilitas {i>nodetool<i}.

Guna mengaktifkan autentikasi JMX untuk Cassandra:

  1. Buat dan edit file cassandra.properties:
    1. Edit file /opt/apigee/customer/application/cassandra.properties. Jika file tidak ada, buatlah.
    2. Tambahkan kode berikut ke file:
      conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
      conf_cassandra-env_com.sun.management.jmxremote.password.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.password
      conf_cassandra-env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.access
    3. Simpan file cassandra.properties.
    4. Ubah pemilik file menjadi apigee:apigee, seperti yang ditampilkan dalam contoh berikut:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties

    Untuk informasi selengkapnya tentang penggunaan file properti untuk menetapkan token, lihat Cara mengonfigurasi Edge.

  2. Buat dan edit jmx_auth.sh:
    1. Buat file di lokasi berikut jika tidak ada:
      /opt/apigee/customer/application/jmx_auth.sh
    2. Tambahkan properti berikut ke file:
      export CASS_JMX_USERNAME=JMX_USERNAME
      export CASS_JMX_PASSWORD=JMX_PASSWORD
    3. Simpan file jmx_auth.sh.
    4. Sumber file:
      source /opt/apigee/customer/application/jmx_auth.sh
  3. Salin dan edit file jmxremote.password:
    1. Salin file berikut dari direktori $JAVA_HOME Anda ke /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
    2. Edit file jmxremote.password dan tambahkan nama pengguna serta sandi JMX Anda menggunakan sintaks berikut:
      JMX_USERNAME JMX_PASSWORD

      Dengan JMX_USERNAME dan JMX_PASSWORD adalah nama pengguna JMX dan {i>password<i} yang telah Anda tetapkan sebelumnya.

    3. Pastikan file dimiliki oleh "apigee" dan mode filenya adalah 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
  4. Salin dan edit file jmxremote.access:
    1. Salin file berikut dari direktori $JAVA_HOME Anda ke /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
    2. Edit file jmxremote.access dan tambahkan peran berikut:
      JMX_USERNAME readwrite
    3. Pastikan file dimiliki oleh "apigee" dan mode filenya adalah 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
  5. Jalankan configure di Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  6. Mulai ulang Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. Ulangi proses ini pada semua node Cassandra lainnya.

Aktifkan enkripsi sandi JMX

Untuk mengaktifkan enkripsi sandi JMX, lakukan langkah-langkah berikut:

  1. Buka file source/conf/casssandra-env.sh.
  2. Hapus tanda komentar pada baris berikut di file:
    • JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config={T}conf_cassandra-env_java.security.auth.login.config{/T}"
    • JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.login.config=ApigeeSecureFileLoginModule"
  3. Di command line, buat hash SHA1 sandi yang diinginkan dengan memasukkan echo -n 'Secret' | openssl dgst -sha1
  4. Setel sandi berdasarkan nama pengguna di jmxremote.password.
  5. Ubah kembali file cassandra-env.sh menjadi hanya baca setelah update.

Mengaktifkan JMX dengan SSL untuk Cassandra

Mengaktifkan JMX dengan SSL memberikan keamanan dan enkripsi tambahan untuk komunikasi berbasis JMX dengan Cassandra. Untuk mengaktifkan JMX dengan SSL, Anda harus menyediakan kunci dan sertifikat ke Cassandra untuk menerima koneksi JMX berbasis SSL. Anda juga perlu mengonfigurasi nodetool (dan alat lain yang berkomunikasi dengan Cassandra melalui JMX) untuk SSL.

JMX yang mendukung SSL mendukung teks biasa dan kata sandi JMX terenkripsi.

Guna mengaktifkan JMX dengan SSL untuk Cassandra, gunakan prosedur berikut:

  1. Aktifkan JMX. Aktifkan enkripsi sandi jika diperlukan.
  2. Aktifkan autentikasi JMX untuk Cassandra. sebagaimana dijelaskan di atas. Memastikan nodetool berfungsi dengan alat yang dikonfigurasi nama pengguna dan {i>password<i}.
    /opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
  3. Siapkan keystore dan truststore.

    • Keystore harus berisi kunci dan sertifikat, dan digunakan untuk mengkonfigurasi server Cassandra. Jika keystore berisi beberapa pasangan kunci, Cassandra menggunakan pasangan kunci pertama untuk mengaktifkan SSL.

      Perhatikan bahwa sandi untuk keystore dan kunci harus sama (setelan default saat Anda membuat kunci menggunakan keytool).

    • Truststore hanya boleh berisi sertifikat dan digunakan oleh klien (berbasis apigee-service {i>command<i} atau nodetool) untuk terhubung melalui JMX.

    Setelah memverifikasi persyaratan di atas:

    1. Tempatkan file keystore di /opt/apigee/data/apigee-cassandra.
    2. Pastikan file keystore dapat dibaca oleh pengguna Apigee hanya dengan memasukkan
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1
      chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
  4. Konfigurasikan Cassandra untuk JMX dengan SSL dengan melakukan langkah-langkah berikut:
    1. Hentikan node Cassandra dengan memasukkan
      apigee-service apigee-cassandra stop
    2. Aktifkan SSL di Cassandra dengan membuka file /opt/apigee/customer/application/cassandra.properties dan menambahkan baris berikut:
      conf_cassandra-env_com.sun.management.jmxremote.ssl=true

      File harus dimiliki oleh apigee:apigee.

    3. Aktifkan konfigurasi terkait SSL di Cassandra sebagai berikut. Buka file /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh dan menghapus tanda komentar pada baris berikut, mengubah jalur /opt/apigee/data/apigee-cassandra/keystore.node1 dan sandi keystore jika diperlukan.
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node1"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keystore-password"
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true"
      Pastikan file dimiliki oleh apigee:apigee.
    4. Mulai node Cassandra dengan memasukkan
      apigee-service apigee-cassandra start
  5. Konfigurasi perintah Cassandra apigee-service. Anda perlu menetapkan variabel lingkungan tertentu saat menjalankan Perintah apigee-service, termasuk yang di bawah ini:
    apigee-service apigee-cassandra stop
    apigee-service apigee-cassandra wait_for_ready
    apigee-service apigee-cassandra ring
    apigee-service apigee-cassandra backup

    Ada beberapa opsi untuk mengonfigurasi apigee-service untuk autentikasi JMX dan SSL. Pilih sebuah opsi berdasarkan kegunaan dan praktik keamanan Anda.

    Opsi 1 (Argumen SSL yang disimpan dalam file)

    Tetapkan variabel lingkungan berikut:

    export CASS_JMX_USERNAME=ADMIN
    # Provide encrypted password here if you have setup JMX password encryption
    export CASS_JMX_PASSWORD=PASSWORD
    export CASS_JMX_SSL=Y

    Buat file di direktori utama pengguna Apigee (/opt/apigee).

    $HOME/.cassandra/nodetool-ssl.properties

    Edit file dan tambahkan baris berikut:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    Pastikan file wali dapat dibaca oleh pengguna Apigee.

    Jalankan perintah apigee-service berikut. Jika berjalan tanpa error, konfigurasi Anda sudah benar.

    apigee-service apigee-cassandra ring

    Opsi 2 (Argumen SSL yang disimpan dalam variabel lingkungan)

    Tetapkan variabel lingkungan berikut:

    export CASS_JMX_USERNAME=ADMIN
    # Provide encrypted password here if you have setup JMX password encryption
    export CASS_JMX_PASSWORD=PASSWORD
    export CASS_JMX_SSL=Y
    # Ensure the truststore file is accessible by Apigee user.
    export CASS_JMX_TRUSTSTORE=<path-to-trustore.node1>
    export CASS_JMX_TRUSTSTORE_PASSWORD=<truststore-password>

    Jalankan perintah apigee-service berikut. Jika berjalan tanpa error, konfigurasi Anda sudah benar.

    apigee-service apigee-cassandra ring

    Opsi 3 (Argumen SSL yang diteruskan langsung ke apigee-service)

    Jalankan perintah apigee-service seperti di bawah ini. Anda tidak perlu mengonfigurasi variabel lingkungan apa pun.

    CASS_JMX_USERNAME=ADMIN CASS_JMX_PASSWORD=PASSWORD CASS_JMX_SSL=Y CASS_JMX_TRUSTSTORE=<path-to-trustore.node1> CASS_JMX_TRUSTSTORE_PASSWORD=<trustore-password> /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra ring
  6. Siapkan nodetool. Nodetool memerlukan parameter JMX untuk diteruskan ke nodetool. Ada dua cara Anda dapat mengkonfigurasi nodetool untuk dijalankan dengan JMX yang mendukung SSL, seperti yang dijelaskan dalam opsi konfigurasi di bawah ini:

    Opsi tersebut berbeda dalam cara konfigurasi terkait SSL diteruskan ke nodetool. Dalam kedua kasus tersebut, pengguna yang menjalankan nodetool harus memiliki izin BACA pada file truststore. Pilih opsi yang sesuai berdasarkan kegunaan dan praktik keamanan Anda.

    Untuk mempelajari parameter nodetool lebih lanjut, lihat Dokumentasi DataStax.

    Opsi Konfigurasi 1

    Buat file di direktori beranda pengguna yang menjalankan nodetool.

    $HOME/.cassandra/nodetool-ssl.properties

    Tambahkan baris berikut ke file:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    Jalur truststore yang ditentukan di atas harus dapat diakses oleh setiap pengguna yang menjalankan nodetool.

    Jalankan nodetool dengan opsi --ssl.

    /opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

    Opsi konfigurasi 2

    Jalankan nodetool sebagai perintah tunggal dengan parameter ekstra yang tercantum di bawah.

    /opt/apigee/apigee-cassandra/bin/nodetool -Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true -Dssl.enable=true -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

Kembalikan konfigurasi SSL

Jika Anda perlu mengembalikan konfigurasi SSL yang dijelaskan dalam prosedur di atas, lakukan langkah-langkah berikut:

  1. Hentikan apigee-cassandradengan masuk
    apigee-service apigee-cassandra stop
  2. Hapus baris conf_cassandra-env_com.sun.management.jmxremote.ssl=true dari file /opt/apigee/customer/application/cassandra.properties.
  3. Jadikan baris berikut di /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh sebagai komentar
    # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node0"
    # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keypass"
    # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true”
  4. Mulai apigee-cassandra dengan memasukkan
  5. apigee-service apigee-cassandra start
  6. Hapus variabel lingkungan CASS_JMX_SSL jika telah ditetapkan.

    unset CASS_JMX_SSL
  7. Pastikan perintah berbasis apigee-service seperti ring, stop, backup, dan sebagainya, berfungsi.
  8. Berhenti menggunakan tombol --ssl dengan nodetool

Nonaktifkan autentikasi JMX untuk Cassandra

Guna menonaktifkan autentikasi JMX untuk Cassandra:

  1. Edit /opt/apigee/customer/application/cassandra.properties.
  2. Hapus baris berikut di file:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Jalankan konfigurasi di Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Mulai ulang Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  5. Ulangi proses ini pada semua node Cassandra lainnya.

Menggunakan JConsole: Memantau statistik tugas

Gunakan JConsole dan URL layanan berikut untuk memantau atribut JMX (MBean) yang ditawarkan melalui JMX:

service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi

Dengan IP_address adalah IP server Cassandra.

Statistik Cassandra JMX

JMX MBean Atribut JMX

ColumnFamilies/apprepo/environments

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

ColumnFamilies/audit/audits

ColumnFamilies/audit/audits_ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

Menggunakan nodetool untuk mengelola node cluster

Utilitas {i>nodetool<i} adalah antarmuka baris perintah untuk Cassandra yang mengelola node cluster. Utilitas ini dapat ditemukan di /opt/apigee/apigee-cassandra/bin.

Panggilan berikut dapat dilakukan pada semua node cluster Cassandra:

  1. Info dering umum (juga dapat dilakukan untuk node Cassandra tunggal): Cari "Naik" dan "Normal" untuk semua node.
    nodetool [-u username -pw password] -h localhost ring

    Anda hanya perlu memasukkan nama pengguna dan {i>password<i} jika Anda mengaktifkan autentikasi JMX untuk Cassandra.

    Output perintah di atas terlihat seperti yang ditunjukkan di bawah ini:

    Datacenter: dc-1
    ==========
    Address            Rack     Status State   Load    Owns    Token
    192.168.124.201    ra1      Up     Normal  1.67 MB 33,33%  0
    192.168.124.202    ra1      Up     Normal  1.68 MB 33,33%  5671...5242
    192.168.124.203    ra1      Up     Normal  1.67 MB 33,33%  1134...0484
  2. Info umum tentang node (panggilan per node)
    nodetool [-u username -pw password]  -h localhost info

    Output perintah di atas akan terlihat seperti berikut:

    ID                     : e2e42793-4242-4e82-bcf0-oicu812
    Gossip active          : true
    Thrift active          : true
    Native Transport active: true
    Load                   : 273.71 KB
    Generation No          : 1234567890
    Uptime (seconds)       : 687194
    Heap Memory (MB)       : 314.62 / 3680.00
    Off Heap Memory (MB)   : 0.14
    Data Center            : dc-1
    Rack                   : ra-1
    Exceptions             : 0
    Key Cache              : entries 150, size 13.52 KB, capacity 100 MB, 1520781 hits, 1520923 requests, 1.000 recent hit rate, 14400 save period in seconds
    Row Cache              : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 0 save period in seconds
    Counter Cache          : entries 0, size 0 bytes, capacity 50 MB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds
    Token                  : 0
  3. Status server barang bekas (yang menyalurkan API klien)
    nodetool [-u username -pw password] -h localhost statusthrift

    Output dari perintah di atas akan terlihat seperti berikut:

    running
  4. Status operasi streaming data: Amati traffic untuk node cassandra:
    nodetool [-u username -pw password] -h localhost netstats

    Output dari perintah di atas akan terlihat seperti berikut:

    Mode: NORMAL
    Not sending any streams.
    Read Repair Statistics:
    Attempted: 151612
    Mismatch (Blocking): 0
    Mismatch (Background): 0
    Pool Name                    Active   Pending      Completed   Dropped
    Commands                        n/a         0              0         0
    Responses                       n/a         0              0       n/a

Untuk mengetahui info selengkapnya tentang nodetool, lihat Tentang utilitas nodetool.

Referensi Cassandra

Lihat URL berikut: http://www.datastax.com/docs/1.0/operations/monitoring.

Apache ZooKeeper

Periksa status ZooKeeper

  1. Pastikan proses ZooKeeper sedang berjalan. ZooKeeper menulis file PID ke opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
  2. Uji port ZooKeeper untuk memastikan bahwa Anda dapat membuat koneksi TCP ke porta 2181 dan 3888 di setiap server ZooKeeper.
  3. Pastikan Anda dapat membaca nilai dari database ZooKeeper. Terhubung menggunakan ZooKeeper library klien (atau /opt/apigee/apigee-zookeeper/bin/zkCli.sh) dan membaca nilai dari {i>database<i}.
  4. Periksa statusnya:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status

Menggunakan kata empat huruf ZooKeeper

ZooKeeper dapat dipantau melalui serangkaian perintah kecil (kata empat huruf) yang dikirim ke porta 2181 menggunakan netcat (nc) atau telnet.

Untuk mengetahui informasi selengkapnya tentang perintah ZooKeeper, lihat: Referensi perintah Apache ZooKeeper.

Contoh:

  • srvr: Mencantumkan detail lengkap untuk server.
  • stat: Mencantumkan detail singkat untuk server dan klien yang terhubung.

Perintah berikut dapat dikeluarkan ke port ZooKeeper:

  1. Jalankan ruok perintah empat huruf untuk menguji apakah server berjalan dalam status bukan error. J respons yang berhasil akan menampilkan "imok".
    echo ruok | nc host 2181

    Retur:

    imok
  2. Jalankan perintah empat huruf, stat, untuk membuat daftar performa server dan terhubung statistik klien:
    echo stat | nc host 2181

    Retur:

    Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
    Clients:
    /0:0:0:0:0:0:0:1:33467[0](queued=0,recved=1,sent=0)
    /192.168.124.201:42388[1](queued=0,recved=8433,sent=8433)
    /192.168.124.202:42185[1](queued=0,recved=1339,sent=1347)
    /192.168.124.204:39296[1](queued=0,recved=7688,sent=7692)
    Latency min/avg/max: 0/0/128
    Received: 26144
    Sent: 26160
    Connections: 4
    Outstanding: 0
    Zxid: 0x2000002c2
    Mode: follower
    Node count: 283
  3. Jika {i>netcat (nc)<i} tidak tersedia, Anda dapat menggunakan {i>python <i}sebagai alternatif. Membuat file bernama zookeeper.py yang berisi hal berikut:
    import time, socket,
    sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    c.connect((sys.argv[1], 2181))
    c.send(sys.argv[2])
    time.sleep(0.1)
    print c.recv(512)

    Sekarang jalankan baris python berikut:

    python zookeeper.py 192.168.124.201 ruok
    python zookeeper.py 192.168.124.201 stat

Pengujian level LDAP

Anda dapat memantau OpenLDAP untuk melihat apakah permintaan tertentu disajikan dengan benar. Di beberapa dengan kata lain, memeriksa penelusuran tertentu yang memberikan hasil yang benar.

  1. Gunakan ldapsearch (yum install openldap-clients) untuk mengkueri entri dari admin sistem. Entri ini digunakan untuk mengautentikasi semua panggilan API.
    ldapsearch -b "uid=admin,ou=users,ou=global,dc=apigee,dc=com" -x -W -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -LLL

    Kemudian, Anda akan diminta memasukkan sandi admin LDAP:

    Enter LDAP Password:

    Setelah memasukkan sandi, Anda akan melihat respons dalam formulir:

    dn:
    uid=admin,ou=users,ou=global,dc=apigee,dc=com
    objectClass: organizationalPerson
    objectClass: person
    objectClass: inetOrgPerson
    objectClass: top
    uid: admin
    cn: admin
    sn: admin
    userPassword:: e1NTSEF9bS9xbS9RbVNXSFFtUWVsU1F0c3BGL3BQMkhObFp2eDFKUytmZVE9PQ=
     =
    mail: opdk@google.com
  2. Periksa apakah Management Server masih terhubung ke LDAP dengan perintah berikut:
    curl -u userEMail:password http://localhost:8080/v1/users/ADMIN

    Retur:

    {
      "emailId" : ADMIN,
      "firstName" : "admin",
      "lastName" : "admin"
    }

Anda juga dapat memantau {i>cache<i} OpenLDAP, yang membantu mengurangi jumlah akses {i>disk<i} sehingga meningkatkan kinerja sistem. Memantau, lalu menyesuaikan ukuran cache Server OpenLDAP dapat sangat mempengaruhi kinerja server direktori. Anda dapat melihat log file (opt/apigee/var/log) untuk memperoleh informasi tentang cache.