<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Enes Baytekin</title>
    <description>The latest articles on Forem by Enes Baytekin (@enesbaytekin).</description>
    <link>https://forem.com/enesbaytekin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3071636%2Fcd990f99-63e9-40b1-96c1-082c8318f742.png</url>
      <title>Forem: Enes Baytekin</title>
      <link>https://forem.com/enesbaytekin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/enesbaytekin"/>
    <language>en</language>
    <item>
      <title>Node Exporter ve Prometheus Kurulum Rehberi</title>
      <dc:creator>Enes Baytekin</dc:creator>
      <pubDate>Fri, 13 Mar 2026 06:02:27 +0000</pubDate>
      <link>https://forem.com/aciklab/node-exporter-ve-prometheus-kurulum-rehberi-18g6</link>
      <guid>https://forem.com/aciklab/node-exporter-ve-prometheus-kurulum-rehberi-18g6</guid>
      <description>&lt;p&gt;Node exporter bir makinedeki bazı metrikleri (cpu, ram, disk vb.) belli bir port üzerinden (default 9100) dışarıya sunar. Daha sonra burada sunulan metrikleri bu porta istek atarak  herhangi bir yazılım aracılığıyla izlemek mümkündür. Bu örnekte prometheus ile izlenecektir.&lt;/p&gt;

&lt;p&gt;Node exporter çok hafif bir uygulama olduğu için sistemi yormaz ve bu makine üzerinde izleme yapmak isteyen araçlar kendi ajanlarını kurmak zorunda kalmaz, hepsi aynı formattan okuyabilirler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Genel Mimari
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────┐          ┌─────────────────┐
│   Prometheus    │ ───────► │  Node Exporter  │
│   (Ana Sunucu)  │  scrape  │  (Hedef Makine) │
│   Port: 9090    │          │   Port: 9100    │
└─────────────────┘          └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Hedef Makineye Node Exporter Kurulumu
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Adım 1: Node Exporter İndir ve Kur
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Kullanıcı oluştur&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;useradd &lt;span class="nt"&gt;--no-create-home&lt;/span&gt; &lt;span class="nt"&gt;--shell&lt;/span&gt; /bin/false node_exporter

&lt;span class="c"&gt;# Son sürümü indir (sürümü kontrol edin: https://github.com/prometheus/node_exporter/releases)&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz

&lt;span class="c"&gt;# Çıkart ve taşı&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-zxvf&lt;/span&gt; node_exporter-&lt;span class="k"&gt;*&lt;/span&gt;.tar.gz
&lt;span class="nb"&gt;sudo cp &lt;/span&gt;node_exporter-&lt;span class="k"&gt;*&lt;/span&gt;/node_exporter /usr/local/bin/
&lt;span class="nb"&gt;sudo chown &lt;/span&gt;node_exporter:node_exporter /usr/local/bin/node_exporter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 2: Systemd Servisi Oluştur
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/systemd/system/node_exporter.service &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /dev/null &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 3: Servisi Başlat
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl daemon-reload
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;node_exporter
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start node_exporter
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status node_exporter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 4: Firewall Ayarı (Gerekirse)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;firewall-cmd &lt;span class="nt"&gt;--permanent&lt;/span&gt; &lt;span class="nt"&gt;--add-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9100/tcp
&lt;span class="nb"&gt;sudo &lt;/span&gt;firewall-cmd &lt;span class="nt"&gt;--reload&lt;/span&gt;

&lt;span class="c"&gt;# ya da&lt;/span&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow 9100/tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Doğrulama
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:9100/metrics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Prometheus Kurulumu
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Adım 1: Prometheus İndir ve Kur
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Kullanıcı ve dizinler oluştur&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;useradd &lt;span class="nt"&gt;--no-create-home&lt;/span&gt; &lt;span class="nt"&gt;--shell&lt;/span&gt; /bin/false prometheus
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; /etc/prometheus /var/lib/prometheus
&lt;span class="nb"&gt;sudo chown &lt;/span&gt;prometheus:prometheus /etc/prometheus /var/lib/prometheus

