28 Temmuz 2016 Perşembe

Elastalert Kural Yapılandırma Dosyası

Elasticsearch, Logstash ve Kibana giderek artan log ve verileri yönetmek için kullanılıyor. Kibana görselleştirme için iyi fakat biz verilerdeki değişikliklerde, tutarsızlıklarda uyarıcı bir araca ihtiyac duyuyoruz.


Elasticsearch’deki verilerin belli desenlerle eşleştiğinde uyarılmasını istiyorsak, Elastalert bu işi yapmak için kullanılan bir araçtır.

İki türlü birleşeni birleştirerek çalıştırılır; kural tipleri ve alertler. Elasticsearch belirlenen kural tipine göre periyodik olarak sorgulanır. Eşleşme olduğunda uyarı gönderilir.

Elastalert de çok sayıda kural türü bulunur:

  • Belli bir zamanda olayların eşleşmesi ( frequency )
  • Eşleşme hacminin artması veya azalması ( spike )
  • Belli zaman da eşleşmeler daha az olduğunda ( flatline )
  • Belli bir alan liste ile eşleştiğinde( whitelist ya da blacklist )
  • Verilmiş herhangi bir filtre ile eşleştiğinde ( any )
  • Bir alan bir süre içinde iki farklı değerlere sahip olduğunda ( change )

Alert türler şimdilik bunlara destek vermektedir:

  • Command
  • Email
  • JIRA
  • OpsGenie
  • SNS
  • HipChat
  • Slack
  • Telegram
  • Debug ( Konsola eşleşen loglarla ilgili bilgileri dönderir. )


Kural Yapılandırması


Varsayılan olarak çalışma prensibi her dosya sonu .yaml ile bitmeli, rule dizininin içinde olmalıdır.

Gerekli Alanlar

es_host: Kuralın sorgulanacağı makine adı(Elasticserch makine adı).

es_port:  es_host a ulaşmak için kullanılan port.

index: Arama yapılacak dizin adıdır. Özel karakterleri burada kullanabiliriz. Örneğin index: my-index-* , my-index-2014-10-5 ile eşleşir. Format string içeriği %Y yıl, %m ay, %d gün içerir. Bunu kullanmak için use_strftime_index true olmalıdır.

name: Kural adı, eşsiz olmalıdır.

type: Kullanmak için seçtiğimiz kural adını yazıyoruz.

alert: Kullanmak istediğimiz alert tiplerini yazıyoruz.

Şeçenek Olan Alanlar

es_username , es_password Elasticsearch makinesi ile otomatik bağlantı sağlamak için kullanılır.

es_send_get_body_as : Elasticsearch sorgusu için kullanılan metod. Varsayılan olarak GET’dir.

use_strftime_index: Eğer True ise ElastAlert index için tarih zaman kullanılır.

aggregation: Çoklu eşleşmelerde bir alert göndermek için kullanılır. Eşleşmeyi bulduğunda aggregation periyodunu tamamlamayı bekler. Cron sözdizimini kullanır, hakkında. ( hours, minute, days )

buffer_time: config.yaml da genel ayarlanmış tanımlamaların üzerine yazmak için kullanılır. (Formatı zamandır.)

max_query_size: Tek sorguda Elasticsearch de indirilebilecek maksimum dosya sayısı. (int) Varsayılan olarak genel max_query_size’dır(10.000) )
use_kibana4_dashboard: Kibana4 dashboard’a bağlamak için kullanılır. Örneğin “ https://kibana.example.com/#/dashboard/My-Dashboard” gibi.
timeframe: Belli kural türlerinde minimum süre geçmesi gerektirir onu belirler.
filter: Sorguları filtrelemek için kullanılan alan.

Örnek rule.yaml

es_host: elk-elasticsearch
es_port: 9200
name: log_error
type: frequency
index: logstash-*
# link to a kibana dashboard with correct time settings
use_kibana4_dashboard:"http://elk-elasticsearch:5601/app/kibana#/dashboard/monitoring dashboard"
num_events: 1
max_query_size: 10000
run_every:
 minutes: 1
buffer_time:
 minutes: 15
timeframe:
 minutes: 1
filter:
 - query:
     query_string:
         query: "level:ERROR"
