CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin
CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.
Bir kutuyu kurma ve yapılandırma işlemini otomatikleştirmenin birçok yolu vardır. Her ne sebeple olursa olsun, bu noktada tüm sistemimiz tek bir kutudan oluşuyorsa, tam bir SCM (Yazılım Yapılandırma Yönetimi) altyapısı oluşturmak aşırı bir iştir. Kabuk komut dosyaları bir seçenektir, ancak SCM'nin soyulmuş bir sürümünü de kullanabiliriz. Chef popüler seçeneklerden biridir ve "chef-solo" Chef'in bağımsız yapılandırma modudur ve burada "şef-sunucu" olarak hareket etmek için fazladan bir düğüme ihtiyaç duymazız. Tek gereken, bir URL veya şef yemek kitapları içeren bir tarball paketinin yoludur. Kabuk betikleri ile karşılaştırıldığında, bu tür bir yaklaşım kutudan daha açıklayıcı ve etkilidir ve ayrıca SCM'ler veya IaC (Kod Olarak Altyapı) süreçlerine başlamak için iyi bir giriş niteliğindedir.
Bir şef 'yemek kitabının' içindeki 'tarifler', bir düğümde belirli bir durumda olacak şekilde 'kaynakları' tanımlayan yakut tabanlı bir DSL'ye sahiptir. Şef-solo için de geçerli olan birkaç Şef kavramını tanımak için bir yol izleyelim. Hedefimiz Gunicorn ve NGINX kullanarak bir Python / Django web uygulaması çalıştıran bir Ubuntu düğümü kurmaktır.
Not: ChefDK'nin "Chef iş istasyonumuza" (makinemize) kurulması zorunlu değildir, bununla birlikte, yemek kitapları, yemek tarifleri ve daha fazlasını oluşturmak için bir dizin yapısıyla başlamak için 'şef oluşturma' komutlarını kullanabiliriz. Bu yazıda, ChefDK'nin iş istasyonumuza kurulu olduğunu varsayacağız. Komutlar ChefDK'nin 4.7.26-1 sürümü kullanılarak çalıştırıldı.
(Aksi belirtilmedikçe, bu noktadan sonraki her şey, 'Şef İş İstasyonu' olarak da adlandırılan makinemizde çalıştırılacaktır)
Şefteki yemek kitapları, bir yapılandırma senaryosunu desteklemek için gereken her şeyi içeren yeniden kullanılabilir birimlerdir. Yemek kitapları birden fazla 'tarif' içerebilir ve 'tarifler' çoğunlukla kaynak kalıplarından oluşur. default.rbçalışma kitabına bir çalışma listesinde referans verildiğinde çalıştırılacak varsayılan reçetedir . Farklı tarifler endişelerin ayrılmasına izin verir. Bununla birlikte, bu öğretici için tüm kaynak bildirimlerini bir ana tarif dosyasına ekleyeceğiz, yani default.rb.
"Chef-project" adında bir klasör oluşturun ve içinde "cookbooks" adında bir klasör oluşturun. Gönderen ./my-chef-project/cookbooks/, çalıştırın:
$ chef generate cookbook my-cookbook
Dizin yapımız şimdi şöyle görünecek:
.
└── my-chef-project
└── cookbooks
└── my-cookbook
├── CHANGELOG.md
├── LICENSE
├── Policyfile.rb
├── README.md
├── chefignore
├── kitchen.yml
├── metadata.rb
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
└── default
└── default_test.rb
Düğümümüzü kurmanın ilk adımı, uygulamamız tarafından hangi paketlerin gerekli olduğunu belirlemektir. Düğümümüz Ubuntu olarak seçildi, böylece bağımlılıkları toplamak için APT paket yöneticisine güvenebiliriz. OS dağıtımı tarafından sağlanan paketlerin kurulması o zaman çok kolay:
apt_update
package 'python3'
package 'python3-pip'
package 'nginx'
package 'pkg-config'
package 'libcairo2-dev'
package 'libjpeg-dev'
package 'libgif-dev'
package 'libgirepository1.0-dev'
Bunlar oldukça açıklayıcıdır. İlk satır apt deposunu güncelleyecek ve aşağıdaki satırlar bu paketleri kuracaktır.
Not: Python bağımlılıklarının bir kısmını pip yoluyla derlemek için 'nginx'i izleyen paketler gereklidir. Bunlar, içinde belirtilen python / django proje bağımlılıklarınıza bağlı olarak değişebilir
requirements.txt. Yemek kitabınıza eklemeniz gereken bu paketleri belirlemek için bir deneme yanılma yöntemi kullanabilirsiniz. Bunu yapmak için,sudo pip install -r requirements.txtbaşarılı bir şekilde çalışıp çalışmadığını görmek için yeni başlatılmış bir ubuntu makinesinde bir el kitabı (Not: Bu, paketleri sisteme yükler!) Gerçekleştirin . Değilse, stderr size hangi paketlerin eksik olduğuna dair ipuçları vermelidir.
Gerekli paketleri eklemeyi tamamladıktan sonra, uygulama kaynak koduna sahip olacak ayrıcalıksız bir Linux kullanıcısı oluşturmamız gerekir.
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
Parolanın Linux'ta kullanılan bir gölge karma biçimi olduğunu unutmayın. OpenSSL kullanılarak türetilebilir:
$ openssl passwd -1 -salt alilbitof mypassword
Şimdi Django uygulama kaynak kodunu yemek kitabımıza ekleyelim. Varsa , kaynak kodunu Dizin ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/ oluşturun'un içine yerleştirin ./my-chef-project/cookbooks/my-cookbook/files/default.
Bu dosyaları düğümümüzdeki uzak bir konuma kopyalama talimatı, remote_directory kaynağı kullanılarak açıklanır :
remote_directory '/home/bob/myapp' do
source 'myapp' # This is the name of the folder containing our source code that we kept in ./my-cookbook/files/default/
owner 'bob'
group 'users'
mode '0755'
action :create
end
Python paketlerini kurmak için rasgele bir komut çalıştırmak requirements.txtiçin execute kaynağını kullanabiliriz. Bu durumda, üzerinde pip install komutunu çalıştırmamız gerekir:
execute 'install python dependencies' do
command 'pip3 install -r requirements.txt'
cwd '/home/bob/myapp'
end
Not: Bunun kök kullanıcı olarak yürütüleceğini ve python kitaplıklarının sistem genelinde yükleneceğini unutmayın. Düğümümüz sadece bu tek bir python uygulamasını çalıştıracak şekilde tasarlanmışsa, o zaman sorun olmaz. Buna rağmen, işleri temiz ve aklı başında tutmak için daha iyi bir seçenek, python kurulumlarını veya 'virtualenvs'i yöneten bir topluluk yemek kitabı bulmak ve kullanmaktır. (veya en azından bunu çoğaltmak için bir dizi yürütme bloğu yazın). Python'da virtualenvs kullanmak, python tabanlı sistem araçlarının veya diğer python projelerinin etkilenmemesini sağlar
Şimdi ters proxy olarak Gunicorn WSGI HTTP Sunucusunu NGINX ile hazırlama zamanı. Nginx, Django'daki tüm statik varlıkları işlemek için de kullanılır.
Gunicorn'u Ubuntu'da bir hizmet olarak bağlamak için Systemd kullanılabilir. Systemd_unit kaynak sürümü 12.11 beri şef dahildir.
systemd_unit 'gunicorn.service' do
content({
Unit: {
Description: 'Django on Gunicorn',
After: 'network.target',
},
Service: {
ExecStart: '/usr/local/bin/gunicorn --workers 3 --bind localhost:8080 myapp.wsgi:application',
User: 'bob',
Group: 'www-data',
WorkingDirectory: '/home/bob/myapp'
Restart: 'always',
},
Install: {
WantedBy: 'multi-user.target',
}
})
action [:create, :enable, :start]
end
Şimdi bu Gunicorn sunucusuna aşağıda gösterildiği gibi standart bir NGINX proxy yapılandırması eklememiz gerekiyor. Bu pasaj girebilir ./my-cookbook/templates/nginx.conf.erb. Yoksa, dizini oluşturun.
Not: Chef'in şablonları, değişkenler, yakut ifadeleri ve ifadeler içerebilen gömülü yakut dosyalarını destekler. Bu dosya 'erb' uzantısına sahip olmasına rağmen, ruby deyimlerini veya ifadelerini kullanmadık. Ayrıca, basitlik açısından, burada sadece HTTPS olmayan bir nginx yapılandırması var (nazik hatırlatma; lütfen bunu üretimde yapmayın!)
server {
listen 80;
server_name http://example.com/;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/bob/myapp/myapp/static;
}
location / {
include proxy_params;
proxy_pass http://localhost:8080/;
}
}
Not: Ayrıca, Gunicorn sunucusunun TCP geri döngü bağlantısı yerine unix etki alanı soketine bağlı olduğu bir alternatif ve daha iyi bir yapılandırma da vardır. Bunu performans nedenleriyle araştırmaya değer.
Bu yapılandırmayı düğümdeki siteler etkin klasöre kopyalamak için Chef'deki şablon kaynağını kullanın .
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
Nginx üzerinde yapılandırmaların etkinleştirilmesi normalde sites-availablenginx'in sites-enabledklasöründeki yapılandırmaya işaret eden bir sembolik bağlantı oluşturularak yapılır . Symlinks aşağıdaki gibi bağlantı kaynağı ile şef yemek kitaplarında ilan edilebilir :
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
ve varsayılan yapılandırma sistem sembolünü silmek için:
link '/etc/nginx/sites-enabled/default' do
action :delete
end
Ve son olarak, nginx hizmetini başlatmak için:
service 'nginx' do
action :enable
action :start
end
Şef içindeki çalışma listeleri, bir yemek kitabındaki düğümde sırayla yürütülecek sıralı bir rol veya tarif listesidir. Ubuntu kutusunda yürütmemiz gereken bir "yemek kitabım" ve "varsayılan" tarifimiz var, bu yüzden proje dizinimizdeki ( ./my-chef-project/runlist.json) runlist.json şöyle görünmelidir:
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
Chef solo için yemek kitabımız servis edilmeye hazır. Bir Ubuntu 18.04 makinesi tedarik etme ve ChefDK'yı kurma zamanı:
$ ssh root@example.com 'apt-get update && yes | apt-get install curl && curl https://packages.chef.io/files/current/chefdk/4.7.45/ubuntu/18.04/chefdk_4.7.45-1_amd64.deb -o chefdk.deb && yes | dpkg -i chefdk.deb && rm chefdk.deb'
Devam eden şef iş istasyonuna geri , yapmamız gereken tek şey bir tarball, transfer içine klasör yemek kitapları koymak olduğunu birlikte arşivini runlist.jsonyukarıda hazırlanmayan ve şef solo komutunu çalıştırın uzaktan düğüme:
(Aşağıdaki komut, Şef İş İstasyonunda değil , düğüm içinde veya 'şef istemci' içinde çalıştırılmalıdır )
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
Veya işte bir astar ( ./my-chef-project/CWD'den Chef Workstation'da çalıştırılacak ):
tar zvcf chef-solo.tar.gz ./cookbooks &&\
scp chef-solo.tar.gz runlist.json root@example.com:~/ &&\
ssh root@example.com 'chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept'
Bu kadar! Düğümünüzü yemek kitaplarında belirttiğiniz şeye dönüştürmeye çalışan Şef etkinliğiyle doldurulan standart çıktıyı izleyin. Chef-solo, tüm yemek kitapları için gerekli olan tüm taşları kuracaktır. Chef-solo komutu başarılı olursa, Ubuntu kutusundaki nginx'in arkasında çalışan bir Django uygulamamız olacaktır. Test etmek için etki alanına / IP'ye gidin.
Not: Django'da
ALLOWED_HOSTSlisteden bu etki alanını / ip'i ayarlamanız gerekebileceğini unutmayınsettings.py.
Proje dizinimizin içeriğinde her değişiklik yaptığımızda (tarifler, şablonlar veya uygulama kaynak kodu vb.), Yukarıdaki tek astarı proje dizininden çalıştırın.
İpucu: Yemek kitabı git ile kontrol edilirse (olması gerektiği gibi), iyi bir öneri git kancaları bu tek astarı çalıştıracak şekilde ayarlamaktır.
Son şef-solo komutuna yakından bakarsanız, bunun --recipe-urlbir URL alması gerektiğini unutmayın. Bu, bir CI'nin şef-solo tarball'ınızı inşa edeceği, bir yere yükleyeceği ve düğümünüzü periyodik olarak çekecek şekilde yapılandıracağı bir iş akışına sahip olabileceğiniz anlamına gelir.
İpucu: Değiştirilen tarball'ı periyodik olarak bir cronjob olarak çekmek için kıvırmayı kullanın. başlıkları
curl -z $fileonurlandıracakIf-Modified-Sinceve tar topunu yalnızca mevcut dosyadaki zaman damgasından bu yana uzak dosya değiştirilmişse indirecektir$file.
CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.
Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.
OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.
Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.