&lt;span class="c"&gt;# İndir&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz

&lt;span class="c"&gt;# Çıkart ve kopyala&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-zxvf&lt;/span&gt; prometheus-&lt;span class="k"&gt;*&lt;/span&gt;.tar.gz
&lt;span class="nb"&gt;cd &lt;/span&gt;prometheus-&lt;span class="k"&gt;*&lt;/span&gt;/
&lt;span class="nb"&gt;sudo cp &lt;/span&gt;prometheus promtool /usr/local/bin/
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; consoles console_libraries /etc/prometheus/
&lt;span class="nb"&gt;sudo chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; prometheus:prometheus /etc/prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 2: Prometheus Yapılandırması
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;sudo tee /etc/prometheus/prometheus.yml &amp;gt; /dev/null &amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="na"&gt;global&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;scrape_interval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;15s&lt;/span&gt;
  &lt;span class="na"&gt;evaluation_interval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;15s&lt;/span&gt;

&lt;span class="na"&gt;scrape_configs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Prometheus kendisini izler&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;job_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;prometheus'&lt;/span&gt;
    &lt;span class="na"&gt;static_configs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;localhost:9090'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

  &lt;span class="c1"&gt;# Hedef makineler (Node Exporter)&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;job_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;node-exporter'&lt;/span&gt;
    &lt;span class="na"&gt;static_configs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.1.10:9100'&lt;/span&gt;   &lt;span class="c1"&gt;# Hedef makine 1&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.1.11:9100'&lt;/span&gt;   &lt;span class="c1"&gt;# Hedef makine 2&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.1.12:9100'&lt;/span&gt;   &lt;span class="c1"&gt;# Hedef makine 3&lt;/span&gt;
        &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;production'&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

&lt;span class="s"&gt;sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 3: Systemd Servisi
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;tee&lt;/span&gt; &lt;span class="err"&gt;/etc/systemd/system/prometheus.service&lt;/span&gt; &lt;span class="err"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;/dev/null&lt;/span&gt; &lt;span class="err"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="nn"&gt;[Unit]&lt;/span&gt;
&lt;span class="py"&gt;Description&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Prometheus&lt;/span&gt;
&lt;span class="py"&gt;Wants&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network-online.target&lt;/span&gt;
&lt;span class="py"&gt;After&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network-online.target&lt;/span&gt;

&lt;span class="nn"&gt;[Service]&lt;/span&gt;
&lt;span class="py"&gt;User&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;prometheus&lt;/span&gt;
&lt;span class="py"&gt;Group&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;prometheus&lt;/span&gt;
&lt;span class="py"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;simple&lt;/span&gt;
&lt;span class="py"&gt;ExecStart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/local/bin/prometheus &lt;/span&gt;&lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="s"&gt;--config.file=/etc/prometheus/prometheus.yml &lt;/span&gt;&lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="s"&gt;--storage.tsdb.path=/var/lib/prometheus/ &lt;/span&gt;&lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="s"&gt;--web.console.templates=/etc/prometheus/consoles &lt;/span&gt;&lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="s"&gt;--web.console.libraries=/etc/prometheus/console_libraries &lt;/span&gt;&lt;span class="se"&gt;\
&lt;/span&gt;    &lt;span class="s"&gt;--web.enable-lifecycle&lt;/span&gt;