alert:
 - "debug"
 - "email"
email:
 - "error@example.net"


22 Temmuz 2016 Cuma

Jhipster-console ile Elastalert Yapılandırması

Elastalert genel bir yapılandırma dosyasına sahiptir(config.yaml). Elastalert yapılandırma dosyaları YAML dosyasıdır.


*Kurallar içinde yapılandırma dosyası oluşturacağımızdan hepsini bir dizinde toplamak kolaylık olabilir.

Örnek config.yaml 

# The unit can be anything from weeks to seconds
run_every:
  minutes: 1

# ElastAlert will buffer results from the most recent
# period of time, in case some log sources are not in real time
buffer_time:
  minutes: 5

# The elasticsearch hostname for metadata writeback
# Note that every rule can have it's own elasticsearch host
es_host: elk-elasticsearch

# The elasticsearch port
es_port: 9200

# Optional URL prefix for elasticsearch
#es_url_prefix: elasticsearch

# Connect with SSL to elasticsearch
use_ssl: False

# Option basic-auth username and password for elasticsearch
#es_username: someusername
#es_password: somepassword

# The index on es_host which is used for metadata storage
# This can be a unmapped index, but it is recommended that you run
# elastalert-create-index to set a mapping
writeback_index: elastalert_status

# If an alert fails for some reason, ElastAlert will retry
# sending the alert until this time period has elapsed
alert_time_limit:
  days: 1


Örnek Yapılandırma dosyasında var olan seçenek dışında kullanacağınız yapılandırma alanları da vardır:

rules_folder: ElastAlertden gelen kural yapılandırma dosyalarının yolu yazılır.

run_every: Elastalertin Elasticserch sorgu sıklığıdır. Verilen kural çalıştığında zamanı tutar ve şimdiki zamandan itibaren periyodik olarak sorgular. Bu alanın biçimi "minute"

buffer_time: Her sorgu çalıştırıldığında geriye doğru uzanan sorgu penceresi boyutu vardır. Bu değer  use_count_query veya  use_terms_query true olarak ayarlandığında göz ardı edilir.

es_host: Elastalert'in aramalarıyla ilgili metadataları kaydeden Elasticserch'un makine adıdır.

es_port: es_host makinesine erişmek için kullanılan porttur.

use_ssl: es_host bağlanırken SSL kullanmak isteyip istemediğimizi değerine 'True',  'False' vererek ayarlayabiliriz.

es_hostname: es_host a bağlanırken otomatik bağlanmak için kullanıcı adı

es_password: es_host a bağlanırken otomatik bağlanmak için parola

es_url_prefix: Elasticserch endpoint için url alan kodu.

es_send_get_body_as: Elasticsearh sorgulaması için metot. GET, POST  ve source olabilir. Varsayılan Get dir.

es_counn_timeout: Bağlanma ve es_host'u okumak için zaman aşımı ayrlar. Varsayılan olarak 10 dur.

scan_subdirectories: Ayar yapılmadığında veya elastalert kural dizinini yeniden indirmeyeceginde. True veya False Varsayılan olarak True.

 writeback_index: Elasticsearch de kaydedilen verileri indekslemek için kullanılır. 3 farklı tipi vardır.
1)elastalert_status
2)elastalert
3)elastalert_error

max_query_size: Tekli sorgular için elasticserch de indirilen maksimum dosya sayısı. Varsayılan olarak 10,000

scroll_keepalive :Maksimum sürede akan bağlantılar anlık yakalanmalı. Fakat sonuçların bitirilmesini sağlamak için dikkatli değer vermeliyiz. Yüksek değer verdiğimiz zaman elasticserch kaynaklarını kötüye kullanır.(Format time units)

max_aggregation: Toplu yakalama için maksimum sayı. Bir kural da aggregation ayarlanmış ise belli zaman diliminde meydana gelen tüm alertlerin hepsi birlikte gönderilir. Varsayılan olarak 10.000

old_query_limit: Elastalert için sorgular arasındaki maksimum sürede en son çalıştırılan sorguyu başlatır. Varsayılan olarak one week

disable_rules_on_error: Eğer True ise, Elastalert yakalanmayan exception kurallarını yok sayar. Varsayılan olarak True.


