{"id":3947,"date":"2026-01-01T23:17:35","date_gmt":"2026-01-01T20:17:35","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/php-ve-javascript-uygulamalarinda-sentry-ile-hata-izleme-ve-vpste-observability\/"},"modified":"2026-01-01T23:17:35","modified_gmt":"2026-01-01T20:17:35","slug":"php-ve-javascript-uygulamalarinda-sentry-ile-hata-izleme-ve-vpste-observability","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/php-ve-javascript-uygulamalarinda-sentry-ile-hata-izleme-ve-vpste-observability\/","title":{"rendered":"PHP ve JavaScript Uygulamalar\u0131nda Sentry ile Hata \u0130zleme ve VPS\u2019te Observability"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><p>PHP veya JavaScript ile geli\u015ftirdi\u011finiz bir uygulamada, kullan\u0131c\u0131 size sadece \u015funu s\u00f6yler: &#8220;Bazen \u00e7al\u0131\u015fm\u0131yor.&#8221; Hangi sayfada, hangi taray\u0131c\u0131da, ne zaman, hangi hatayla bozuldu\u011funu \u00e7o\u011fu zaman bilmezsiniz. Klasik sunucu loglar\u0131na bakars\u0131n\u0131z; ama istemci taraf\u0131ndaki JavaScript hatalar\u0131 orada yoktur. \u00dcstelik loglar\u0131n\u0131z dolu, filtrelemesi zor, kritik hatalar sessizce arada kaynay\u0131p gidiyor.<\/p>\n<p>\u0130\u015fte tam bu noktada yap\u0131land\u0131r\u0131lm\u0131\u015f hata izleme (error tracking) ve genel olarak observability devreye giriyor. Uygulaman\u0131zdaki her hatay\u0131 ba\u011flam\u0131yla birlikte toplayan, grupland\u0131ran ve size okunabilir, aksiyon al\u0131nabilir bir formatta sunan ara\u00e7lar; hem geli\u015ftirme s\u00fcrecini hem de \u00fcretim ortam\u0131ndaki stabiliteyi bamba\u015fka bir seviyeye ta\u015f\u0131yor. PHP backend ve JavaScript frontend d\u00fcnyas\u0131nda en yayg\u0131n \u00e7\u00f6z\u00fcmlerden biri Sentry. Buna ek olarak a\u00e7\u0131k kaynak alternatifler ve tamamlay\u0131c\u0131 log\/metric\/trace \u00e7\u00f6z\u00fcmleri de art\u0131k olgunla\u015ft\u0131.<\/p>\n<p>Bu yaz\u0131da DCHost ekibi olarak, PHP ve JavaScript projelerinde Sentry temelli hata izlemeyi, a\u00e7\u0131k kaynak se\u00e7enekleriyle birlikte kendi <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a>\u2019iniz \u00fczerinde nas\u0131l konumland\u0131rabilece\u011finizi ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Amac\u0131m\u0131z sadece bir ara\u00e7 tan\u0131tmak de\u011fil; ayn\u0131 zamanda loglama, metrik ve iz (trace) katman\u0131n\u0131 da i\u00e7eren sa\u011fl\u0131kl\u0131 bir observability mimarisini pratik bir dille kurman\u0131za yard\u0131mc\u0131 olmak.<\/p>\n<div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#PHP_ve_JavaScriptte_Hata_Izleme_Neden_Ayri_Bir_Sistem_Gerektirir\"><span class=\"toc_number toc_depth_1\">1<\/span> PHP ve JavaScript\u2019te Hata \u0130zleme Neden Ayr\u0131 Bir Sistem Gerektirir?<\/a><\/li><li><a href=\"#Sentry_ile_Hata_Izleme_Mimarisi\"><span class=\"toc_number toc_depth_1\">2<\/span> Sentry ile Hata \u0130zleme Mimarisi<\/a><ul><li><a href=\"#Sentry_Mimarisi_Temel_Kavramlar\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Sentry Mimarisi Temel Kavramlar<\/a><\/li><li><a href=\"#VPS_Uzerinde_Sentry_Kurulumu_Icin_Ornek_Yaklasim\"><span class=\"toc_number toc_depth_2\">2.2<\/span> VPS \u00dczerinde Sentry Kurulumu \u0130\u00e7in \u00d6rnek Yakla\u015f\u0131m<\/a><\/li><\/ul><\/li><li><a href=\"#PHP_Uygulamalari_Icin_Sentry_Entegrasyonu\"><span class=\"toc_number toc_depth_1\">3<\/span> PHP Uygulamalar\u0131 \u0130\u00e7in Sentry Entegrasyonu<\/a><ul><li><a href=\"#Laravelde_Sentry_Kurulumu\"><span class=\"toc_number toc_depth_2\">3.1<\/span> Laravel\u2019de Sentry Kurulumu<\/a><\/li><li><a href=\"#WordPress_veya_Ozel_PHP_Uygulamalarinda_Sentry\"><span class=\"toc_number toc_depth_2\">3.2<\/span> WordPress veya \u00d6zel PHP Uygulamalar\u0131nda Sentry<\/a><\/li><li><a href=\"#Performans_Izleme_ve_Breadcrumblar\"><span class=\"toc_number toc_depth_2\">3.3<\/span> Performans \u0130zleme ve Breadcrumb\u2019lar<\/a><\/li><\/ul><\/li><li><a href=\"#JavaScript_Browser_ve_Nodejs_Icin_Hata_Izleme\"><span class=\"toc_number toc_depth_1\">4<\/span> JavaScript (Browser ve Node.js) \u0130\u00e7in Hata \u0130zleme<\/a><ul><li><a href=\"#Browser_Tarafinda_Sentry\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Browser Taraf\u0131nda Sentry<\/a><\/li><li><a href=\"#Kullanici_ve_Oturum_Bilgilerini_Ekleme\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Kullan\u0131c\u0131 ve Oturum Bilgilerini Ekleme<\/a><\/li><li><a href=\"#Nodejs_ve_API_Katmani\"><span class=\"toc_number toc_depth_2\">4.3<\/span> Node.js ve API Katman\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Acik_Kaynak_Alternatifleri_ve_Tamamlayici_Araclar\"><span class=\"toc_number toc_depth_1\">5<\/span> A\u00e7\u0131k Kaynak Alternatifleri ve Tamamlay\u0131c\u0131 Ara\u00e7lar<\/a><ul><li><a href=\"#Self-Hosted_Sentry\"><span class=\"toc_number toc_depth_2\">5.1<\/span> Self-Hosted Sentry<\/a><\/li><li><a href=\"#Sentry_Protokoluyle_Uyumlu_Alternatifler\"><span class=\"toc_number toc_depth_2\">5.2<\/span> Sentry Protokol\u00fcyle Uyumlu Alternatifler<\/a><\/li><li><a href=\"#Log_Metrik_ve_Trace_Katmanini_Tamamlamak\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Log, Metrik ve Trace Katman\u0131n\u0131 Tamamlamak<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_VPS_Uzerinde_Observability_Stratejisi_Adim_Adim\"><span class=\"toc_number toc_depth_1\">6<\/span> DCHost VPS \u00dczerinde Observability Stratejisi Ad\u0131m Ad\u0131m<\/a><\/li><li><a href=\"#Guvenlik_Gizlilik_ve_KVKK_Perspektifi\"><span class=\"toc_number toc_depth_1\">7<\/span> G\u00fcvenlik, Gizlilik ve KVKK Perspektifi<\/a><\/li><li><a href=\"#Sonuc_Hata_Izleme_Log_ve_Metrik_Uclusu_ile_Rahat_Nefes_Almak\"><span class=\"toc_number toc_depth_1\">8<\/span> Sonu\u00e7: Hata \u0130zleme, Log ve Metrik \u00dc\u00e7l\u00fcs\u00fc ile Rahat Nefes Almak<\/a><\/li><\/ul><\/div>\n<h2><span id=\"PHP_ve_JavaScriptte_Hata_Izleme_Neden_Ayri_Bir_Sistem_Gerektirir\">PHP ve JavaScript\u2019te Hata \u0130zleme Neden Ayr\u0131 Bir Sistem Gerektirir?<\/span><\/h2>\n<p>Sunucu loglar\u0131, PHP error_log\u2019lar\u0131 veya Nginx\/Apache access log\u2019lar\u0131 elbette gereklidir. Ancak modern web uygulamalar\u0131nda bunlar tek ba\u015f\u0131na yeterli de\u011fil. \u00d6zellikle SPA (Single Page Application), yo\u011fun JavaScript kullanan frontend\u2019ler ve mobil web g\u00f6r\u00fcn\u00fcmlerinde hatalar\u0131n \u00f6nemli bir k\u0131sm\u0131 kullan\u0131c\u0131n\u0131n taray\u0131c\u0131s\u0131nda ger\u00e7ekle\u015fiyor.<\/p>\n<p>Temel farklar\u0131 netle\u015ftirelim:<\/p>\n<ul>\n<li><strong>Sunucu loglar\u0131<\/strong>: PHP taraf\u0131ndaki uyar\u0131lar, istisnalar, HTTP 4xx\/5xx kay\u0131tlar\u0131, veritaban\u0131 hatalar\u0131 gibi olaylar\u0131 i\u00e7erir. Genellikle sat\u0131r sat\u0131r metin log format\u0131ndad\u0131r.<\/li>\n<li><strong>Taray\u0131c\u0131 (JS) hatalar\u0131<\/strong>: Kullan\u0131c\u0131n\u0131n cihaz\u0131na, taray\u0131c\u0131s\u0131na, ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcne ve etkile\u015fimine ba\u011fl\u0131 olarak ortaya \u00e7\u0131kar. Bunlar \u00e7o\u011fu zaman sunucu loglar\u0131na hi\u00e7 d\u00fc\u015fmez.<\/li>\n<li><strong>\u0130\u015f ba\u011flam\u0131<\/strong>: Sadece &#8220;Fatal error&#8221; sat\u0131r\u0131n\u0131 g\u00f6rmek yetmez. Hangi kullan\u0131c\u0131y\u0131, hangi istek parametrelerini, hangi s\u00fcr\u00fcm\u00fc (release) ve hangi ortam\u0131 (production, staging) etkiledi\u011fini de bilmek gerekir.<\/li>\n<\/ul>\n<p>Bu y\u00fczden hata izleme ara\u00e7lar\u0131, klasik loglaman\u0131n \u00fczerine \u015fu katmanlar\u0131 ekler:<\/p>\n<ul>\n<li>Hatan\u0131n otomatik gruplanmas\u0131 (ayn\u0131 stack trace tek olay olarak g\u00f6r\u00fcl\u00fcr)<\/li>\n<li>Kullan\u0131c\u0131, oturum, istek, HTTP header, taray\u0131c\u0131, cihaz gibi ba\u011flamsal bilgiler<\/li>\n<li>\u00d6ncesindeki ad\u0131mlar\u0131n breadcrumbs olarak kaydedilmesi<\/li>\n<li>\u00d6nem derecesine g\u00f6re e-posta, Slack vb. entegrasyonlarla uyar\u0131<\/li>\n<li>S\u00fcr\u00fcm (release) ve commit bilgisi ile hatan\u0131n hangi deploy\u2019dan sonra ba\u015flad\u0131\u011f\u0131n\u0131 g\u00f6rme<\/li>\n<\/ul>\n<p>PHP taraf\u0131ndaki temel hata loglamas\u0131n\u0131 do\u011fru kurmak i\u00e7in daha \u00f6nce haz\u0131rlad\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/php-hata-kayitlarini-dogru-yapilandirmak-display_errors-error_log-ve-log_level\/'>PHP hata kay\u0131tlar\u0131n\u0131 do\u011fru yap\u0131land\u0131rma rehberini<\/a> mutlaka okuman\u0131z\u0131 \u00f6neririz. Oradaki ayarlar\u0131, bu yaz\u0131da anlataca\u011f\u0131m\u0131z Sentry ve benzeri \u00e7\u00f6z\u00fcmlerle birlikte d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fczde, \u00e7ok daha g\u00fc\u00e7l\u00fc bir observability tablosu ortaya \u00e7\u0131k\u0131yor.<\/p>\n<h2><span id=\"Sentry_ile_Hata_Izleme_Mimarisi\">Sentry ile Hata \u0130zleme Mimarisi<\/span><\/h2>\n<p>Sentry, hem PHP hem de JavaScript d\u00fcnyas\u0131nda yayg\u0131n kullan\u0131lan bir hata izleme ve performans izleme platformu. \u0130ki \u015fekilde kullan\u0131labiliyor:<\/p>\n<ul>\n<li>SaaS hizmeti olarak (Sentry\u2019nin kendi bulut platformu)<\/li>\n<li>VPS veya <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a>nuza <strong>self-hosted<\/strong> kurulum<\/li>\n<\/ul>\n<p>Biz burada \u00f6zellikle kendi DCHost VPS\u2019iniz \u00fczerinde self-hosted kurulum senaryosuna odaklanaca\u011f\u0131z; ancak mimari, SaaS s\u00fcr\u00fcm i\u00e7in de ayn\u0131d\u0131r.<\/p>\n<h3><span id=\"Sentry_Mimarisi_Temel_Kavramlar\">Sentry Mimarisi Temel Kavramlar<\/span><\/h3>\n<ul>\n<li><strong>SDK<\/strong>: PHP, JavaScript, Node.js, Laravel, Symfony, React, Vue vb. teknolojiler i\u00e7in resmi k\u00fct\u00fcphaneler.<\/li>\n<li><strong>DSN<\/strong>: Uygulaman\u0131z\u0131n Sentry sunucusuna ba\u011flan\u0131rken kulland\u0131\u011f\u0131 ba\u011flant\u0131 dizesi. Hangi projeye log yazaca\u011f\u0131n\u0131z\u0131 belirler.<\/li>\n<li><strong>Project<\/strong>: \u00d6rne\u011fin &#8220;my-app-php&#8221; ve &#8220;my-app-frontend&#8221; gibi her bile\u015fen i\u00e7in ayr\u0131 proje.<\/li>\n<li><strong>Environment<\/strong>: production, staging, dev gibi ortam ayr\u0131mlar\u0131.<\/li>\n<li><strong>Release<\/strong>: Genellikle git tag veya commit hash ile e\u015fle\u015fen s\u00fcr\u00fcm bilgisi. Hangi deploy\u2019dan sonra hata artm\u0131\u015f g\u00f6rebilirsiniz.<\/li>\n<\/ul>\n<p>Ak\u0131\u015f basit\u00e7e \u015f\u00f6yle i\u015fler:<\/p>\n<ol>\n<li>PHP veya JavaScript uygulaman\u0131zda Sentry SDK\u2019y\u0131 kurars\u0131n\u0131z.<\/li>\n<li>Bir istisna (exception) veya JS hatas\u0131 olu\u015ftu\u011funda SDK bu olay\u0131 yakalar.<\/li>\n<li>Olay\u0131, DSN \u00fczerinden HTTP istekleriyle Sentry sunucunuza g\u00f6nderir.<\/li>\n<li>Sentry sunucusu bu olaylar\u0131 i\u015fler, veritaban\u0131na kaydeder, gruplanm\u0131\u015f \u015fekilde aray\u00fczde g\u00f6sterir ve gerekirse uyar\u0131 tetikler.<\/li>\n<\/ol>\n<h3><span id=\"VPS_Uzerinde_Sentry_Kurulumu_Icin_Ornek_Yaklasim\">VPS \u00dczerinde Sentry Kurulumu \u0130\u00e7in \u00d6rnek Yakla\u015f\u0131m<\/span><\/h3>\n<p>Sentry\u2019yi kendi DCHost VPS\u2019inize kurmak i\u00e7in en pratik yol Docker tabanl\u0131 self-hosted paketi kullanmakt\u0131r. Varsayal\u0131m ki a\u015fa\u011f\u0131daki kaynaklara sahipsiniz:<\/p>\n<ul>\n<li>G\u00fcncel bir Linux VPS (\u00f6rne\u011fin 2\u20134 vCPU, 4\u20138 GB RAM, h\u0131zl\u0131 NVMe disk)<\/li>\n<li>Docker ve docker-compose kurulu<\/li>\n<li>Sentry i\u00e7in ayr\u0131lm\u0131\u015f bir alt alan ad\u0131, \u00f6rne\u011fin sentry.ornekalanadiniz.com<\/li>\n<li>Reverse proxy olarak Nginx veya Caddy ve ge\u00e7erli bir <a href=\"https:\/\/www.dchost.com\/tr\/ssl\">SSL sertifikas\u0131<\/a><\/li>\n<\/ul>\n<p>Resmi self-hosted deposunu \u00e7ekip, basitle\u015ftirilmi\u015f bir docker-compose ile aya\u011fa kald\u0131rabilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">version: '3.8'\nservices:\n  sentry:\n    image: sentry:latest\n    depends_on:\n      - postgres\n      - redis\n    environment:\n      SENTRY_SECRET_KEY: &lt;guclu-bir-anahtar&gt;\n      SENTRY_POSTGRES_HOST: postgres\n      SENTRY_DB_USER: sentry\n      SENTRY_DB_PASSWORD: &lt;sifre&gt;\n    ports:\n      - '9000:9000'\n\n  postgres:\n    image: postgres:14\n    environment:\n      POSTGRES_DB: sentry\n      POSTGRES_USER: sentry\n      POSTGRES_PASSWORD: &lt;sifre&gt;\n\n  redis:\n    image: redis:6\n<\/code><\/pre>\n<p>Ger\u00e7ekte Sentry\u2019nin kendi sa\u011flad\u0131\u011f\u0131 docker-compose dosyas\u0131 ve kurulum script\u2019leri daha kapsaml\u0131d\u0131r; bunlar\u0131 k\u0131lavuza g\u00f6re uygulaman\u0131z gerekir. Biz burada mimariyi sadele\u015ftirmek i\u00e7in \u015fematik bir \u00f6rnek verdik.<\/p>\n<p>Log ve metrik taraf\u0131n\u0131 da ayn\u0131 VPS\u2019te veya ayr\u0131 bir g\u00f6zlem sunucusunda toplamak isterseniz, daha \u00f6nce anlatt\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/vps-log-yonetimi-nasil-rayina-oturur-grafana-loki-promtail-ile-merkezi-loglama-tutma-sureleri-ve-alarm-kurallari\/'>VPS log y\u00f6netimini Loki ve Promtail ile merkezi hale getirme rehberindeki<\/a> yakla\u015f\u0131m, Sentry ile g\u00fczelce tamamlay\u0131c\u0131 bir rol oynar.<\/p>\n<h2><span id=\"PHP_Uygulamalari_Icin_Sentry_Entegrasyonu\">PHP Uygulamalar\u0131 \u0130\u00e7in Sentry Entegrasyonu<\/span><\/h2>\n<p>PHP taraf\u0131nda en yayg\u0131n senaryo; Laravel, Symfony, WordPress veya \u00f6zel yaz\u0131lm\u0131\u015f bir MVC uygulamas\u0131na Sentry SDK eklemek. \u00d6rnekleri Laravel odakl\u0131 verelim, ard\u0131ndan \u00e7\u0131plak PHP i\u00e7in de k\u0131saca de\u011finelim.<\/p>\n<h3><span id=\"Laravelde_Sentry_Kurulumu\">Laravel\u2019de Sentry Kurulumu<\/span><\/h3>\n<p>Ad\u0131mlar kabaca \u015f\u00f6yle:<\/p>\n<ol>\n<li>Composer ile SDK\u2019y\u0131 ekleyin:<\/li>\n<\/ol>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">composer require sentry\/sdk<\/code><\/pre>\n<ol start='2'>\n<li>Environment de\u011fi\u015fkenine DSN ekleyin:<\/li>\n<\/ol>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># .env\nSENTRY_LARAVEL_DSN=https:\/\/&lt;public-key&gt;@sentry.ornekalanadiniz.com\/&lt;project-id&gt;\nSENTRY_TRACES_SAMPLE_RATE=0.2\nSENTRY_ENVIRONMENT=production\n<\/code><\/pre>\n<p>Buradaki DSN, do\u011frudan kodun i\u00e7inde sabit yaz\u0131lmamal\u0131; .env kullanmak hem g\u00fcvenlik hem de esneklik a\u00e7\u0131s\u0131ndan daha sa\u011fl\u0131kl\u0131. VPS \u00fczerinde gizli anahtar y\u00f6netimi konusunda sorular\u0131n\u0131z varsa, <a href='https:\/\/www.dchost.com\/blog\/vpste-env-ve-gizli-anahtar-yonetimi\/'>VPS\u2019te .env ve gizli anahtar y\u00f6netimi rehberimizde<\/a> detayl\u0131 bir yol haritas\u0131 payla\u015ft\u0131k.<\/p>\n<ol start='3'>\n<li>Laravel i\u00e7in Sentry servis sa\u011flay\u0131c\u0131s\u0131n\u0131 ve facade\u2019\u0131n\u0131 etkinle\u015ftirin (Laravel s\u00fcr\u00fcm\u00fcne ve SDK paketine g\u00f6re de\u011fi\u015febilir, Sentry dok\u00fcmantasyonuna bak\u0131n).<\/li>\n<li>Hata handler i\u00e7ine entegrasyon ekleyin:<\/li>\n<\/ol>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">\/\/ app\/Exceptions\/Handler.php\nuse SentryLaravelFacade as Sentry;\n\npublic function report(Throwable $exception)\n{\n    if (app()-&gt;bound('sentry') &amp;&amp; $this-&gt;shouldReport($exception)) {\n        Sentry::captureException($exception);\n    }\n\n    parent::report($exception);\n}\n<\/code><\/pre>\n<p>Bu kod, Laravel\u2019in zaten sahip oldu\u011fu raporlama mekanizmas\u0131n\u0131 bozmadan, Sentry\u2019ye de kopya ge\u00e7mesini sa\u011flar. Bundan sonra production ortam\u0131nda olu\u015fan istisnalar; kullan\u0131c\u0131, istek, route, HTTP metodu, header\u2019lar ve stack trace ile birlikte Sentry aray\u00fcz\u00fcnde g\u00f6r\u00fcnecektir.<\/p>\n<h3><span id=\"WordPress_veya_Ozel_PHP_Uygulamalarinda_Sentry\">WordPress veya \u00d6zel PHP Uygulamalar\u0131nda Sentry<\/span><\/h3>\n<p>Laravel kullanm\u0131yorsan\u0131z da mant\u0131k ayn\u0131: Global exception handler veya framework\u2019\u00fcn\u00fcz\u00fcn hata yakalama noktas\u0131nda Sentry \u00e7a\u011fr\u0131s\u0131 yapmak.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">require __DIR__ . '\/vendor\/autoload.php';\n\nSentryinit([\n    'dsn' =&gt; getenv('SENTRY_DSN'),\n    'environment' =&gt; getenv('SENTRY_ENVIRONMENT') ?: 'production',\n]);\n\nset_exception_handler(function (Throwable $exception) {\n    SentrycaptureException($exception);\n    \/\/ Burada kendi log mekanizman\u0131z veya hata sayfan\u0131z da \u00e7al\u0131\u015fabilir.\n});\n<\/code><\/pre>\n<p>WordPress taraf\u0131nda ise genellikle eklenti tabanl\u0131 entegrasyonlar kullan\u0131l\u0131r veya <code>wp-config.php<\/code> i\u00e7inde Sentry SDK ba\u015flat\u0131l\u0131r. \u00d6nemli olan; fatal hatalar ve beklenmeyen istisnelerin global olarak yakalanmas\u0131d\u0131r.<\/p>\n<h3><span id=\"Performans_Izleme_ve_Breadcrumblar\">Performans \u0130zleme ve Breadcrumb\u2019lar<\/span><\/h3>\n<p>Sentry sadece istisnalar\u0131 de\u011fil; istek s\u00fcresi, yava\u015f sorgular ve belirli kod bloklar\u0131n\u0131n performans\u0131n\u0131 da \u00f6l\u00e7ebilir. Laravel\u2019de Sentry performans izlemeyi etkinle\u015ftirdi\u011finizde, her HTTP iste\u011fi i\u00e7in bir transaction kayd\u0131 olu\u015fur. Bu kay\u0131tlar, daha sonra APM (Application Performance Monitoring) g\u00f6r\u00fcn\u00fcm\u00fcnde analiz edilebilir.<\/p>\n<p>Ayr\u0131ca Sentry, <strong>breadcrumbs<\/strong> ad\u0131 verilen mini log\u2019larla; hatadan hemen \u00f6nce ger\u00e7ekle\u015fen sorgular\u0131, HTTP isteklerini, kullan\u0131c\u0131 aksiyonlar\u0131n\u0131 ve debug loglar\u0131n\u0131 da olaya ili\u015ftirir. B\u00f6ylece tek bir stack trace yerine, bir hik\u00e2ye g\u00f6r\u00fcrs\u00fcn\u00fcz.<\/p>\n<h2><span id=\"JavaScript_Browser_ve_Nodejs_Icin_Hata_Izleme\">JavaScript (Browser ve Node.js) \u0130\u00e7in Hata \u0130zleme<\/span><\/h2>\n<p>Taray\u0131c\u0131 taraf\u0131ndaki JavaScript hatalar\u0131n\u0131 sunucu loglar\u0131ndan takip etmek neredeyse imkans\u0131zd\u0131r. Kullan\u0131c\u0131n\u0131n hangi cihaz\u0131 kulland\u0131\u011f\u0131n\u0131, hangi ekranda, hangi butona t\u0131klad\u0131\u011f\u0131nda hata ald\u0131\u011f\u0131n\u0131 bilmek ise d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131 i\u00e7in kritiktir.<\/p>\n<h3><span id=\"Browser_Tarafinda_Sentry\">Browser Taraf\u0131nda Sentry<\/span><\/h3>\n<p>En basit entegrasyon, Sentry\u2019nin CDN \u00fczerinden sa\u011flad\u0131\u011f\u0131 script\u2019i sayfaya eklemekle ba\u015flar:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">&lt;script src='https:\/\/browser.sentry-cdn.com\/7.x.x\/bundle.tracing.min.js' integrity='&lt;...&gt;' crossorigin='anonymous'&gt;&lt;\/script&gt;\n&lt;script&gt;\nSentry.init({\n  dsn: 'https:\/\/&lt;public-key&gt;@sentry.ornekalanadiniz.com\/&lt;project-id&gt;',\n  environment: 'production',\n  tracesSampleRate: 0.2,\n});\n&lt;\/script&gt;\n<\/code><\/pre>\n<p>Bundan sonra sayfada olu\u015fan <code>window.onerror<\/code> ve <code>unhandledrejection<\/code> olaylar\u0131 otomatik yakalan\u0131r ve Sentry\u2019ye gider. SPA framework\u2019leri (React, Vue, Angular) i\u00e7in \u00f6zel Sentry paketleri de vard\u0131r; bunlar router ge\u00e7i\u015fleri, component lifecycle olaylar\u0131 gibi daha zengin ba\u011flam sunar.<\/p>\n<p>\u00d6nemli bir nokta: Frontend DSN\u2019iniz kullan\u0131c\u0131 taraf\u0131nda g\u00f6z\u00fckece\u011fi i\u00e7in backend DSN\u2019inizle ayn\u0131 projeyi kullanmaman\u0131z genelde iyi bir pratiktir. Ayr\u0131 bir Sentry projesi a\u00e7\u0131p sadece frontend hatalar\u0131 i\u00e7in kullanmak, ayr\u0131\u015ft\u0131rma ve yetkilendirme a\u00e7\u0131s\u0131ndan daha sa\u011fl\u0131kl\u0131d\u0131r.<\/p>\n<h3><span id=\"Kullanici_ve_Oturum_Bilgilerini_Ekleme\">Kullan\u0131c\u0131 ve Oturum Bilgilerini Ekleme<\/span><\/h3>\n<p>Sentry, anonim kullan\u0131c\u0131 kimlikleriyle hata ba\u011flam\u0131n\u0131 zenginle\u015ftirmenize izin verir. \u00d6rne\u011fin giri\u015f yapm\u0131\u015f bir kullan\u0131c\u0131n\u0131n ID ve e-posta adresini (KVKK\u2019ya uygun bir \u015fekilde) ekleyebilirsiniz:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">Sentry.setUser({\n  id: '12345',\n  email: 'kullanici@ornek.com'\n});\n<\/code><\/pre>\n<p>Burada e-posta adresi gibi ki\u015fisel verileri ger\u00e7ekten g\u00f6nderip g\u00f6ndermeyece\u011finiz; \u015firketinizin veri i\u015fleme politikalar\u0131na ve KVKK yorumunuza g\u00f6re de\u011fi\u015fir. Anonimle\u015ftirilmi\u015f ID\u2019ler, hash\u2019lenmi\u015f e-posta adresleri veya sadece kullan\u0131c\u0131 rollerini g\u00f6ndermek de \u00e7o\u011fu senaryoda yeterli olabilir.<\/p>\n<h3><span id=\"Nodejs_ve_API_Katmani\">Node.js ve API Katman\u0131<\/span><\/h3>\n<p>JavaScript sadece taray\u0131c\u0131da de\u011fil, Node.js tabanl\u0131 backend\u2019lerde de yayg\u0131n. Express benzeri bir framework kullan\u0131yorsan\u0131z, Sentry entegrasyonu tipik olarak iki middleware ile yap\u0131l\u0131r:<\/p>\n<pre class=\"language-python line-numbers\"><code class=\"language-python\">import * as Sentry from '@sentry\/node';\nimport express from 'express';\n\nSentry.init({\n  dsn: process.env.SENTRY_DSN,\n  environment: process.env.SENTRY_ENVIRONMENT || 'production',\n});\n\nconst app = express();\n\napp.use(Sentry.Handlers.requestHandler());\n\n\/\/ ... route tan\u0131mlar\u0131 ...\n\napp.use(Sentry.Handlers.errorHandler());\n<\/code><\/pre>\n<p>Bu yap\u0131, istek ba\u011flam\u0131n\u0131 otomatik olarak olaylara ekler ve Express error middleware zinciriyle uyumlu \u00e7al\u0131\u015f\u0131r. Node.js taraf\u0131n\u0131 da g\u00f6zlemlemek istiyorsan\u0131z, daha \u00f6nce haz\u0131rlad\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/node-jsi-canliya-alirken-panik-yapma-pm2-systemd-nginx-ssl-ve-sifir-kesinti-deploy-nasil-kurulur\/'>Node.js\u2019i canl\u0131ya al\u0131rken PM2, systemd ve Nginx ile s\u0131f\u0131r kesinti deploy rehberi<\/a> ile birlikte d\u00fc\u015f\u00fcnmek g\u00fczel bir kombinasyon olur.<\/p>\n<h2><span id=\"Acik_Kaynak_Alternatifleri_ve_Tamamlayici_Araclar\">A\u00e7\u0131k Kaynak Alternatifleri ve Tamamlay\u0131c\u0131 Ara\u00e7lar<\/span><\/h2>\n<p>Sentry, hata izleme taraf\u0131nda g\u00fc\u00e7l\u00fc bir standart haline geldi; ancak her senaryoda tek se\u00e7enek olmak zorunda de\u011fil. \u00d6zellikle tamamen a\u00e7\u0131k kaynak ve kendi kontrol\u00fcn\u00fczde bir y\u0131\u011f\u0131n kurmak istiyorsan\u0131z \u015fu yollar\u0131 d\u00fc\u015f\u00fcnebilirsiniz:<\/p>\n<h3><span id=\"Self-Hosted_Sentry\">Self-Hosted Sentry<\/span><\/h3>\n<p>Asl\u0131nda en do\u011frudan a\u00e7\u0131k kaynak se\u00e7ene\u011fi, Sentry\u2019nin kendi self-hosted s\u00fcr\u00fcm\u00fcn\u00fc kullanmak. Kaynak kodu a\u00e7\u0131k, Docker ile kurulabiliyor ve kendi DCHost VPS\u2019inizde veya dedicated sunucunuzda \u00e7al\u0131\u015ft\u0131r\u0131labiliyor. Avantajlar\u0131:<\/p>\n<ul>\n<li>Veriniz tamamen sizin altyap\u0131n\u0131zda kal\u0131r.<\/li>\n<li>Ortam, domain, entegrasyonlar \u00fczerinde tam kontrol.<\/li>\n<li>Fiyatland\u0131rma, kendi donan\u0131m maliyetinizle s\u0131n\u0131rl\u0131.<\/li>\n<\/ul>\n<p>Dezavantajlar\u0131 ise bak\u0131m y\u00fck\u00fc, g\u00fcncellemeler ve \u00f6l\u00e7ekleme sorumlulu\u011funun size ait olmas\u0131. Y\u00fcksek trafikli projelerde veritaban\u0131, queue ve disk kapasitesini iyi planlaman\u0131z gerekir.<\/p>\n<h3><span id=\"Sentry_Protokoluyle_Uyumlu_Alternatifler\">Sentry Protokol\u00fcyle Uyumlu Alternatifler<\/span><\/h3>\n<p>Baz\u0131 a\u00e7\u0131k kaynak projeler, Sentry SDK\u2019lar\u0131n\u0131 de\u011fi\u015fiklik yapmadan kullanman\u0131z\u0131 sa\u011flayan Sentry-uyumlu protokoller sunar. \u00d6rne\u011fin kendi basitle\u015ftirilmi\u015f hata izleme panelinizi kurmak, ancak mevcut Sentry SDK ekosisteminden de faydalanmak istiyorsan\u0131z bu yakla\u015f\u0131m de\u011ferlendirilebilir.<\/p>\n<p>Bu t\u00fcr projelerde genellikle \u015fu \u00f6zellikleri bulursunuz:<\/p>\n<ul>\n<li>Exception ve event toplama<\/li>\n<li>Basit bir web aray\u00fcz\u00fc<\/li>\n<li>PostgreSQL veya benzeri bir veritaban\u0131 arka plan\u0131<\/li>\n<li>Temel uyar\u0131 ve filtreleme yetenekleri<\/li>\n<\/ul>\n<p>\u0130htiyac\u0131n\u0131z Sentry\u2019nin t\u00fcm geli\u015fmi\u015f APM yetenekleri de\u011fil de daha hafif bir hata izleme arac\u0131ysa, bu tarz \u00e7\u00f6z\u00fcmler DCHost VPS\u2019inizde son derece ekonomik ve kontrol edilebilir bir mimari sunar.<\/p>\n<h3><span id=\"Log_Metrik_ve_Trace_Katmanini_Tamamlamak\">Log, Metrik ve Trace Katman\u0131n\u0131 Tamamlamak<\/span><\/h3>\n<p>Hata izleme, observability hikayesinin sadece bir par\u00e7as\u0131. Ger\u00e7ek bir \u00fcretim ortam\u0131nda a\u015fa\u011f\u0131daki \u00fc\u00e7 katman\u0131 birlikte d\u00fc\u015f\u00fcnmek gerekiyor:<\/p>\n<ul>\n<li><strong>Loglar<\/strong>: Uygulama ve sunucu loglar\u0131n\u0131n merkezi toplanmas\u0131 ve sorgulanmas\u0131<\/li>\n<li><strong>Metrikler<\/strong>: CPU, RAM, disk, response time, istek say\u0131s\u0131 gibi say\u0131sal veriler<\/li>\n<li><strong>Trace\u2019ler<\/strong>: Bir iste\u011fin farkl\u0131 servisler aras\u0131nda nas\u0131l akt\u0131\u011f\u0131n\u0131 g\u00f6steren u\u00e7tan uca izler<\/li>\n<\/ul>\n<p>Log taraf\u0131nda, Sentry\u2019yi tamamlamak i\u00e7in <a href='https:\/\/www.dchost.com\/blog\/merkezi-loglama-ve-gozlemlenebilirlik-vpste-loki-promtail-grafana-ile-sakin-kalan-bir-zihin\/'>VPS\u2019te Loki, Promtail ve Grafana ile merkezi loglama rehberimizde<\/a> detayland\u0131rd\u0131\u011f\u0131m\u0131z yakla\u015f\u0131m\u0131 uygulayabilirsiniz. B\u00f6ylece Sentry\u2019de g\u00f6rd\u00fc\u011f\u00fcn\u00fcz bir hata i\u00e7in, ilgili zaman aral\u0131\u011f\u0131ndaki Nginx, PHP-FPM veya uygulama loglar\u0131n\u0131 saniyeler i\u00e7inde filtreleyebilirsiniz.<\/p>\n<p>Trace ve metrik taraf\u0131nda ise <a href='https:\/\/www.dchost.com\/blog\/opentelemetry-ile-izlenebilirlik-laravel-ve-node-jste-jaeger-tempoya-uctan-uca-izler-nasil-kurulur\/'>OpenTelemetry ile Laravel ve Node.js\u2019te u\u00e7tan uca izler kurma rehberimiz<\/a>, Sentry\u2019yi tamamlayan bir di\u011fer g\u00fc\u00e7l\u00fc par\u00e7a. Sentry ile hatay\u0131, OpenTelemetry ile iste\u011fin b\u00fct\u00fcn yolculu\u011funu, Prometheus benzeri \u00e7\u00f6z\u00fcmlerle de sistem metriklerini birlikte okudu\u011funuzda; sorun tespiti birka\u00e7 dakikal\u0131k bir i\u015fe d\u00f6n\u00fc\u015f\u00fcyor.<\/p>\n<p>Kaynak kullan\u0131m metriklerini izlemek i\u00e7inse, <a href='https:\/\/www.dchost.com\/blog\/vps-kaynak-kullanimi-izleme-rehberi-htop-iotop-netdata-ve-prometheus\/'>VPS kaynak kullan\u0131m\u0131 izleme rehberimizde<\/a> anlatt\u0131\u011f\u0131m\u0131z htop, Netdata ve Prometheus kombinasyonu; \u00f6zellikle CPU veya disk darbo\u011faz\u0131 ya\u015fad\u0131\u011f\u0131n\u0131zda de\u011ferli bir tamamlay\u0131c\u0131.<\/p>\n<h2><span id=\"DCHost_VPS_Uzerinde_Observability_Stratejisi_Adim_Adim\">DCHost VPS \u00dczerinde Observability Stratejisi Ad\u0131m Ad\u0131m<\/span><\/h2>\n<p>Gelin t\u00fcm par\u00e7alar\u0131 bir araya getirelim. Elinizde PHP (\u00f6rne\u011fin Laravel) + JavaScript (SPA veya klasik frontend) i\u00e7eren bir uygulama var ve bunu DCHost \u00fczerinde bir veya birka\u00e7 VPS\u2019te bar\u0131nd\u0131r\u0131yorsunuz. Nas\u0131l bir observability plan\u0131 kurmal\u0131s\u0131n\u0131z?<\/p>\n<ol>\n<li><strong>Ortamlar\u0131 ay\u0131r\u0131n<\/strong><br \/>Geli\u015ftirme, test (staging) ve canl\u0131 ortamlar\u0131 hem hosting hem de hata izleme d\u00fczeyinde ay\u0131rmak, g\u00f6zlemlenebilirli\u011fin temel ta\u015f\u0131d\u0131r. Bunun i\u00e7in <a href='https:\/\/www.dchost.com\/blog\/gelistirme-test-ve-canli-ortamlar-icin-hosting-mimarisi\/'>geli\u015ftirme, test ve canl\u0131 ortamlar i\u00e7in hosting mimarisi rehberimizde<\/a> detayl\u0131 bir \u00f6rnek kurgulad\u0131k.<\/li>\n<li><strong>Sentry projelerini tasarlay\u0131n<\/strong><br \/>En az\u0131ndan \u015fu ayr\u0131m\u0131 yapman\u0131z\u0131 \u00f6neririz:\n<ul>\n<li>Backend (PHP) i\u00e7in ayr\u0131 bir Sentry projesi<\/li>\n<li>Frontend (JavaScript) i\u00e7in ayr\u0131 bir Sentry projesi<\/li>\n<\/ul>\n<p>    Ortam baz\u0131nda environment alan\u0131n\u0131 (production, staging) kullan\u0131n.<\/li>\n<li><strong>Log toplama mimarisini belirleyin<\/strong><br \/>PHP, Nginx\/Apache, veritaban\u0131 ve sistem loglar\u0131n\u0131 ya ayn\u0131 VPS\u2019te ayr\u0131 bir disk b\u00f6l\u00fcm\u00fcyle; ya da merkezi bir log VPS\u2019i \u00fczerinde Loki veya ELK t\u00fcr\u00fc \u00e7\u00f6z\u00fcmlere g\u00f6nderin. B\u00f6ylece disk dolmas\u0131 sorunlar\u0131n\u0131 da <a href='https:\/\/www.dchost.com\/blog\/vps-disk-kullanimi-ve-logrotate-ayarlariyla-no-space-left-on-device-hatasini-onlemek\/'>logrotate ve disk kullan\u0131m\u0131 rehberimizde<\/a> anlatt\u0131\u011f\u0131m\u0131z gibi daha \u00f6ng\u00f6r\u00fclebilir k\u0131labilirsiniz.<\/li>\n<li><strong>Metrik ve sa\u011fl\u0131k kontrollerini ekleyin<\/strong><br \/>Prometheus, Netdata veya benzeri ara\u00e7larla CPU, RAM, disk, ba\u011flant\u0131 say\u0131s\u0131, HTTP response time gibi metrikleri toplay\u0131n. Sentry\u2019de g\u00f6rd\u00fc\u011f\u00fcn\u00fcz bir hata patlamas\u0131n\u0131n ger\u00e7ekten altyap\u0131 sorunundan m\u0131, yoksa sadece kod hatas\u0131ndan m\u0131 kaynakland\u0131\u011f\u0131n\u0131 bu metriklerle h\u0131zl\u0131ca ay\u0131rt edebilirsiniz.<\/li>\n<li><strong>Alarm kurallar\u0131 ve runbook\u2019lar yaz\u0131n<\/strong><br \/>Ciddi hatalar i\u00e7in Sentry\u2019den e-posta veya webhook ile alarm tetikleyin. Metrik taraf\u0131nda Prometheus uyar\u0131lar\u0131, log taraf\u0131nda da belirli pattern\u2019lere g\u00f6re alarmlar olu\u015fturun. Her kritik alarm i\u00e7in basit bir runbook (1\u20132 sayfal\u0131k nas\u0131l m\u00fcdahale edilir d\u00f6k\u00fcman\u0131) yazmak, operasyonel y\u00fck\u00fc ciddi \u015fekilde hafifletir.<\/li>\n<\/ol>\n<h2><span id=\"Guvenlik_Gizlilik_ve_KVKK_Perspektifi\">G\u00fcvenlik, Gizlilik ve KVKK Perspektifi<\/span><\/h2>\n<p>Hata izleme ara\u00e7lar\u0131, \u00e7o\u011fu zaman kullan\u0131c\u0131ya ait verileri de yanlar\u0131na tak\u0131p getirir. Bu y\u00fczden KVKK ve GDPR gibi reg\u00fclasyonlar a\u00e7\u0131s\u0131ndan dikkatli olmak gerekir. \u00d6zellikle T\u00fcrkiye\u2019de faaliyet g\u00f6steren projelerde \u015funlara \u00f6zen g\u00f6stermenizi net olarak tavsiye ediyoruz:<\/p>\n<ul>\n<li>IP adresi, e-posta, ad-soyad gibi ki\u015fisel verileri ger\u00e7ekten gerekmedik\u00e7e Sentry\u2019ye g\u00f6ndermeyin.<\/li>\n<li>G\u00f6ndermeniz gerekiyorsa, maskeleme veya pseudonymization y\u00f6ntemlerini kullan\u0131n.<\/li>\n<li>Log ve hata olaylar\u0131n\u0131n saklama s\u00fcrelerini, yasal gereklilikler ve i\u015f ihtiyac\u0131 aras\u0131nda dengeli belirleyin.<\/li>\n<\/ul>\n<p>Bu konuyu daha sistematik ele almak isterseniz, <a href='https:\/\/www.dchost.com\/blog\/kvkk-ve-gdpr-icin-log-anonimlestirme-ip-maskeleme-ve-pseudonymization\/'>KVKK ve GDPR i\u00e7in log anonimle\u015ftirme rehberimizde<\/a> IP maskeleme ve pseudonymization \u00f6rneklerini detayl\u0131ca anlatt\u0131k. Ayn\u0131 prensipleri Sentry event\u2019leri i\u00e7in de kullanabilirsiniz.<\/p>\n<p>Buna ek olarak:<\/p>\n<ul>\n<li>Sentry aray\u00fcz eri\u015fimini iki fakt\u00f6rl\u00fc do\u011frulama ile koruyun.<\/li>\n<li>Yaln\u0131zca ger\u00e7ekten ihtiya\u00e7 duyan ekip \u00fcyelerine proje eri\u015fimi verin.<\/li>\n<li>DSN ve API token\u2019lar\u0131n\u0131 .env dosyalar\u0131nda veya gizli de\u011fi\u015fken y\u00f6netiminde tutun; kod deposuna asla g\u00f6mmeyin.<\/li>\n<\/ul>\n<h2><span id=\"Sonuc_Hata_Izleme_Log_ve_Metrik_Uclusu_ile_Rahat_Nefes_Almak\">Sonu\u00e7: Hata \u0130zleme, Log ve Metrik \u00dc\u00e7l\u00fcs\u00fc ile Rahat Nefes Almak<\/span><\/h2>\n<p>PHP ve JavaScript d\u00fcnyas\u0131nda hatalar\u0131 sadece error_log ve taray\u0131c\u0131 konsolu ile takip etmeye \u00e7al\u0131\u015fmak, g\u00fcncel uygulama karma\u015f\u0131kl\u0131\u011f\u0131 i\u00e7in art\u0131k yeterli de\u011fil. Sentry veya benzeri bir hata izleme arac\u0131; istisnalar\u0131 otomatik gruplayan, kullan\u0131c\u0131 ve istek ba\u011flam\u0131n\u0131 ekleyen, hangi s\u00fcr\u00fcmde sorun \u00e7\u0131kt\u0131\u011f\u0131n\u0131 net g\u00f6steren yap\u0131s\u0131yla size ger\u00e7ek anlamda zaman kazand\u0131r\u0131yor. Buna merkezi loglama, metrik toplama ve trace katman\u0131n\u0131 da ekledi\u011finizde; &#8220;Bu hata nereden \u00e7\u0131kt\u0131?&#8221; sorusu yerini &#8220;Tam olarak \u015furada, \u015fu s\u0131rayla, \u015fu metriklerle \u00e7\u0131kt\u0131&#8221; netli\u011fine b\u0131rak\u0131yor.<\/p>\n<p>DCHost olarak biz, bu tip observability mimarilerini \u00f6zellikle VPS ve dedicated sunucu altyap\u0131lar\u0131m\u0131z \u00fczerinde s\u0131k\u00e7a kurguluyoruz. \u0130ster self-hosted Sentry, ister daha hafif a\u00e7\u0131k kaynak alternatifler, isterse sadece merkezi log + metrik + OpenTelemetry kombinasyonu olsun; do\u011fru kurguland\u0131\u011f\u0131nda operasyonel i\u015f y\u00fck\u00fcn\u00fcz\u00fc ciddi \u015fekilde azalt\u0131yor. Uygulaman\u0131z i\u00e7in benzer bir yap\u0131 d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z, ihtiyac\u0131n\u0131za en uygun DCHost VPS veya dedicated sunucu boyutland\u0131rmas\u0131 konusunda size teknik ekibimizle birlikte destek olmaktan memnuniyet duyar\u0131z.<\/p>\n<p>Bir sonraki ad\u0131m olarak, mevcut PHP ve JavaScript projelerinizde en az\u0131ndan \u00fcretim ortam\u0131na temel bir Sentry entegrasyonu ekleyip; bir yandan da log ve metrik taraf\u0131n\u0131 g\u00fc\u00e7lendirmenizi \u00f6neririm. \u0130lk ger\u00e7ek hatay\u0131 detayl\u0131 ba\u011flamla birlikte g\u00f6rd\u00fc\u011f\u00fcn\u00fcz anda, bu yat\u0131r\u0131m\u0131n ne kadar i\u015fe yarad\u0131\u011f\u0131n\u0131 zaten kendiniz de hissedeceksiniz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>PHP veya JavaScript ile geli\u015ftirdi\u011finiz bir uygulamada, kullan\u0131c\u0131 size sadece \u015funu s\u00f6yler: &#8220;Bazen \u00e7al\u0131\u015fm\u0131yor.&#8221; Hangi sayfada, hangi taray\u0131c\u0131da, ne zaman, hangi hatayla bozuldu\u011funu \u00e7o\u011fu zaman bilmezsiniz. Klasik sunucu loglar\u0131na bakars\u0131n\u0131z; ama istemci taraf\u0131ndaki JavaScript hatalar\u0131 orada yoktur. \u00dcstelik loglar\u0131n\u0131z dolu, filtrelemesi zor, kritik hatalar sessizce arada kaynay\u0131p gidiyor. \u0130\u015fte tam bu noktada yap\u0131land\u0131r\u0131lm\u0131\u015f hata izleme [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3948,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3947","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=3947"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3947\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3948"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}