&lt;span class="nn"&gt;[Install]&lt;/span&gt;
&lt;span class="py"&gt;WantedBy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;multi-user.target&lt;/span&gt;
&lt;span class="err"&gt;EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 4: Başlat
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl daemon-reload
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;prometheus
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start prometheus
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Erişim ve Doğrulama
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Servis         URL                                 Açıklama
-------------------------------------------------------------------
Prometheus UI  http://PROMETHEUS_IP:9090           Ana dashboard
Targets        http://PROMETHEUS_IP:9090/targets   Hedef durumları
Node Exporter  http://HEDEF_IP:9100/metrics        Ham metrikler
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Yeni Hedef Ekleme
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;/etc/prometheus/prometheus.yml&lt;/code&gt; dosyasına yeni target ekleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.1.10:9100'&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.1.11:9100'&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;yeni-sunucu.example.com:9100'&lt;/span&gt;  &lt;span class="c1"&gt;# Yeni eklenen&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sonra yapılandırmayı yeniden yükleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Yöntem 1: API ile (web.enable-lifecycle aktifse)&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:9090/-/reload

&lt;span class="c"&gt;# Yöntem 2: Servisi yeniden başlat&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Faydalı PromQL Sorguları
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU kullanımı (%)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RAM kullanımı (%)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Disk kullanımı (%)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;100 - (node_filesystem_avail_bytes / node_filesystem_size_bytes * 100)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ağ trafiği (bytes/s)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;rate(node_network_receive_bytes_total[5m])&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>monitoring</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>SysMonitor</title>
      <dc:creator>Enes Baytekin</dc:creator>
      <pubDate>Mon, 09 Mar 2026 11:46:22 +0000</pubDate>
      <link>https://forem.com/aciklab/sysmonitor-2mmd</link>
      <guid>https://forem.com/aciklab/sysmonitor-2mmd</guid>
      <description>&lt;p&gt;SysMonitor, netex üzerinde izleme yapabilmek için geliştirilmiş bir araçtır.&lt;br&gt;
Çalışması için iki farklı pakete ihtiyaç var:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sysmonitor&lt;/li&gt;
&lt;li&gt;sysmonitor-worker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bunlar server-client mantığı ile çalışır.&lt;br&gt;
Sysmonitor bir makine'ye kurulur ve netex veritabanı ile haberleşir.&lt;br&gt;
Worker ise asıl izlemeyi yaparak sysmonitor ile haberleşir.&lt;br&gt;
Böylece izlenen veriler netex db'sinde tutulur.&lt;/p&gt;
&lt;h2&gt;
  
  
  Kurulum
&lt;/h2&gt;

&lt;p&gt;Sysmonitor kullanabilmek için öncelikle bir netex ortamının bulunması gerekir.&lt;br&gt;
Netex, sysmonitor ve sysmonitor-worker paketleri aynı makinede de olabilir veya farklı makinelerde de bulunabilir.&lt;/p&gt;
&lt;h3&gt;
  
  
  Sysmonitor Kurulumu
&lt;/h3&gt;

&lt;p&gt;Bir makineye sysmonitor paketi kurulur. Environment değişkeni olarak netex db bilgileri verilir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; ./sysmonitor-24-x64.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/opt/sysmonitor/.env&lt;/code&gt; örneği:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;DB_DRIVER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgres
&lt;span class="nv"&gt;DB_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1
&lt;span class="nv"&gt;DB_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;netex
&lt;span class="nv"&gt;DB_PASS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;password
&lt;span class="nv"&gt;DB_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5432
&lt;span class="nv"&gt;DB_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;netex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOT:&lt;/strong&gt; Netex veritabanı başka bir makinedeyse, sysmon'un buna erişebilmesi için netex db'sinin dışarıdan erişime açılması gerekir. &lt;code&gt;pg_hba.conf&lt;/code&gt; ve &lt;code&gt;postgresql.conf&lt;/code&gt; dosyaları kontrol edilebilir.&lt;/p&gt;

&lt;p&gt;Kurulum sonrasında şu servislerin çalışıyor olması gerekir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sysmonitor@admin&lt;/li&gt;
&lt;li&gt;sysmonitor@client&lt;/li&gt;
&lt;li&gt;sysmonitor@admintest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOT:&lt;/strong&gt; Sysmon api'sine istek atmak için &lt;code&gt;6520&lt;/code&gt; portu kullanılır, eğer bu port açılmamışsa &lt;code&gt;sysmonitor@admintest&lt;/code&gt; servisi başlatılmalıdır.&lt;/p&gt;

