[{"id":16,"title":"Terminalde Log Dosyalar\u0131n\u0131 Ger\u00e7ek Zamanl\u0131 Ke\u015ffet","content":"<h1>lnav (Log File Navigator) - Kapsaml\u0131 Rehber<\/h1>\r\n<p>Log dosyalar\u0131n\u0131 analiz etmek sistem y&ouml;neticisi ve geli\u015ftiricilerin en s\u0131k kar\u015f\u0131la\u015ft\u0131\u011f\u0131 g&ouml;revlerden biridir. <code>tail -f<\/code>, <code>grep<\/code>, <code>less<\/code> gibi ara&ccedil;lar\u0131 birli\u015ftirip s&uuml;rekli terminal de\u011fi\u015ftirmek yorucu de\u011fil mi? <strong>lnav (Log File Navigator)<\/strong> tam bu sorunu &ccedil;&ouml;zmek i&ccedil;in tasarlanm\u0131\u015f devrimsel bir ara&ccedil;t\u0131r.<\/p>\r\n<h2>\ud83c\udfaf lnav Nedir?<\/h2>\r\n<p>lnav, log dosyalar\u0131n\u0131 analiz etmek i&ccedil;in &ouml;zel olarak tasarlanm\u0131\u015f geli\u015fmi\u015f bir terminal uygulamas\u0131d\u0131r. Apache, Nginx, systemd journal, Docker, PostgreSQL ve y&uuml;zlerce farkl\u0131 log format\u0131n\u0131 otomatik olarak alg\u0131layarak tek bir aray&uuml;zde birle\u015ftirir.<\/p>\r\n<h3>Temel Avantajlar:<\/h3>\r\n<ul>\r\n<li><strong>&Ccedil;oklu format deste\u011fi:<\/strong> 100+ log format\u0131n\u0131 otomatik alg\u0131lar<\/li>\r\n<li><strong>Ger&ccedil;ek zamanl\u0131 izleme:<\/strong> Dosyalar de\u011fi\u015ftik&ccedil;e otomatik g&uuml;ncellenir<\/li>\r\n<li><strong>SQL sorgular\u0131:<\/strong> Log verilerini SQL ile sorgulayabilirsiniz<\/li>\r\n<li><strong>Zaman senkronizasyonu:<\/strong> Farkl\u0131 kaynaklardan gelen loglar\u0131 zaman damgas\u0131na g&ouml;re birle\u015ftirir<\/li>\r\n<li><strong>G&ouml;rsel aray&uuml;z:<\/strong> Renkli syntax highlighting ve histogram g&ouml;r&uuml;n&uuml;m&uuml;<\/li>\r\n<\/ul>\r\n<h2>\ud83d\udcbe Kurulum<\/h2>\r\n<h3>Linux (Debian\/Ubuntu):<\/h3>\r\n<pre class=\"language-bash\"><code># APT ile kurulum\r\nsudo apt-get update\r\nsudo apt-get install lnav\r\n\r\n# Snap ile kurulum\r\nsudo snap install lnav<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h3>Linux (Red Hat\/CentOS\/Fedora):<\/h3>\r\n<pre class=\"language-bash\"><code># DNF ile kurulum (Fedora)\r\nsudo dnf install lnav\r\n\r\n# YUM ile kurulum (CentOS\/RHEL)\r\nsudo yum install lnav\r\n# EPEL repository gerekli olabilir\r\nsudo yum install epel-release<\/code><\/pre>\r\n<h3>macOS:<\/h3>\r\n<pre class=\"language-bash\"><code># Homebrew ile kurulum (&ouml;nerilen)\r\nbrew install lnav\r\n\r\n# MacPorts ile kurulum\r\nsudo port install lnav<\/code><\/pre>\r\n<h3>Windows:<\/h3>\r\n<pre class=\"language-markup\"><code># Scoop ile kurulum\r\nscoop install lnav\r\n\r\n# Chocolatey ile kurulum\r\nchoco install lnav\r\n\r\n# WSL i&ccedil;inde Linux kurulum komutlar\u0131 kullan\u0131labilir<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h3>Kaynak Koddan Kurulum:<\/h3>\r\n<pre class=\"language-bash\"><code># Gerekli ba\u011f\u0131ml\u0131l\u0131klar\r\nsudo apt-get install build-essential libncurses5-dev libreadline-dev zlib1g-dev libbz2-dev libsqlite3-dev libcurl4-openssl-dev\r\n\r\n# Kaynak kodunu indirme ve derleme\r\nwget https:\/\/github.com\/tstack\/lnav\/releases\/download\/v0.11.2\/lnav-0.11.2.tar.gz\r\ntar xzf lnav-0.11.2.tar.gz\r\ncd lnav-0.11.2\r\n.\/configure\r\nmake\r\nsudo make install<\/code><\/pre>\r\n<h2>\ud83d\ude80 Temel Kullan\u0131m<\/h2>\r\n<h3>H\u0131zl\u0131 Ba\u015flang\u0131&ccedil;<\/h3>\r\n<pre class=\"language-bash\"><code># Tek dosya a&ccedil;ma\r\nlnav \/var\/log\/syslog\r\n\r\n# Birden fazla dosya a&ccedil;ma\r\nlnav \/var\/log\/nginx\/access.log \/var\/log\/nginx\/error.log\r\n\r\n# Dizindeki t&uuml;m loglar\u0131 a&ccedil;ma\r\nlnav \/var\/log\/\r\n\r\n# Compressed loglar\u0131 da dahil etme\r\nlnav \/var\/log\/*.log \/var\/log\/*.gz<\/code><\/pre>\r\n<h3>Ger&ccedil;ek Zamanl\u0131 \u0130zleme<\/h3>\r\n<pre class=\"language-bash\"><code># Watch mode ile ba\u015flatma\r\nlnav -t \/var\/log\/syslog\r\n\r\n# Tail mode (yeni sat\u0131rlar\u0131 takip et)\r\nlnav -f \/var\/log\/apache2\/access.log\r\n\r\n# Recursive mode (alt dizinleri de tara)\r\nlnav -r \/var\/log\/<\/code><\/pre>\r\n<h2>\ud83c\udfae \u0130nteraktif Komutlar ve Klavye K\u0131sayollar\u0131<\/h2>\r\n<h3>Navigasyon K\u0131sayollar\u0131<\/h3>\r\n<table>\r\n<thead>\r\n<tr>\r\n<th>K\u0131sayol<\/th>\r\n<th>A&ccedil;\u0131klama<\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody>\r\n<tr>\r\n<td>Space\/b<\/td>\r\n<td>Sayfa a\u015fa\u011f\u0131\/yukar\u0131<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>&uarr;\/&darr;<\/td>\r\n<td>Sat\u0131r a\u015fa\u011f\u0131\/yukar\u0131<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Home\/End<\/td>\r\n<td>Dosya ba\u015f\u0131\/sonu<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>g\/G<\/td>\r\n<td>Belirli sat\u0131ra git \/ Son sat\u0131ra git<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>n\/N<\/td>\r\n<td>Sonraki\/&ouml;nceki arama sonucu<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\/<\/td>\r\n<td>Arama modunu a&ccedil;<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h3>Zaman Navigasyonu<\/h3>\r\n<table>\r\n<thead>\r\n<tr>\r\n<th>K\u0131sayol<\/th>\r\n<th>A&ccedil;\u0131klama<\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody>\r\n<tr>\r\n<td>t<\/td>\r\n<td>Zaman damgas\u0131 g&ouml;r&uuml;n&uuml;m&uuml;n&uuml; a&ccedil;\/kapat<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>T<\/td>\r\n<td>Belirli zamana git<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>d\/D<\/td>\r\n<td>Bir g&uuml;n ileri\/geri<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>h\/H<\/td>\r\n<td>Bir saat ileri\/geri<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>m\/M<\/td>\r\n<td>Bir dakika ileri\/geri<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h3>Filtreleme ve G&ouml;r&uuml;n&uuml;m<\/h3>\r\n<table>\r\n<thead>\r\n<tr>\r\n<th>K\u0131sayol<\/th>\r\n<th>A&ccedil;\u0131klama<\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody>\r\n<tr>\r\n<td>f<\/td>\r\n<td>Filtre men&uuml;s&uuml;n&uuml; a&ccedil;<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>F<\/td>\r\n<td>T&uuml;m filtreleri temizle<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>s<\/td>\r\n<td>Histogram g&ouml;r&uuml;n&uuml;m&uuml;n&uuml; a&ccedil;\/kapat<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>x<\/td>\r\n<td>Log level g&ouml;r&uuml;n&uuml;m&uuml;<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>X<\/td>\r\n<td>Geni\u015fletilmi\u015f g&ouml;r&uuml;n&uuml;m<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h2>\ud83d\udd0d SQL Sorgular\u0131 ile Log Analizi<\/h2>\r\n<p>lnav'\u0131n en g&uuml;&ccedil;l&uuml; &ouml;zelliklerinden biri, log verilerini SQL ile sorgulayabilmesidir.<\/p>\r\n<h3>Temel SQL Komutlar\u0131<\/h3>\r\n<pre class=\"language-bash\"><code>-- Komut sat\u0131r\u0131n\u0131 a&ccedil;mak i&ccedil;in `:` tu\u015funa bas\u0131n\r\n\r\n-- T&uuml;m ERROR seviyesindeki loglar\u0131 g&ouml;ster\r\n:filter-in log_level = 'error'\r\n\r\n-- Son 1 saatteki loglar\u0131 listele\r\nSELECT * FROM all_logs WHERE log_time &gt;= datetime('now', '-1 hour')\r\n\r\n-- IP adresine g&ouml;re gruplama (Apache\/Nginx loglar\u0131 i&ccedil;in)\r\nSELECT c_ip, count(*) as hit_count \r\nFROM access_log \r\nGROUP BY c_ip \r\nORDER BY hit_count DESC \r\nLIMIT 10\r\n\r\n-- HTTP status kodlar\u0131n\u0131 analiz et\r\nSELECT sc_status, count(*) as count \r\nFROM access_log \r\nWHERE log_time &gt;= datetime('now', '-1 day') \r\nGROUP BY sc_status \r\nORDER BY count DESC\r\n\r\n-- Error loglar\u0131ndaki en s\u0131k tekrar eden mesajlar\u0131 bul\r\nSELECT log_body, count(*) as frequency \r\nFROM all_logs \r\nWHERE log_level = 'error' \r\nGROUP BY log_body \r\nORDER BY frequency DESC \r\nLIMIT 5<\/code><\/pre>\r\n<pre><code class=\"language-sql\">\r\n<\/code><\/pre>\r\n<h3>Geli\u015fmi\u015f Sorgular<\/h3>\r\n<pre class=\"language-bash\"><code>-- Zaman bazl\u0131 analiz (saatlik breakdown)\r\nSELECT strftime('%H', log_time) as hour, count(*) as request_count \r\nFROM access_log \r\nWHERE log_time &gt;= date('now') \r\nGROUP BY hour \r\nORDER BY hour\r\n\r\n-- Response time analizi\r\nSELECT avg(duration), min(duration), max(duration) \r\nFROM access_log \r\nWHERE sc_status = 200\r\n\r\n-- Hata oran\u0131 hesaplama\r\nSELECT (SELECT count(*) FROM access_log WHERE sc_status &gt;= 400) * 100.0 \/ \r\n       (SELECT count(*) FROM access_log) as error_percentage\r\n\r\n-- Unique ziyaret&ccedil;i say\u0131s\u0131\r\nSELECT count(DISTINCT c_ip) as unique_visitors \r\nFROM access_log \r\nWHERE log_time &gt;= date('now')<\/code><\/pre>\r\n<h2>\ud83d\udcca Geli\u015fmi\u015f &Ouml;zellikler<\/h2>\r\n<h3>1. Otomatik Format Alg\u0131lama<\/h3>\r\n<p>lnav otomatik olarak \u015fu formatlar\u0131 alg\u0131lar:<\/p>\r\n<ul>\r\n<li>Apache Common\/Combined Log Format<\/li>\r\n<li>Nginx access\/error logs<\/li>\r\n<li>Syslog (RFC3164\/RFC5424)<\/li>\r\n<li>systemd Journal<\/li>\r\n<li>Docker container logs<\/li>\r\n<li>PostgreSQL logs<\/li>\r\n<li>MySQL logs<\/li>\r\n<li>JSON structured logs<\/li>\r\n<li>ve 100+ format daha...<\/li>\r\n<\/ul>\r\n<h3>2. Custom Format Tan\u0131mlama<\/h3>\r\n<p><code>~\/.lnav\/formats\/<\/code> dizininde custom format dosyalar\u0131:<\/p>\r\n<pre class=\"language-bash\"><code>cat &gt; ~\/.lnav\/formats\/myapp.json &lt;&lt; EOF\r\n{\r\n  \"myapp_log\": {\r\n    \"title\": \"My Application Log Format\",\r\n    \"description\": \"Custom log format for my application\",\r\n    \"url\": \"http:\/\/example.com\/log-format\",\r\n    \"regex\": {\r\n      \"std\": {\r\n        \"pattern\": \"^(?P\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}:\\\\d{2}) \\\\[(?P\\\\w+)\\\\] (?P.*)\"\r\n      }\r\n    },\r\n    \"timestamp-field\": \"timestamp\",\r\n    \"level-field\": \"level\",\r\n    \"body-field\": \"body\"\r\n  }\r\n}\r\nEOF<\/code><\/pre>\r\n<h3>3. Bookmarks ve Annotations<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-bash\"><code># &Ouml;nemli loglar\u0131 i\u015faretle\r\n:bookmark \"Critical error occurred\"\r\n\r\n# Annotation ekle\r\n:comment \"This error started the cascade failure\"\r\n\r\n# Bookmark listesini g&ouml;r&uuml;nt&uuml;le\r\n:bookmarks<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h3>4. Session Y&ouml;netimi<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-python\"><code># Session kaydet\r\n:save-session \/tmp\/debug-session.lnav\r\n\r\n# Session y&uuml;kle\r\nlnav -s \/tmp\/debug-session.lnav\r\n\r\n# Son session'\u0131 otomatik y&uuml;kle\r\nlnav -r<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h2>\ud83d\udd27 Pratik Kullan\u0131m Senaryolar\u0131<\/h2>\r\n<h3>Senaryo 1: Web Server Log Analizi<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-bash\"><code># Nginx access ve error loglar\u0131n\u0131 birlikte analiz\r\nlnav \/var\/log\/nginx\/access.log \/var\/log\/nginx\/error.log\r\n\r\n# SQL ile analiz\r\n:;SELECT c_ip, count(*) FROM access_log GROUP BY c_ip ORDER BY count(*) DESC LIMIT 10\r\n:filter-in sc_status &gt;= 400<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h3>Senaryo 2: Sistem Hatalar\u0131n\u0131 Takip<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-bash\"><code># Systemd journal ve syslog birlikte\r\nlnav \/var\/log\/syslog\r\n# veya\r\njournalctl -f | lnav\r\n\r\n# Error ve warning seviyelerini filtrele\r\n:filter-in log_level IN ('error', 'warning')<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h3>Senaryo 3: Uygulama Debug<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-bash\"><code># Docker container loglar\u0131\r\ndocker logs -f myapp | lnav\r\n\r\n# Uygulama loglar\u0131 ile sistem loglar\u0131n\u0131 birle\u015ftir\r\nlnav \/var\/log\/myapp\/*.log \/var\/log\/syslog<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h3>Senaryo 4: Performance Monitoring<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-bash\"><code># Apache access log performance analizi\r\nlnav \/var\/log\/apache2\/access.log\r\n\r\n# SQL ile yava\u015f requestleri bul\r\n:;SELECT cs_uri_stem, avg(duration) as avg_time FROM access_log GROUP BY cs_uri_stem HAVING avg_time &gt; 1000 ORDER BY avg_time DESC<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h2>\ud83c\udfa8 G&ouml;rsel Customization<\/h2>\r\n<h3>Renk \u015eemalar\u0131<\/h3>\r\n<pre><code class=\"language-bash\"># Tema de\u011fi\u015ftirme\r\n:config theme monokai\r\n:config theme solarized-dark\r\n:config theme default\r\n\r\n# Custom renk ayarlar\u0131\r\n~\/.lnav\/configs\/default\/config.json\r\n<\/code><\/pre>\r\n<h3>Histogram G&ouml;r&uuml;n&uuml;m&uuml;<\/h3>\r\n<ul>\r\n<li>Histogram aktifle\u015ftir (s tu\u015fu)<\/li>\r\n<li>Zaman bazl\u0131 log da\u011f\u0131l\u0131m\u0131n\u0131 g&ouml;rsel olarak g&ouml;sterir<\/li>\r\n<li>Spike'lar\u0131 ve anomalileri kolayca tespit eder<\/li>\r\n<\/ul>\r\n<h2>\ud83d\udea8 Troubleshooting ve En \u0130yi Pratikler<\/h2>\r\n<h3>Performans Optimizasyonu<\/h3>\r\n<pre><code class=\"language-bash\"># B&uuml;y&uuml;k loglar i&ccedil;in bellek kullan\u0131m\u0131n\u0131 s\u0131n\u0131rla\r\nexport LNAV_EXP_DISABLE_PRECOMPUTE=1\r\n\r\n# Index olu\u015fturmay\u0131 devre d\u0131\u015f\u0131 b\u0131rak (h\u0131z i&ccedil;in)\r\nlnav --no-index \/var\/log\/huge.log\r\n\r\n# Sadece son N sat\u0131r\u0131 y&uuml;kle\r\ntail -n 10000 \/var\/log\/big.log | lnav\r\n<\/code><\/pre>\r\n<h3>Yayg\u0131n Sorunlar ve &Ccedil;&ouml;z&uuml;mleri<\/h3>\r\n<p><strong>Problem:<\/strong> Log format\u0131 tan\u0131nm\u0131yor <strong>&Ccedil;&ouml;z&uuml;m:<\/strong> Manual format belirtme<\/p>\r\n<pre><code class=\"language-bash\">:open \/path\/to\/log.txt syslog\r\n<\/code><\/pre>\r\n<p><strong>Problem:<\/strong> &Ccedil;ok yava\u015f y&uuml;kleniyor <strong>&Ccedil;&ouml;z&uuml;m:<\/strong> Streaming mode kullan<\/p>\r\n<pre><code class=\"language-bash\">tail -f \/var\/log\/big.log | lnav -\r\n<\/code><\/pre>\r\n<p><strong>Problem:<\/strong> UTF-8 karakter sorunu <strong>&Ccedil;&ouml;z&uuml;m:<\/strong> Encoding belirt<\/p>\r\n<pre><code class=\"language-bash\">export LC_ALL=en_US.UTF-8\r\nlnav \/var\/log\/app.log\r\n<\/code><\/pre>\r\n<h2>\ud83d\udcc8 Monitoring ve Alerting Entegrasyonu<\/h2>\r\n<h3>Script ile Otomasyonu<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-bash\"><code>#!\/bin\/bash\r\n# lnav-monitor.sh\r\n\r\nERROR_COUNT=$(lnav -n -c ':;SELECT count(*) FROM all_logs WHERE log_level=\"error\" AND log_time &gt;= datetime(\"now\", \"-5 minutes\")' \/var\/log\/app.log)\r\n\r\nif [ $ERROR_COUNT -gt 0 ]; then\r\n    echo \"ALERT: $ERROR_COUNT errors in last 5 minutes\"\r\n    # Send notification\r\nfi<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h3>Prometheus Metrikleri<\/h3>\r\n<pre>&nbsp;<\/pre>\r\n<pre class=\"language-bash\"><code># Log metrics export\r\nlnav -c ':;SELECT log_level, count(*) FROM all_logs WHERE log_time &gt;= datetime(\"now\", \"-1 hour\") GROUP BY log_level' -n \/var\/log\/app.log | while read level count; do\r\n    echo \"log_entries_total{level=\\\"$level\\\"} $count\"\r\ndone<\/code><\/pre>\r\n<pre><code class=\"language-bash\">\r\n<\/code><\/pre>\r\n<h2>\ud83d\udd17 Di\u011fer Ara&ccedil;larla Entegrasyon<\/h2>\r\n<h3>ELK Stack Alternative<\/h3>\r\n<pre><code class=\"language-bash\"># lnav + jq + curl ile basit log aggregation\r\nlnav -c ':;SELECT * FROM all_logs WHERE log_level=\"error\"' -n \/var\/log\/*.log | jq -r '. | {timestamp, level, message}' | curl -X POST -H \"Content-Type: application\/json\" -d @- http:\/\/logserver\/api\/logs\r\n<\/code><\/pre>\r\n<h3>Grafana Integration<\/h3>\r\n<pre><code class=\"language-bash\"># JSON output ile Grafana'ya veri g&ouml;nderme\r\nlnav -c ':;SELECT strftime(\"%Y-%m-%d %H:00:00\", log_time) as hour, count(*) FROM all_logs GROUP BY hour' -n \/var\/log\/app.log\r\n<\/code><\/pre>\r\n<h2>\ud83c\udf93 Pro Tips ve \u0130leri Seviye Kullan\u0131m<\/h2>\r\n<h3>1. Regular Expression G&uuml;&ccedil;l&uuml; Filtreleme<\/h3>\r\n<pre><code class=\"language-bash\"># Regex ile filtreleme\r\n:filter-in log_body REGEXP 'user_id:\\s*(\\d+)'\r\n\r\n# IP adresi pattern'i\r\n:filter-in c_ip REGEXP '^192\\.168\\.'\r\n<\/code><\/pre>\r\n<h3>2. Multi-line Log Handling<\/h3>\r\n<pre><code class=\"language-bash\"># Java stack trace gibi multi-line loglar i&ccedil;in\r\n:config show-time-offset true\r\n<\/code><\/pre>\r\n<h3>3. Export ve Payla\u015f\u0131m<\/h3>\r\n<pre><code class=\"language-bash\"># Filtered loglar\u0131 export et\r\n:write-csv-to \/tmp\/filtered_logs.csv\r\n:write-json-to \/tmp\/logs.json\r\n\r\n# Screenshot benzeri text export\r\n:write-to \/tmp\/log_snapshot.txt\r\n<\/code><\/pre>\r\n<h3>4. Keyboard Shortcuts Customization<\/h3>\r\n<pre><code class=\"language-json\">\/\/ ~\/.lnav\/configs\/default\/keymap.json\r\n{\r\n  \"key-map\": {\r\n    \"x\": \":toggle-view\",\r\n    \"ctrl-r\": \":reset-session\"\r\n  }\r\n}\r\n<\/code><\/pre>\r\n<h2>\ud83d\udcda Kar\u015f\u0131la\u015ft\u0131rma Tablosu<\/h2>\r\n<h2>&nbsp;<\/h2>\r\n<h2><span style=\"font-size: 14px;\"><img style=\"max-width: 100%; height: auto;\" src=\"..\/..\/..\/uploads\/images\/6899f02d37c66_1754918957.png\" alt=\"Y&uuml;klenen resim\"><\/span><\/h2>\r\n<h2><span style=\"font-size: 14px;\">\ud83c\udfaf Sonu&ccedil; ve &Ouml;neriler<\/span><\/h2>\r\n<p>lnav, log analizi i&ccedil;in g&uuml;&ccedil;l&uuml; ve kullan\u0131\u015fl\u0131 bir ara&ccedil;t\u0131r. &Ouml;zellikle:<\/p>\r\n<h3>Kimler Kullanmal\u0131:<\/h3>\r\n<ul>\r\n<li><strong>System Administrators:<\/strong> Merkezi log analizi i&ccedil;in<\/li>\r\n<li><strong>DevOps Engineers:<\/strong> CI\/CD pipeline debugging<\/li>\r\n<li><strong>SRE Teams:<\/strong> Incident response ve post-mortem analizi<\/li>\r\n<li><strong>Developers:<\/strong> Application debugging ve performance tuning<\/li>\r\n<li><strong>Security Analysts:<\/strong> Security event correlation<\/li>\r\n<\/ul>\r\n<h3>Kullan\u0131m &Ouml;nerileri:<\/h3>\r\n<ul>\r\n<li><strong>G&uuml;nl&uuml;k rutinde:<\/strong> <code>tail -f<\/code> yerine <code>lnav -f<\/code> kullan\u0131n<\/li>\r\n<li><strong>Debug sessions:<\/strong> Bookmarks ve annotations kullanarak &ouml;nemli noktalar\u0131 i\u015faretleyin<\/li>\r\n<li><strong>Performance tuning:<\/strong> SQL queries ile bottleneck analizi yap\u0131n<\/li>\r\n<li><strong>Team collaboration:<\/strong> Session dosyalar\u0131n\u0131 payla\u015farak debugging s&uuml;recini h\u0131zland\u0131r\u0131n<\/li>\r\n<li><strong>Automation:<\/strong> Script'lerde lnav SQL &ouml;zelliklerini kullanarak otomatik raporlar olu\u015fturun<\/li>\r\n<\/ul>\r\n<h3>Son Tavsiyeler:<\/h3>\r\n<ul>\r\n<li>Interactive mode'u &ouml;\u011frenmeye zaman ay\u0131r\u0131n<\/li>\r\n<li>SQL sorgu &ouml;zelliklerini master edin<\/li>\r\n<li>Custom format tan\u0131mlamay\u0131 &ouml;\u011frenin<\/li>\r\n<li>Keyboard shortcuts'lar\u0131 ezberleyin<\/li>\r\n<li>Regular expression filtreleme kullan\u0131n<\/li>\r\n<\/ul>\r\n<p>Log analizi art\u0131k karma\u015f\u0131k bir s&uuml;re&ccedil; olmak zorunda de\u011fil. lnav ile tail, grep, less d&ouml;ng&uuml;s&uuml;nden kurtulun ve log'lar\u0131n\u0131z\u0131 saniyeler i&ccedil;inde analiz edin!<\/p>\r\n<hr>\r\n<p><em>Bu rehber lnav v0.11+ s&uuml;r&uuml;m&uuml; baz al\u0131narak haz\u0131rlanm\u0131\u015ft\u0131r. En son &ouml;zellikler i&ccedil;in GitHub repository'yi takip edin.<\/em><\/p>\r\n<p><strong>Etiketler:<\/strong> linux, lnav, logs, observability, sysadmin, devops, sre, terminal, dashboard, monitoring<\/p>","excerpt":"lnav (Log File Navigator) tam bu sorunu \u00e7\u00f6zmek i\u00e7in tasarlanm\u0131\u015f devrimsel bir ara\u00e7t\u0131r.","created_at":"2025-07-27 11:21:02","updated_at":"2026-09-07 16:17:37","category_id":6,"view_count":917,"reading_time":9,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-07-27 11:21:02","featured_image":"resimyok.jpg","slug":"terminalde-log-dosyalarini-gercek-zamanli-kesfet","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"},{"id":17,"title":"dua-cli: Disk Kullan\u0131m\u0131n\u0131","content":"<p>Disk alan\u0131n\u0131z doldu\u011funda ne yap\u0131yorsunuz? Muhtemelen <code>du -sh *<\/code> komutunu &ccedil;al\u0131\u015ft\u0131r\u0131p, sonu&ccedil;lar\u0131 manuel olarak s\u0131ralay\u0131p, hangi klas&ouml;rlerin ne kadar yer kaplad\u0131\u011f\u0131n\u0131 anlamaya &ccedil;al\u0131\u015f\u0131yorsunuz. Peki ya size bunun &ccedil;ok daha h\u0131zl\u0131, g&ouml;rsel ve kullan\u0131c\u0131 dostu bir yolu oldu\u011funu s&ouml;ylesem? \u0130\u015fte tam bu noktada <strong>dua-cli<\/strong> devreye giriyor.<\/p>\r\n<h2>\ud83c\udfaf dua-cli Nedir?<\/h2>\r\n<p><strong>dua-cli<\/strong> (Disk Usage Analyzer), disk kullan\u0131m\u0131n\u0131 analiz eden, g&ouml;rselle\u015ftiren ve y&ouml;neten modern bir terminal arac\u0131d\u0131r. Rust programlama dili ile geli\u015ftirilmi\u015f olan bu ara&ccedil;, geleneksel <code>du<\/code> komutunun modern ve kullan\u0131c\u0131 dostu bir alternatifidir.<\/p>\r\n<h3>Temel &Ouml;zellikler:<\/h3>\r\n<ul>\r\n<li><strong>H\u0131zl\u0131 tarama<\/strong>: Multi-thread deste\u011fi ile b&uuml;y&uuml;k diskleri saniyeler i&ccedil;inde analiz eder<\/li>\r\n<li><strong>G&ouml;rsel aray&uuml;z<\/strong>: Renkli TUI (Terminal User Interface) ile klas&ouml;r boyutlar\u0131n\u0131 hiyerar\u015fik grafiklerle sunar<\/li>\r\n<li><strong>Interaktif kullan\u0131m<\/strong>: Klavye k\u0131sayollar\u0131 ile klas&ouml;rlerde gezinme ve i\u015flem yapma<\/li>\r\n<li><strong>Canl\u0131 silme<\/strong>: Gereksiz dosya ve klas&ouml;rleri do\u011frudan ara&ccedil; i&ccedil;inden silebilme<\/li>\r\n<li><strong>Export &ouml;zelli\u011fi<\/strong>: Sonu&ccedil;lar\u0131 CSV format\u0131nda d\u0131\u015fa aktarabilme<\/li>\r\n<\/ul>\r\n<h2>\ud83d\udee0\ufe0f Kurulum Se&ccedil;enekleri<\/h2>\r\n<p>dua-cli'\u0131 farkl\u0131 i\u015fletim sistemlerinde &ccedil;e\u015fitli y&ouml;ntemlerle kurabilirsiniz:<\/p>\r\n<h3>macOS ve Linux:<\/h3>\r\n<pre data-enlighter-language=\"generic\"># Homebrew ile (&ouml;nerilen) brew install dua-cli # Rust Cargo ile cargo install dua-cli # Ubuntu\/Debian i&ccedil;in sudo apt install dua-cli # Arch Linux i&ccedil;in sudo pacman -S dua-cli<\/pre>\r\n<p>Windows:<\/p>\r\n<pre data-enlighter-language=\"generic\"># Scoop ile scoop install dua # Chocolatey ile choco install dua-cli # Cargo ile (Rust y&uuml;kl&uuml;yse) cargo install dua-cli<\/pre>\r\n<h3>Binary \u0130ndirme:<\/h3>\r\n<p>GitHub releases sayfas\u0131ndan i\u015fletim sisteminize uygun binary dosyay\u0131 indirebilirsiniz.<\/p>\r\n<h2>\ud83d\ude80 Kullan\u0131m K\u0131lavuzu<\/h2>\r\n<h3>Temel Komutlar<\/h3>\r\n<h4>1. Basit Analiz<\/h4>\r\n<pre data-enlighter-language=\"generic\"># Bulundu\u011funuz dizini analiz eder dua # Belirli bir dizini analiz eder dua \/home\/kullanici\/Documents<\/pre>\r\n<p>2. \u0130nteraktif Mod<\/p>\r\n<pre data-enlighter-language=\"generic\"># \u0130nteraktif modda analiz (&ouml;nerilen) dua i # Belirli dizini interaktif modda analiz dua i \/var\/log<\/pre>\r\n<p>3. &Ccedil;\u0131kt\u0131 Formatlar\u0131<\/p>\r\n<pre data-enlighter-language=\"generic\"># JSON format\u0131nda &ccedil;\u0131kt\u0131 dua -p json &gt; disk_analizi.json # CSV format\u0131nda &ccedil;\u0131kt\u0131 dua -p csv &gt; disk_raporu.csv # Sadece en b&uuml;y&uuml;k 10 klas&ouml;r&uuml; g&ouml;ster dua --top 10<\/pre>\r\n<h3>\u0130nteraktif Mod Klavye K\u0131sayollar\u0131<\/h3>\r\n<p><img src=\"..\/..\/..\/wp-content\/uploads\/2025\/07\/dua.png\" alt=\"\" width=\"568\" height=\"243\"><\/p>\r\n<h3>Geli\u015fmi\u015f Kullan\u0131m Teknikleri<\/h3>\r\n<p>Performans Optimizasyonu<\/p>\r\n<pre data-enlighter-language=\"generic\"># Thread say\u0131s\u0131n\u0131 manuel olarak ayarlama dua -t 8 \/ # Dosya say\u0131s\u0131n\u0131 s\u0131n\u0131rlama (performans i&ccedil;in) dua --max-depth 3 \/home<\/pre>\r\n<p>Filtreleme ve Arama<\/p>\r\n<pre data-enlighter-language=\"generic\"># Sadece belirli uzant\u0131daki dosylar\u0131 g&ouml;ster dua -e \"*.log,*.tmp\" \/var # Minimum boyut filtresi dua --min-size 100M \/<\/pre>\r\n<p>Raporlama<\/p>\r\n<pre data-enlighter-language=\"generic\"># Detayl\u0131 CSV raporu olu\u015fturma dua -p csv --no-total | head -20 &gt; top_folders.csv # JSON &ccedil;\u0131kt\u0131s\u0131n\u0131 pretty-print yapma dua -p json | jq '.'<\/pre>\r\n<h3>G&ouml;rsel Aray&uuml;z ve Customization<\/h3>\r\n<pre data-enlighter-language=\"generic\"># &Ccedil;evre de\u011fi\u015fkenleri ile renk ayarlar\u0131 export DUA_COLOR_SCHEME=dark export DUA_GRAPH_TYPE=percentage<\/pre>\r\n<h3>Pratik Kullan\u0131m Senaryolar\u0131<\/h3>\r\n<ul>\r\n<li>&nbsp;Sistem analizi dua i \/<\/li>\r\n<li>B&uuml;y&uuml;k klas&ouml;rleri bulma \u0130nteraktif modda en b&uuml;y&uuml;k klas&ouml;rlere gidin<\/li>\r\n<li>Gereksiz dosyalar\u0131 temizleme Shift + D ile g&uuml;venli silme<\/li>\r\n<\/ul>\r\n<h3>Log Dosyas\u0131 Y&ouml;netimi<\/h3>\r\n<pre data-enlighter-language=\"generic\"># Log dizinlerini analiz etme dua i \/var\/log # Eski log dosyalar\u0131n\u0131 bulma ve silme find \/var\/log -name \"*.log\" -mtime +30 -exec ls -lh {} \\;<\/pre>\r\n<h3>Proje Dizini Optimizasyonu<\/h3>\r\n<pre data-enlighter-language=\"generic\"># Node.js projeleri i&ccedil;in dua ~\/projects --pattern \"*node_modules*\" # Python projeleri i&ccedil;in dua ~\/projects --pattern \"*__pycache__*,*.pyc\"<\/pre>\r\n<h3>\u0130leri D&uuml;zey &Ouml;zellikler<\/h3>\r\n<p>Programatik Kullan\u0131m<\/p>\r\n<pre data-enlighter-language=\"generic\">#!\/bin\/bash # Otomatik temizlik scripti THRESHOLD=80 USAGE=$(df \/ | awk 'NR==2 {print $5}' | sed 's\/%\/\/') if ; then echo \"Disk kullan\u0131m\u0131 %$USAGE - Analiz ba\u015flat\u0131l\u0131yor...\" dua -p json \/ | jq '. | select(.size &gt; 1000000000)' fi<\/pre>\r\n<p>Monitoring Entegrasyonu<\/p>\r\n<pre data-enlighter-language=\"generic\"># GitHub Actions &ouml;rne\u011fi - name: Disk Usage Analysis run: | dua -p csv . &gt; disk_usage.csv # B&uuml;y&uuml;k dosyalar\u0131 tespit et ve uyar\u0131 ver<\/pre>\r\n<p>CI\/CD Pipeline Entegrasyonu<\/p>\r\n<pre data-enlighter-language=\"generic\"># GitHub Actions &ouml;rne\u011fi - name: Disk Usage Analysis run: | dua -p csv . &gt; disk_usage.csv # B&uuml;y&uuml;k dosyalar\u0131 tespit et ve uyar\u0131 ver<\/pre>\r\n<p>Sistem Performans\u0131<\/p>\r\n<pre data-enlighter-language=\"generic\"># D&uuml;\u015f&uuml;k &ouml;ncelikle &ccedil;al\u0131\u015ft\u0131rma nice -n 19 dua i \/<\/pre>\r\n<h2>Alternatif Ara&ccedil;lar ile Kar\u015f\u0131la\u015ft\u0131rma<\/h2>\r\n<h3>dua-cli vs ncdu<\/h3>\r\n<ul>\r\n<li><strong>H\u0131z<\/strong>: dua-cli &ccedil;ok daha h\u0131zl\u0131<\/li>\r\n<li><strong>Aray&uuml;z<\/strong>: dua-cli daha modern ve renkli<\/li>\r\n<li><strong>&Ouml;zellikler<\/strong>: dua-cli daha fazla export se&ccedil;ene\u011fi sunar<\/li>\r\n<\/ul>\r\n<h3>dua-cli vs dust<\/h3>\r\n<ul>\r\n<li><strong>Kullan\u0131m<\/strong>: dust daha basit, dua-cli daha feature-rich<\/li>\r\n<li><strong>Performans<\/strong>: Benzer h\u0131z performans\u0131<\/li>\r\n<li><strong>G&ouml;rsellik<\/strong>: dua-cli daha detayl\u0131 grafikler<\/li>\r\n<\/ul>\r\n<h2>\ud83d\udcad Sonu&ccedil; ve Tavsiyeler<\/h2>\r\n<p>dua-cli, disk y&ouml;netimi i&ccedil;in modern ve etkili bir &ccedil;&ouml;z&uuml;md&uuml;r. &Ouml;zellikle:<\/p>\r\n<ul>\r\n<li><strong>Sistem y&ouml;neticileri<\/strong> i&ccedil;in h\u0131zl\u0131 disk analizi<\/li>\r\n<li><strong>Geli\u015ftiriciler<\/strong> i&ccedil;in proje klas&ouml;r&uuml; optimizasyonu<\/li>\r\n<li><strong>Power user'lar<\/strong> i&ccedil;in detayl\u0131 disk raporlama<\/li>\r\n<\/ul>\r\n<p>konular\u0131nda vazge&ccedil;ilmez bir ara&ccedil;t\u0131r.<\/p>\r\n<h3>Son Tavsiyeler:<\/h3>\r\n<ol>\r\n<li>\u0130nteraktif modu (<code>dua i<\/code>) varsay\u0131lan kullan\u0131m \u015fekliniz yap\u0131n<\/li>\r\n<li>B&uuml;y&uuml;k sistemlerde CSV export ile raporlama yap\u0131n<\/li>\r\n<li>Terminal ayarlar\u0131n\u0131z\u0131 optimize edin<\/li>\r\n<li>G&uuml;venli silme al\u0131\u015fkanl\u0131\u011f\u0131 edinin<\/li>\r\n<li>Scriptlerde JSON &ccedil;\u0131kt\u0131s\u0131n\u0131 kullan\u0131n<\/li>\r\n<\/ol>\r\n<p>Disk alan\u0131 s\u0131k\u0131nt\u0131s\u0131 ya\u015fad\u0131\u011f\u0131n\u0131zda art\u0131k panik yapmay\u0131n - dua-cli ile saniyeler i&ccedil;inde sorunun kayna\u011f\u0131n\u0131 bulun ve &ccedil;&ouml;z&uuml;n!<\/p>\r\n<hr>\r\n<p><em>Bu blog yaz\u0131s\u0131 dua-cli v2.20+ s&uuml;r&uuml;m&uuml; baz al\u0131narak haz\u0131rlanm\u0131\u015ft\u0131r. En g&uuml;ncel &ouml;zellikler i&ccedil;in <a href=\"https:\/\/github.com\/Byron\/dua-cli\">GitHub sayfas\u0131n\u0131<\/a> kontrol edin.<\/em><\/p>","excerpt":"Disk alan\u0131n\u0131z doldu\u011funda ne yap\u0131yorsunuz? Muhtemelen du -sh * komutunu \u00e7al\u0131\u015ft\u0131r\u0131p, sonu\u00e7lar\u0131 manuel olarak s\u0131ralay\u0131p, hangi klas\u00f6rlerin...","created_at":"2025-07-27 11:11:29","updated_at":"2026-09-23 11:27:58","category_id":6,"view_count":746,"reading_time":5,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-07-27 11:11:00","featured_image":"api_pixabay_1762015024_69063730c76e1.jpg","slug":"dua-cli-disk-kullanimini","category_name":"Sistem","category_slug":"sistem","category_color":"#3b82f6"}]