notify_email: email bildirimi göndermek için. Varsayılan olarak True dur.


notify_email: Bildirim göndermek istediği email ya da email listesi. Varsayılan olark email göndermez.
     options:
          from_addr: Adres email bildirimlerinde  başlık kullanır. Varsayılan değer  'Elastalert' dir.
          stmp_host: Email bildirimi göndermek için kullanılan stmp ana makie adı.
          email_replay_to: Varsayılan olarak alıcı adresidir.



Konteynırdan elastalerti çalıştırmak için elastalert.py dosyasını çalıştırmanız gerekir. Çalıştırırken sizden config dosyasını isteyecektir. config.yaml dosyasının yolunu --config parametresiyle belirtmek gerekir.


# python /opt/elastalert/elastalert/elastalert.py  --config   opt/elastalert/config.yaml

19 Temmuz 2016 Salı

JHipster Konsol

Bir önceki yazılarımda ELK'dan ve Kibanadan bahsetmiştim. Bu yazımda kısaca Jhipster neymiş diye bahsedeyim istedim.

 Jhipster ile kolay bir şekilde databasedeki tabloları ve bu tablolar arasındaki ilişkileri belirliyebiliyoruz. Aynı zamanda Jhipster güncelleme yönetmek ve uygulama paketlemek için gerekli araçları sağlar. Jhipster logları izlemek için kolaylık sağlar. ".yml" dosyasında ilgili özellikleri basitçe ayarlanabilir ve bir izleme platformu kullanılarak gerçek zamanlı analiz edilebilir. Jhipster kurulumu için bilgisayarınız da maven, npm ve java bulunmalıdır.

Jhipster izleme platformu olarak Jhipster-console kullanır. Jhipster-console ELK'nın üstüne özellikler ekleyen docker tabanlı bir projedir.


JHipster Konsolu logları iletme

Jhipster-console günlüklerini iletmek için logstash yapılandırmasını yapmak gerekir, application-dev.yml ya da application-prod.yml dosyasını

jhipster:
    logging:
        logstash:
            enabled: true
            host: localhost
            port: 5000
            queueSize: 512


Etkin metric loglarını Jhipster uygulamasına bildirmek için metrics monitoring yapılandırması yapıyoruz:

jhipster:
    metrics:
        logs:
            enabled: true
         reportFrequency: 60 # seconds

Jhipster-Console Yüklemek:

Zaten var olan bir docker image var ise o kullanılır. Aşağıdaki komut ile jhipster konsolunun docker-compose dosyasını alabiliriz:

curl -O https://raw.githubusercontent.com/jhipster/jhipster-console/master/bootstrap/docker-compose.yml
 Konteynır kurup başlatmak için:

docker-compose up -d

Her seferde Elasticsearch, Logstash, Kibana ve ElastAlert başlayacaktır. Daha sonra  JHipster Konsolu erişmek mümkün olacak http:// localhost: 5601.

Her şeyi durdurmak için:

docker-compose stop

Jhipster-Console kullanımı Kibana kullamına benzemektedir.

17 Temmuz 2016 Pazar

Kibana Dashboards Kullanımı ve Görselleştirme

Kibana Arayüz

Kibana arayüzü dört ana bölüme ayrılır:
  • Discover
  • Visualize
  • Dashboard
  • Settings

 Kibana Discover

  İlk Kibana bağlandığınızda, Discover sayfası alınacaktır. Varsayılan olarak, bu sayfa ELK Stack'nın en son alınan logların tümünü gösterecektir. Burada, filtreleme ve belirli log iletileri bulunur.

 Search Bar:  Doğrudan ana navigasyon menüsü altında uzmanlık alanları veya tüm mesajları aramak için bu kullabılır.

 Time Filter:  Üst-Sağ (saat simgesi). Çeşitli mutlak zaman aralıkları dayalı logları filtrelemek için kullanılır. En son ne zamandan başlayarak logların gösterilmesini ayarlayabiliriz.

 Field Selector: Solda, Search bar altında. Seçilmiş alan değişikliklerinin log görünüm menüsü görüntüler.

 Date Histogram: Arama çubuğunun altındaki grafik bar.  Varsayılan olarak, bu arama ve zaman filtre tarafından eşleşen tüm logların sayımı, zamana karşı (x-ekseni), göstermektedir. Zaman filtresini daraltmak için cubukları tıklayın ya da tıklayıp sürükleyin.

 Log View: Sağ altta. Bireysel log iletileri bakmak ve alanlarına göre filtrelenmiş log verilerini görüntülemek için kullanılır.

 Search Bar da yaptığınız aramaların sonuçlarının varsayılan olarak "Son 15 dakika" ile sınırlı olduğunu unutmayın. Eğer herhangi bir sonuç almıyorsanız, belirtilen süre içinde oluşturulan arama sorgusu neticesinde log var mı emin olun.

  