&lt;p&gt;Port kontrol için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ss &lt;span class="nt"&gt;-tlnp&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;6520
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Servisi başlatmak için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; sysmonitor@admintest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sysmonitor Worker Kurulumu
&lt;/h3&gt;

&lt;p&gt;Sensor'ler, worker'lar üzerinde çalıştığı için en az bir tane worker kurulup sysmon'a bağlanması gerekir.&lt;br&gt;
Bir makineye sysmonitor-worker paketi kurulur. Environment değişkeni olarak sysmonitor makinesinin adresi verilir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; ./sysmonitor-worker-setup-x64.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kurulum sırasında server adresi istendiğinde &lt;code&gt;https://&amp;lt;sysmonitor-ip&amp;gt;:6521&lt;/code&gt; şeklinde girilir.&lt;br&gt;
Daha sonradan &lt;code&gt;.env&lt;/code&gt; dosyası düzenlenerek de değiştirilebilir.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/opt/sysmonitor-worker/.env&lt;/code&gt; örneği:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;SERVER_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://127.0.0.1:6521
&lt;span class="nv"&gt;FETCH_INTERVAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Nasıl çalışır?
&lt;/h2&gt;

&lt;p&gt;Öncelikle bir template oluşturulur.&lt;br&gt;
Bu template içinde, izlenilmesi istenen metrikler belirtilir.&lt;br&gt;
Bir template içinde aynı türde birden fazla metrik izlenebilir.&lt;/p&gt;

&lt;p&gt;Bu template'ı kullanan bir sensor oluşturulur.&lt;br&gt;
Aynı template birden fazla sensor ile tekrar tekrar kullanılabilir.&lt;br&gt;
Her sensor aynı zamanda bir varlığa bağlıdır ve bu varlığın o template'ta belirtilen metriklerini izler.&lt;/p&gt;

&lt;p&gt;Sensor'ler worker'lar üzerinde çalışır.&lt;br&gt;
İzlenen metrik değerleri sysmon'a gönderilir ve sysmon netex db'sine kaydeder.&lt;/p&gt;

&lt;p&gt;Daha sonra bu metrikler db'den okunarak izlenebilir.&lt;/p&gt;

&lt;p&gt;Birden fazla worker kurulabilir.&lt;br&gt;
Her bir sensor için hangi worker üzerinde çalışacağı belirtilir.&lt;/p&gt;

&lt;p&gt;Yani özetle;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Metrik&lt;/strong&gt;, izlenecek değeri belirtir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Template&lt;/strong&gt;, hangi metriklerin izleneceğini belirten kuraldır.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensor&lt;/strong&gt;, asıl izlemeyi yapandır.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sysmonitor Worker&lt;/strong&gt;, izlemenin nerede yapılacağıdır.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sysmonitor&lt;/strong&gt;, sensor ve netex db arasındaki bağlantıyı sağlayan backend server'dır.&lt;/li&gt;
&lt;/ul&gt;






&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                                        .---------.
.-----------.        .---------.        |         |
| Template1 |--------| Sensor1 |--------| Varlık1 |
|           |        '---------'        |         |
| -metrik1  |        .---------.        '---------'
| -metrik2  |--------| Sensor2 |----.
'-----------'        '---------'    |   .---------.
                                    '---|         |
