{"id":44758,"date":"2026-09-18T09:07:00","date_gmt":"2026-09-18T06:07:00","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/"},"modified":"2026-09-18T09:07:55","modified_gmt":"2026-09-18T06:07:55","slug":"grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/","title":{"rendered":"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak"},"content":{"rendered":"<h2>Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital ortam\u0131nda, sistemlerin s\u00fcrekli izlenmesi ve g\u00f6zlemlenebilirli\u011fi (observability) kritik bir \u00f6neme sahiptir. Grafana, bu alanda lider platformlardan biri olarak, verilerinizi g\u00f6rselle\u015ftirmenize, uyar\u0131lar olu\u015fturman\u0131za ve sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlaman\u0131za olanak tan\u0131r. Ancak, Grafana panolar\u0131n\u0131z\u0131, veri kaynaklar\u0131n\u0131z\u0131 ve uyar\u0131lar\u0131n\u0131z\u0131 manuel olarak yap\u0131land\u0131rmak, \u00f6zellikle b\u00fcy\u00fck ve dinamik altyap\u0131larda zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve tutars\u0131z sonu\u00e7lar do\u011furabilir. Peki, bir felaket an\u0131nda veya yeni bir ortam kuruldu\u011funda t\u00fcm bu yap\u0131land\u0131rmalar\u0131 s\u0131f\u0131rdan ve hatas\u0131z bir \u015fekilde nas\u0131l geri getirebiliriz? \u0130\u015fte bu noktada &#8220;Grafana as Code&#8221; yakla\u015f\u0131m\u0131 ve sa\u011flama dosyalar\u0131 (provisioning files) devreye girerek, Grafana ortam\u0131n\u0131z\u0131 kod arac\u0131l\u0131\u011f\u0131yla y\u00f6netme ve &#8220;destroy-recreate&#8221; (y\u0131k\u0131m-yeniden olu\u015fturma) senaryolar\u0131ndan ba\u015far\u0131yla sa\u011f \u00e7\u0131kma imkan\u0131 sunar.<\/p>\n<h3>G\u00f6zlemlenebilirlik D\u00fcnyas\u0131nda Neden &#8220;Kod Olarak Grafana&#8221;ya \u0130htiya\u00e7 Duyar\u0131z?<\/h3>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme ve operasyon pratikleri, altyap\u0131n\u0131n kod olarak y\u00f6netilmesi (Infrastructure as Code &#8211; IaC) prensibini benimsemi\u015ftir. Sunucular, a\u011f yap\u0131land\u0131rmalar\u0131 ve veritabanlar\u0131 gibi bile\u015fenler art\u0131k manuel ad\u0131mlar yerine, s\u00fcr\u00fcm kontroll\u00fc kod dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla otomatik olarak olu\u015fturulmakta ve y\u00f6netilmektedir. Bu yakla\u015f\u0131m, sistemlerin tutarl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r, insan hatas\u0131n\u0131 azalt\u0131r ve h\u0131zl\u0131 da\u011f\u0131t\u0131mlara olanak tan\u0131r. G\u00f6zlemlenebilirlik platformumuz olan Grafana i\u00e7in de ayn\u0131 prensipleri uygulamak, bir\u00e7ok avantaj\u0131 beraberinde getirir. Bir d\u00fc\u015f\u00fcn\u00fcn: Haftalar s\u00fcren \u00e7al\u0131\u015fmalar sonucunda olu\u015fturdu\u011funuz y\u00fczlerce Grafana panosu, onlarca veri kayna\u011f\u0131 ve kritik uyar\u0131 kurallar\u0131 var. Bir sunucu \u00e7\u00f6kmesi, yanl\u0131\u015f bir yap\u0131land\u0131rma de\u011fi\u015fikli\u011fi veya yeni bir test ortam\u0131 kurma ihtiyac\u0131 do\u011fdu\u011funda, t\u00fcm bu yap\u0131land\u0131rmalar\u0131 manuel olarak yeniden olu\u015fturmak ne kadar s\u00fcrerdi? Muhtemelen g\u00fcnler, hatta haftalar. \u00dcstelik bu s\u00fcre\u00e7, tutars\u0131zl\u0131klar ve hatalarla dolu olma potansiyeli ta\u015f\u0131r.<\/p>\n<p>&#8220;Grafana as Code&#8221; (Kod Olarak Grafana) yakla\u015f\u0131m\u0131, bu sorunlara k\u00f6kl\u00fc bir \u00e7\u00f6z\u00fcm sunar. Bu yakla\u015f\u0131m sayesinde, Grafana&#8217;n\u0131n veri kaynaklar\u0131, panolar (dashboards), bildirim kanallar\u0131 (notification channels) ve uyar\u0131 kurallar\u0131 gibi t\u00fcm yap\u0131land\u0131rmalar\u0131 basit metin dosyalar\u0131 (YAML veya JSON) olarak tan\u0131mlan\u0131r. Bu dosyalar, Git gibi s\u00fcr\u00fcm kontrol sistemlerinde saklanabilir, b\u00f6ylece de\u011fi\u015fiklikler izlenebilir, geri al\u0131nabilir ve ekip \u00fcyeleri aras\u0131nda i\u015fbirli\u011fi yap\u0131labilir. Bu sayede, Grafana ortam\u0131n\u0131z\u0131n herhangi bir anda hangi durumda oldu\u011funu tam olarak bilirsiniz. Bir sunucu ar\u0131zas\u0131 durumunda, yeni bir Grafana \u00f6rne\u011fi kurup bu yap\u0131land\u0131rma dosyalar\u0131n\u0131 uygulayarak dakikalar i\u00e7inde eski haline d\u00f6nebilirsiniz. Geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 aras\u0131nda tutarl\u0131l\u0131\u011f\u0131 sa\u011flamak da bu y\u00f6ntemle \u00e7ok daha kolay hale gelir. Her ortam, ayn\u0131 kod taban\u0131ndan beslenerek ayn\u0131 panolar\u0131 ve veri kaynaklar\u0131n\u0131 kullan\u0131r, bu da &#8220;ortamlar aras\u0131 farklar&#8221;dan kaynaklanan sorunlar\u0131 ortadan kald\u0131r\u0131r. Otomasyon, h\u0131z, g\u00fcvenilirlik ve tutarl\u0131l\u0131k gibi kavramlar, &#8220;Grafana as Code&#8221; yakla\u015f\u0131m\u0131n\u0131n temel ta\u015flar\u0131n\u0131 olu\u015fturur ve modern DevOps ekipleri i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline gelmesini sa\u011flar.<\/p>\n<h3>Grafana Sa\u011flama Dosyalar\u0131 Nelerdir ve Nas\u0131l \u00c7al\u0131\u015f\u0131rlar?<\/h3>\n<p>Grafana&#8217;n\u0131n sa\u011flama (provisioning) mekanizmas\u0131, yap\u0131land\u0131rma \u00f6\u011felerini harici dosyalardan okuyarak Grafana \u00f6rne\u011fini otomatik olarak yap\u0131land\u0131rmas\u0131na olanak tan\u0131r. Bu, Grafana&#8217;y\u0131 bir konteyner i\u00e7inde veya yeni bir sanal makinede her ba\u015flatt\u0131\u011f\u0131n\u0131zda, \u00f6nceden tan\u0131mlanm\u0131\u015f veri kaynaklar\u0131, panolar, bildirim kanallar\u0131 ve di\u011fer ayarlar\u0131n an\u0131nda haz\u0131r olmas\u0131n\u0131 sa\u011flar. Grafana, belirli dizinlerdeki (genellikle <code>\/etc\/grafana\/provisioning<\/code> alt\u0131nda) YAML dosyalar\u0131n\u0131 tarayarak bu yap\u0131land\u0131rmalar\u0131 y\u00fckler. Bu dosyalar, Grafana API&#8217;si arac\u0131l\u0131\u011f\u0131yla manuel olarak yap\u0131lan t\u00fcm i\u015flemlerin kod kar\u015f\u0131l\u0131\u011f\u0131d\u0131r.<\/p>\n<p>Temel olarak d\u00f6rt ana t\u00fcrde sa\u011flama dosyas\u0131 bulunur:<\/p>\n<ul>\n<li><strong>Veri Kaynaklar\u0131 (Data Sources):<\/strong> Prometheus, InfluxDB, PostgreSQL, MySQL, Elasticsearch gibi Grafana&#8217;n\u0131n ba\u011flanaca\u011f\u0131 t\u00fcm veri kaynaklar\u0131n\u0131 tan\u0131mlar. Hangi veritaban\u0131na, hangi kullan\u0131c\u0131 ad\u0131 ve \u015fifreyle ba\u011flan\u0131laca\u011f\u0131 gibi detaylar\u0131 i\u00e7erir.<\/li>\n<li><strong>Panolar (Dashboards):<\/strong> JSON format\u0131nda d\u0131\u015fa aktar\u0131lan Grafana panolar\u0131n\u0131 belirtilen dizinlerden y\u00fcklenmesini sa\u011flar. Bu panolar genellikle s\u00fcr\u00fcm kontrol sistemlerinde saklan\u0131r.<\/li>\n<li><strong>Bildirim Kanallar\u0131 (Notification Channels):<\/strong> Slack, PagerDuty, E-posta gibi uyar\u0131lar\u0131n g\u00f6nderilece\u011fi kanallar\u0131 yap\u0131land\u0131r\u0131r.<\/li>\n<li><strong>Eklentiler (Plugins):<\/strong> Grafana&#8217;n\u0131n kullanaca\u011f\u0131 ek eklentilerin otomatik olarak y\u00fcklenmesini sa\u011flar.<\/li>\n<\/ul>\n<p>Grafana, ba\u015flat\u0131ld\u0131\u011f\u0131nda bu dizinlerdeki dosyalar\u0131 okur ve buna g\u00f6re yap\u0131land\u0131rmas\u0131n\u0131 yapar. E\u011fer dosyalarda bir de\u011fi\u015fiklik olursa ve Grafana yeniden ba\u015flat\u0131l\u0131rsa, bu de\u011fi\u015fiklikler otomatik olarak uygulan\u0131r. Bu durum, \u00f6zellikle konteyner tabanl\u0131 (\u00f6rne\u011fin Docker veya Kubernetes) da\u011f\u0131t\u0131mlarda b\u00fcy\u00fck kolayl\u0131k sa\u011flar. Yeni bir konteyner ba\u015flatt\u0131\u011f\u0131n\u0131zda, sa\u011flama dosyalar\u0131 sayesinde Grafana \u00f6rne\u011finiz hemen kullan\u0131ma haz\u0131r hale gelir. \u00d6rne\u011fin, bir Prometheus veri kayna\u011f\u0131n\u0131 sa\u011flama dosyas\u0131yla tan\u0131mlamak i\u00e7in \u015f\u00f6yle bir YAML dosyas\u0131 olu\u015fturabilirsiniz (<code>\/etc\/grafana\/provisioning\/datasources\/prometheus.yaml<\/code>):<\/p>\n<div class=\"code-container\">\n<pre><code>\napiVersion: 1\n\ndatasources:\n  - name: Prometheus\n    type: prometheus\n    access: proxy\n    url: http:\/\/prometheus:9090\n    isDefault: true\n    version: 1\n    editable: true\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Bu dosya, Grafana&#8217;ya <code>Prometheus<\/code> ad\u0131nda bir veri kayna\u011f\u0131 eklemesini, tipinin <code>prometheus<\/code> oldu\u011funu, <code>http:\/\/prometheus:9090<\/code> adresine ba\u011flanaca\u011f\u0131n\u0131 ve varsay\u0131lan veri kayna\u011f\u0131 olaca\u011f\u0131n\u0131 s\u00f6yler. Benzer \u015fekilde, panolar\u0131 tan\u0131mlamak i\u00e7in de bir YAML dosyas\u0131 kullan\u0131l\u0131r. Bu dosya, panolar\u0131n hangi dizinlerden y\u00fcklenece\u011fini ve hangi periyotlarda g\u00fcncellenece\u011fini belirtir. \u00d6rne\u011fin, <code>\/etc\/grafana\/provisioning\/dashboards\/general.yaml<\/code>:<\/p>\n<div class=\"code-container\">\n<pre><code>\napiVersion: 1\n\nproviders:\n  - name: 'Genel Panolar'\n    orgId: 1\n    folder: ''\n    type: file\n    disableDeletion: false\n    editable: true\n    options:\n      path: \/var\/lib\/grafana\/dashboards\n      intervalSeconds: 10\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Bu yap\u0131land\u0131rma, Grafana&#8217;ya <code>\/var\/lib\/grafana\/dashboards<\/code> dizinindeki t\u00fcm JSON dosyalar\u0131n\u0131 taramas\u0131n\u0131 ve bunlar\u0131 pano olarak eklemesini s\u00f6yler. <code>intervalSeconds: 10<\/code> ayar\u0131 ise, bu dizini her 10 saniyede bir kontrol ederek yeni panolar\u0131 veya g\u00fcncellenmi\u015f panolar\u0131 otomatik olarak y\u00fcklemesini sa\u011flar. Bu mekanizma sayesinde, panolar\u0131n\u0131z\u0131 Git depolar\u0131nda saklayabilir, CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) s\u00fcre\u00e7lerinizle Grafana sunucunuzdaki ilgili dizine da\u011f\u0131tabilir ve b\u00f6ylece panolar\u0131n\u0131z\u0131n daima g\u00fcncel ve s\u00fcr\u00fcm kontroll\u00fc olmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h3>Uygulamal\u0131 Bir Bak\u0131\u015f: Grafana Sa\u011flama Dosyalar\u0131yla Ad\u0131m Ad\u0131m Kurulum ve Y\u00f6netim<\/h3>\n<p>Grafana sa\u011flama dosyalar\u0131n\u0131 kullanarak bir ortam\u0131 ba\u015ftan sona nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ve y\u00f6netece\u011fimizi ad\u0131m ad\u0131m inceleyelim. Bu \u00f6rnekte, Docker kullanarak basit bir Grafana ve Prometheus ortam\u0131 kuraca\u011f\u0131z ve yap\u0131land\u0131rmalar\u0131m\u0131z\u0131 kod olarak y\u00f6netece\u011fiz. \u0130lk olarak, Grafana&#8217;n\u0131n veri kaynaklar\u0131n\u0131 ve panolar\u0131n\u0131 i\u00e7erecek bir dizin yap\u0131s\u0131 olu\u015ftural\u0131m. Genellikle bu dizinler, Grafana konteynerinin i\u00e7ine ba\u011flan\u0131r (mount edilir).<\/p>\n<div class=\"code-container\">\n<pre><code>\nmkdir -p grafana\/provisioning\/{datasources,dashboards}\nmkdir -p grafana\/dashboards\n        <\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi bir Prometheus veri kayna\u011f\u0131 tan\u0131mlayal\u0131m. <code>grafana\/provisioning\/datasources\/prometheus.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<div class=\"code-container\">\n<pre><code>\n# grafana\/provisioning\/datasources\/prometheus.yaml\napiVersion: 1\n\ndatasources:\n  - name: Prometheus\n    type: prometheus\n    access: proxy\n    url: http:\/\/prometheus:9090 # Prometheus servisinin ad\u0131 ve portu\n    isDefault: true\n    version: 1\n    editable: true\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Ard\u0131ndan, panolar\u0131n nas\u0131l y\u00fcklenece\u011fini belirten bir sa\u011flama dosyas\u0131 olu\u015ftural\u0131m. <code>grafana\/provisioning\/dashboards\/general.yaml<\/code> dosyas\u0131na a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<div class=\"code-container\">\n<pre><code>\n# grafana\/provisioning\/dashboards\/general.yaml\napiVersion: 1\n\nproviders:\n  - name: 'Genel Panolar'\n    orgId: 1\n    folder: '' # T\u00fcm panolar k\u00f6k dizine eklenecek\n    type: file\n    disableDeletion: false\n    editable: true\n    options:\n      path: \/var\/lib\/grafana\/dashboards # Grafana konteyneri i\u00e7indeki yol\n      intervalSeconds: 10\n        <\/code><\/pre>\n<\/p><\/div>\n<p>\u015eimdi de basit bir Grafana panosu olu\u015ftural\u0131m. Bu panoyu, Prometheus&#8217;tan CPU kullan\u0131m\u0131n\u0131 g\u00f6steren basit bir grafik i\u00e7erecek \u015fekilde tasarlayabiliriz. Grafana aray\u00fcz\u00fcnden bir pano olu\u015fturup JSON olarak d\u0131\u015fa aktarabilir veya do\u011frudan elle yazabiliriz. \u00d6rnek olarak, <code>grafana\/dashboards\/cpu-usage.json<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>\n# grafana\/dashboards\/cpu-usage.json (Basit bir \u00f6rnek)\n{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 1,\n  \"id\": null,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"datasource\": \"Prometheus\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"max\": null,\n          \"min\": 0,\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 2,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"expr\": \"100 - (avg by (instance) (rate(node_cpu_seconds_total{mode=\\\"idle\\\"}[5m])) * 100)\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"CPU Kullan\u0131m\u0131\",\n      \"type\": \"timeseries\"\n    }\n  ],\n  \"schemaVersion\": 27,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-6h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {},\n  \"timezone\": \"\",\n  \"title\": \"Sunucu CPU Kullan\u0131m\u0131\",\n  \"uid\": \"cpu-usage-dashboard\",\n  \"version\": 1\n}\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Son olarak, bu yap\u0131land\u0131rmalar\u0131 kullanacak bir <code>docker-compose.yaml<\/code> dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>\n# docker-compose.yaml\nversion: '3.8'\n\nservices:\n  prometheus:\n    image: prom\/prometheus:latest\n    container_name: prometheus\n    ports:\n      - \"9090:9090\"\n    volumes:\n      - .\/prometheus.yml:\/etc\/prometheus\/prometheus.yml # Prometheus yap\u0131land\u0131rmas\u0131\n    command:\n      - '--config.file=\/etc\/prometheus\/prometheus.yml'\n    networks:\n      - monitoring-net\n\n  grafana:\n    image: grafana\/grafana:latest\n    container_name: grafana\n    ports:\n      - \"3000:3000\"\n    volumes:\n      - .\/grafana\/provisioning:\/etc\/grafana\/provisioning # Sa\u011flama dosyalar\u0131\n      - .\/grafana\/dashboards:\/var\/lib\/grafana\/dashboards # Pano JSON dosyalar\u0131\n    environment:\n      - GF_SECURITY_ADMIN_USER=admin\n      - GF_SECURITY_ADMIN_PASSWORD=admin\n      - GF_SERVER_ROOT_URL=http:\/\/localhost:3000\n    depends_on:\n      - prometheus\n    networks:\n      - monitoring-net\n\nnetworks:\n  monitoring-net:\n    driver: bridge\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Ayr\u0131ca, Prometheus&#8217;un kendi yap\u0131land\u0131rma dosyas\u0131na da ihtiyac\u0131m\u0131z var (<code>prometheus.yml<\/code>):<\/p>\n<div class=\"code-container\">\n<pre><code>\n# prometheus.yml\nglobal:\n  scrape_interval: 15s\n\nscrape_configs:\n  - job_name: 'prometheus'\n    static_configs:\n      - targets: ['localhost:9090']\n  - job_name: 'grafana'\n    static_configs:\n      - targets: ['grafana:3000'] # Grafana'y\u0131 izlemek i\u00e7in (iste\u011fe ba\u011fl\u0131)\n  - job_name: 'node_exporter' # \u00d6rnek bir node_exporter'\u0131 izlemek i\u00e7in\n    static_configs:\n      - targets: ['host.docker.internal:9100'] # Host makineden node_exporter'\u0131 izler\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Bu ad\u0131mlardan sonra, terminalinizde <code>docker-compose up -d<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak t\u00fcm ortam\u0131 ba\u015flatabilirsiniz. Grafana, <code>localhost:3000<\/code> adresinden eri\u015filebilir olacak ve oturum a\u00e7t\u0131\u011f\u0131n\u0131zda (admin\/admin), Prometheus veri kayna\u011f\u0131n\u0131n ve &#8220;Sunucu CPU Kullan\u0131m\u0131&#8221; panosunun otomatik olarak olu\u015fturuldu\u011funu g\u00f6receksiniz. Bu kurulum, tamamen kod tabanl\u0131d\u0131r ve herhangi bir zamanda <code>docker-compose down<\/code> ile y\u0131k\u0131l\u0131p <code>docker-compose up -d<\/code> ile yeniden olu\u015fturuldu\u011funda, t\u00fcm yap\u0131land\u0131rmalar\u0131n\u0131z eksiksiz bir \u015fekilde geri gelecektir. Bu, &#8220;destroy-recreate&#8221; senaryolar\u0131nda Grafana ortam\u0131n\u0131z\u0131n tutarl\u0131l\u0131\u011f\u0131n\u0131 ve h\u0131zl\u0131 kurtar\u0131labilirli\u011fini sa\u011flar.<\/p>\n<h3>&#8220;Destroy-Recreate&#8221; Senaryolar\u0131: Grafana Ortam\u0131n\u0131z\u0131 G\u00fcvenle Yeniden \u0130n\u015fa Etmek<\/h3>\n<p>&#8220;Destroy-recreate&#8221; senaryolar\u0131, modern altyap\u0131 y\u00f6netiminin ayr\u0131lmaz bir par\u00e7as\u0131d\u0131r. Bu, bir bile\u015fenin (bu durumda Grafana) mevcut durumunun tamamen silinip, kod olarak tan\u0131mlanm\u0131\u015f yap\u0131land\u0131rmalarla s\u0131f\u0131rdan yeniden olu\u015fturulmas\u0131 anlam\u0131na gelir. Bu yakla\u015f\u0131m, sistemlerin &#8220;de\u011fi\u015fmez altyap\u0131&#8221; (immutable infrastructure) prensibine uygun olarak y\u00f6netilmesini sa\u011flar ve bir\u00e7ok avantaj sunar:<\/p>\n<ul>\n<li><strong>Tutarl\u0131l\u0131k (Consistency):<\/strong> Her yeniden olu\u015fturma, ayn\u0131 kod taban\u0131ndan yap\u0131ld\u0131\u011f\u0131 i\u00e7in ortamlar (geli\u015ftirme, test, \u00fcretim) aras\u0131nda tutarl\u0131l\u0131k garantilenir. &#8220;Benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; gibi sorunlar azal\u0131r.<\/li>\n<li><strong>G\u00fcvenilirlik (Reliability):<\/strong> Bir felaket an\u0131nda (\u00f6rne\u011fin, sunucu ar\u0131zas\u0131, veri bozulmas\u0131), Grafana ortam\u0131n\u0131z\u0131 h\u0131zla ve g\u00fcvenilir bir \u015fekilde eski haline getirebilirsiniz. Manuel ad\u0131mlarla u\u011fra\u015fmak yerine, birka\u00e7 komutla t\u00fcm yap\u0131land\u0131rmalar\u0131n\u0131z geri gelir.<\/li>\n<li><strong>Basitle\u015ftirilmi\u015f Hata Ay\u0131klama (Simplified Debugging):<\/strong> Bir sorunla kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131nda, ortam\u0131 tamamen yeniden olu\u015fturmak, sorunun k\u00f6kenini bulmaya yard\u0131mc\u0131 olabilir. E\u011fer sorun yeniden olu\u015fturma sonras\u0131 devam ediyorsa, sorun b\u00fcy\u00fck ihtimalle yap\u0131land\u0131rma kodunuzdad\u0131r; etraftaki &#8220;gizli&#8221; de\u011fi\u015fikliklerde de\u011fil.<\/li>\n<li><strong>Kolay \u00d6l\u00e7eklendirme (Easy Scaling):<\/strong> Yeni bir Grafana \u00f6rne\u011fi eklemek veya mevcut bir \u00f6rne\u011fi ba\u015fka bir sunucuya ta\u015f\u0131mak, sa\u011flama dosyalar\u0131 sayesinde son derece kolayla\u015f\u0131r. Yeni bir sunucuda sadece Grafana&#8217;y\u0131 kurup sa\u011flama dosyalar\u0131n\u0131 g\u00f6stermeniz yeterlidir.<\/li>\n<li><strong>Geli\u015ftirme ve Test Ortamlar\u0131 (Dev\/Test Environments):<\/strong> Geli\u015ftiriciler ve test ekipleri, \u00fcretim ortam\u0131n\u0131n bir kopyas\u0131n\u0131 kendi makinelerinde h\u0131zla olu\u015fturabilir, de\u011fi\u015fiklikleri g\u00fcvenle test edebilir ve ard\u0131ndan bu ortam\u0131 kolayca yok edebilirler.<\/li>\n<\/ul>\n<p>Peki, bu senaryolardan nas\u0131l sa\u011f \u00e7\u0131k\u0131l\u0131r? Anahtar, t\u00fcm Grafana yap\u0131land\u0131rmalar\u0131n\u0131n (veri kaynaklar\u0131, panolar, bildirim kanallar\u0131, kullan\u0131c\u0131lar\/tak\u0131mlar) sa\u011flama dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla y\u00f6netilmesidir. Bu dosyalar, Git gibi bir s\u00fcr\u00fcm kontrol sisteminde saklanmal\u0131 ve her de\u011fi\u015fiklik onaylanarak (commit) takip edilmelidir. Bir &#8220;destroy-recreate&#8221; operasyonu genellikle a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<ol>\n<li><strong>Mevcut Ortam\u0131 Durdurma ve Silme:<\/strong> \u00d6rne\u011fin, Docker Compose kullan\u0131yorsan\u0131z, <code>docker-compose down -v<\/code> komutuyla Grafana konteynerini ve ili\u015fkili t\u00fcm verileri (volume&#8217;lar dahil) tamamen silersiniz. Bu, Grafana&#8217;n\u0131n veritaban\u0131nda depolad\u0131\u011f\u0131 t\u00fcm bilgilerin kaybolmas\u0131 anlam\u0131na gelir.<\/li>\n<li><strong>Yeni Bir Ortam Olu\u015fturma:<\/strong> Temiz bir sunucuya veya yeni bir konteynere Grafana&#8217;y\u0131 kurars\u0131n\u0131z.<\/li>\n<li><strong>Sa\u011flama Dosyalar\u0131n\u0131 Uygulama:<\/strong> Grafana ba\u015flat\u0131ld\u0131\u011f\u0131nda, s\u00fcr\u00fcm kontrol sisteminizden \u00e7ekti\u011finiz sa\u011flama dosyalar\u0131 (veri kaynaklar\u0131, panolar vb.) otomatik olarak y\u00fcklenir ve Grafana \u00f6rne\u011fi, en son tan\u0131mlanm\u0131\u015f durumuna getirilir.<\/li>\n<\/ol>\n<p>Bu s\u00fcre\u00e7, manuel m\u00fcdahaleyi minimuma indirerek, insan hatas\u0131 riskini ortadan kald\u0131r\u0131r. \u00d6zellikle DevOps ve Site Reliability Engineering (SRE) ekipleri i\u00e7in bu, kritik sistemlerin kesintisiz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flaman\u0131n temel bir yoludur. Bir otomasyon arac\u0131 (\u00f6rne\u011fin Terraform, Ansible, Puppet) veya bir CI\/CD boru hatt\u0131 (pipeline) ile birle\u015ftirildi\u011finde, &#8220;destroy-recreate&#8221; operasyonlar\u0131 tamamen otomatik hale getirilebilir, b\u00f6ylece sadece birka\u00e7 dakika i\u00e7inde tam te\u015fekk\u00fcll\u00fc bir Grafana ortam\u0131 aya\u011fa kald\u0131r\u0131labilir. Bu sayede, beklenmedik durumlar kar\u015f\u0131s\u0131nda h\u0131zl\u0131 ve g\u00fcvenilir bir kurtarma stratejisine sahip olursunuz.<\/p>\n<h3>\u0130leri D\u00fczey Stratejiler: S\u00fcr\u00fcm Kontrol\u00fc, CI\/CD ve Otomatik Da\u011f\u0131t\u0131m<\/h3>\n<p>Grafana as Code yakla\u015f\u0131m\u0131n\u0131n t\u00fcm potansiyelini ortaya \u00e7\u0131karmak i\u00e7in, sa\u011flama dosyalar\u0131n\u0131 sadece lokalde tutmak yerine, onlar\u0131 s\u00fcr\u00fcm kontrol sistemleriyle (Version Control Systems &#8211; VCS) entegre etmek ve s\u00fcrekli entegrasyon\/s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) boru hatlar\u0131na dahil etmek gerekir. Bu ileri d\u00fczey stratejiler, Grafana y\u00f6netimini daha da otomatize eder, i\u015fbirli\u011fini g\u00fc\u00e7lendirir ve hatalar\u0131 en aza indirir.<\/p>\n<h4>S\u00fcr\u00fcm Kontrol\u00fc (Git ile Entegrasyon)<\/h4>\n<p>T\u00fcm Grafana sa\u011flama dosyalar\u0131n\u0131z\u0131 (veri kaynaklar\u0131 YAML&#8217;leri, pano JSON&#8217;lar\u0131, bildirim kanal\u0131 YAML&#8217;leri) Git deposunda saklamak, &#8220;Grafana as Code&#8221; felsefesinin temelidir. Bu yakla\u015f\u0131m\u0131n faydalar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>De\u011fi\u015fiklik Takibi:<\/strong> Kimin, ne zaman, hangi de\u011fi\u015fikli\u011fi yapt\u0131\u011f\u0131n\u0131 kolayca g\u00f6rebilirsiniz. Bu, denetlenebilirlik (auditing) ve hata ay\u0131klama i\u00e7in kritik \u00f6neme sahiptir.<\/li>\n<li><strong>Geri Alma Yetene\u011fi:<\/strong> Yanl\u0131\u015f bir yap\u0131land\u0131rma de\u011fi\u015fikli\u011fi yap\u0131ld\u0131\u011f\u0131nda, Git ge\u00e7mi\u015finden \u00f6nceki \u00e7al\u0131\u015fan s\u00fcr\u00fcme kolayca geri d\u00f6nebilirsiniz.<\/li>\n<li><strong>\u0130\u015fbirli\u011fi:<\/strong> Birden fazla ekip \u00fcyesi, ayn\u0131 Grafana yap\u0131land\u0131rmalar\u0131 \u00fczerinde paralel olarak \u00e7al\u0131\u015fabilir, de\u011fi\u015fiklikleri birle\u015ftirebilir (merge) ve \u00e7at\u0131\u015fmalar\u0131 (conflict) y\u00f6netebilir.<\/li>\n<li><strong>Tarihsel Kay\u0131t:<\/strong> Grafana ortam\u0131n\u0131z\u0131n zaman i\u00e7indeki evrimini belgeleyen kapsaml\u0131 bir kay\u0131t tutulur.<\/li>\n<\/ul>\n<p>\u00d6nerilen uygulama, Grafana yap\u0131land\u0131rmalar\u0131 i\u00e7in ayr\u0131 bir Git deposu olu\u015fturmak veya mevcut bir altyap\u0131 deposu i\u00e7inde \u00f6zel bir dizin ay\u0131rmakt\u0131r. Her pano veya veri kayna\u011f\u0131 i\u00e7in ayr\u0131 bir dosya kullanmak, de\u011fi\u015fikliklerin daha atomik olmas\u0131n\u0131 sa\u011flar ve birle\u015ftirme \u00e7at\u0131\u015fmalar\u0131n\u0131 azalt\u0131r.<\/p>\n<h4>CI\/CD Boru Hatlar\u0131 ile Otomatik Da\u011f\u0131t\u0131m<\/h4>\n<p>Sa\u011flama dosyalar\u0131n\u0131z\u0131 Git&#8217;te saklad\u0131ktan sonra, bir CI\/CD boru hatt\u0131 (\u00f6rne\u011fin Jenkins, GitLab CI, GitHub Actions, Azure DevOps) kullanarak bu de\u011fi\u015fiklikleri otomatik olarak Grafana ortamlar\u0131n\u0131za da\u011f\u0131tabilirsiniz. Bu s\u00fcre\u00e7 genellikle \u015fu ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<ol>\n<li><strong>De\u011fi\u015fiklik Tetikleyicisi:<\/strong> Bir geli\u015ftirici, Grafana yap\u0131land\u0131rma dosyalar\u0131nda bir de\u011fi\u015fiklik yapar ve bunu Git deposuna g\u00f6nderir (push).<\/li>\n<li><strong>Olu\u015fturma (Build) ve Do\u011frulama:<\/strong> CI\/CD boru hatt\u0131 tetiklenir. Bu a\u015famada, JSON panolar\u0131n\u0131n veya YAML dosyalar\u0131n\u0131n s\u00f6zdizimi do\u011frulamas\u0131 (linting) yap\u0131labilir. Hatta baz\u0131 ara\u00e7lar (\u00f6rne\u011fin <a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/developers\/plugins\/build-a-plugin\/validate-plugin\/\">Grafana JSON Schema<\/a>), panolar\u0131n Grafana&#8217;n\u0131n bekledi\u011fi formata uygun olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilir.<\/li>\n<li><strong>Da\u011f\u0131t\u0131m (Deployment):<\/strong> Do\u011frulama ba\u015far\u0131l\u0131 olursa, boru hatt\u0131 Grafana sunucusuna ba\u011flan\u0131r ve sa\u011flama dosyalar\u0131n\u0131 ilgili dizinlere kopyalar. E\u011fer Grafana Docker konteyneri olarak \u00e7al\u0131\u015f\u0131yorsa, yeni bir konteyner imaj\u0131 olu\u015fturulup da\u011f\u0131t\u0131labilir veya mevcut konteyner yeniden ba\u015flat\u0131labilir. Kubernetes ortamlar\u0131nda ise, Helm chart&#8217;lar\u0131 veya Kustomize kullan\u0131larak yap\u0131land\u0131rma dosyalar\u0131 ConfigMap&#8217;lere d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcp pod&#8217;lara ba\u011flanabilir ve ard\u0131ndan Grafana pod&#8217;lar\u0131 yeniden ba\u015flat\u0131labilir.<\/li>\n<li><strong>Test ve Kontrol:<\/strong> Da\u011f\u0131t\u0131m sonras\u0131, Grafana&#8217;n\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve yeni yap\u0131land\u0131rmalar\u0131n do\u011fru bir \u015fekilde uyguland\u0131\u011f\u0131ndan emin olmak i\u00e7in otomatik testler (\u00f6rne\u011fin, belirli bir panonun y\u00fcklenip y\u00fcklenmedi\u011fini kontrol eden API testleri) \u00e7al\u0131\u015ft\u0131r\u0131labilir.<\/li>\n<\/ol>\n<p>Bu otomasyon seviyesi, insan hatas\u0131n\u0131 neredeyse tamamen ortadan kald\u0131r\u0131r ve da\u011f\u0131t\u0131m s\u00fcrelerini dakikalara indirir. Ayr\u0131ca, farkl\u0131 ortamlar (dev, test, prod) i\u00e7in farkl\u0131 dallar (branch) veya farkl\u0131 yap\u0131land\u0131rma dosyalar\u0131 kullanarak, her ortam\u0131n kendine \u00f6zg\u00fc ihtiya\u00e7lar\u0131n\u0131 y\u00f6netmek de kolayla\u015f\u0131r. \u00d6rne\u011fin, test ortam\u0131nda daha az kritik veri kaynaklar\u0131 veya daha az uyar\u0131 kanal\u0131 tan\u0131mlayabilirsiniz. Bu sayede, Grafana ortam\u0131n\u0131z sadece kod olarak de\u011fil, ayn\u0131 zamanda s\u00fcrekli ve g\u00fcvenilir bir \u015fekilde y\u00f6netilebilir hale gelir.<\/p>\n<h3>Grafana as Code Yakla\u015f\u0131m\u0131n\u0131n Zorluklar\u0131 ve \u00c7\u00f6z\u00fcm \u00d6nerileri<\/h3>\n<p>Grafana as Code yakla\u015f\u0131m\u0131 bir\u00e7ok avantaj sunsa da, beraberinde baz\u0131 zorluklar\u0131 da getirebilir. Bu zorluklar\u0131 anlamak ve proaktif \u00e7\u00f6z\u00fcmler geli\u015ftirmek, ba\u015far\u0131l\u0131 bir uygulama i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4>Zorluk 1: Mevcut Manuel Yap\u0131land\u0131rmalar\u0131n Kod Olarak D\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi<\/h4>\n<p>E\u011fer zaten b\u00fcy\u00fck ve manuel olarak yap\u0131land\u0131r\u0131lm\u0131\u015f bir Grafana ortam\u0131n\u0131z varsa, bunu &#8220;kod olarak&#8221; d\u00f6n\u00fc\u015ft\u00fcrmek ilk ba\u015fta g\u00f6z korkutucu olabilir. Her bir pano, veri kayna\u011f\u0131 ve bildirim kanal\u0131n\u0131n JSON veya YAML format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi zaman al\u0131c\u0131d\u0131r.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm \u00d6nerisi:<\/strong><\/p>\n<ul>\n<li><strong>A\u015famal\u0131 Yakla\u015f\u0131m:<\/strong> T\u00fcm\u00fcn\u00fc bir kerede d\u00f6n\u00fc\u015ft\u00fcrmeye \u00e7al\u0131\u015fmak yerine, yeni yap\u0131land\u0131rmalar\u0131 do\u011frudan kod olarak olu\u015fturmaya ba\u015flay\u0131n. Mevcut panolar\u0131 ve veri kaynaklar\u0131n\u0131 kademeli olarak d\u00f6n\u00fc\u015ft\u00fcr\u00fcn. En kritik veya s\u0131k de\u011fi\u015fen \u00f6\u011felerden ba\u015flayabilirsiniz.<\/li>\n<li><strong>API Kullan\u0131m\u0131:<\/strong> Grafana&#8217;n\u0131n HTTP API&#8217;si, mevcut panolar\u0131 ve veri kaynaklar\u0131n\u0131 JSON olarak d\u0131\u015fa aktarmak i\u00e7in kullan\u0131labilir. Bu, manuel kopyala-yap\u0131\u015ft\u0131r i\u015fleminden daha h\u0131zl\u0131d\u0131r. \u00d6rne\u011fin, bir panoyu d\u0131\u015fa aktarmak i\u00e7in <code>GET \/api\/dashboards\/uid\/:uid<\/code> endpoint&#8217;ini kullanabilirsiniz.<\/li>\n<li><strong>Otomasyon Ara\u00e7lar\u0131:<\/strong> Baz\u0131 topluluk ara\u00e7lar\u0131 veya \u00f6zel betikler, mevcut Grafana yap\u0131land\u0131rmalar\u0131n\u0131 d\u0131\u015fa aktararak sa\u011flama dosyalar\u0131 format\u0131na d\u00f6n\u00fc\u015ft\u00fcrmeye yard\u0131mc\u0131 olabilir.<\/li>\n<\/ul>\n<h4>Zorluk 2: Panolar\u0131n JSON Dosyalar\u0131 Olarak Y\u00f6netimi<\/h4>\n<p>Grafana panolar\u0131 olduk\u00e7a karma\u015f\u0131k JSON yap\u0131lar\u0131na sahiptir. Bu JSON dosyalar\u0131n\u0131 do\u011frudan d\u00fczenlemek, \u00f6zellikle b\u00fcy\u00fck panolar i\u00e7in zor ve hataya a\u00e7\u0131k olabilir. G\u00f6rsel bir aray\u00fczde yap\u0131lan de\u011fi\u015fikliklerin JSON&#8217;a yans\u0131mas\u0131n\u0131 takip etmek de g\u00fc\u00e7t\u00fcr.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm \u00d6nerisi:<\/strong><\/p>\n<ul>\n<li><strong>Grafana Aray\u00fcz\u00fcn\u00fc Kullan ve D\u0131\u015fa Aktar:<\/strong> Panolar\u0131 Grafana&#8217;n\u0131n web aray\u00fcz\u00fcnde tasarlay\u0131n ve ard\u0131ndan &#8220;Pano Ayarlar\u0131 > JSON Modeli&#8221; b\u00f6l\u00fcm\u00fcnden JSON&#8217;u d\u0131\u015fa aktar\u0131n. Bu JSON&#8217;u s\u00fcr\u00fcm kontrol sisteminize kaydedin. Bu, g\u00f6rsel tasar\u0131m\u0131n kolayl\u0131\u011f\u0131n\u0131 korurken, kod olarak y\u00f6netim imkan\u0131 sunar.<\/li>\n<li><strong>JSONnet veya CUE Kullan\u0131m\u0131:<\/strong> Daha karma\u015f\u0131k senaryolarda, parametrele\u015ftirilmi\u015f ve \u015fablonlanm\u0131\u015f JSON \u00fcretmek i\u00e7in JSONnet veya CUE gibi yap\u0131land\u0131rma dillerini kullanabilirsiniz. Bu diller, JSON&#8217;un tekrar eden k\u0131s\u0131mlar\u0131n\u0131 soyutlaman\u0131za ve daha okunabilir, s\u00fcrd\u00fcr\u00fclebilir panolar olu\u015fturman\u0131za olanak tan\u0131r.<\/li>\n<li><strong>Grafana Terraform Provider:<\/strong> Terraform&#8217;un Grafana sa\u011flay\u0131c\u0131s\u0131 (provider), panolar\u0131, veri kaynaklar\u0131n\u0131, bildirim kanallar\u0131n\u0131 ve hatta kullan\u0131c\u0131lar\u0131 Terraform kodu olarak y\u00f6netmenize olanak tan\u0131r. Bu, \u00f6zellikle altyap\u0131n\u0131n geri kalan\u0131 Terraform ile y\u00f6netiliyorsa, entegrasyonu basitle\u015ftirir.<\/li>\n<\/ul>\n<h4>Zorluk 3: Kullan\u0131c\u0131 ve Yetkilendirme Y\u00f6netimi<\/h4>\n<p>Grafana&#8217;n\u0131n sa\u011flama mekanizmas\u0131, veri kaynaklar\u0131 ve panolar i\u00e7in olduk\u00e7a g\u00fc\u00e7l\u00fcd\u00fcr, ancak kullan\u0131c\u0131, tak\u0131m ve yetkilendirme (permissions) y\u00f6netimi konusunda daha s\u0131n\u0131rl\u0131 kalabilir. \u00d6zellikle b\u00fcy\u00fck kurulu\u015flarda kullan\u0131c\u0131 yetkilerini kod olarak y\u00f6netmek zorlay\u0131c\u0131 olabilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm \u00d6nerisi:<\/strong><\/p>\n<ul>\n<li><strong>LDAP\/OAuth Entegrasyonu:<\/strong> Kullan\u0131c\u0131 kimlik do\u011frulamas\u0131n\u0131 (authentication) Grafana d\u0131\u015f\u0131ndaki bir sisteme (LDAP, OAuth, SAML) devredin. Bu sayede, kullan\u0131c\u0131lar\u0131n olu\u015fturulmas\u0131 ve yetkilendirilmesi Grafana d\u0131\u015f\u0131nda merkezi olarak y\u00f6netilebilir.<\/li>\n<li><strong>Grafana Terraform Provider:<\/strong> Terraform sa\u011flay\u0131c\u0131s\u0131, kullan\u0131c\u0131lar\u0131, tak\u0131mlar\u0131 ve yetkilendirmeleri kod olarak y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc yetenekler sunar. Bu, \u00f6zellikle b\u00fcy\u00fck ve dinamik ekipler i\u00e7in ideal bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/li>\n<li><strong>Grafana CLI:<\/strong> Grafana CLI, kullan\u0131c\u0131 ve tak\u0131m y\u00f6netimi i\u00e7in baz\u0131 komutlar sunar. Bunlar\u0131 betiklerle birle\u015ftirerek otomasyon sa\u011flayabilirsiniz.<\/li>\n<\/ul>\n<h4>Zorluk 4: Gizli Bilgilerin (Secret) Y\u00f6netimi<\/h4>\n<p>Veri kaynaklar\u0131 ba\u011flant\u0131 bilgileri (\u00f6rne\u011fin veritaban\u0131 \u015fifreleri) veya API anahtarlar\u0131 gibi hassas bilgiler sa\u011flama dosyalar\u0131nda do\u011frudan a\u00e7\u0131k metin olarak tutulmamal\u0131d\u0131r. Bu, g\u00fcvenlik a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck bir risktir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm \u00d6nerisi:<\/strong><\/p>\n<ul>\n<li><strong>Ortam De\u011fi\u015fkenleri:<\/strong> Hassas bilgileri Grafana konteynerine veya sunucusuna ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla aktar\u0131n. Sa\u011flama dosyalar\u0131nda bu de\u011fi\u015fkenlere referans verilebilir. \u00d6rne\u011fin, <code>${GF_PROMETHEUS_PASSWORD}<\/code> gibi.<\/li>\n<li><strong>Gizli Y\u00f6netim Sistemleri:<\/strong> HashiCorp Vault, AWS Secrets Manager, Azure Key Vault gibi \u00f6zel gizli y\u00f6netim sistemleri kullan\u0131n. Grafana, bu sistemlerden hassas bilgileri \u00e7al\u0131\u015fma zaman\u0131nda \u00e7ekmek \u00fczere yap\u0131land\u0131r\u0131labilir.<\/li>\n<li><strong>KMS\/Encrypt:<\/strong> Baz\u0131 durumlarda, sa\u011flama dosyalar\u0131n\u0131 \u015fifrelemek ve da\u011f\u0131t\u0131m s\u0131ras\u0131nda \u00e7\u00f6zmek i\u00e7in KMS (Key Management Service) veya Ansible Vault gibi ara\u00e7lar kullan\u0131labilir.<\/li>\n<\/ul>\n<p>Bu zorluklar\u0131n \u00fcstesinden gelmek, Grafana as Code yakla\u015f\u0131m\u0131n\u0131n uzun vadeli ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir. Do\u011fru ara\u00e7lar\u0131 ve stratejileri se\u00e7erek, Grafana ortam\u0131n\u0131z\u0131n y\u00f6netimini g\u00fcvenli, verimli ve tamamen otomatik hale getirebilirsiniz.<\/p>\n<h3>Sonu\u00e7: Grafana as Code ile Gelece\u011fe Y\u00f6nelik Bir G\u00f6zlemlenebilirlik Stratejisi<\/h3>\n<p>Grafana as Code yakla\u015f\u0131m\u0131, modern DevOps ve Site Reliability Engineering (SRE) prensiplerini g\u00f6zlemlenebilirlik platformunuza ta\u015f\u0131man\u0131n en etkili yollar\u0131ndan biridir. Sa\u011flama dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla Grafana yap\u0131land\u0131rmalar\u0131n\u0131 kod olarak y\u00f6netmek, manuel m\u00fcdahalelerden kaynaklanan hatalar\u0131 ortadan kald\u0131r\u0131r, ortamlar aras\u0131 tutarl\u0131l\u0131\u011f\u0131 garanti eder ve en \u00f6nemlisi, &#8220;destroy-recreate&#8221; senaryolar\u0131nda bile Grafana ortam\u0131n\u0131z\u0131 h\u0131zl\u0131 ve g\u00fcvenilir bir \u015fekilde yeniden olu\u015fturman\u0131z\u0131 sa\u011flar. Bu sayede, beklenmedik felaketler kar\u015f\u0131s\u0131nda i\u015f s\u00fcreklili\u011finizi korurken, geli\u015ftirme ve test s\u00fcre\u00e7lerinizi de h\u0131zland\u0131rabilirsiniz.<\/p>\n<p>S\u00fcr\u00fcm kontrol sistemleriyle entegrasyon, CI\/CD boru hatlar\u0131 \u00fczerinden otomatik da\u011f\u0131t\u0131m ve geli\u015fmi\u015f gizli y\u00f6netim stratejileriyle birle\u015fti\u011finde, Grafana as Code sadece bir yap\u0131land\u0131rma y\u00f6ntemi olmaktan \u00e7\u0131karak, g\u00fc\u00e7l\u00fc bir y\u00f6netim felsefesine d\u00f6n\u00fc\u015f\u00fcr. Bu yakla\u015f\u0131m, Grafana panolar\u0131n\u0131z\u0131n, veri kaynaklar\u0131n\u0131z\u0131n ve uyar\u0131lar\u0131n\u0131z\u0131n t\u0131pk\u0131 uygulaman\u0131z\u0131n kendisi gibi s\u00fcr\u00fcm kontroll\u00fc, denetlenebilir ve otomatize edilebilir olmas\u0131n\u0131 sa\u011flar. Ba\u015flang\u0131\u00e7ta biraz \u00e7aba gerektirse de, uzun vadede sa\u011flad\u0131\u011f\u0131 zaman tasarrufu, g\u00fcvenilirlik ve tutarl\u0131l\u0131k, bu yat\u0131r\u0131m\u0131n fazlas\u0131yla kar\u015f\u0131l\u0131\u011f\u0131n\u0131 verecektir. Unutmay\u0131n, iyi bir g\u00f6zlemlenebilirlik stratejisi, sadece verileri toplamakla kalmaz, ayn\u0131 zamanda bu verileri g\u00f6steren platformun kendisinin de sa\u011flam ve y\u00f6netilebilir olmas\u0131n\u0131 gerektirir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<h4>1. Grafana sa\u011flama dosyalar\u0131 ile manuel yap\u0131lan de\u011fi\u015fiklikler \u00e7ak\u0131\u015f\u0131r m\u0131?<\/h4>\n<p>Evet, \u00e7ak\u0131\u015fabilir. Grafana, sa\u011flama dosyalar\u0131 taraf\u0131ndan olu\u015fturulan \u00f6\u011feleri (veri kaynaklar\u0131, panolar) genellikle <code>editable: true<\/code> olarak ayarlanmad\u0131\u011f\u0131 s\u00fcrece manuel olarak d\u00fczenlemeye izin verir. Ancak, sa\u011flama dosyalar\u0131 taraf\u0131ndan y\u00f6netilen bir \u00f6\u011feyi manuel olarak de\u011fi\u015ftirirseniz ve Grafana yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda ayn\u0131 sa\u011flama dosyas\u0131 uygulan\u0131rsa, manuel de\u011fi\u015fiklikler sa\u011flama dosyas\u0131ndaki yap\u0131land\u0131rma ile ezilebilir. En iyi uygulama, sa\u011flama dosyalar\u0131yla y\u00f6netilen \u00f6\u011felerde manuel de\u011fi\u015fiklik yapmaktan ka\u00e7\u0131nmak ve t\u00fcm de\u011fi\u015fiklikleri kod olarak Git \u00fczerinden yapmakt\u0131r.<\/p>\n<h4>2. Mevcut Grafana panolar\u0131m\u0131 ve veri kaynaklar\u0131m\u0131 nas\u0131l &#8220;kod olarak&#8221; d\u00f6n\u00fc\u015ft\u00fcrebilirim?<\/h4>\n<p>Mevcut panolar\u0131n\u0131z\u0131 Grafana aray\u00fcz\u00fcnden JSON olarak d\u0131\u015fa aktarabilirsiniz (Pano Ayarlar\u0131 > JSON Modeli). D\u0131\u015fa aktar\u0131lan JSON dosyas\u0131n\u0131 <code>\/var\/lib\/grafana\/dashboards<\/code> dizinine yerle\u015ftirmek ve bu dizini sa\u011flama dosyas\u0131yla yap\u0131land\u0131rmak yeterlidir. Veri kaynaklar\u0131 i\u00e7in ise, Grafana API&#8217;sini kullanarak mevcut veri kaynaklar\u0131n\u0131n yap\u0131land\u0131rmalar\u0131n\u0131 \u00e7ekebilir ve bunlar\u0131 YAML format\u0131na d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz. Alternatif olarak, yeni veri kaynaklar\u0131n\u0131 do\u011frudan sa\u011flama YAML dosyalar\u0131 olarak olu\u015fturmaya ba\u015flayabilirsiniz.<\/p>\n<h4>3. Grafana as Code yakla\u015f\u0131m\u0131n\u0131 kullan\u0131rken g\u00fcvenlik nas\u0131l sa\u011flan\u0131r?<\/h4>\n<p>G\u00fcvenlik, hassas bilgilerin (API anahtarlar\u0131, veritaban\u0131 \u015fifreleri) sa\u011flama dosyalar\u0131nda a\u00e7\u0131k metin olarak tutulmamas\u0131yla sa\u011flan\u0131r. Bunun yerine, ortam de\u011fi\u015fkenleri, Kubernetes Secrets, HashiCorp Vault gibi gizli y\u00f6netim sistemleri veya \u015fifreli dosyalar (\u00f6rne\u011fin Ansible Vault) kullan\u0131lmal\u0131d\u0131r. Grafana, bu t\u00fcr gizli bilgilere ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla referans verebilir. Ayr\u0131ca, Git depolar\u0131n\u0131z\u0131n eri\u015fimini k\u0131s\u0131tlamak ve CI\/CD boru hatlar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak da \u00f6nemlidir.<\/p>\n<h4>4. Grafana&#8217;da kullan\u0131c\u0131lar\u0131 ve yetkilendirmeleri de kod olarak y\u00f6netebilir miyim?<\/h4>\n<p>Grafana&#8217;n\u0131n yerle\u015fik sa\u011flama mekanizmas\u0131, kullan\u0131c\u0131 ve yetkilendirme y\u00f6netimi i\u00e7in do\u011frudan bir dosya tabanl\u0131 sa\u011flama y\u00f6ntemi sunmaz. Ancak, bu t\u00fcr y\u00f6netim i\u00e7in farkl\u0131 yakla\u015f\u0131mlar mevcuttur: LDAP\/OAuth gibi harici kimlik do\u011frulama sistemleriyle entegrasyon, Grafana Terraform sa\u011flay\u0131c\u0131s\u0131n\u0131 kullanarak kullan\u0131c\u0131lar\u0131, tak\u0131mlar\u0131 ve yetkileri Terraform kodu olarak y\u00f6netmek veya Grafana API&#8217;sini kullanarak \u00f6zel betikler geli\u015ftirmek bu y\u00f6ntemler aras\u0131ndad\u0131r. Genellikle, b\u00fcy\u00fck \u00f6l\u00e7ekli ve dinamik ortamlarda Terraform sa\u011flay\u0131c\u0131s\u0131 en esnek ve g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcm\u00fc sunar.<\/p>\n<h4>5. &#8220;Destroy-recreate&#8221; yaparken Grafana&#8217;n\u0131n i\u00e7indeki verilerim kaybolur mu?<\/h4>\n<p>Evet, Grafana&#8217;n\u0131n veritaban\u0131nda (varsay\u0131lan olarak SQLite veya harici bir veritaban\u0131) depolanan t\u00fcm bilgiler (kullan\u0131c\u0131 ayarlar\u0131, uyar\u0131 durumlar\u0131, ge\u00e7mi\u015f veriler vb.) &#8220;destroy-recreate&#8221; i\u015flemi s\u0131ras\u0131nda kaybolur. Sa\u011flama dosyalar\u0131 sadece panolar\u0131, veri kaynaklar\u0131n\u0131, bildirim kanallar\u0131n\u0131 ve eklentileri yeniden olu\u015fturur. E\u011fer bu t\u00fcr verilerin kal\u0131c\u0131 olmas\u0131n\u0131 istiyorsan\u0131z, Grafana&#8217;n\u0131n veritaban\u0131n\u0131 harici bir veritaban\u0131 hizmetinde (PostgreSQL, MySQL) bar\u0131nd\u0131rman\u0131z ve bu veritaban\u0131n\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc Grafana \u00f6rne\u011finden ba\u011f\u0131ms\u0131z olarak y\u00f6netmeniz gerekir. Ancak, panolar ve veri kaynaklar\u0131 gibi temel yap\u0131land\u0131rmalar\u0131n kod olarak y\u00f6netilmesi, Grafana&#8217;n\u0131n \u00e7ekirdek i\u015flevselli\u011finin h\u0131zl\u0131 bir \u015fekilde geri y\u00fcklenmesini sa\u011flar.<\/p>\n<p>#Grafana #GrafanaAsCode #DevOps #G\u00f6zlemlenebilirlik #Altyap\u0131KodOlarak #Otomasyon #Monitoring<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/grafana-provisioning-file-example\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/grafana-provisioning-file-example<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital ortam\u0131nda, sistemlerin s\u00fcrekli izlenmesi ve g\u00f6zlemlenebilirli\u011fi (observability) kritik bir \u00f6neme sahiptir.","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":[1],"tags":[],"class_list":{"0":"post-44758","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak - 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\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital ortam\u0131nda, sistemlerin s\u00fcrekli izlenmesi ve g\u00f6zlemlenebilirli\u011fi (observability) kritik bir \u00f6neme sahiptir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-18T06:07:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-18T06:07:55+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=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak\",\"datePublished\":\"2026-09-18T06:07:00+00:00\",\"dateModified\":\"2026-09-18T06:07:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/\"},\"wordCount\":4234,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/\",\"name\":\"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-09-18T06:07:00+00:00\",\"dateModified\":\"2026-09-18T06:07:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak\"}]},{\"@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":"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak - 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\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/","og_locale":"tr_TR","og_type":"article","og_title":"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak","og_description":"G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital ortam\u0131nda, sistemlerin s\u00fcrekli izlenmesi ve g\u00f6zlemlenebilirli\u011fi (observability) kritik bir \u00f6neme sahiptir.","og_url":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-09-18T06:07:00+00:00","article_modified_time":"2026-09-18T06:07:55+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak","datePublished":"2026-09-18T06:07:00+00:00","dateModified":"2026-09-18T06:07:55+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/"},"wordCount":4234,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/","url":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/","name":"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-09-18T06:07:00+00:00","dateModified":"2026-09-18T06:07:55+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/grafana-as-code-saglamlik-ve-otomasyon-icin-saglama-dosyalariyla-yikim-yeniden-olusturma-sureclerinden-sag-cikmak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Grafana as Code: Sa\u011flaml\u0131k ve Otomasyon \u0130\u00e7in Sa\u011flama Dosyalar\u0131yla Y\u0131k\u0131m-Yeniden Olu\u015fturma S\u00fcre\u00e7lerinden Sa\u011f \u00c7\u0131kmak"}]},{"@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\/44758","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=44758"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44758\/revisions"}],"predecessor-version":[{"id":44759,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44758\/revisions\/44759"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}