Arama Sözdizimi Kuralları 


  Arama log iletileri belirli bir alt kümesini seçmek için kolay ve güçlü bir yol sağlar. Arama sözdizimi oldukça kendini açıklayıcı ve bağlaçlar, joker, ve saha filtreleme sağlar. Örneğin, Google Chrome kullanıcıları tarafından oluşturulan Nginx erişim logları bulmak istiyorsanız, type: "nginx-erişim" AND agent: "crome" yazarak arama yapabilirsiniz.
  Arama yaptıktan sonra Save düğmesine basıp kaydedebilirsiniz. Kaydedilen aramalar Load Saved Search simgesini tıklayarak istediğiniz zaman açabilir ve görselleştirme oluştururken onlar kullanılabilir.



 
Kibana Visualize

 Kibana Visualize sayfası kendi özel görselleştirmelerinizi görebilceğiniz, oluşturabilceğiniz, değiştirebilceğiniz sayfadır. Dikey bar ve ve Veri tabloları (bir harita üzerinde veri görüntülemek için) Çini haritalara Pie çizelgeleri arasında değişen görsel birkaç farklı türleri vardır. Görsel öğeler de Kibana örneğine erişimi olan diğer kullanıcılarla paylaşılabilir. Bu Kibana görselleştirme ilk kez kullanacak iseniz, ilerlemeden önce alan listesini yeniden yüklemeniz gerekir. Bunu yapmak için Kibana Settings bölümünde, Reload Field Data alt bölümünde kaplıdır.

Dikey Bar Grafik Oluşturma

 Öncelikle bir görselleştirme oluşturmak için  Visualize menu öğesini tıklayın. İstediğiniz görselleştirme hangi tip karar verin ve onu seçin. Bir dikey çubuk grafik yaratacaktır, bu iyi bir başlangıç noktasıdır. Şimdi bir arama kaynağını seçmeniz gerekir ya da yeni bir arama oluşturmak veya kaydedilmiş bir aramayı kullanabilirsiniz.
  
 İlk başta, önizleme grafiği, sağ tarafta, (arama loglarının bulunduğunu varsayarsak) bir katı bar olacaktır çünkü "Count" için sadece bir Y-ekseni oluşur. Yani, sadece belirtilen arama sorgusu ile bulunan logların sayısını gösteriyor. 

 Görselleştirmeyi daha kullanışlı hale getirmek için buckets ekleyin. İlk olarak, bir X ekseni bucket ekleyin, sonra Add Sub Aggregation menüsünü tıklayın ve "Date Histogram" seçeneğini seçin. Eğer Apply düğmesini tıklarsanız, tek çubuk X ekseni boyunca çeşitli barlar bölünür. Şimdi Count zaman aralıklarında bölünmüş çoklu bar olarak görüntülenir. 

 Grafik biraz daha ilginç hale getirmek için isterseniz, Add Sub Aggregation  düğmesine tıklayabilirsiniz.  Split Bars bucket türünü seçin. Daha sonra Sub Aggregation drop-down menu  tıklayın ve "Significant Terms" seçeneğini seçin. Sonra Field drop-down menu seçip yapıp boyutunu girdikten sonra Apply düğmesine basın ve yeni grafik oluşsun. Görselleştirmeyi kaydetmek için hazır olduğunuzda üste Save Visualize düğmesini tıklıyoruz, isim girip Save düğmesine basıyoruz.

 Biz bir dashboard nasıl oluşturulacağını bölüme devam etmeden önce, en az bir tane daha görselleştirme oluşturmanız gerekir. Deneyin ve çeşitli görselleştirme türlerini keşfedin. 