.-----------.        .---------.        | Varlık2 |
| Template2 |--------| Sensor3 |--------|         |
|           |        '---------'        '---------'
| -metrik3  |
'-----------'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu örnekte;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Varlık1&lt;/code&gt;'in &lt;code&gt;metrik1&lt;/code&gt; ve &lt;code&gt;metrik2&lt;/code&gt; değerleri&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Varlık2&lt;/code&gt;'nin &lt;code&gt;metrik1&lt;/code&gt;, &lt;code&gt;metrik2&lt;/code&gt; ve &lt;code&gt;metrik3&lt;/code&gt; değerleri&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;izlenir.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>monitoring</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Proxmox'ta io-error</title>
      <dc:creator>Enes Baytekin</dc:creator>
      <pubDate>Mon, 29 Dec 2025 08:35:23 +0000</pubDate>
      <link>https://forem.com/aciklab/proxmoxta-io-error-5fnl</link>
      <guid>https://forem.com/aciklab/proxmoxta-io-error-5fnl</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi80mdjxckchsea5uklvl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi80mdjxckchsea5uklvl.png" alt="io-error" width="189" height="75"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eğer proxmoxta bu şekilde bir hata alıyor ve makinenizle etkileşemiyorsanız bunun sebebi büyük ihtimalle bu sanal makinenin diskinin proxmox'ta kullandığı storage alanının dolmuş olmasıdır. Bu yüzden sanal makineniz daha fazla okuma yazma işlemi yapamamaktadır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disk alanını kontrol etmek
&lt;/h2&gt;

&lt;p&gt;Öncelikle, makinenizin &lt;strong&gt;Hardware&lt;/strong&gt; sekmesindeki &lt;strong&gt;Hard Disk&lt;/strong&gt; kısmından, diskin hangi storage üzerinde olduğunu kontrol edin. Örneğimizde &lt;strong&gt;local-lvm&lt;/strong&gt; adlı alanı kullanıyor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhq4kecgmplfix5vctos.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhq4kecgmplfix5vctos.png" alt="hard-disk" width="691" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Daha sonra bu storage'ın &lt;strong&gt;Summary&lt;/strong&gt; sekmesinden doluluğunu kontrol edin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faeuj2qg52w9f5typb4fp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faeuj2qg52w9f5typb4fp.png" alt="storage-usage" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eğer burdaki &lt;strong&gt;Usage&lt;/strong&gt; kısmı &lt;strong&gt;100%&lt;/strong&gt; olarak görünüyorsa hata bundan kaynaklıdır. Bunu çözmek için;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ya bu diski kullanan ve artık ihtiyaç duyulmayan makineleri veya diskleri silerek bu storage üzerinde yer açmanız&lt;/li&gt;
&lt;li&gt;ya da bu makineyi daha geniş boş alana sahip başka bir storage'a taşımanız&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;gerekir.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOT:&lt;/strong&gt; Eğer makinenizi cloudinit ile oluşturduysanız burda &lt;strong&gt;Cloudinit Drive&lt;/strong&gt; şeklinde bir disk daha görürsünüz. Bu da aynı storage'da bulunur ve bunu taşıyamazsınız. Ancak zaten boyutu çok küçük olduğu için taşımamış olmanız çok da bir şeyi etkilemez. Asıl sıkıntı çıkaran kısım makinenin ana diskidir.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Makineyi farklı bir storage alanına taşımak
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOT:&lt;/strong&gt; Her şeyden önce makinenizin &lt;strong&gt;kapalı&lt;/strong&gt; olduğundan emin olun.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Makinenin &lt;strong&gt;Hardware&lt;/strong&gt; kısmından ilgili diski seçtikten sonra yukarıdaki &lt;strong&gt;Disk Action&lt;/strong&gt; kısmından &lt;strong&gt;Move Storage&lt;/strong&gt; seçeneğini seçin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjbkeqnt24hjcczdecg5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjbkeqnt24hjcczdecg5h.png" alt="move-storage" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Açılan pencerede &lt;strong&gt;Target Storage&lt;/strong&gt; kısmından taşımak istediğiniz hedef storage'ı seçin ve taşıma işlemini başlatın.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmy5cshcr76d3bwnq9uc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmy5cshcr76d3bwnq9uc0.png" alt="select-storage" width="577" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Taşıma işlemi bittikten sonra artık &lt;strong&gt;Hard Disk&lt;/strong&gt; kısmında yeni storage alanının ismini göreceksiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frak77z6qhu1jcd7j10st.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frak77z6qhu1jcd7j10st.png" alt="storage-changed" width="703" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Şu an aslında makinenizi başlatarak kullanmaya devam edebilirsiniz. Bunda hiçbir engel yok.&lt;/p&gt;

