PHP izleme uzantısı
Instana aracısı, PHP ortamınızdan izleme toplamak için PHP izleme uzantısını gerektirir. PHP algılayıcısı etkinleştirildiğinde PHP izleme uzantısı otomatik olarak karşıdan yüklenir.
- PHP izleme uzantısı ayarları
- PHP Tracer 2.0
- Instana PHP izleme uzantısının kaldırılması
- Otomatik yeniden başlatma
PHP izleme uzantısı ayarları
Gerekli PHP uzantıları
PHP Tracer 'ı çalıştırmak için JSON uzantısına sahip olmanız gerekir.
Instana izleme uzantısı karşıdan yüklendikten sonra, uzantı zzz-instana.ini dosyasını Additional ini dizininize yerleştirir ya da dosyayı PHP SAPI tarafından kullanılan ini dosyasına ekler.
Daha sonra algılayıcı, izleme uzantısını belleğe yüklemek için PHP ortamınızı yeniden başlatmayı dener. Daha fazla bilgi için bkz. Otomatik yeniden başlatma.
Ayrıca, Plesk kullanıyorsanız, plesk bin php_handler --rereadkomutunu çalıştırmanız gerekir.
PHP uzantısı ayarlarının uyarlanması
PHP izleme uzantısı, zzz-instana.iniiçindeki çoğu izleme senaryosu için aynı varsayılan değerlerle birlikte gönderilir. Ancak, ayarları örnekleme, toplu iş ya da grubuyla bağlama gibi belirli gereksinimleri karşılayacak şekilde ayarlayabilirsiniz.
İzleme uzantısı PHP ortamına yüklendiyse, PHP algılayıcısı zzz-instana.ini üzerine yazmaz. Bu nedenle, uzantıya güvenli bir şekilde ek ayarlar ekleyebilseniz de, konteynerli ayarlarda fazladan ayar eklemek uygunsuz olabilir. Bu tür senaryolarda iyi bir uygulama, fazladan bir dosya eklemek zzz-instana-extras.ini ve bu dosyayı kapsayıcı devreye alımının bir parçası haline getirmektir.
Aşağıdaki ayarlar kullanılabilir:
instana.socket: Instana PHP Sensor 'un TCP yuvasının adresi. Yuva adresi kuruluş sırasında belirlenir ve varsayılan olarak tcp://127.0.0.1:16816değerine ayarlanır.instana.log_level: Günlüğün kaydedileceği düzey: 0 = kapalı, 1 = HATA, 2 = UYARI, 3 = BİLGİ ve 4 = HATA AYIKLAMA. Varsayılan değer 0 'dır (kapalı).instana.enable_cli: CLI SAPI için izlemeyi etkinleştirin ya da devre dışı bırakın. 1 = açık. 0 = kapalı. Varsayılan değer 0 'dır (kapalı).instana.batch_threshold_us: Kümenin yayıldığı uzunluk ve uzaklık eşiği. Varsayılan değer 10000 'dir.instana.backtrace_limit: Kayıtlı çağrı yığınlarının derinliğini denetler. Varsayılan ya da sınırlandırılan değer 25 giriştir.instana.span_chunk_size: PHP ' nin aracıya gönderilmeden önce bellekte tutması gereken yayılma sayısı. Bu sayı doğrudan toplu işi etkiler. Örneğin, toplu işi etkili bir şekilde devre dışı bırakan bir grup.instana.disable_userland_tracing: Yerel olmayan uzantılar (örneğin, çerçeveler ve diğer PHP kullanıcı ülke kodu) için tüm izlemeyi devre dışı bırakır. Varsayılan değer 0 'dır (kapalı).instana.segfault_error_log: PHP ' nin hata oturum açma segfaullerine ilişkin bir geri izleme yakalayın ya da bunlardan kaçının. Varsayılan değer 0 'dır (kapalı).instana.disabled_instrumentation: Devre dışı bırakılması gereken özel işlemlerden oluşan bit maskesi. Varsayılan değer 0 'dır (yok).
Kullanılabilir işaretler
Aşağıdaki işaretler kullanılabilir:
- AKışLAR 1
- PHP 2
- PDO 4
- CURL 8
- REDIS 16
- MONGODB 32
- MYSQL 64
- MEMCACHE 128
- Db2 256
- OCI 512
- KABUK 1024
- PECL_HTTP 2048
- ISTEK_ÜSTBILGILERI 4096
- YANıT_BAşLıKLAR 8192
- SOAP 16384
- WORDPRESS 32768
- AMQP 65536 (hem
pecl-amqphem dephp-amqp-libiçin geçerlidir) - ELASTICSEARCH 131072
- KURAL Dışı DURUMLAR 262144
- GüNLüKLER 524288
- COUCHBASE 1048576
- TWIG 2097152
- SYMFONY 4194304
- KOHANA 134217728
- GOOGLE_PUBSUB 268435456
İşaretler ada göre görüntülenmez. Bir özel işlemden geçirmeyi geçersiz kılmak için sayısal değerlerini kullanmanız gerekir.
Bu ayarlarla ilgili yardıma gereksinim duyarsanız, IBM desteğine başvurun.
PHP Tracer özelliğinin etkinleştirilmesi 2.0
PHP uygulamalarını izlerken Instana aracısıyla performans sorunlarıyla (yüksek CPU kullanımı gibi) karşılaşırsanız, daha iyi sonuçlar için Instana PHP Tracer 2.0 ' ı kullanabilirsiniz.
Önemli: PHP Tracer 2.0 tüm PHP sürümlerini desteklemez. Daha fazla bilgi için bkz. Desteklenen PHP sürümleri.
PHP Tracer 2.0 ' ın ilk kez yapılandırılması
PHP Tracer 2.0 ' ı ilk kez kuruyorsanız, aşağıdaki adımları tamamlayın:
Apache ya da NGINX gibi bir web sunucusu kullanıyorsanız, aşağıdaki komutları çalıştırarak bunu durdurun ve PHP FastCGI Process Manager (PHP-FPM) yardımcı programını durdurun:
systemctl stop apache2systemctl stop php<version>-fpmÖrneğin:
systemctl stop php7.4-fpmAşağıdaki yapılandırmaları kullanarak aracı yapılandırma dosyasını
/opt/instana/agent/etc/instana/configuration.yamlgüncelleyin:com.instana.plugin.php: tracing: enabled: true enableHttpTraces: true installExtension: true pinextensionVersion: 2.0.1Aşağıdaki komutları çalıştırarak web sunucunuza ilişkin yardımcı program işlemini (örneğin, Apache 2 ya da NGINX) başlatın:
systemctl daemon-reloadsystemctl start apache2systemctl start php<version>-fpmInstana aracısını başlatın ya da yeniden başlatın ve aşağıdaki komutları kullanarak durumunu denetleyin:
systemctl start instana-agentsystemctl restart instana-agentsystemctl status instana-agentAşağıdaki ini ayarlarının
zzz-instana.inidosyasında doğru değerlere sahip olup olmadığını doğrulayın. Bu YönOrtama özgü ayarları listelemek için aşağıdaki komutu kullanın:php-fpm<version> -i |grep instanainstana.use_agent_endpoint: Bu değer 1 olarak ayarlanmalıdır.instana.agent_endpoint: Bu değerhttp://127.0.0.1:42699olarak ayarlanmalıdır.instana.pid_in_root_namespace: mod_php 'yi Apacheile kullanıyorsanız, bu değer Apache işlem tanıtıcısıyla eşleşmelidir. FPM Apachearacılığıyla yapılandırıldıysa, bu değer PHP-FPM ana işlem tanıtıcısı olmalıdır. Değer eşleşmiyorsa,instana.pid_in_root_namespacedosyasını düzenleyin ve aşağıdaki komutu kullanarak FPM ya da Apache yardımcı programını yeniden yükleyin:systemctl reload php<version>-fpmsystemctl reload apache2
NOT: Aşağıdaki komutları kullanarak işlem tanıtıcısını alabilirsiniz:
ps ax | grep fpmps -ax| grep apache2Instana kullanıcı arabirimindeki PHP çalıştırma zamanı gösterge panosunda, PHP uzantı sürümünün ve
zzz-instana.inisürümünün var olduğunu doğrulayın. Bu bilgilerin kullanıcı arabiriminde yansıtımesi biraz zaman alabilir. FPM ' yi yeniden başlatıyorsanız, işlem tanıtıcısının ana işlem tanıtıcısıyla eşleştiğinden emin olun.
PHP Tracer 'a yükseltme 2.0
PHP Tracer 1.0kullanıyorsanız, PHP Tracer 2.0:
Instana aracısını ve PHP-FPM ve Apache yardımcı programını durdurmak için aşağıdaki komutları çalıştırın:
systemctl stop instana-agentsystemctl stop apache2systemctl stop php<version>-fpmİsteğe bağlı: php extension_dir
extension_dirve php ini scan--with-config-file-scan-dirdizinlerindeninstana.sovezzz-instana.iniyapılandırma dosyalarını yedekleyin.instana.soikili dosyasını vezzz-instana.inidosyasını php extension_dirextension_dirve php ini scan--with-config-file-scan-dirdizinlerinden kaldırın.PHP Tracer 2.0'ı etkinleştirmek için, PHP Tracer 2.0 ' ın ilk kez yapılandırılması kısmında açıklanan adımları izleyin.
Instana PHP izleme uzantısının kaldırılması
Instana PHP izleme uzantısını kaldırmak için önce PHP algılayıcısını başlatmayı devre dışı bırakmanız gerekir. Tersi durumda, uzantıyı yeniden kurar. Kuruluştan farklı olarak, kaldırma otomatik değildir ve el ile gerçekleştirilmesi gereken daha fazla adım gerektirir.
PHP izleme algılayıcısını devre dışı bırakma
PHP İzleme algılayıcısını devre dışı bırakmak için aşağıdaki adımları tamamlayın:
<agent_install_dir>/etc/instana/configuration.ymldosyasını bir metin düzenleyicisiyle açın. Aşağıdaki giriş görüntülenir:
com.instana.plugin.php:
tracing:
enabled: true
enabled: truedeğerinienabled: falseolarak değiştirin. İzleme varsayılan olarak etkinleştirildiğinden,falseaçıklama ekleme işlemi izlemeyi devre dışı bırakmaz.
Diğer bir seçenek olarak, PHP izleme uzantısının kuruluşunu devre dışı bırakmak, ancak izlemeler için algılayıcıyı açık tutmak için installExtension: false ayarını da ayarlayabilirsiniz.
Değişiklikleri uygulamak için aracıyı yeniden başlatmanız gerekir.
Not: Algılayıcının devre dışı bırakılması, izleme uzantısını devre dışı bırakmaz.
PHP izleme uzantısının geçersiz kılınması
PHP algılayıcısı uzantıyı taktığında, PHP kuruluşunuz için uzantıyı da etkinleştirdi. Uzantının etkinleştirilmesi, PHP algılayıcısının zzz-instana.ini dosyasını Additional Ini dosyalar klasörünüze yerleştirdiği ya da doğrudan php.inidosyanıza etkinleştirdiği anlamına gelir.
Nerede etkinleştirildiğini öğrenmek için, izlemeyi etkinleştirdiğiniz PHP ikili dosyasını çalıştırın. Aşağıdaki örnek, PHP-FPM için PHP ikili dosyasını göstermektedir:
$> php-fpm7.0 -i | egrep "^(Scan|Loaded)"
Loaded Configuration File => /etc/php/7.0/fpm/php.ini
Scan this dir for additional .ini files => /etc/php/7.0/fpm/conf.d
Bu örnekte, zzz-instana.ini dosyası /etc/php/7.0/fpm/conf.ddizininde bulunur. Kullanılabilir bir Additional Ini dosya klasörü yoksa ya da zzz-instana.ini dosyası o konumda yoksa, bunun yerine php.ini dosyanızı denetleyin. Bu örnekte dosya /etc/php/7.0/fpm/php.ini' dedir.
Not: Mod_php içeren Apache için, <?php phpinfo(); içerikli bir PHP dosyasını Apache üzerinde web üzerinden erişilebilir bir konuma koyun ve aynı bilgiler için bir tarayıcıda açın.
PHP izleme uzantısını geçersiz kılmak için aşağıdaki adımları izleyin:
Uygun
inidosyasını bir düzenleyicide açın veextension=/path/to/instana.sosatırında noktalı virgül (;) önekini ekleyin. Satırın dışına noktalı virgül açıklamaları ekleniyor.;extension=/path/to/instana.soDiğer bir seçenek olarak,
extension=/path/to/instana.soçizgisini tümüyle kaldırın. Not: Uzantının daha sonraki bir noktada etkinleştirilmesini istiyorsanız kaldırmayın.zzz-instana.inikütüğüne sahipseniz, kütüğü aşağıdaki gibi tümüyle kaldırabilirsiniz:$> sudo rm /etc/php/7.0/fpm/conf.d/zzz-instana.iniÖnemli:
php.inidosyanızın tamamını kaldırmayın.Önceden çatallı çalışanlar kullanıyorsanız, PHP ana sürecini şimdi yeniden başlatmanız gerekir. Tersi durumda, uzantı bellekte etkin kalır.
Not: Uzantının devre dışı bırakılması, uzantıyı sisteminizden kaldırmaz.
PHP izleme uzantısının kaldırılması
PHP, bir uzantı bulamadığında başlatma hatalarını günlüğe kaydeder; bu nedenle, uzantıyı kaldırmadan önce de devre dışı bırakmanız gerekir. Daha fazla bilgi için PHP izleme uzantısını devre dışı bırakmabaşlıklı konuya bakın.
PHP algılayıcısı, Instana PHP izleme uzantısını php.iniiçindeki extension_dir ayarında belirtilen dizine yerleştirir. Ayarı öğrenmek için izlemeyi etkinleştirdiğiniz PHP ikili dosyasını çalıştırın. Aşağıdaki örnek, PHP-FPM için PHP ikili dosyasını göstermektedir:
$> php-fpm7.0 -i | egrep ^extension_dir
extension_dir => /usr/lib/php/20151012 => /usr/lib/php/ext
Not: Mod_php içeren Apache için, <?php phpinfo(); içerikli bir PHP dosyasını Apache üzerinde web üzerinden erişilebilir bir konuma koyun ve aynı bilgiler için bir tarayıcıda açın.
PHP algılayıcısı yalnızca ilk değeri kullanır; bu nedenle, örnekte at/usr/lib/php/20151012uzantısını bulabilirsiniz. Uzantının yolu php.ini ya da instana.iniiçinde de verilir.
Uzantıyı kaldırmak için aşağıdaki komutu çalıştırın:
$> sudo rm /usr/lib/php/20151012/instana.so
Önceden çatallı çalışanlar kullanıyorsanız ve uzantıyı devre dışı bıraktığınızda PHP ana sürecinizi yeniden başlatmadıysanız, değişikliklerin yürürlüğe girmesi için şimdi yeniden başlatmanız gerekir.
Otomatik yeniden başlatma
PHP algılayıcısı, PHP kurulumunuz için uygun PHP izleme uzantısını otomatik olarak yükler ve kurar. Ayrıca, algılayıcı uzantıyı belleğe yüklemek için PHP ortamınızı yeniden başlatmayı dener. Şu anda Apache ve PHP-FPM için otomatik yeniden başlatma desteklenir. PHP-CGI ortamları el ile ya da komut dosyalı işlemeye gereksinim duyar.
PHP algılayıcısını notificationScript yapılandırma ayarı aracılığıyla PHP ortamınızı yeniden başlatma girişiminde bulunma şeklini değiştirebilirsiniz. Ayar, yürütülebilir bir kabuk komut dosyasının mutlak yolunu alır. Bu komut dosyası, kurulu izleme uzantısı aracının kurulduğundan farklı bir sürüm olduğunda tetiklenir.
Bu komut dosyası yapılandırıldığında ve başarıyla çalıştırıldığında, otomatik yeniden başlatma için varsayılan mekanizmayı geçersiz kılar. Varsayılan mekanizmadan farklı olarak, komut dosyası herhangi bir SAPI için yürütülür, bu nedenle PHP-CGI ortamları için yeniden başlatmaları otomatikleştirmek için kullanılabilir. Otomatik yeniden başlatmayı tamamen devre dışı bırakmak istiyorsanız, boş bir komut dosyası yapılandırın.
PHP algılayıcısı, komut dosyası yürütmesi için aşağıdaki ortam değişkenlerini ayarlar:
INSTANA_EXT_VERSION_OLD = the version of the tracing extension currently in memory
INSTANA_EXT_VERSION_NEW = the version of the tracing extension after a restart
INSTANA_PID_HOST = the PID of the process on the host, e.g. your Apache, PHP-FPM or PHP-CGI
INSTANA_PID_CONTAINER = the PID the host process has in a container (if applicable)
INSTANA_CONTAINER = the ID/name of the container the process is running in (if applicable)
Aşağıdaki örnekte, uzantı değişikliklerini bir dosyaya kaydeden ve Apache' yi yeniden başlatan bir komut dosyası gösterilmektedir:
#!/bin/bash
echo "Found new tracing extension." >> php_update.log;
echo "INSTANA_EXT_VERSION_OLD=$INSTANA_EXT_VERSION_OLD" >> php_update.log;
echo "INSTANA_EXT_VERSION_NEW=$INSTANA_EXT_VERSION_NEW" >> php_update.log;
echo "INSTANA_PID_HOST=$INSTANA_PID_HOST" >> php_update.log;
echo "INSTANA_PID_CONTAINER=$INSTANA_PID_CONTAINER" >> php_update.log;
echo "INSTANA_CONTAINER=$INSTANA_CONTAINER" >> php_update.log;
echo "restarting apache" >> php_update.log;
apachectl -k graceful >> php_update.log;
Apache ürününüz bir taşıyıcı içinde çalışıyorsa, örnek komut dosyasındaki son satırı aşağıdaki satırla değiştirin:
docker exec $INSTANA_CONTAINER apachectl -k graceful;
PHP-FPM için, aşağıdaki örnekte gösterildiği gibi SIGUSR2 göndererek yeniden başlatabilirsiniz:
docker exec $INSTANA_CONTAINER kill -USR2 $INSTANA_PID_CONTAINER;
Zarif bir yeniden başlatma, ana işlemi yeniden başlatmadan PHP uzantısını belleğe yükler. Bu nedenle bu yükleme, işlem konteyner içinde PID 1 olarak çalıştırıldığında bile çalışır. Yeniden başlatma yaklaşımını kullanamazsanız ya da kullanmak istemiyorsanız, çalışan taşıyıcı eşgörünümünün anlık görünümünü yaratabilir, durdurabilir ve kolayca yeni bir yönetim ortamı açabilirsiniz:
#!/bin/bash
IMAGE_HASH=$(docker inspect --format='{{.Config.Image}}' $INSTANA_CONTAINER)
IMAGE_NAME=$(docker images | grep $IMAGE_HASH | awk '{print $1}')
IMAGE_TAG="instana-php-$INSTANA_EXT_VERSION_NEW"
docker commit $INSTANA_CONTAINER $IMAGE_NAME:$IMAGE_TAG &&
docker stop $INSTANA_CONTAINER &&
docker run -d --rm $IMAGE_NAME:$IMAGE_TAG
Bu eylem, kapsayıcı resminin adını bulmak için komut dosyasına iletilen kapsayıcı tanıtıcısını kullanır. Daha sonra, çalışmakta olan taşıyıcıyı yeni PHP uzantısı sürüm numarasıyla etiketlenmiş yeni bir görüntüde kesinleştirir. Daha sonra özgün kapsayıcıyı durdurur ve yeni etiketlenen resimden bir kapsayıcı başlatır. Bu işlem PHP algılayıcısında kuruluş yordamını yeniden tetiklerken, uzantı zaten kurulu olduğu için bildirim komut dosyasını yeniden tetiklemez.
Bu örnekler, kapsayıcı motorunuz olarak Docker kullandığınızı varsayar. Ancak, tetiklenen kabuk komut dosyası tamamen sizin kontrolünüz altında olduğundan, otomatik yeniden başlatmanın kurulumunuz için çalışmasını sağlamak için ihtiyacınız olan her mantığı koyabilirsiniz.