Kibana Dashboard 

Kibana Dashboard sayfası kendi özel panoları görebileceğiniz, oluşturabileceğiniz, değiştirebileceğiniz sayfadır. Bir pano ile, bir arama sorgusu sağlayarak veya görselleştirme elemanları tıklayarak filtreleri seçerek, tek bir sayfa üzerine birden fazla görselleştirme birleştirebilirsiniz. Loglarda bir bakış elde etmek istediğinizde, çeşitli loglar arasında bağlantı kurmak istediğinizde panolar yararlıdır.

Dashboard Oluşturma

 Öncelikle bir pano oluşturmak için  Dashboard menu öğesini tıklayın.
Daha önce bir pano oluşturmadıysanız, çoğunlukla boş bir sayfa göreceksiniz. "Başlamak için hazır mısınız?" diyor. Eğer bu ekranı görmezseniz, oraya (arama çubuğunun sağında) New Dashboard simgesine basın. Ekrana çıkan visualize filtrelerinden seçim yapabilirsiniz.


Dashboard Kullanımı

Dashboard arama sorgusu girildiğinde daha fazla filtreleme yapar, zaman filtresini değiştirir ya da görselleştirme içindeki unsurları tıklayarak daha fazla filtre edilir. Histograma belirli bir renk segmenti tıklarsanız filtreleme sağlayacaktır.



Kibana Settings

Kibana Ayarları sayfası varsayılan değerler veya dizin desen gibi çeşitli şeyleri değiştirmenizi sağlar.

Reload Field Data 

 Yeni bir logstash verisi ekleme istediğinizde, eğer filtrelemeye yeni bir log türü ekleyecekseniz, yeni reload field listesine ihtiyacınız vardır. 


Edit Save Objects

Nesneler bölümü, düzenlemek, görüntülemek ve kaydedilmiş panoları, aramalar ve görselerden herhangi birini silmenize olanak verir.


14 Temmuz 2016 Perşembe

ELK Stack Kurulumu

  ELK Stack Elasticsearch, Logstash ve Kibana oluşmaktadır. Bunlar log analizinde en sık kullanılan üç farklı özgür yazılım ürünüdür. ELK stack, blazing-fast analizler büyüdükçe büyük verilerdeki analizi ve hızlı aramayı kolaylaştırır.

  Logstash toplama ayrıştırma ve ileride kullanılmak üzere logları depolamak için açık kaynak kodlu bir araçtır. Kibana arama ve Logstash endeksli olan logları görüntülemek için kullanılabilecek bir web arayüzü. Elasticsearch bu araçların  indeksli log depolaması için kullanılır.
  
  Kurulum yaparken filebeat ve nginx kurulumunu da yapıcaz. Filebeat verileri nakletmek için kullanılan bir platformdur. Log dosyalarında gerçek zamanlı analiz sağlar. Nginx aslen mail.ru isimli rus mail sunucusu sitesi için geliştirilen hafif, stabil, hızlı bir mail istemcisi olarak kodlanan daha sonraları geliştirilerek tüm sunucular için uygun hale getirilen bir web sunucusudur.

 GEREKLİLİKLER

 CPU, RAM ve ELK sunucu için depolama miktarı, toplamak istediğiniz log hacmine bağlıdır.

 JAVA KURULUMU 

 Depoya java 8 yüklüyoruz. Bunun nedeni Elasticsearh'un bunu tavsiye etmesi:

$ sudo add-apt-repository -y ppa:webupd8team/java

Depoyu güncelliyoruz:

$ sudo apt-get update

Yüklüyoruz(Yükleme yaparken lisans sözleşmesi için bir ekran çıkacaktır.):

$ sudo apt-get -y install oracle-java8-installer
  
 ELASTİCSEARCH KURULUMU

 Elasticsearch Elastik paket kaynak listesini ekleyerek bir paket yöneticisi ile kurulabilir:

$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Elasticsearch kaynak listesi oluşturma:
 

$ echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list 
Veritabanını güncellemek:

$ sudo apt-get update

 