&lt;p&gt;Ancak bu taşıma işlemi makinenin diskini doğrudan taşımak yerine yeni storage üzerinde bir kopyasını oluşturup ona bağlıyor. Yani eski storage alanında, kullanılmayan bir kopya o diski işgal etmeye devam ediyor.&lt;/p&gt;

&lt;p&gt;Bu kopya &lt;strong&gt;Hardware&lt;/strong&gt; kısmında en altta &lt;strong&gt;Unused Disk&lt;/strong&gt; olarak görünür. Bu kopyayı da silerek eski storage alanında da yer açmak isterseniz önce, eğer varsa makinenize ait snapshotları silmeniz lazım. Çünkü snapshotlar bu eski diski işaret etmeye devam ediyorlar ve ona bağımlılar.&lt;/p&gt;

&lt;p&gt;Makinenize ait bir snapshot bulunmuyorsa bu &lt;strong&gt;Unused Disk&lt;/strong&gt;'i seçerek yukardan &lt;strong&gt;Remove&lt;/strong&gt; seçeneği ile silebilirsiniz.&lt;/p&gt;




&lt;p&gt;Eğer dolu storage üzerinde biraz yer açtıysanız o storage'daki bu hatayı veren diğer makineleri yeniden başlatmanız onlar için yeterlidir.&lt;/p&gt;

</description>
      <category>help</category>
      <category>linux</category>
      <category>tutorial</category>
      <category>devops</category>
    </item>
    <item>
      <title>Liman Mail Ayarları</title>
      <dc:creator>Enes Baytekin</dc:creator>
      <pubDate>Mon, 17 Nov 2025 09:07:37 +0000</pubDate>
      <link>https://forem.com/aciklab/liman-mail-ayarlari-3351</link>
      <guid>https://forem.com/aciklab/liman-mail-ayarlari-3351</guid>
      <description>&lt;h2&gt;
  
  
  Mock mail sunucusu kurmak
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mailhog
&lt;/h3&gt;

&lt;p&gt;Mailhog, gönderilen e-postaları yakalayıp kendi web arayüzünde gösteren bir servistir. Gerçek bir mail sunucusu değildir. Test ortamlarında kullanılan geçici bir mail sunucusu gibi düşünülebilir.&lt;/p&gt;

&lt;h4&gt;
  
  
  Kurulum
&lt;/h4&gt;

&lt;p&gt;Mailhog indirilir ve çalıştırma izni verilir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;wget &lt;span class="nt"&gt;-O&lt;/span&gt; /usr/local/bin/mailhog https://github.com/mailhog/MailHog/releases/download/v1.0.0/MailHog_linux_amd64
&lt;span class="nb"&gt;sudo chmod&lt;/span&gt; +x /usr/local/bin/mailhog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/etc/systemd/system/mailhog.service&lt;/code&gt; servis dosyası oluşturulur ve içi şu şekilde doldurulur.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;Unit]
&lt;span class="nv"&gt;Description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Mailhog
&lt;span class="nv"&gt;After&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;network.target
&lt;span class="o"&gt;[&lt;/span&gt;Service]
&lt;span class="nv"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin/env /usr/local/bin/mailhog &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;
&lt;span class="o"&gt;[&lt;/span&gt;Install]
&lt;span class="nv"&gt;WantedBy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;multi-user.target
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sistemin, servisi görmesi sağlanır ve servis başlatılır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl daemon-reload
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; mailhog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mailhog iki port açar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8025: web arayüzü için&lt;/li&gt;
&lt;li&gt;1025: mail gönderilmesi için&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tarayıcıdan &lt;code&gt;http://&amp;lt;server-ip&amp;gt;:8025&lt;/code&gt; adresi ile mailhog arayüzüne gidilebilir.&lt;/p&gt;




