Buildroot: zabbix-server کے ساتھ کراس پلیٹ فارم فرم ویئر بنانا

Buildroot: zabbix-server کے ساتھ کراس پلیٹ فارم فرم ویئر بنانا

مسئلہ کی تاریخ

چھوٹے سائز کی کمپنیوں کو ایک طرف، اپنے بنیادی ڈھانچے کی اعلیٰ معیار کی نگرانی کی ضرورت ہے (خاص طور پر وسیع پیمانے پر ورچوئلائزیشن کی روشنی میں)، دوسری طرف، ان کے لیے نئے آلات خریدنا مالی طور پر مشکل ہے۔ سرور/ہارڈویئر کے مسائل بھی عام ہیں: اکثر یوزر ورک سٹیشن کے ساتھ یا ایک چھوٹی جگہ/کوٹھری میں 1-3 ٹاور سرور ہوتے ہیں۔

ریڈی میڈ اسمبلی (تقسیم) کا استعمال کرنا آسان ہے، جسے آپ کو صرف مائیکرو ایس ڈی کارڈ پر اپ لوڈ کرنے اور ایک عام سنگل بورڈ کمپیوٹر (بیگل بون، رسبری پائی اور اورنج پائی فیملیز، اسوس ٹنکر بورڈ) میں داخل کرنے کی ضرورت ہے۔ اس کے علاوہ، اس طرح کا سامان سستا ہے اور کہیں بھی نصب کیا جا سکتا ہے.

مسئلہ کی تشکیل

بہت سے طریقوں سے، اس منصوبے نے نتائج کو لاگو کرنے کے امکان کے ساتھ لیبارٹری کے کام کی ایک قسم کے طور پر تیار کیا.

Zabbix کو مانیٹرنگ سسٹم کے طور پر چنا گیا کیونکہ یہ ایک طاقتور، آزاد اور اچھی طرح سے دستاویزی نظام ہے۔

ہارڈویئر پلیٹ فارم کے ساتھ مسئلہ سنگین ہو گیا ہے۔ نگرانی کے تحت ایک الگ مشین رکھنا بھی بہت اچھا حل نہیں ہے - یا تو نیا سامان خریدنا مہنگا ہے، یا پرانے سامان تلاش کرنا + چھوٹی کمپنیوں میں سرور کے ساتھ اکثر مسائل ہوتے ہیں۔ ہارڈ ویئر

بلڈروٹ بلڈ سسٹم کا استعمال آپ کو خصوصی حل تیار کرنے کی اجازت دیتا ہے جو لینکس آپریٹنگ سسٹم کی کم سے کم معلومات رکھنے والے اہلکار چلا سکتے ہیں۔ یہ نظام ابتدائیوں کے لیے دوستانہ ہے، لیکن ساتھ ہی ایک تجربہ کار ڈویلپر کے ہاتھ میں حسب ضرورت کے کافی مواقع فراہم کرتا ہے۔ یہ آئی ٹی انفراسٹرکچر کی سستی، لیکن مکمل طور پر فعال نگرانی کے مسئلے کو حل کرنے کے لیے بہترین ہے، جس میں اسے چلانے والے اہلکاروں کی تربیت کے لیے کم سے کم تقاضے ہیں۔

حل کے اقدامات

ابتدائی طور پر qemu میں چلانے کے لیے x86_64 کے لیے فرم ویئر بنانے کا فیصلہ کیا گیا، کیونکہ یہ ڈیبگنگ کے لیے ایک آسان اور تیز حل ہے۔ پھر اسے آرم سنگل بورڈ کمپیوٹر پر پورٹ کریں (مجھے Asus ٹنکر بورڈ پسند آیا)۔

buildroot کو بلڈ سسٹم کے طور پر منتخب کیا گیا تھا۔ ابتدائی طور پر، اس میں زبکس پیکج کی کمی ہے، اس لیے اسے پورٹ کرنا پڑا۔ روسی لوکل کے ساتھ مسائل تھے، جنہیں مناسب پیچ لگانے سے حل کیا گیا تھا (نوٹ: buildroot کے نئے ورژن میں، ان پیچ کی اب ضرورت نہیں ہے)۔

زبکس پیکج کی پورٹنگ خود ایک الگ مضمون میں بیان کی جائے گی۔

