Bir Logstash işlem hattı yapılandırma dosyası, verilerin bir işlem hattından nasıl geçtiğini tanımlar. Her dosya; verinin nereden geldiğini, nasıl dönüştürüldüğünü ve nereye gittiğini kontrol eden üç eklenti türüne karşılık gelen input, filter ve output olmak üzere üç bölümden oluşur.
Açık kaynaklı Logstash yapılandırma biçimi için bkz. Structure of a Config File.
Yapılandırma dosyası yapısı
Her bölüm bir veya daha fazla eklenti tanımı içerir:
# Use comments to describe parts of your configuration.
input {
...
}
filter {
...
}
output {
...
}
input ve output bölümleri zorunludur. filter bölümü isteğe bağlıdır; yalnızca veriyi çıktıya ulaşmadan önce dönüştürmeniz veya ön işleme tabi tutmanız gerektiğinde ekleyin.
Eklenti yürütme sırası: Birden fazla filtre eklentisi tanımlarsanız Logstash bunları yapılandırma dosyasında göründükleri sırayla uygular.
Yapılandırmanızda last_run_metadata_path gibi bir parametre varsa bunu Alibaba Cloud Logstash içindeki bir yola ayarlayın. Arka uç, test amacıyla kullanabileceğiniz /ssd/1/<Logstash cluster ID>/logstash/data/ biçiminde bir yol sağlar. Sistem bu yoldaki verileri silmez; diskinizde yeterli alan olduğundan emin olun. Bir yol belirttiğinizde Logstash otomatik olarak orada bir dosya oluşturur ancak dosya içeriğini görüntüleyemezsiniz.
JDBC sürücüsü kullanan bir işlem hattı yapılandırıyorsanız güvenlik amacıyla jdbc_connection_string parametresine allowLoadLocalInfile=false&autoDeserialize=false ifadesini ekleyin. Bu parametreleri eklemezseniz yapılandırma dosyasını eklediğinizde sistem denetim hatası döndürür.
jdbc_connection_string => "jdbc:mysql://xxx.drds.aliyuncs.com:3306/<Database name>?allowLoadLocalInfile=false&autoDeserialize=false"
Bu yapılandırma dosyasını bir işlem hattında kullanmak için konsolun işlem hattı yönetimi sayfasından dosyaya başvurun. Daha fazla bilgi için bkz. Use configuration files to manage pipelines.
Eklenti yapılandırması
Her eklenti tanımı, eklenti adının ardından özelliklerinden oluşur. Aşağıdaki örnek, input bölümünde her biri farklı bir bağlantı noktası ve ana bilgisayarda dinleyen iki beats eklentisi tanımlar:
input {
beats {
port => 8000
host => "118.11.xx.xx"
}
beats {
port => 8001
host => "192.168.xx.xx"
}
}
Kullanılabilir özellikler eklenti türüne göre değişir. Tam liste için Elastic belgelerine bakın:
Değer türleri
Eklenti özellikleri aşağıdaki değer türlerini kabul eder.
Dizi
Önerilmez. Bunun yerine String türünü kullanın veya listelerde tür denetimini etkinleştirmek için :list => true seçeneğini belirtin. Diziler yalnızca tür denetimi gerektirmeyen karma tabloları veya karışık türdeki listeleri işlemeniz gerektiğinde yararlıdır.
users => [ {id => 1, name => bob}, {id => 2, name => jane} ]
Liste
Liste bağımsız bir tür değildir; bir özellik niteliğidir. Tür denetimiyle birlikte birden çok değere izin vermek için bir parametreyi :list => true ile bildirin. Listedeki herhangi bir değer geçersizse (örneğin geçersiz bir URL) olay işleme başarısız olur.
path => [ "/var/log/messages", "/var/log/*.log" ]
uris => [ "http://elastic.co", "http://example.net" ]
Boolean
Boolean değerleri tırnak işareti olmadan true veya false olmalıdır.
ssl_enable => true
Byte
Byte değeri, bayt sayısını temsil eden bir dizedir. Hem ondalık birimler (k M G T P E Z Y, taban 1000) hem de ikili birimler (Ki Mi Gi Ti Pi Ei Zi Yi, taban 1024) desteklenir. Değer büyük/küçük harfe duyarlı değildir ve sayı ile birim arasında boşluk bırakılmasına izin verir. Birimi atlarsanız tam sayı bayt sayısı olarak yorumlanır.
my_bytes => "1113" # 1113 bytes
my_bytes => "10MiB" # 10485760 bytes
my_bytes => "100kib" # 102400 bytes
my_bytes => "180 mb" # 180000000 bytes
Codec
Codec, verileri kodlayan veya çözümleyen bir eklentidir. Codecs hem input hem de output eklentilerinde çalışır:
Bir input codec, veri işlem hattına girmeden önce onu çözer.
Bir output codec, veri işlem hattından çıkmadan önce onu kodlar.
Codec kullanmak ayrı bir filter eklentisi gereksinimini ortadan kaldırır. Kullanılabilir codec'ler için bkz. Codec plug-ins.
codec => "json"
Hash
Hash değeri, "field1" => "value1" biçimindeki anahtar-değer çiftleri koleksiyonudur.
match => {
"field1" => "value1"
"field2" => "value2"
...
}
# Or as a single line. No commas between entries:
match => { "field1" => "value1" "field2" => "value2" }
Numeric
Numeric değerler kayan noktalı sayılar veya tam sayılar olmalıdır.
port => 33
Password
Password, asla günlüklenmeyen veya görüntülenmeyen tek değerli bir dizedir.
my_password => "password"
URI
Bir URI, tam bir URL'den foobar gibi basit bir tanımlayıcıya kadar değişebilir. URI bir parola içeriyorsa — örneğin http://user:paas@example.net — parola asla günlüklenmez veya görüntülenmez.
my_uri => "http://foo:bar@example.net"
Path
Path değeri, geçerli bir işletim sistemi dosya yolunu temsil eden bir dizedir.
my_path => "/tmp/logstash"
String
String değeri, çift tırnak (") veya tek tırnak (') içine alınmış tek bir karakter dizisidir.
Kaçış dizileri
Kaçış dizileri varsayılan olarak devre dışıdır. Bunları etkinleştirmek için logstash.yml dosyasına aşağıdakileri ekleyin:
config.support_escapes: true
Kaçış dizileri etkinleştirildiğinde tırnak içine alınmış dizeler (hem tek hem de çift tırnak) aşağıdaki kaçış karakterlerini destekler:
| Escape character | Description | ASCII value (decimal) |
|---|---|---|
\r |
Carriage return | 013 |
\n |
Line break | 010 |
\t |
Tab | 009 |
\\ |
Backslash | 092 |
\" |
Double quotation mark | 034 |
\' |
Single quotation mark | 039 |
Örnek:
name => 'It\'s a beautiful day'
Yorumlar
Yorum # ile başlar ve satırın herhangi bir yerinde görünebilir; yalnızca satır başında olması gerekmez.
# This is a full-line comment.
input { # This is an inline comment.
# ...
}