{"id":38131,"date":"2026-01-23T21:41:08","date_gmt":"2026-01-23T18:41:08","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38131"},"modified":"2026-01-23T21:41:08","modified_gmt":"2026-01-23T18:41:08","slug":"ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/","title":{"rendered":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital d\u00fcnyas\u0131nda, sunucu ve uygulama performans\u0131n\u0131 s\u00fcrekli olarak izlemek, olas\u0131 sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve sistem davran\u0131\u015flar\u0131 hakk\u0131nda derinlemesine bilgi edinmek kritik \u00f6neme sahiptir. Zaman serisi verilerini toplama, depolama ve g\u00f6rselle\u015ftirme yetene\u011fi, bu ihtiya\u00e7lar\u0131 kar\u015f\u0131laman\u0131n temel ta\u015flar\u0131ndan biridir. \u0130\u015fte tam bu noktada <a href=\"https:\/\/graphiteapp.org\/\">Graphite<\/a> devreye girer.<\/p>\n<p>Graphite, binlerce veya milyonlarca metrik noktas\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak depolayabilen, sorgulayabilen ve grafikleyebilen, a\u00e7\u0131k kaynakl\u0131, \u00f6l\u00e7eklenebilir bir izleme sistemidir. \u00d6zellikle sunucular\u0131n, a\u011f cihazlar\u0131n\u0131n, uygulamalar\u0131n ve di\u011fer altyap\u0131 bile\u015fenlerinin performans verilerini toplamak ve g\u00f6rselle\u015ftirmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Bu makalede, eski ama hala bir\u00e7ok sistemde kullan\u0131lan Ubuntu 14.04 sunucusu \u00fczerinde Graphite&#8217;\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m detayl\u0131 bir \u015fekilde anlataca\u011f\u0131z. Ubuntu 14.04&#8217;\u00fcn eski bir i\u015fletim sistemi oldu\u011funu ve g\u00fcvenlik g\u00fcncellemelerini art\u0131k almad\u0131\u011f\u0131n\u0131 belirtmek \u00f6nemlidir; bu nedenle \u00fcretim ortamlar\u0131nda daha g\u00fcncel bir i\u015fletim sistemi kullanman\u0131z \u015fiddetle tavsiye edilir. Ancak, bu makale \u00f6zel olarak Ubuntu 14.04&#8217;e odaklanacakt\u0131r.<\/p>\n<h3>Graphite Nedir ve Neden Kullan\u0131l\u0131r?<\/h3>\n<p>Graphite, temel olarak \u00fc\u00e7 ana bile\u015fenden olu\u015fan bir ekosistemdir:<\/p>\n<ol>\n<li><strong>Carbon:<\/strong> Metrik verilerini alan ve i\u015fleyen bir servis.<\/li>\n<li><strong>Whisper:<\/strong> Zaman serisi verilerini depolamak i\u00e7in kullan\u0131lan bir dosya tabanl\u0131 veritaban\u0131.<\/li>\n<li><strong>Graphite-web:<\/strong> Depolanan verileri sorgulamak, grafiklemek ve g\u00f6rselle\u015ftirmek i\u00e7in kullan\u0131lan bir web aray\u00fcz\u00fc ve API.<\/li>\n<\/ol>\n<p>Graphite&#8217;\u0131n sundu\u011fu temel faydalar \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Binlerce farkl\u0131 metri\u011fi ve milyonlarca veri noktas\u0131n\u0131 kolayca i\u015fleyebilir ve depolayabilir.<\/li>\n<li><strong>Esneklik:<\/strong> Herhangi bir uygulama veya sistemden metrik g\u00f6ndermek i\u00e7in basit bir TCP\/UDP aray\u00fcz\u00fc sunar.<\/li>\n<li><strong>Zengin G\u00f6rselle\u015ftirme:<\/strong> G\u00fc\u00e7l\u00fc bir web aray\u00fcz\u00fc sayesinde karma\u015f\u0131k grafikler olu\u015fturabilir, verileri farkl\u0131 a\u00e7\u0131lardan inceleyebilir ve \u00f6zel panolar (dashboards) olu\u015fturabilirsiniz.<\/li>\n<li><strong>A\u00e7\u0131k Kaynak:<\/strong> Geni\u015f bir topluluk taraf\u0131ndan desteklenir ve s\u00fcrekli geli\u015ftirilir.<\/li>\n<li><strong>Entegrasyon Kolayl\u0131\u011f\u0131:<\/strong> StatsD gibi ara\u00e7larla kolayca entegre olarak uygulama metriklerini toplamak i\u00e7in ideal bir \u00e7\u00f6z\u00fcmd\u00fcr. Grafana gibi modern g\u00f6rselle\u015ftirme ara\u00e7lar\u0131yla da harika bir uyum i\u00e7indedir.<\/li>\n<\/ul>\n<h4>Graphite Bile\u015fenleri Detayl\u0131 \u0130nceleme<\/h4>\n<p>Graphite ekosistemini daha iyi anlamak i\u00e7in her bir bile\u015fenin g\u00f6revlerini daha yak\u0131ndan inceleyelim:<\/p>\n<ol>\n<li><strong>Carbon:<\/strong>\n<p>Carbon, Graphite&#8217;\u0131n veri al\u0131m katman\u0131d\u0131r. \u00c7e\u015fitli portlar \u00fczerinden gelen metrik verilerini dinler ve Whisper veritaban\u0131na yazar. Carbon&#8217;un temel olarak \u00fc\u00e7 farkl\u0131 alt bile\u015feni bulunur:<\/p>\n<ul>\n<li><strong><code>carbon-cache<\/code>:<\/strong> Metrikleri al\u0131r, \u00f6nbelle\u011fe al\u0131r ve yap\u0131land\u0131r\u0131lan saklama politikalar\u0131na g\u00f6re Whisper dosyalar\u0131na yazar. Genellikle her Graphite sunucusunda bir tane \u00e7al\u0131\u015f\u0131r.<\/li>\n<li><strong><code>carbon-relay<\/code>:<\/strong> Gelen metrikleri birden fazla <code>carbon-cache<\/code> \u00f6rne\u011fine y\u00f6nlendirmek i\u00e7in kullan\u0131l\u0131r. Bu, yatay \u00f6l\u00e7eklenebilirlik ve y\u00fcksek kullan\u0131labilirlik sa\u011flamak i\u00e7in \u00f6nemlidir.<\/li>\n<li><strong><code>carbon-aggregator<\/code>:<\/strong> Gelen metrikleri belirli kurallara g\u00f6re birle\u015ftirir (\u00f6rne\u011fin, saniyede 10 metrik al\u0131p bunlar\u0131 dakikada bir ortalama olarak kaydetmek). Bu, depolama alan\u0131ndan tasarruf etmeye ve daha y\u00fcksek seviyeli \u00f6zet metrikler olu\u015fturmaya yard\u0131mc\u0131 olur.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Whisper:<\/strong>\n<p>Whisper, Graphite&#8217;\u0131n \u00f6zel zaman serisi veritaban\u0131 format\u0131d\u0131r. RRDtool&#8217;a benzer \u015fekilde, \u00f6nceden belirlenmi\u015f boyutlarda ve sabit zaman aral\u0131klar\u0131nda veri depolayan sabit boyutlu dosyalar kullan\u0131r. Bu, disk kullan\u0131m\u0131n\u0131n tahmin edilebilir olmas\u0131n\u0131 sa\u011flar ve eski verilerin otomatik olarak temizlenmesine olanak tan\u0131r. Whisper dosyalar\u0131, farkl\u0131 detay seviyelerinde (\u00f6rne\u011fin, ilk 7 g\u00fcn i\u00e7in 1 dakikal\u0131k \u00e7\u00f6z\u00fcn\u00fcrl\u00fck, sonraki 30 g\u00fcn i\u00e7in 5 dakikal\u0131k \u00e7\u00f6z\u00fcn\u00fcrl\u00fck gibi) veri saklama politikalar\u0131n\u0131 (retention policies) destekler.<\/p>\n<\/li>\n<li><strong>Graphite-web:<\/strong>\n<p>Graphite-web, Django web \u00e7er\u00e7evesi \u00fczerine in\u015fa edilmi\u015f bir Python uygulamas\u0131d\u0131r. Kullan\u0131c\u0131lar\u0131n depolanan metrik verilerini ke\u015ffetmelerini, grafikler olu\u015fturmalar\u0131n\u0131, panolar tasarlamalar\u0131n\u0131 ve verileri \u00e7e\u015fitli formatlarda (JSON, CSV, PNG) d\u0131\u015fa aktarmalar\u0131n\u0131 sa\u011flayan bir API ve kullan\u0131c\u0131 aray\u00fcz\u00fc sunar. Carbon&#8217;dan gelen verileri do\u011frudan Whisper dosyalar\u0131ndan okuyarak g\u00f6rselle\u015ftirir.<\/p>\n<\/li>\n<\/ol>\n<h3>\u00d6n Gereksinimler ve Sistem Ayarlar\u0131<\/h3>\n<p>Graphite kurulumuna ba\u015flamadan \u00f6nce Ubuntu 14.04 sunucunuzun haz\u0131r oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. Bu b\u00f6l\u00fcm, gerekli paketleri kurma ve sistemi haz\u0131rlama ad\u0131mlar\u0131n\u0131 i\u00e7erir.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>Herhangi bir kuruluma ba\u015flamadan \u00f6nce sistem paket listesini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y\n<\/code><\/pre>\n<h4>Gerekli Paketlerin Kurulumu<\/h4>\n<p>Graphite ve bile\u015fenlerinin \u00e7al\u0131\u015fmas\u0131 i\u00e7in baz\u0131 temel Python k\u00fct\u00fcphanelerine, geli\u015ftirme ara\u00e7lar\u0131na ve bir web sunucusuna ihtiyac\u0131m\u0131z olacak. Ubuntu 14.04 genellikle Python 2.7 ile gelir ve Graphite&#8217;\u0131n eski s\u00fcr\u00fcmleri bu Python s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131r. Python 3 deste\u011fi daha sonraki Graphite s\u00fcr\u00fcmlerinde eklenmi\u015ftir, ancak 14.04 i\u00e7in Python 2.7 tabanl\u0131 kurulum yapaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install -y python-dev python-pip build-essential \\\nlibffi-dev libcairo2-dev pkg-config python-cairo apache2 libapache2-mod-wsgi\n<\/code><\/pre>\n<ul>\n<li><code>python-dev<\/code>: Python C API&#8217;sini kullanmak i\u00e7in gerekli olan ba\u015fl\u0131k dosyalar\u0131n\u0131 ve statik k\u00fct\u00fcphaneleri sa\u011flar.<\/li>\n<li><code>python-pip<\/code>: Python paketlerini y\u00f6netmek i\u00e7in kullan\u0131lan pip arac\u0131n\u0131 kurar.<\/li>\n<li><code>build-essential<\/code>: Derleme i\u00e7in gerekli temel paketleri (gcc, make vb.) i\u00e7erir.<\/li>\n<li><code>libffi-dev<\/code>: C kodundan Python kodunu \u00e7a\u011f\u0131rmak i\u00e7in kullan\u0131lan bir k\u00fct\u00fcphane olan <code>libffi<\/code>&#8216;nin geli\u015ftirme dosyalar\u0131.<\/li>\n<li><code>libcairo2-dev<\/code>: Cairo grafik k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131. Graphite, grafik olu\u015fturmak i\u00e7in Cairo&#8217;yu kullan\u0131r.<\/li>\n<li><code>pkg-config<\/code>: Derleme s\u0131ras\u0131nda k\u00fct\u00fcphanelerin konumunu ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 bulmaya yard\u0131mc\u0131 olan bir ara\u00e7.<\/li>\n<li><code>python-cairo<\/code>: Python i\u00e7in Cairo ba\u011flay\u0131c\u0131lar\u0131.<\/li>\n<li><code>apache2<\/code>: Web sunucusu.<\/li>\n<li><code>libapache2-mod-wsgi<\/code>: Apache&#8217;nin Python web uygulamalar\u0131n\u0131 (Django gibi) \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flayan mod\u00fcl.<\/li>\n<\/ul>\n<h3>Graphite Kurulum Ad\u0131mlar\u0131<\/h3>\n<p>Art\u0131k sistemimiz haz\u0131r oldu\u011funa g\u00f6re, Graphite bile\u015fenlerini kurmaya ba\u015flayabiliriz.<\/p>\n<h4>Ad\u0131m 1: Python Paketlerini Kurma<\/h4>\n<p>Graphite bile\u015fenlerini <code>pip<\/code> kullanarak kuraca\u011f\u0131z. Bu, en basit ve \u00f6nerilen y\u00f6ntemdir.<\/p>\n<pre><code class=\"language-bash\">sudo pip install carbon whisper graphite-web\n<\/code><\/pre>\n<p>Bu komut, <code>carbon<\/code>, <code>whisper<\/code> ve <code>graphite-web<\/code> paketlerini sistem genelinde kuracakt\u0131r. Kurulum tamamland\u0131\u011f\u0131nda, bu paketlerin \u00e7al\u0131\u015ft\u0131r\u0131labilir dosyalar\u0131 genellikle <code>\/usr\/local\/bin<\/code> dizinine, k\u00fct\u00fcphane dosyalar\u0131 ise <code>\/usr\/local\/lib\/python2.7\/dist-packages<\/code> dizinine yerle\u015fir.<\/p>\n<h4>Ad\u0131m 2: Konfig\u00fcrasyon Dosyalar\u0131 i\u00e7in Dizin Yap\u0131s\u0131 Olu\u015fturma<\/h4>\n<p><code>pip<\/code> ile kurulum, konfig\u00fcrasyon dosyalar\u0131n\u0131 do\u011frudan olu\u015fturmaz. Bu dosyalar\u0131 \u00f6rneklerinden kopyalamam\u0131z ve uygun bir yere yerle\u015ftirmemiz gerekecektir. Standart bir Graphite kurulumunda konfig\u00fcrasyon dosyalar\u0131 genellikle <code>\/opt\/graphite\/conf<\/code> dizininde bulunur. Ancak biz <code>pip<\/code> ile kurdu\u011fumuz i\u00e7in, bu dosyalar\u0131 uygun bir sistem dizinine, \u00f6rne\u011fin <code>\/etc\/carbon<\/code> ve <code>\/etc\/graphite-web<\/code>&#8216;e kopyalayaca\u011f\u0131z. Ayr\u0131ca, Whisper verileri i\u00e7in bir dizin ve loglar i\u00e7in bir dizin olu\u015ftural\u0131m.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/etc\/carbon \/etc\/graphite-web\nsudo mkdir -p \/var\/lib\/graphite\/whisper\nsudo mkdir -p \/var\/log\/graphite\nsudo chown -R www-data:www-data \/var\/lib\/graphite\/whisper # Apache kullan\u0131c\u0131s\u0131na yazma izni\nsudo chown -R www-data:www-data \/var\/log\/graphite # Apache kullan\u0131c\u0131s\u0131na yazma izni\n<\/code><\/pre>\n<p><code>www-data<\/code> kullan\u0131c\u0131s\u0131 Apache&#8217;nin varsay\u0131lan kullan\u0131c\u0131s\u0131d\u0131r ve Graphite-web&#8217;in bu dizinlere eri\u015fmesi gerekecektir. Carbon servisi i\u00e7in de ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturulabilir veya <code>root<\/code> ile \u00e7al\u0131\u015ft\u0131r\u0131labilir, ancak daha g\u00fcvenli bir y\u00f6ntem, Carbon i\u00e7in ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturup ona izin vermektir. Bu makalede basitle\u015ftirmek ad\u0131na, Carbon&#8217;un da ayn\u0131 kullan\u0131c\u0131 veya root yetkileriyle \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 varsayaca\u011f\u0131z, ancak \u00fcretim ortamlar\u0131nda g\u00fcvenlik g\u00f6z \u00f6n\u00fcnde bulundurulmal\u0131d\u0131r.<\/p>\n<h4>Ad\u0131m 3: Carbon Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Carbon&#8217;un yap\u0131land\u0131rma dosyalar\u0131, <code>carbon<\/code> paketinin y\u00fcklendi\u011fi dizinde \u00f6rnek olarak bulunur. Bunlar\u0131 <code>\/etc\/carbon<\/code> dizinine kopyalayal\u0131m ve d\u00fczenleyelim.<\/p>\n<pre><code class=\"language-bash\"># \u00d6rnek konfig\u00fcrasyon dosyalar\u0131n\u0131n bulundu\u011fu dizini bulal\u0131m\nGRAPHITE_CONF_DIR=$(python -c \"import carbon; print carbon.__path__[0] + '\/conf'\")\n\nsudo cp $GRAPHITE_CONF_DIR\/carbon.conf.example \/etc\/carbon\/carbon.conf\nsudo cp $GRAPHITE_CONF_DIR\/storage-schemas.conf.example \/etc\/carbon\/storage-schemas.conf\nsudo cp $GRAPHITE_CONF_DIR\/storage-aggregation.conf.example \/etc\/carbon\/storage-aggregation.conf\n<\/code><\/pre>\n<h5><code>carbon.conf<\/code> Ayarlar\u0131<\/h5>\n<p>Bu dosya, Carbon bile\u015fenlerinin nas\u0131l \u00e7al\u0131\u015faca\u011f\u0131n\u0131 tan\u0131mlar. Varsay\u0131lan ayarlar \u00e7o\u011fu zaman yeterli olsa da, baz\u0131 \u00f6nemli parametreleri kontrol etmeliyiz.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/carbon\/carbon.conf\n<\/code><\/pre>\n<p><code>[cache]<\/code> b\u00f6l\u00fcm\u00fcnde a\u015fa\u011f\u0131daki ayarlar\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-ini\">[cache]\nENABLE_LOGGING = True\nLOCAL_DATA_DIR = \/var\/lib\/graphite\/whisper\nUSER = www-data # Carbon servisini www-data kullan\u0131c\u0131s\u0131 olarak \u00e7al\u0131\u015ft\u0131rmak i\u00e7in (iste\u011fe ba\u011fl\u0131)\n<h2>LINE_RECEIVER_INTERFACE = 0.0.0.0<\/h2>\n<h2>LINE_RECEIVER_PORT = 2003<\/h2>\n<h2>PICKLE_RECEIVER_INTERFACE = 0.0.0.0<\/h2>\n<h2>PICKLE_RECEIVER_PORT = 2004<\/h2>\n<h2>CACHE_QUERY_INTERFACE = 0.0.0.0<\/h2>\n<h2>CACHE_QUERY_PORT = 7002<\/h2>\n<\/code><\/pre>\n<p><code>LOCAL_DATA_DIR<\/code>&#8216;in Whisper dosyalar\u0131n\u0131n depolanaca\u011f\u0131 dizin oldu\u011funu do\u011frulay\u0131n. <code>USER<\/code> ayar\u0131, Carbon&#8217;un hangi kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler. E\u011fer Carbon&#8217;u ayr\u0131 bir kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131rmak isterseniz, bu kullan\u0131c\u0131y\u0131 olu\u015fturup buraya yazman\u0131z ve ilgili dizinlere (<code>\/var\/lib\/graphite\/whisper<\/code> ve <code>\/var\/log\/graphite<\/code>) yazma izinleri vermeniz gerekir. Aksi takdirde, bu sat\u0131r\u0131 yorum sat\u0131r\u0131 yap\u0131n ve Carbon&#8217;u <code>root<\/code> veya ba\u015fka bir yetkili kullan\u0131c\u0131 ile ba\u015flat\u0131n.<\/p>\n<h5><code>storage-schemas.conf<\/code> Ayarlar\u0131<\/h5>\n<p>Bu dosya, Whisper veritabanlar\u0131n\u0131n metrikleri hangi \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte ve ne kadar s\u00fcreyle saklayaca\u011f\u0131n\u0131 tan\u0131mlar. Bu, Graphite&#8217;\u0131n kalbi say\u0131l\u0131r \u00e7\u00fcnk\u00fc disk kullan\u0131m\u0131n\u0131 ve veri detay\u0131n\u0131 do\u011frudan etkiler.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/carbon\/storage-schemas.conf\n<\/code><\/pre>\n<p>Varsay\u0131lan olarak birka\u00e7 \u00f6rnek \u015fema bulunur. Kendi \u015feman\u0131z\u0131 olu\u015fturabilir veya mevcut olanlar\u0131 d\u00fczenleyebilirsiniz. \u00d6rne\u011fin, a\u015fa\u011f\u0131daki \u015fema t\u00fcm metrikleri (<code>name = .*<\/code>) ilk 7 g\u00fcn boyunca 1 dakikal\u0131k \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte ve sonraki 30 g\u00fcn boyunca 5 dakikal\u0131k \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte saklayacakt\u0131r:<\/p>\n<pre><code class=\"language-ini\">[carbon]\npattern = ^carbon\\.\nretentions = 60s:90d\n\n[default_1min_for_7days]\npattern = .*\nretentions = 60s:7d,5m:30d\n<\/code><\/pre>\n<p>A\u00e7\u0131klama:<\/p>\n<ul>\n<li><code>pattern = .<em><\/code>: Bu kural\u0131n t\u00fcm metrik adlar\u0131yla e\u015fle\u015fti\u011fini belirtir. Metrik adlar\u0131n\u0131 d\u00fczenli ifadelerle e\u015fle\u015ftirebilirsiniz (\u00f6rn. <code>^servers\\.web.<\/em><\/code>).<\/li>\n<li><code>retentions = 60s:7d,5m:30d<\/code>: Bu, bir virg\u00fclle ayr\u0131lm\u0131\u015f bir dizi saklama kural\u0131d\u0131r.\n<ul>\n<li><code>60s:7d<\/code>: Metrikleri 60 saniyelik aral\u0131klarla (1 dakika) 7 g\u00fcn boyunca sakla.<\/li>\n<li><code>5m:30d<\/code>: 5 dakikal\u0131k aral\u0131klarla 30 g\u00fcn boyunca sakla. Bu, ilk 7 g\u00fcnden sonraki verilerin ortalamas\u0131n\u0131n al\u0131narak daha d\u00fc\u015f\u00fck \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte saklanaca\u011f\u0131 anlam\u0131na gelir.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Bu ayarlar\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h5><code>storage-aggregation.conf<\/code> Ayarlar\u0131<\/h5>\n<p>Bu dosya, Graphite&#8217;\u0131n farkl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fck seviyelerine ge\u00e7erken metrik verilerini nas\u0131l birle\u015ftirece\u011fini (aggregate) tan\u0131mlar. \u00d6rne\u011fin, 1 dakikal\u0131k veriden 5 dakikal\u0131k veriye ge\u00e7erken ortalama m\u0131, toplam m\u0131, minimum mu yoksa maksimum mu al\u0131naca\u011f\u0131n\u0131 belirtir.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/carbon\/storage-aggregation.conf\n<\/code><\/pre>\n<p>Varsay\u0131lan ayarlar \u00e7o\u011fu zaman yeterlidir. \u0130\u015fte bir \u00f6rnek:<\/p>\n<pre><code class=\"language-ini\">[min]\npattern = \\.min$\nxFilesFactor = 0.1\naggregationMethod = min\n\n[max]\npattern = \\.max$\nxFilesFactor = 0.1\naggregationMethod = max\n\n[sum]\npattern = \\.sum$\nxFilesFactor = 0\naggregationMethod = sum\n\n[count]\npattern = \\.count$\nxFilesFactor = 0\naggregationMethod = sum\n\n[default_average]\npattern = .*\nxFilesFactor = 0.5\naggregationMethod = average\n<\/code><\/pre>\n<p>A\u00e7\u0131klama:<\/p>\n<ul>\n<li><code>pattern = .*<\/code>: Bu kural\u0131n t\u00fcm metrik adlar\u0131yla e\u015fle\u015fti\u011fini belirtir.<\/li>\n<li><code>xFilesFactor = 0.5<\/code>: Bir \u00fcst \u00e7\u00f6z\u00fcn\u00fcrl\u00fck seviyesine ge\u00e7erken, bir veri noktas\u0131n\u0131n ge\u00e7erli say\u0131labilmesi i\u00e7in ne kadar\u0131n\u0131n (0.0 ile 1.0 aras\u0131nda) mevcut olmas\u0131 gerekti\u011fini belirtir. \u00d6rne\u011fin, 0.5 ise, 5 dakikal\u0131k bir ortalama olu\u015fturmak i\u00e7in en az 2.5 dakikal\u0131k veri olmas\u0131 gerekir.<\/li>\n<li><code>aggregationMethod = average<\/code>: Metriklerin birle\u015ftirilmesi s\u0131ras\u0131nda kullan\u0131lacak y\u00f6ntemi belirtir (<code>average<\/code>, <code>sum<\/code>, <code>min<\/code>, <code>max<\/code>, <code>last<\/code>).<\/li>\n<\/ul>\n<p>Bu ayarlar\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h4>Ad\u0131m 4: Graphite-web Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Graphite-web, Django tabanl\u0131 bir uygulama oldu\u011fu i\u00e7in kendi yap\u0131land\u0131rma dosyalar\u0131na sahiptir. En \u00f6nemli dosya <code>local_settings.py<\/code>&#8216;dir.<\/p>\n<h5><code>local_settings.py<\/code> Dosyas\u0131n\u0131 Olu\u015fturma<\/h5>\n<p>\u00d6rnek <code>local_settings.py.example<\/code> dosyas\u0131n\u0131 kopyalayal\u0131m ve d\u00fczenleyelim. Bu dosya genellikle <code>graphite_web<\/code> paketinin i\u00e7indedir.<\/p>\n<pre><code class=\"language-bash\"># \u00d6rnek konfig\u00fcrasyon dosyalar\u0131n\u0131n bulundu\u011fu dizini bulal\u0131m\nGRAPHITE_WEB_CONF_DIR=$(python -c \"import graphite.app; print graphite.app.__path__[0] + '\/conf'\")\n\nsudo cp $GRAPHITE_WEB_CONF_DIR\/local_settings.py.example \/etc\/graphite-web\/local_settings.py\n<\/code><\/pre>\n<p>\u015eimdi bu dosyay\u0131 d\u00fczenleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/graphite-web\/local_settings.py\n<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki ayarlar\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-python\"># Bu sat\u0131r\u0131 bulun ve rastgele bir anahtar de\u011feri atay\u0131n\nSECRET_KEY = 'buraya_rastgele_uzun_bir_string_yazin' # \u00d6rne\u011fin: os.urandom(24).encode('hex') ile olu\u015fturulabilir\n\n<h2>Veritaban\u0131 ayarlar\u0131 (SQLite varsay\u0131lan olarak gelir, basit kurulum i\u00e7in yeterlidir)<\/h2>\nDATABASES = {\n    'default': {\n        'NAME': '\/var\/lib\/graphite\/graphite.db',\n        'ENGINE': 'django.db.backends.sqlite3',\n        'USER': '',\n        'PASSWORD': '',\n        'HOST': '',\n        'PORT': ''\n    }\n}\n\n<h2>Zaman dilimi ayar\u0131<\/h2>\nTIME_ZONE = 'Europe\/Istanbul' # Kendi zaman diliminize g\u00f6re ayarlay\u0131n\n\n<h2>Whisper veri dizinini belirtin<\/h2>\nWHISPER_DIR = '\/var\/lib\/graphite\/whisper'\n\n<h2>Log dizinini belirtin<\/h2>\nLOG_DIR = '\/var\/log\/graphite'\n\n<h2>Statik dosyalar\u0131n bulundu\u011fu dizin<\/h2>\nSTATIC_ROOT = '\/var\/www\/html\/graphite\/static' # Apache ile sunulacak statik dosyalar i\u00e7in\n<\/code><\/pre>\n<p><code>SECRET_KEY<\/code> i\u00e7in g\u00fc\u00e7l\u00fc, rastgele bir dize olu\u015fturdu\u011funuzdan emin olun. Django uygulamas\u0131n\u0131n g\u00fcvenli\u011fi i\u00e7in bu \u00e7ok \u00f6nemlidir. <code>os.urandom(24).encode('hex')<\/code> gibi bir Python komutuyla kolayca olu\u015fturabilirsiniz. <code>DATABASES<\/code> ayar\u0131 varsay\u0131lan olarak SQLite kullan\u0131r; bu, k\u00fc\u00e7\u00fck kurulumlar i\u00e7in uygundur. \u00dcretim ortamlar\u0131nda PostgreSQL veya MySQL gibi daha g\u00fc\u00e7l\u00fc bir veritaban\u0131 kullanman\u0131z \u00f6nerilir. <code>TIME_ZONE<\/code>&#8216;u kendi b\u00f6lgenize g\u00f6re ayarlay\u0131n. <code>WHISPER_DIR<\/code> ve <code>LOG_DIR<\/code>&#8216;in daha \u00f6nce olu\u015fturdu\u011fumuz dizinleri i\u015faret etti\u011finden emin olun. <code>STATIC_ROOT<\/code> ise Apache&#8217;nin sunaca\u011f\u0131 statik dosyalar\u0131n toplanaca\u011f\u0131 dizin olacak.<\/p>\n<h5>Veritaban\u0131 Ba\u015flatma ve Y\u00f6netici Olu\u015fturma<\/h5>\n<p>Graphite-web&#8217;in veritaban\u0131 \u015femas\u0131n\u0131 olu\u015fturmas\u0131 ve bir y\u00f6netici kullan\u0131c\u0131 olu\u015fturmas\u0131 gerekir. Bu i\u015flemi, Django&#8217;nun <code>manage.py<\/code> komutuyla yapar\u0131z.<\/p>\n<pre><code class=\"language-bash\"># manage.py dosyas\u0131n\u0131n bulundu\u011fu dizini bulal\u0131m\nGRAPHITE_WEB_APP_DIR=$(python -c \"import graphite.app; print graphite.app.__path__[0]\")\n\nsudo PYTHONPATH=$GRAPHITE_WEB_APP_DIR:$GRAPHITE_WEB_CONF_DIR:$PYTHONPATH \\\ndjango-admin.py syncdb --settings=graphite.app.settings --pythonpath=$GRAPHITE_WEB_APP_DIR\n<\/code><\/pre>\n<p>Bu komut \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, Django veritaban\u0131 tablolar\u0131n\u0131 olu\u015fturacak ve sizden bir y\u00f6netici kullan\u0131c\u0131 ad\u0131, e-posta ve parola olu\u015fturman\u0131z\u0131 isteyecektir. Bu bilgileri web aray\u00fcz\u00fcne giri\u015f yapmak i\u00e7in kullanacaks\u0131n\u0131z.<\/p>\n<h5>Statik Dosyalar\u0131 Toplama<\/h5>\n<p>Django, web sunucusu taraf\u0131ndan do\u011frudan sunulacak olan t\u00fcm statik dosyalar\u0131 (CSS, JavaScript, resimler) tek bir dizinde toplaman\u0131za olanak tan\u0131r. Daha \u00f6nce <code>STATIC_ROOT<\/code> olarak belirtti\u011fimiz dizini olu\u015ftural\u0131m ve dosyalar\u0131 oraya toplayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/www\/html\/graphite\/static\nsudo chown -R www-data:www-data \/var\/www\/html\/graphite\n\nsudo PYTHONPATH=$GRAPHITE_WEB_APP_DIR:$GRAPHITE_WEB_CONF_DIR:$PYTHONPATH \\\ndjango-admin.py collectstatic --noinput --settings=graphite.app.settings --pythonpath=$GRAPHITE_WEB_APP_DIR\n<\/code><\/pre>\n<p><code>--noinput<\/code>, sorular\u0131 otomatik olarak yan\u0131tlar (\u00f6rne\u011fin, mevcut dosyalar\u0131n \u00fczerine yazma sorusu). Bu i\u015flem tamamland\u0131\u011f\u0131nda, Graphite-web&#8217;in statik dosyalar\u0131 <code>\/var\/www\/html\/graphite\/static<\/code> dizininde bulunacakt\u0131r.<\/p>\n<h4>Ad\u0131m 5: Web Sunucusu (Apache) Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Graphite-web bir Django uygulamas\u0131 oldu\u011fu i\u00e7in, bir web sunucusu (Apache veya Nginx) ve bir WSGI (Web Server Gateway Interface) sunucusu (mod_wsgi veya Gunicorn) arac\u0131l\u0131\u011f\u0131yla sunulmas\u0131 gerekir. Bu makalede Apache ve <code>mod_wsgi<\/code> kullanaca\u011f\u0131z.<\/p>\n<h5><code>graphite.wsgi<\/code> Dosyas\u0131n\u0131 Olu\u015fturma<\/h5>\n<p>Apache&#8217;nin Graphite-web uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131 i\u00e7in bir WSGI dosyas\u0131na ihtiyac\u0131m\u0131z var. Bu dosyay\u0131 <code>\/etc\/graphite-web\/graphite.wsgi<\/code> olarak olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/graphite-web\/graphite.wsgi\n<\/code><\/pre>\n<p>\u0130\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olmal\u0131:<\/p>\n<pre><code class=\"language-python\">import sys\nimport os\n\n<h2>Graphite-web uygulamas\u0131n\u0131n k\u00f6k dizini<\/h2>\nGRAPHITE_ROOT = '\/usr\/local\/lib\/python2.7\/dist-packages\/graphite\/app' # pip ile kurulumda bu yol olabilir\nGRAPHITE_CONF = '\/etc\/graphite-web'\n\nsys.path.insert(0, GRAPHITE_ROOT)\nsys.path.insert(0, GRAPHITE_CONF) # local_settings.py i\u00e7in\n\nos.environ['DJANGO_SETTINGS_MODULE'] = 'settings' # Django ayarlar\u0131 i\u00e7in\nos.environ['GRAPHITE_SETTINGS_MODULE'] = 'local_settings' # Graphite'\u0131n \u00f6zel ayarlar\u0131 i\u00e7in\n\nfrom django.core.wsgi import get_wsgi_application\napplication = get_wsgi_application()\n<\/code><\/pre>\n<p><code>GRAPHITE_ROOT<\/code> de\u011fi\u015fkeninin, <code>pip<\/code> taraf\u0131ndan kurulan Graphite-web uygulamas\u0131n\u0131n k\u00f6k dizinini do\u011fru bir \u015fekilde g\u00f6sterdi\u011finden emin olun. Genellikle <code>\/usr\/local\/lib\/python2.7\/dist-packages\/graphite\/app<\/code> \u015feklindedir.<\/p>\n<h5>Apache Sanal Host Ayar\u0131<\/h5>\n<p>\u015eimdi Apache i\u00e7in bir sanal host yap\u0131land\u0131rmas\u0131 olu\u015ftural\u0131m. Bu, Apache&#8217;nin belirli bir URL&#8217;ye gelen istekleri Graphite-web uygulamas\u0131na y\u00f6nlendirmesini sa\u011flayacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/graphite.conf\n<\/code><\/pre>\n<p>\u0130\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olmal\u0131:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:80>\n    ServerName your_server_ip_or_domain # Sunucunuzun IP adresi veya alan ad\u0131n\u0131 buraya yaz\u0131n\n    DocumentRoot \"\/var\/www\/html\/graphite\"\n\n    # Statik dosyalar i\u00e7in\n    Alias \/static\/ \"\/var\/www\/html\/graphite\/static\/\"\n    <Directory \"\/var\/www\/html\/graphite\/static\/\">\n        Order deny,allow\n        Allow from all\n    <\/Directory>\n\n    # Graphite-web uygulamas\u0131 i\u00e7in\n    WSGIScriptAlias \/ \/etc\/graphite-web\/graphite.wsgi\n    <Directory \"\/etc\/graphite-web\/\">\n        Order deny,allow\n        Allow from all\n    <\/Directory>\n\n    ErrorLog ${APACHE_LOG_DIR}\/graphite_error.log\n    CustomLog ${APACHE_LOG_DIR}\/graphite_access.log combined\n<\/VirtualHost>\n<\/code><\/pre>\n<p><code>ServerName<\/code>&#8216;i sunucunuzun IP adresi veya alan ad\u0131yla de\u011fi\u015ftirmeyi unutmay\u0131n. Bu yap\u0131land\u0131rma, t\u00fcm gelen istekleri <code>graphite.wsgi<\/code> dosyas\u0131na y\u00f6nlendirecek ve statik dosyalar\u0131 do\u011frudan Apache \u00fczerinden sunacakt\u0131r.<\/p>\n<h5>Apache Sitesini Etkinle\u015ftirme ve Yeniden Ba\u015flatma<\/h5>\n<p>Yeni sanal host yap\u0131land\u0131rmas\u0131n\u0131 etkinle\u015ftirelim ve Apache&#8217;yi yeniden ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo a2ensite graphite.conf\nsudo service apache2 restart\n<\/code><\/pre>\n<p>E\u011fer bir hata al\u0131rsan\u0131z, Apache&#8217;nin hata loglar\u0131n\u0131 (<code>\/var\/log\/apache2\/error.log<\/code> veya <code>\/var\/log\/apache2\/graphite_error.log<\/code>) kontrol edin.<\/p>\n<h4>Ad\u0131m 6: Graphite Bile\u015fenlerini Ba\u015flatma<\/h4>\n<p>Carbon cache servisini ba\u015flatmam\u0131z gerekiyor. Bu servisi kal\u0131c\u0131 hale getirmek i\u00e7in bir <code>init.d<\/code> beti\u011fi kullanaca\u011f\u0131z.<\/p>\n<h5>Carbon Cache Servisini Ba\u015flatma<\/h5>\n<p>\u00d6ncelikle, Carbon&#8217;un \u00e7al\u0131\u015ft\u0131r\u0131labilir dosyas\u0131n\u0131n yolunu bulal\u0131m (genellikle <code>\/usr\/local\/bin\/carbon-cache.py<\/code>).<\/p>\n<pre><code class=\"language-bash\">sudo \/usr\/local\/bin\/carbon-cache.py start\n<\/code><\/pre>\n<p>Bu komut Carbon&#8217;u ba\u015flat\u0131r, ancak sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamaz. Bunu sa\u011flamak i\u00e7in bir <code>init.d<\/code> beti\u011fi olu\u015ftural\u0131m.<\/p>\n<h5>Init Script Olu\u015fturma (Ubuntu 14.04 i\u00e7in)<\/h5>\n<p>A\u015fa\u011f\u0131daki beti\u011fi <code>\/etc\/init.d\/carbon-cache<\/code> olarak kaydedin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/init.d\/carbon-cache\n<\/code><\/pre>\n<p>\u0130\u00e7eri\u011fi:<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n### BEGIN INIT INFO\n<h2>Provides:          carbon-cache<\/h2>\n<h2>Required-Start:    $network $local_fs $remote_fs<\/h2>\n<h2>Required-Stop:     $network $local_fs $remote_fs<\/h2>\n<h2>Default-Start:     2 3 4 5<\/h2>\n<h2>Default-Stop:      0 1 6<\/h2>\n<h2>Short-Description: Start\/stop carbon-cache<\/h2>\n<h2>Description:       Carbon-cache daemon for Graphite<\/h2>\n### END INIT INFO\n\n<h2>Varsay\u0131lan de\u011ferler<\/h2>\nNAME=carbon-cache\nDAEMON=\/usr\/local\/bin\/$NAME.py # carbon-cache.py dosyas\u0131n\u0131n yolu\nCONF_DIR=\/etc\/carbon\nLOG_DIR=\/var\/log\/graphite\nPID_FILE=\/var\/run\/carbon-cache.pid\nUSER=www-data # Carbon'u hangi kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z (iste\u011fe ba\u011fl\u0131)\n\n<h2>PYTHONPATH'i ayarlay\u0131n<\/h2>\nexport PYTHONPATH=\/usr\/local\/lib\/python2.7\/dist-packages:$PYTHONPATH\n\n<h2>Log dizinini ve PID dosyas\u0131n\u0131n dizinini olu\u015fturun<\/h2>\nmkdir -p $(dirname $PID_FILE)\nmkdir -p $LOG_DIR\nchown -R $USER:$USER $LOG_DIR\n\ncase \"$1\" in\n  start)\n    echo \"Starting $NAME...\"\n    start-stop-daemon --start --quiet --pidfile $PID_FILE --chuid $USER --exec $DAEMON -- --config=$CONF_DIR\/carbon.conf --logdir=$LOG_DIR start\n    echo \"$NAME started.\"\n    ;;\n  stop)\n    echo \"Stopping $NAME...\"\n    start-stop-daemon --stop --quiet --pidfile $PID_FILE\n    echo \"$NAME stopped.\"\n    ;;\n  restart)\n    echo \"Restarting $NAME...\"\n    start-stop-daemon --stop --quiet --pidfile $PID_FILE\n    sleep 1\n    start-stop-daemon --start --quiet --pidfile $PID_FILE --chuid $USER --exec $DAEMON -- --config=$CONF_DIR\/carbon.conf --logdir=$LOG_DIR start\n    echo \"$NAME restarted.\"\n    ;;\n  status)\n    PID=$(cat $PID_FILE 2>\/dev\/null)\n    if [ -n \"$PID\" ] && ps -p $PID > \/dev\/null; then\n      echo \"$NAME is running with PID $PID\"\n    else\n      echo \"$NAME is not running\"\n    fi\n    ;;\n  *)\n    echo \"Usage: \/etc\/init.d\/$NAME {start|stop|restart|status}\"\n    exit 1\n    ;;\nesac\n\nexit 0\n<\/code><\/pre>\n<p>Bu beti\u011fi kaydettikten sonra, \u00e7al\u0131\u015ft\u0131r\u0131labilir hale getirin ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in kaydedin:<\/p>\n<pre><code class=\"language-bash\">sudo chmod +x \/etc\/init.d\/carbon-cache\nsudo update-rc.d carbon-cache defaults\nsudo service carbon-cache start\n<\/code><\/pre>\n<p><code>sudo service carbon-cache status<\/code> komutuyla Carbon&#8217;un \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulayabilirsiniz. Ayr\u0131ca, <code>\/var\/log\/graphite\/carbon-cache\/carbon-cache.log<\/code> dosyas\u0131n\u0131 kontrol ederek herhangi bir hata olup olmad\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz.<\/p>\n<h3>Graphite&#8217;a Veri G\u00f6nderme<\/h3>\n<p>Graphite&#8217;\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olduktan sonra, ona metrik verileri g\u00f6ndermenin zaman\u0131 geldi. Graphite, varsay\u0131lan olarak 2003 numaral\u0131 TCP portundan basit metin tabanl\u0131 metrikleri dinler.<\/p>\n<h4>Netcat ile Basit Bir Test<\/h4>\n<p>En basit test y\u00f6ntemi <code>netcat<\/code> kullanmakt\u0131r. Bir metrik \u015fu formatta g\u00f6nderilir: <code>metrik.ad\u0131 de\u011feri zaman_damgas\u0131<\/code>.<\/p>\n<pre><code class=\"language-bash\">echo \"test.metric 42 $(date +%s)\" | nc -q0 localhost 2003\n<\/code><\/pre>\n<p>Bu komut, <code>test.metric<\/code> ad\u0131nda, de\u011feri <code>42<\/code> olan ve ge\u00e7erli Unix zaman damgas\u0131na sahip bir metrik g\u00f6nderir. <code>-q0<\/code> parametresi, <code>netcat<\/code>&#8216;in veriyi g\u00f6nderdikten hemen sonra ba\u011flant\u0131y\u0131 kapatmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Python ile Veri G\u00f6nderme<\/h4>\n<p>Daha programatik bir \u015fekilde veri g\u00f6ndermek i\u00e7in basit bir Python beti\u011fi kullanabiliriz:<\/p>\n<pre><code class=\"language-python\">import socket\nimport time\nimport random\n\nCARBON_SERVER = 'localhost'\nCARBON_PORT = 2003\n\ndef send_metric(metric_name, value):\n    timestamp = int(time.time())\n    message = \"%s %s %s\\n\" % (metric_name, value, timestamp)\n    print \"sending message:\\n%s\" % message\n    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    try:\n        sock.connect((CARBON_SERVER, CARBON_PORT))\n        sock.sendall(message)\n    except Exception as e:\n        print \"Error sending data: %s\" % e\n    finally:\n        sock.close()\n\nif __name__ == '__main__':\n    while True:\n        # Rastgele bir CPU kullan\u0131m\u0131 metri\u011fi g\u00f6nderelim\n        cpu_usage = random.uniform(0, 100)\n        send_metric(\"server.ubuntu1404.cpu.usage\", cpu_usage)\n\n        # Rastgele bir bellek kullan\u0131m\u0131 metri\u011fi g\u00f6nderelim\n        mem_usage = random.uniform(20, 80)\n        send_metric(\"server.ubuntu1404.memory.usage\", mem_usage)\n\n        time.sleep(5) # Her 5 saniyede bir veri g\u00f6nder\n<\/code><\/pre>\n<p>Bu beti\u011fi bir dosyaya kaydedip (\u00f6rn. <code>send_metrics.py<\/code>) \u00e7al\u0131\u015ft\u0131rarak (<code>python send_metrics.py<\/code>), Graphite&#8217;a s\u00fcrekli olarak \u00f6rnek veriler g\u00f6nderebilirsiniz.<\/p>\n<p><strong>StatsD ile Entegrasyon:<\/strong> Ger\u00e7ek d\u00fcnya uygulamalar\u0131nda, metrikleri do\u011frudan Graphite&#8217;a g\u00f6ndermek yerine genellikle <a href=\"https:\/\/github.com\/etsy\/statsd\">StatsD<\/a> gibi bir arac\u0131 kullan\u0131l\u0131r. StatsD, uygulama metriklerini toplar, toplar ve belirli aral\u0131klarla Graphite&#8217;a g\u00f6nderir. Bu, uygulama taraf\u0131ndaki y\u00fck\u00fc azalt\u0131r ve metrik g\u00f6nderme i\u015flemini basitle\u015ftirir.<\/p>\n<h3>Graphite Web Aray\u00fcz\u00fcn\u00fc Kullanma<\/h3>\n<p>Art\u0131k metrikleriniz Graphite&#8217;a akmaya ba\u015flad\u0131\u011f\u0131na g\u00f6re, web aray\u00fcz\u00fcn\u00fc kullanarak bunlar\u0131 g\u00f6rselle\u015ftirebilirsiniz.<\/p>\n<h4>Web Aray\u00fcz\u00fcne Eri\u015fim<\/h4>\n<p>Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve sunucunuzun IP adresine veya alan ad\u0131na gidin (\u00f6rn. <code>http:\/\/your_server_ip\/<\/code>). Graphite-web giri\u015f ekran\u0131n\u0131 g\u00f6rmelisiniz. Daha \u00f6nce <code>syncdb<\/code> komutuyla olu\u015fturdu\u011funuz y\u00f6netici kullan\u0131c\u0131 ad\u0131 ve \u015fifrenizle giri\u015f yap\u0131n.<\/p>\n<h4>Grafik Olu\u015fturma ve Ke\u015ffetme<\/h4>\n<p>Giri\u015f yapt\u0131ktan sonra, sol tarafta bir metrik a\u011fac\u0131 (metric tree) g\u00f6receksiniz. G\u00f6nderdi\u011finiz metrikler (\u00f6rn. <code>test.metric<\/code> veya <code>server.ubuntu1404.cpu.usage<\/code>) burada hiyerar\u015fik bir yap\u0131da listelenmelidir. Metrik a\u011fac\u0131ndan bir veya daha fazla metrik se\u00e7erek sa\u011f taraftaki panelde an\u0131nda bir grafik olu\u015fturabilirsiniz.<\/p>\n<p>Graphite&#8217;\u0131n web aray\u00fcz\u00fc, grafiklerinizi \u00f6zelle\u015ftirmek i\u00e7in zengin i\u015flevler sunar:<\/p>\n<ul>\n<li><strong>Grafik Fonksiyonlar\u0131:<\/strong> Grafi\u011fin alt\u0131ndaki &#8220;Functions&#8221; men\u00fcs\u00fcnden \u00e7e\u015fitli fonksiyonlar\u0131 uygulayabilirsiniz (\u00f6rn. <code>sumSeries()<\/code>, <code>averageSeries()<\/code>, <code>scale()<\/code>, <code>derivative()<\/code>). Bu fonksiyonlar, verileri d\u00f6n\u00fc\u015ft\u00fcrmenize, birle\u015ftirmenize veya farkl\u0131 \u015fekillerde analiz etmenize olanak tan\u0131r.<\/li>\n<li><strong>Zaman Aral\u0131\u011f\u0131:<\/strong> Grafi\u011fin \u00fcst k\u0131sm\u0131ndaki zaman aral\u0131\u011f\u0131 se\u00e7icileri kullanarak verileri farkl\u0131 zaman dilimlerinde (son 1 saat, son 24 saat, son 7 g\u00fcn vb.) g\u00f6r\u00fcnt\u00fcleyebilirsiniz.<\/li>\n<li><strong>G\u00f6rsel Ayarlar:<\/strong> Grafi\u011fin ba\u015fl\u0131\u011f\u0131n\u0131, eksen etiketlerini, renkleri ve di\u011fer g\u00f6rsel \u00f6zelliklerini ayarlayabilirsiniz.<\/li>\n<li><strong>Stacking:<\/strong> Birden fazla metrik serisini \u00fcst \u00fcste y\u0131\u011farak toplam de\u011feri g\u00f6rselle\u015ftirebilirsiniz.<\/li>\n<\/ul>\n<h4>Panelleri Kaydetme<\/h4>\n<p>Olu\u015fturdu\u011funuz grafikleri daha sonra kolayca eri\u015fmek i\u00e7in panolara (dashboards) kaydedebilirsiniz. &#8220;Save&#8221; butonuna t\u0131klayarak mevcut grafi\u011fi bir pano olarak kaydedebilir veya mevcut bir panoya ekleyebilirsiniz. Bu, farkl\u0131 sistemler veya uygulamalar i\u00e7in \u00f6zel izleme panolar\u0131 olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<h3>\u0130leri D\u00fczey Kullan\u0131m ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Graphite&#8217;\u0131n temel kurulumu ve kullan\u0131m\u0131 basit olsa da, daha karma\u015f\u0131k senaryolar ve \u00fcretim ortamlar\u0131 i\u00e7in baz\u0131 ileri d\u00fczey konular\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir:<\/p>\n<ul>\n<li><strong>Veritaban\u0131 Se\u00e7imi (PostgreSQL\/MySQL):<\/strong> Basit kurulumlar i\u00e7in SQLite yeterli olsa da, Graphite-web&#8217;in meta verilerini depolamak i\u00e7in \u00fcretim ortamlar\u0131nda PostgreSQL veya MySQL gibi daha g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve yedeklenebilir bir veritaban\u0131 kullan\u0131lmas\u0131 \u015fiddetle tavsiye edilir.<\/li>\n<li><strong>Carbon K\u00fcmelemesi (Relay, Aggregator):<\/strong> Y\u00fcksek hacimli metrikler i\u00e7in tek bir <code>carbon-cache<\/code> \u00f6rne\u011fi yetersiz kalabilir. <code>carbon-relay<\/code> kullanarak metrikleri birden fazla <code>carbon-cache<\/code> sunucusuna da\u011f\u0131tabilir, <code>carbon-aggregator<\/code> ile de metrikleri daha d\u00fc\u015f\u00fck \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklere indirgeyerek depolama maliyetlerini optimize edebilirsiniz.<\/li>\n<li><strong>Grafana Entegrasyonu:<\/strong> Graphite&#8217;\u0131n kendi web aray\u00fcz\u00fc i\u015flevsel olsa da, <a href=\"https:\/\/grafana.com\/\">Grafana<\/a> \u00e7ok daha modern, esnek ve \u00f6zellik a\u00e7\u0131s\u0131ndan zengin bir g\u00f6rselle\u015ftirme arac\u0131d\u0131r. Grafana, Graphite&#8217;\u0131 bir veri kayna\u011f\u0131 olarak kullanarak \u00e7ok daha etkileyici ve interaktif panolar olu\u015fturman\u0131za olanak tan\u0131r. \u00c7o\u011fu modern Graphite kurulumu, g\u00f6rselle\u015ftirme katman\u0131 olarak Grafana&#8217;y\u0131 tercih eder.<\/li>\n<li><strong>Graphite&#8217;\u0131n Kendini \u0130zlemesi:<\/strong> Carbon ve Graphite-web&#8217;in kendi performans metriklerini de Graphite&#8217;a g\u00f6ndermesini sa\u011flayarak izleme sisteminizin sa\u011fl\u0131\u011f\u0131n\u0131 izleyebilirsiniz.<\/li>\n<li><strong>Yedekleme Stratejileri:<\/strong> Whisper dosyalar\u0131 ve Graphite-web veritaban\u0131 (<code>graphite.db<\/code> veya PostgreSQL\/MySQL) d\u00fczenli olarak yedeklenmelidir. Whisper dosyalar\u0131 sabit boyutlu oldu\u011fu i\u00e7in, dizini kopyalamak yeterlidir.<\/li>\n<li><strong>Sistem Kaynaklar\u0131:<\/strong> Graphite, \u00f6zellikle y\u00fcksek metrik hacimlerinde CPU, bellek ve disk I\/O yo\u011fun bir uygulama olabilir. Sunucunuzun yeterli kaynaklara sahip oldu\u011fundan emin olun ve performans\u0131 izleyin.<\/li>\n<\/ul>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum veya kullan\u0131m s\u0131ras\u0131nda sorunlarla kar\u015f\u0131la\u015fman\u0131z durumunda a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<ul>\n<li><strong>Log Dosyalar\u0131n\u0131 Kontrol Etme:<\/strong>\n<ul>\n<li>Carbon loglar\u0131: <code>\/var\/log\/graphite\/carbon-cache\/carbon-cache.log<\/code><\/li>\n<li>Apache loglar\u0131: <code>\/var\/log\/apache2\/error.log<\/code> ve <code>\/var\/log\/apache2\/graphite_error.log<\/code><\/li>\n<li>Graphite-web loglar\u0131: <code>\/var\/log\/graphite\/webapp.log<\/code> (e\u011fer <code>local_settings.py<\/code>&#8216;de etkinle\u015ftirildi ve do\u011fru ayarland\u0131ysa)<\/li>\n<\/ul>\n<p>Bu log dosyalar\u0131, hatalar\u0131n nedenini anlamak i\u00e7in en iyi ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital d\u00fcnyas\u0131nda, sunucu ve uygulama performans\u0131","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-38131","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131 Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital d\u00fcnyas\u0131nda, sunucu ve uygulama performans\u0131\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-23T18:41:08+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131\",\"datePublished\":\"2026-01-23T18:41:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/\"},\"wordCount\":3018,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/\",\"name\":\"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-23T18:41:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131","og_description":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131 Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital d\u00fcnyas\u0131nda, sunucu ve uygulama performans\u0131","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-23T18:41:08+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131","datePublished":"2026-01-23T18:41:08+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/"},"wordCount":3018,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/","name":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-23T18:41:08+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-14-04-sunucusunda-graphite-kurulumu-ve-kullanimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 14.04 Sunucusunda Graphite Kurulumu ve Kullan\u0131m\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38131"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38131\/revisions"}],"predecessor-version":[{"id":38132,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38131\/revisions\/38132"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}