چونکہ ہر چیز کو فرم ویئر (غیر تبدیل شدہ سسٹم امیج + قابل بازیافت کنفیگریشن/ڈیٹا بیس فائلز) کے طور پر کام کرنا چاہئے، اس لیے آپ کے اپنے سسٹمڈ اہداف، خدمات اور ٹائمرز (ٹارگٹ، سروس، ٹائمر) لکھنا ضروری تھا۔

میڈیا کو 2 حصوں میں تقسیم کرنے کا فیصلہ کیا گیا - ایک سیکشن سسٹم فائلوں کے ساتھ اور ایک سیکشن جس میں قابل تبدیلی کنفیگرز اور زبکس ڈیٹا بیس فائلیں ہیں۔

ڈیٹا بیس سے متعلق مسائل کو حل کرنا کچھ زیادہ ہی مشکل نکلا۔ میں اسے براہ راست میڈیا پر نہیں رکھنا چاہتا تھا۔ اسی وقت، ڈیٹا بیس کا سائز اس سائز تک پہنچ سکتا ہے جو ممکنہ ریم ڈسک کے سائز سے زیادہ ہو۔ اس لیے، ایک سمجھوتہ کرنے والے حل کا انتخاب کیا گیا: ڈیٹابیس SD کارڈ کے دوسرے حصے پر واقع ہے (جدید SLC کارڈز میں 30 رائٹ سائیکل ہوتے ہیں)، لیکن ایک ترتیب ایسی ہے جو بیرونی میڈیا کے استعمال کی اجازت دیتی ہے (مثال کے طور پر، USB- ایچ ڈی ڈی)۔

درجہ حرارت کی نگرانی کو RODOS-5 ڈیوائس کے ذریعے لاگو کیا گیا تھا۔ بلاشبہ، آپ Dallas 1820 کو براہ راست استعمال کر سکتے ہیں، لیکن USB کو پلگ ان کرنا تیز اور آسان تھا۔

grub86 کو x64_2 کے لیے بوٹ لوڈر کے طور پر منتخب کیا گیا تھا۔ اسے لانچ کرنے کے لیے کم سے کم کنفیگریشن لکھنا ضروری تھا۔

qemu پر ڈیبگ کرنے کے بعد، اسے Asus ٹنکر بورڈ پر پورٹ کر دیا گیا۔ میرے اوورلے کا ڈھانچہ ابتدائی طور پر کراس پلیٹ فارم ہونا تھا - ہر بورڈ کے لیے مخصوص کنفیگرز مختص کرنا (بورڈ ڈیف کنفیگ، بوٹ لوڈر، سسٹم پارٹیشن کے ساتھ ایک تصویر بنانا) اور فائل سسٹم کو حسب ضرورت بنانے/ڈیٹا کے ساتھ تصویر بنانے میں زیادہ سے زیادہ یکسانیت۔ اس طرح کی تیاری کی وجہ سے، پورٹنگ تیزی سے چلا گیا.

تعارفی مضامین کو پڑھنے کی انتہائی سفارش کی جاتی ہے:
https://habr.com/ru/post/448638/
https://habr.com/ru/post/449348/

جمع کرنے کا طریقہ

پروجیکٹ گیتھب پر محفوظ ہے۔
مخزن کی کلوننگ کے بعد، درج ذیل فائل کا ڈھانچہ حاصل کیا جاتا ہے:

[alexey@comp monitor]$ ls -1
buildroot-2019.05.tar.gz
overlay
README.md
run_me.sh

buildroot-2019.05.tar.gz - صاف بلڈروٹ آرکائیو
overlay external-tree کے ساتھ میری ڈائریکٹری ہے۔ یہ وہ جگہ ہے جہاں آپ کو بلڈروٹ کا استعمال کرتے ہوئے فرم ویئر بنانے کے لئے درکار ہر چیز کو ذخیرہ کیا جاتا ہے۔
README.md - پروجیکٹ کی تفصیل اور انگریزی میں دستی۔
run_me.sh ایک اسکرپٹ ہے جو بلڈ سسٹم کو تیار کرتی ہے۔ آرکائیو سے بلڈ روٹ کو پھیلاتا ہے، اس کے ساتھ ایک اوورلے منسلک کرتا ہے (بیرونی درخت کے طریقہ کار کے ذریعے) اور آپ کو تعمیر کے لیے ہدف بورڈ منتخب کرنے کی اجازت دیتا ہے۔

[0] my_asus_tinker_defconfig
[1] my_beaglebone_defconfig
[2] x86_64_defconfig
Select defconfig, press A for abort. Default [0]