&lt;h3&gt;
  
  
  Liman Mail Ayarları
&lt;/h3&gt;

&lt;p&gt;Liman arayüzünden &lt;strong&gt;Ayarlar / E-Posta&lt;/strong&gt; sayfasına gelinir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sunucu Adresi&lt;/strong&gt; ve &lt;strong&gt;Sunucu Portu&lt;/strong&gt; kısmına mail sunucusunun adresi ve mail servisinin çalıştığı port yazılır. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kullanıcı Adı&lt;/strong&gt; ve &lt;strong&gt;Parola&lt;/strong&gt; kısmına test mailinin gelmesi istenilen mail adresi ve parolası yazılır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Şifreleme Türü&lt;/strong&gt; seçilir ve &lt;strong&gt;E-posta gönderimini aktifleştir&lt;/strong&gt; seçeneği işaretlenir.&lt;/p&gt;




&lt;p&gt;Bu ayarlar yapıldıktan sonra liman üzerinde yapılan işlemler (kullanıcı oluşturma / şifresini değiştirme, sunucu ekleme / silme...) ilgili kullanıcıların mail adreslerine gönderilir.&lt;/p&gt;

&lt;p&gt;Eğer mailhog kullanılıyorsa gelen bu mailler, web arayüzü üzerinden kontrol edilebilir.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>linux</category>
      <category>tooling</category>
      <category>devops</category>
    </item>
    <item>
      <title>Liman Zabbix Bildirimleri</title>
      <dc:creator>Enes Baytekin</dc:creator>
      <pubDate>Fri, 24 Oct 2025 07:35:33 +0000</pubDate>
      <link>https://forem.com/aciklab/liman-zabbix-bildirimleri-2mba</link>
      <guid>https://forem.com/aciklab/liman-zabbix-bildirimleri-2mba</guid>
      <description>&lt;h2&gt;
  
  
  Media type oluşturmak
&lt;/h2&gt;

&lt;p&gt;Zabbix'te &lt;strong&gt;Alerts / Media types&lt;/strong&gt; kısmında gelinir ve yeni bir media type oluşturulur.&lt;/p&gt;

&lt;p&gt;Oluştururken;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Medya tipine bir isim verilir.&lt;/li&gt;
&lt;li&gt;Tip olarak webhook seçilir.&lt;/li&gt;
&lt;li&gt;Scriptte kullanılacak parametreler, değerleri zabbixten gelen değerler olacak şekilde tanımlanır.&lt;/li&gt;
&lt;li&gt;Script kısmına javascript dilinde yazılır. Burada istenilen endpointlere istenilen şekilde istek atılablir.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Şu şekilde limana istek gönderilebilir:&lt;/p&gt;


&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;limandan-alinan-token&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tr&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;mesaj-basligi&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;mesaj-basligi&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;de&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;mesaj-basligi&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tr&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;mesaj-icerigi&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;mesaj-icerigi&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;de&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;mesaj-icerigi&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;level&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;trivial|low|medium|high|critical&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mail&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;send_to&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;admins&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nx"&gt;liman&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;lstesi&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;HttpRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;liman_address&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/api/notifications/send&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getStatus&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;API request (443) failed: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Process tags seçeneği işaretlenir.&lt;/li&gt;
&lt;li&gt;Bir açıklama girilir.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Not: Limana bildirim gönderebilmek için gönderilecek için bir liman token alınması lazım. Yani zabbix makinesinin ip'si için liman arayüzünden &lt;strong&gt;Ayarlar / Dış Bildirimler&lt;/strong&gt; kısmından bir token oluşturmak ve burdaki script içinde istek atarken body'de bu tokeni de kullanmak gerekli. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Trigger action oluşturmak
&lt;/h2&gt;

&lt;p&gt;Zabbix'te &lt;strong&gt;Alerts / Actions / Trigger actions&lt;/strong&gt; kısmına gelinir ve yeni bir action oluşturulur.&lt;/p&gt;