Yüklemek:

$ sudo apt-get -y install elasticsearch

Elasticsearch dışardan erişimi kısıtlamak istiyoruz. Yapılandırma dosyasındaki network.host kısmını değiştiriyoruz. Böylece http apı üzerinden gelen veri okuyamaz:
 
 
$ sudo vi /etc/elasticsearch/elasticsearch.yml
 

   network.host: localhost 
  
Elasticsearch yeniden başlat:
 

$ sudo service elasticsearch restart
 

Bilgisayar açılırken çalışması için init in altında bilgisayar açılırken ve kapanırken çalışacak olan rc.x dosyalarına ekliyoruz:
 

$ sudo update-rc.d elasticsearch defaults 95 10

Çalışıp çalışmadıgını test etmek için aşağıdaki komutu kullanabilirsiniz. Çıktısı da bu çıktıya benzer olmalıdır:
 *Elasticsearch varsayılan port olarak 9200 kullanır. 
 
















KİBANA KURULUMU

  Elasticsearch paket kaynak listesini eklediğimiz için bir paket yöneticisi ile kurulum yapabiliyoruz:

$ echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.4.x.list
 

Paket database güncellemek:
 

$ sudo apt-get update 
Yükleme:
 

$ sudo apt-get -y install kibana
 

Kibana Yapılandırması
 

$ sudo vi /opt/kibana/config/kibana.yml
  

  server.host: "localhost" 

Bilgisayar açılırken çalışması için:

$ sudo update-rc.d kibana defaults 96 9

Kibanayı başlat:

$ sudo service kibana start


NGINX KURULUMU

Eğer zaten kullanmak istediğiniz bir Nginx örneği varsa, bunun yerine kullanabilirsiniz.

Yüklemek :
 

$ sudo apt-get install nginx apache2-utils
 

Kullanıcı oluşturmak için(Kibaadmin yerine başka bir kullanıcı adı kullanmalısınız sizden yeni parola isteyecek bunu girmelisiniz.):
 

$ sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin
 

Nignx Yapılandırma 

Yapılandırma dosyasının içeriğini silip asağıdaki server blogunu ekleyiniz. serve_name sizin serverınızla eşleşmelidir:

$ sudo vi /etc/nginx/sites-available/default

    server {
        listen 80;

        server_name example.com;

        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/htpasswd.users;

        location / {
            proxy_pass http://localhost:5601;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;       
        }
    }
Nginx arka uç istemciden sunucuya upgrade isteği göndermek için, upgrade ve connection başlıkları açıkça ayarlanmalıdır:
Varsayılan olarak, Nginx vekalet istekleri, "Host" ve "Bağlantı" iki başlık alanları tanımlıyor. "HOST" $ proxy_host değişkeni ayarlanır. 5601: Bu localhost da dinlediğini Kibana uygulamasına, sunucunuzun HTTP trafiği yönlendirmek için Nginx yapılandırır. Ayrıca, Nginx Daha önce yarattığı, htpasswd.users dosyasını kullanır ve temel kimlik doğrulaması gerektirir.


Yapılandırmayı değiştirdikten sonra tekrar başlatıyoruz:

$ sudo service nginx restart

LOGSTASH KURULUMU

Logstash paketi Elasticsearch aynı deposundan mevcuttur bu yüzden Logstash kaynak listesini oluşturmaya izin vardır:

$ echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list
 

Güncelleme:
 

$ sudo apt-get update
 

Yükleme:
 

$ sudo apt-get install logstash 

Logtash Yapılandırması

Logstash yapılandırma dosyaları JSON biçiminde ve /etc/logstash/conf.d dizininin altında bulunmaktadır. Girişler, filtreler ve çıkışlar olarak yapılandırma üç bölümden oluşmaktadır.
/etc nin altında dizini ve dosyaları oluşturun:
 

$ sudo vi /etc/logstash/conf.d/02-beats-input.conf
 
 
//Logstash'ın girdi olarak 5044.portu kullanması için yapılandırıyoruz.

    input {
      beats {
        port => 5044
        }
    }
 