اس کے بعد، صرف buildroot-2019.05 ڈائریکٹری میں جائیں اور میک کمانڈ چلائیں۔
تعمیر مکمل ہونے کے بعد، تمام تعمیراتی نتائج آؤٹ پٹ/امیج ڈائرکٹری میں ہوں گے:

[alexey@comp buildroot-2019.05]$ ls -1 output/images/
boot.img
boot.vfat
bzImage
data
data.img
external.img
external.qcow2
grub-eltorito.img
grub.img
intel-ucode
monitor-0.9-beta.tar.gz
qemu.qcow2
rootfs.cpio
sdcard.img
sys
update

مطلوبہ فائلیں:

  • sdcard.img - SD کارڈ پر ریکارڈنگ کے لیے میڈیا امیج (wibdows کے نیچے dd یا rufus کے ذریعے)۔
  • qemu.qcow2 - qemu میں چلانے کے لیے میڈیا امیج۔
  • external.qcow2 - ڈیٹا بیس کے لیے بیرونی میڈیا امیج
  • monitor-0.9-beta.tar.gz - ویب انٹرفیس کے ذریعے اپ ڈیٹ کرنے کے لیے محفوظ شدہ دستاویزات

گائیڈز کی نسل

ایک ہی ہدایات کو کئی بار لکھنا قابل نہیں ہے۔ اور سب سے منطقی بات یہ ہے کہ اسے ایک بار مارک ڈاؤن میں لکھیں، اور پھر اسے ڈاؤن لوڈ کرنے کے لیے پی ڈی ایف میں اور ویب انٹرفیس کے لیے ایچ ٹی ایم ایل میں تبدیل کریں۔ یہ پانڈوک پیکیج کی بدولت ممکن ہے۔

ایک ہی وقت میں، ان تمام فائلوں کو سسٹم امیج کے جمع ہونے سے پہلے تیار کرنے کی ضرورت ہے؛ وہ پوسٹ بلڈ اسکرپٹ پہلے ہی بیکار ہیں۔ لہذا، نسل ایک دستی پیکیج کی شکل میں کیا جاتا ہے. آپ اوورلے/پیکیج/دستی کتابچے دیکھ سکتے ہیں۔

manuals.mk فائل (جو تمام کام کرتی ہے)

################################################################################
#
# manuals
#
################################################################################

MANUALS_VERSION:= 1.0.0
MANUALS_SITE:= ${BR2_EXTERNAL_monitorOverlay_PATH}/package/manuals
MANUALS_SITE_METHOD:=local

define MANUALS_BUILD_CMDS
    pandoc -s -o ${TARGET_DIR}/var/www/manual_en.pdf ${BR2_EXTERNAL_monitorOverlay_PATH}/../README.md
    pandoc -f markdown -t html -o ${TARGET_DIR}/var/www/manual_en.html ${BR2_EXTERNAL_monitorOverlay_PATH}/../README.md
endef

$(eval $(generic-package))

systemd

لینکس کی دنیا فعال طور پر سسٹم کی طرف بڑھ رہی ہے، اور مجھے بھی یہ کرنا پڑا۔
خوشگوار اختراعات میں سے ایک ٹائمرز کی موجودگی ہے۔ عام طور پر، ان کے بارے میں ایک الگ مضمون لکھا جا رہا ہے (اور نہ صرف ان کے بارے میں)، لیکن میں آپ کو مختصراً بتاتا ہوں۔

ایسے اعمال ہیں جو وقتاً فوقتاً انجام دینے چاہئیں۔ مجھے lighttpd اور php-fpm لاگز کو صاف کرنے کے لیے لوگروٹیٹ چلانے کی ضرورت تھی۔ معمول کی بات یہ ہوگی کہ کرون میں کمانڈز لکھیں، لیکن میں نے سسٹمڈ مونوٹونک ٹائمر استعمال کرنے کا فیصلہ کیا۔ لہذا لاگروٹیٹ سخت وقت کے وقفے پر چلتا ہے۔

بلاشبہ، مخصوص تاریخوں پر فائر کرنے والے ٹائمر بنانا ممکن ہے، لیکن مجھے اس کی ضرورت نہیں تھی۔
ٹائمر کی مثال:

  • ٹائمر فائل
    
    [Unit]
    Description=RODOS temp daemon timer

[ٹائمر] OnBootSec=1 منٹ
OnUnitActiveSec=1 منٹ

[انسٹال کریں] WantedBy=timers.target