&lt;p&gt;Oluştururken;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Action için bir isim verilir.&lt;/li&gt;
&lt;li&gt;Conditions kısmına bu aksiyonun ne zaman tetikleneceği ile ilgili kriterler girilir.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Örnek:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(Event name contains &lt;code&gt;En az 3 dakika&lt;/code&gt;) AND ((Host Group equals &lt;code&gt;A Host Grubu&lt;/code&gt;) OR (Host Group equals &lt;code&gt;B Host Grubu&lt;/code&gt;))&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A veya B host grubuna sahip olan varlıklarda oluşan bir problemin isminde &lt;em&gt;'En az 3 dakika'&lt;/em&gt; geçiyorsa bu action tetiklenecek.&lt;/p&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Operations sekmesinde, &lt;em&gt;Default operation step duration&lt;/em&gt; bu aksiyonun ne sıklıkla tetikleneceği belirtilir. &lt;em&gt;(1h = 1 saat, 1m = 1 dakika, ...)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Operation eklerkenki Steps kısmında problem başladıktan sonraki hangi aralıklarda bu aksiyonun tetikleneceği belirtilir. İlk kısım kaçıncı aralıktan başlayacağı, ikinci kısım ise kaçıncı aralıkta biteceğini belirtir. Step duration da bu aralıkların süresini belirtir. (0 olarak bırakıp default action duration'ı kullanabilirsiniz.)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Örnekler:&lt;/strong&gt;&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1    2    3    4    5
|....|....|....|....|...  . . .
  1h   1h   1h   1h
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Step duraiton: 1h&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;1 - 1 --&amp;gt; Problem oluştuğu anda bir kere tetiklensin.&lt;/p&gt;

&lt;p&gt;2 - 2 --&amp;gt; Problem oluştuktan 1 saat sonra (2. intervalde) bir kere tetiklensin.&lt;/p&gt;

&lt;p&gt;4 - 0 --&amp;gt; Problem oluştuktan 3 saat sonra (4. intervalde) tetiklensin ve sonsuza kadar (problem çözülene kadar) her saat başı bir kez daha tetiklensin.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Send to users&lt;/em&gt; ya da &lt;em&gt;Send to user groups&lt;/em&gt; kısımlarında bu aksiyon tetiklendiğinde hangi zabbix kullanıcıları için geçerli olacağı seçilir. Admin seçilebilir.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Send to media type&lt;/em&gt; kısmında daha önce liman için oluşturulmuş olan medya tipi seçilir.&lt;/li&gt;
&lt;li&gt;Her bir operatör için custom mesaj eklemek de mümkün. Ancak Liman'a bildirim atarken gönderilen isteğin body'sinde mesaj içeriği de belirtildiği için mesaj içeriğini medya tipinin script kısmında javascript ile belirleyerek daha dinamik mesajlar ('şu kadar saat önce' gibi) elde edilebillir.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Recovery operations&lt;/em&gt; kısmında ise yine aynı mantık ile problem çözüldüğünde bu aksiyonun tetiklenmesi sağlanabilir.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Zabbix'te &lt;strong&gt;Users / Users&lt;/strong&gt; sayfasına actionları oluştururken seçilen zabbix user'ı seçilir ve &lt;strong&gt;Media&lt;/strong&gt; sekmesine gelinir.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Media&lt;/em&gt; alanına bir media eklenir;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Type&lt;/em&gt; kısmında, daha önce oluşturmuş olan medya tipi seçilir.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Send to&lt;/em&gt; kısmına herhangi bir şey yazılabilir.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Use if severity&lt;/em&gt; kısmında bu kullanıcı için, seçili olan severity'lere sahip problemlerin actionları tetiklenir.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Update&lt;/em&gt;'e tıklanarak kaydedilir.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tutorial</category>
      <category>devops</category>
      <category>monitoring</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