$ sudo vi /etc/logstash/conf.d/10-syslog-filter.conf
   

 filter {
      if [type] == "syslog" {
        grok {
          match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
          add_field => [ "received_at", "%{@timestamp}" ]
          add_field => [ "received_from", "%{host}" ]
        }
        syslog_pri { }
        date {
          match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
        }
      }
    }


Kaydet ve çık. Bu filtre "syslog" tipi olarak etiketlenmiş logları arar.
 

$ sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        sniffing => true
        manage_template => false
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
        document_type => "%{[@metadata][type]}"
      }
    }

Eğer Filebeat girişini kullanan diğer uygulamalar için filtreler eklemek istiyorsanız, dosyaları isimlerinden emin olun. 

Yapılandırmaları test edip tekrar başlatıyoruz ve bilgisayar açılırken çalışması için rc.x dosyalarına ekliyoruz:

$ sudo service logstash configtest
 

$ sudo service logstash restart

$ sudo update-rc.d logstash defaults 96 9


KİBANA DASHBOARDS YÜKLEME

ilk olarak, örnek dashboards arşivini home dizinine yüklüyoruz:


$ cd ~
$ curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip
 

Kurulu değilse unzip kuruyoruz:
 

$ sudo apt-get -y install unzip 
Arşivi açıyoruz:
 

$ unzip beats-dashboards-*.zip
 

Ve örnek dashboards yüklüyoruz:

$ cd beats-dashboards-*
$ ./load.sh

ELASTICSEARCH için FILEBEAT INDEX TEMPLATE YUKLEME
 

 Indek şablon elasticsearch yapılandırır. Filebeat dosyalarını akıllıca analiz edilmiş yollarlar.
 

Ev dizinine filebeat index templatelerini yüklüyoruz:

$ curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
 

Şablonun doğru yerleştirilip yerleştirilmediğini görmek için :

$ curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json


Bu komutun çıktısı olmalıdır:
{
  "acknowledged" : true
}


FILEBEAT PAKET YUKLEMESİ

$ echo "deb https://packages.elastic.co/beats/apt stable main" |  sudo tee -a /etc/apt/sources.list.d/beats.list
 

$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
 

$ sudo apt-get update

$ sudo apt-get install filebeat

Filebeat Yapılandırması

Elk ile bağlanmak için filebeat yapılandırmalıyız. Yapılandırma dosyası yapısında girinti önemlidir.
 
$ sudo vim /etc/filebeat/filebeat.yml

filebeat:
  prospectors:
    -
      paths:
        - /var/log/auth.log
      input_type: log
      document_type: syslog
    -  

      paths:
        - /var/log/syslog
      input_type: log
      document_type: syslog


output:
  logstash:
    hosts: ["localhost:5044"]
shipper:
logging:

  files:
    rotateeverybytes: 10485760 # = 10MB
 

*Logstash'e istediğimiz log dosyalarının yollarını prospectors blogu arasına yazıyoruz. Log dosyaları için ayrı ayrı path blogu tanımlıyoruz ve  "-" işareti ile ayırıyoruz.

$ sudo service filebeat restart


$ sudo update-rc.d filebeat defaults 95 10

Filebeat yüklenip yüklenmediğini test etmek için:

$ curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Benzer bir çıktı almalısınız:

...
{
      "_index" : "filebeat-2016.07.11",
      "_type" : "syslog",
      "_id" : "AVXkMGSe3m72K1jJCk9Q",
      "_score" : 1.0,
      "_source" : {
        "message" : "Jul 11 11:17:02 kripton-Aspire-E1-531 ..
.

}
... 


Kibanaya bağlanabilirsiniz artık. 

  Eğer ELK  ile Filebeat farklı sunucularda ise ssl certifakası kullanmalısınız. Sertifika ELK server kimliği dogrulamak için Filebeat tarafından kulanılır. Daha sonra da Logstash (02-beats-input.conf dosyasında beat blogunun içine ) ve Filebeat (tls: -certificate_authorities:["PATH"]) yapılandırmasında uygun yerlere sertifika bilgilerin eklemelisiniz.

30 Mart 2016 Çarşamba

Özgür Yazılım ve Linux Günleri

  Bu yıl on beşincisi duzenlenen Özgür Yazılım ve Linux Günleri İstanbul Bilgi Üniversitesi Santral Kampüsü'nde 26-27 Mart tarihinde gerçekleşti.

 Ben İstanbul'a bir gün önce gitmeme rağmen sağlık sorunları nedeniyle malesef ilk gün etkinliğe katılamadım ve Kriptonlu insanlarla bu yüzden daha az zaman geçirme fırsatım oldu. Etkinliğe ikinci gün katıldım.

 İlk oturum da PisiLinux (Varol Maksutoğlu, Mehmet Sütcü)  oturumuna katıldım. PisiLinux'un ortaya çıkma sürecini ve neden bu işi yaptıklarından bahsettiler. Bu oturum da şöyle bir konuşma geçti PisiLinux geliştiricileri aralarında hiç kadın geliştiricinin olmamasından ve kadınların neden böyle şeyler yapmadığından yakındılar :) Açıkcası oturumun en çok sevdiğim kısımı bu konu üzerine dönen sohbet ortamı oldu.

 İkinci oturum da +Necdet Yücel ve +Kaan Ozdincer Yine Yeniden Özgür Yazılım oturumuna katıldım. Özgür Yazılımın temellerinden bahsedildi. Bazen Özgür Yazılım felsefesini unutup bazı şeyler için Özgürlükten vazgeçtiğimizden bahsedildi. Bence özgür yazılım felsefesini benimseyen herkesin dinlemesi gereken ve gerçekten dikkat etmesi gereken mevzulardı.



 Seminerin sonunda çok konuşmaya vakit kalmasa da Kadınlar çiçek midir? sorusu aklımda kaldı. Keşke biraz daha vaktimiz olsaydı da biz çiçek miyiz sorusunu biraz tartışsaydık :)


   Öğleden sonra iki oturuma katıldım "Django Girls Tanışma Toplantısı, Kadın Yazılımcı Tanışma Toplantısı" ve "Türkiye’de Hackathon Kültürü ve Özgür Hackathon’lar" (Halil Kaya, Fatih Kadır Akın)

   En son oturum da Konuşmacısı olduğum Çalışma Toplantısı: LibreOffice Geliştirme ve Yaygınlaştırma oturumuydu. Çanakkale ekibi olarak( +aybüke özdemir , +Berk Güreken , +Kerem Hallaç, +İrem Şendur, +Burçin Akalın, +Kader Tarlan , +Gülşah Köse , +Ahmet Can KEPENEK , +yeliz taneroğlu , +Feyza Yavuz )Libreoffice ile ilgili bu zamana kadar neler yaptığımızdan bahsettik. Libreoffice yaygınlaştırmak için neler yapabileceğimiz hakkında fikirleri dinledik.


  Daha önceki Özgür Yazılım ve Linux Günlerinin heyecanını ve enerjisini alamasamda yine de benim için güzel bir haftasonu oldu.







Özgürlüklerinizden vazgeçmediğiniz günlere :)

10 Şubat 2016 Çarşamba

Libreoffice Çalışmalarım


    Bir kaç yazımda da belirttiğim gibi bu yıl Libreoffice katkı vermek için çalışıyorum. Bugün de uzun zamandır blog yazısını yazmak istediğim ve kabulunu beklediğim yamamın " It has been merged to LibreOffice." yazan mailiyle uyandım :)


  Ben ilk yamam kabul edildikten sonra Libreoffice Math aracı ile ilgili çalıştım. Normalde integral işareti varsayılan bir boyuttaydı. İşlemleri çoğaldıkça integral işaretinin sabit boyutta kalması görüntü olarak biraz hoş olmuyordu. İstenilen şey integral işaretinin yazılan formüle göre kendiliğinden boyutlanmasıydı. Yaptığım değişiklik sayesinde toplam ve çarpım formülü de kendiliğinden boyutlanıyor.


  Değişiklikleri yaptım ve yamamı yolladım. Böyle yazınca çok kolay olmuş gibi geldi size de dimi? O arada kan, ter, gözyaşı olan bir kaç ay var :) Bir de jenkinsde üç platformda derlendikten sonra heyecanlı bir bekleyiş :)


Önceki Hali





 
Sonraki Hali





Size daha bir çok güzel haber vereceğim :)