- Файл сервиса, вызываемого таймером:
```bash
[Unit]
Description=RODOS temp daemon

[Service]
ExecStart=/usr/bin/rodos.sh

تائید شدہ بورڈز

Asus ٹنکر بورڈ مرکزی بورڈ ہے جس پر سب کچھ کام کرنا چاہئے۔ سستا اور بہت طاقتور کے طور پر منتخب کیا گیا۔

بیگل بون بلیک پہلا بورڈ ہے جس پر آپریشن کا تجربہ کیا گیا تھا (زیادہ طاقتور بورڈ کے انتخاب کے دوران)۔

Qemu x86_64 - ڈیبگنگ ڈیولپمنٹ کے لیے استعمال کیا جاتا ہے۔

یہ کیسے کام کرتا ہے

آغاز پر، ترتیبات کی دو مرحلے کی بحالی ہوتی ہے:

  • سیٹنگز_ریسٹور اسکرپٹ چلا رہے ہیں (سروس کے ذریعے)۔ یہ سسٹم کی بنیادی ترتیبات کو بحال کرتا ہے - ٹائم زون، لوکیل، نیٹ ورک سیٹنگز وغیرہ۔
  • تیار اسکرپٹ کو چلانا (سروس کے ذریعے) - یہاں zabbix اور ڈیٹا بیس تیار ہیں، IP کنسول میں آؤٹ پٹ ہے۔

جب آپ اسے پہلی بار شروع کرتے ہیں، تو SD کارڈ کے دوسرے پارٹیشن کا سائز طے ہوتا ہے۔ اگر اب بھی غیر مختص جگہ ہے تو، میڈیا کو دوبارہ تقسیم کیا جاتا ہے، اور ڈیٹا سیکشن تمام خالی جگہ لے لیتا ہے۔ یہ انسٹالیشن امیج (sdcard.img) کے سائز کو کم کرنے کے لیے کیا جاتا ہے۔ مزید برآں، postgresql ورکنگ ڈائرکٹری اس مقام پر بنائی گئی ہے۔ یہی وجہ ہے کہ ایک نئے کیریئر کے ساتھ پہلی لانچ بعد والے کی نسبت طویل ہوگی۔

ایکسٹرنل ڈرائیو کو کنیکٹ کرتے وقت، سٹارٹ اپ کے وقت یہ مفت ڈرائیو تلاش کرتا ہے اور اسے بیرونی لیبل کے ساتھ ext4 میں فارمیٹ کرتا ہے۔

توجہ! ایکسٹرنل ڈرائیو کو کنیکٹ کرتے وقت (نیز اسے منقطع کرنا یا تبدیل کرنا)، آپ کو بیک اپ بنانے اور سیٹنگز کو بحال کرنے کی ضرورت ہے!

RODOS 5 ڈیوائس کو درجہ حرارت کی نگرانی کے لیے استعمال کیا جاتا ہے۔ مینوفیکچرر ڈیوائس کے ساتھ کام کرنے کے لیے اس کی افادیت کا سورس کوڈ فراہم کرتا ہے۔ جب آپ سسٹم کو آن کرتے ہیں، تو روڈوس ٹائمر شروع ہوتا ہے، جو اس یوٹیلیٹی کو منٹ میں ایک بار چلاتا ہے۔ موجودہ درجہ حرارت /tmp/rodos_current_temp فائل میں لکھا جاتا ہے، جس کے بعد zabbix اس فائل کو بطور سینسر مانیٹر کر سکتا ہے۔

کنفیگریشن اسٹوریج میڈیا /data ڈائرکٹری میں نصب ہے۔

سسٹم کو شروع کرنے اور اسے آپریشن کے لیے تیار کرتے وقت، کنسول میں درج ذیل پیغام ظاہر ہوتا ہے:

System starting, please wait

تیاری کے کام کو مکمل کرنے کے بعد، یہ IP ایڈریس کو ظاہر کرنے میں تبدیل ہو جائے گا:

current ip 192.168.1.32
Ready to work

درجہ حرارت کی نگرانی کے لیے زبکس ترتیب دینا

درجہ حرارت کی نگرانی کے لیے، صرف 2 اقدامات کریں:

  • RODOS ڈیوائس کو USB پورٹ سے جوڑیں۔
  • zabbix میں ڈیٹا آئٹم بنائیں

zabbix ویب انٹرفیس کھولیں:

  • سیکشن کنفیگریشن → میزبان کھولیں۔
  • ہمارے زبکس سرور کی لائن میں آئٹمز پر کلک کریں۔
  • آئٹم بنائیں پر کلک کریں۔

Buildroot: zabbix-server کے ساتھ کراس پلیٹ فارم فرم ویئر بنانا

درج ذیل ڈیٹا درج کریں:

  • نام - آپ کی صوابدید پر (مثال کے طور پر، serverRoomTemp)
  • قسم - زبکس ایجنٹ
  • کلید - Rodos
  • قسم عددی
  • یونٹس - سی
  • تاریخ ذخیرہ کرنے کی مدت — تاریخ ذخیرہ کرنے کی مدت۔ 10 دن رہ گئے
  • رجحان ذخیرہ کرنے کی مدت - تبدیلیوں کی حرکیات کے لیے ذخیرہ کرنے کی مدت۔ 30 دن رہ گئے۔
  • نئی درخواست - سرور روم کا درجہ حرارت

اور ADD کا بٹن دبائیں۔
Buildroot: zabbix-server کے ساتھ کراس پلیٹ فارم فرم ویئر بنانا

ویب انٹرفیس کے ذریعے ترتیبات کا نظم کریں۔

ویب انٹرفیس پی ایچ پی میں لکھا جاتا ہے۔ اہم افعال ہیں:

  • ڈیوائس کی حیثیت دیکھیں
  • نیٹ ورک کی ترتیبات کو تبدیل کرنا
    Buildroot: zabbix-server کے ساتھ کراس پلیٹ فارم فرم ویئر بنانا
  • صارف کا پاس ورڈ تبدیل کرنا
  • ٹائم زون کا انتخاب
  • بیک اپ/بحال/فیکٹری ری سیٹ
  • بیرونی ڈرائیو کو جوڑنے کی صلاحیت
  • سسٹم اپ ڈیٹ
    Buildroot: zabbix-server کے ساتھ کراس پلیٹ فارم فرم ویئر بنانا

ویب انٹرفیس میں لاگ ان کرنا پاس ورڈ سے محفوظ ہے۔ شروع صفحہ - دستی.

Zabbix انٹرفیس کا پتہ: ${ip/dns}/zabbix
مینجمنٹ انٹرفیس کا پتہ: ${ip/dns}/manage
Buildroot: zabbix-server کے ساتھ کراس پلیٹ فارم فرم ویئر بنانا

قیمو میں چل رہا ہے۔

qemu-system-x86_64 -smp 4 -m 4026M -enable-kvm -machine q35,accel=kvm -device intel-iommu -cpu host -net nic -net bridge,br=bridge0 -device virtio-scsi-pci,id= scsi0 -drive file=output/images/qemu.qcow2,format=qcow2,aio=threads -device virtio-scsi-pci,id=scsi0 -drive file=output/images/external.qcow2,format=qcow2,aio=threads

یہ کمانڈ 4 کور، 2048 RAM، KVM فعال، bridge0 پر ایک نیٹ ورک کارڈ اور دو ڈسکوں کے ساتھ ایک سسٹم شروع کرے گا: ایک سسٹم کے لیے اور ایک بیرونی پوسٹگریس کی ایل کے لیے۔

تصاویر کو ورچوئل باکس میں تبدیل اور چلایا جا سکتا ہے:

qemu-img convert -f qcow2  qemu.qcow2 -O vdi qcow2.vdi
qemu-img convert -f qcow2  external.qcow2 -O vdi external.vdi

پھر انہیں ورچوئل باکس میں درآمد کریں اور سیٹا کے ذریعے جڑیں۔

حاصل يہ ہوا

اس عمل میں، میں استعمال کے لیے تیار پروڈکٹ بنانے میں دلچسپی لیتا ہوں - جس میں بہت خوبصورت انٹرفیس نہیں ہوتا (مجھے ان کو لکھنا پسند نہیں)، لیکن ایک ایسا جو کام کرتا ہے اور ترتیب دینا آسان ہے۔

KVM میں zabbix-appliance کو انسٹال کرنے کی آخری کوشش نے ظاہر کیا کہ یہ مرحلہ درست تھا (انسٹالیشن مکمل ہونے کے بعد، سسٹم شروع نہیں ہوتا)۔ شاید میں کچھ غلط کر رہا ہوں 😉

مواد

https://buildroot.org/

ماخذ: www.habr.com

نیا تبصرہ شامل کریں