نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
LibreNMS هو نظام مراقبة شبكة مفتوح المصدر كامل المواصفات. يستخدم SNMPللحصول على البيانات من أجهزة مختلفة. يتم دعم مجموعة متنوعة من الأجهزة في LibreNMS مثل Cisco و Linux و FreeBSD و Juniper و Brocade و Foundry و HP وغيرها الكثير. وهو يدعم العديد من آليات المصادقة ويدعم المصادقة الثنائية. لديها نظام تنبيه قابل للتخصيص يمكنه تنبيه مدير الشبكة عبر البريد الإلكتروني أو IRC أو slack.
في هذا البرنامج التعليمي ، سنستخدم nms.example.comكاسم المجال الموجه نحو مثيل Vultr. يرجى التأكد من استبدال جميع حالات اسم النطاق المثال بالاسم الفعلي.
قم بتحديث نظامك الأساسي باستخدام الدليل كيفية تحديث CentOS 7 . بمجرد تحديث النظام الخاص بك ، انتقل إلى تثبيت التبعيات.
تمت كتابة الواجهة الأمامية لـ LibreNMS بشكل أساسي بلغة PHP ، وبالتالي سنحتاج إلى تثبيت خادم ويب و PHP. في هذا البرنامج التعليمي ، سنقوم بتثبيت Nginx مع PHP 7.2 للحصول على أقصى قدر من الأمان والأداء.
قم بتثبيت Nginx.
sudo yum -y install nginx
قم بتشغيل Nginx وتمكينه من بدء التشغيل تلقائيًا.
sudo systemctl start nginx
sudo systemctl enable nginx
قم بإضافة مستودع Remi وتمكينه ، حيث يحتوي مستودع YUM الافتراضي على إصدار قديم من PHP.
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php72
قم بتثبيت PHP الإصدار 7.2 مع الوحدات المطلوبة من قبل LibreNMS.
sudo yum -y install php php-cli php-common php-curl php-fpm php-gd php-mcrypt php-mysql php-process php-snmp php-xml php-zip
افتح ملف التهيئة المحمل بواسطة PHP في محرر.
sudo nano /etc/php.ini
ابحث عن السطور التالية ، وغير التعليق وتغيير قيمتها كما هو موضح.
;cgi.fix_pathinfo=1
memory_limit = 128M
;date.timezone =
استخدم هذه القيم بدلاً من ذلك ، Asia/Kolkataاستبدل بالمنطقة الزمنية المحلية.
cgi.fix_pathinfo=0
memory_limit = -1
date.timezone = Asia/Kolkata
ستحتاج أيضًا إلى تغيير المنطقة الزمنية للنظام عن طريق تشغيل الأمر التالي.
sudo ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
الآن افتح ملف تكوين PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
ابحث عن السطر التالي.
listen = 127.0.0.1:9000
استبدلها بالسطر التالي.
listen = /var/run/php-fpm/php-fpm.sock
بشكل افتراضي ، يتم تكوين PHP-FPM لمستخدم خادم الويب Apache. قم بتغيير المستخدم إلى nginx.
user = nginx
group = nginx
علاوة على ذلك ، قم بإلغاء تعليق الخطوط التالية.
listen.owner = nobody
listen.group = nobody
احفظ الملف واخرج من المحرر. أعد تشغيل PHP-FPM وتمكينه من البدء في وقت التمهيد.
sudo systemctl restart php-fpm
sudo systemctl enable php-fpm
قم بتعيين الملكية المناسبة لملف مأخذ التوصيل.
sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock
MariaDB هي شوكة في MySQL. أضف مستودع MariaDB إلى نظامك. yumيحتوي المستودع الافتراضي على إصدار أقدم من MariaDB.
echo "[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1" | sudo tee /etc/yum.repos.d/mariadb.repo
قم بتثبيت MariaDB.
sudo yum -y install mariadb mariadb-server
الآن ، افتح ملف تكوين MySQL.
sudo nano /etc/my.cnf
أضف الأسطر التالية في نهاية الكتلة.
[mysqld]
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0
أعد تشغيل MariaDB وتمكينه من البدء تلقائيًا في وقت التمهيد.
sudo systemctl restart mariadb
sudo systemctl enable mariadb
قبل تكوين قاعدة البيانات ، ستحتاج إلى تأمين MariaDB أولاً.
sudo mysql_secure_installation
ستتم مطالبتك بكلمة مرور جذر MariaDB الحالية. بشكل افتراضي ، لا توجد كلمة مرور جذرية في تثبيت MariaDB جديد. اضغط على Enterمفتاح " " للمتابعة. قم بتعيين كلمة مرور قوية rootلمستخدم خادم MariaDB وأجب " Y" على جميع الأسئلة الأخرى التي يتم طرحها. الأسئلة المطروحة ذاتيّة.
قم بتسجيل الدخول إلى هيكل MySQL كجذر.
mysql -u root -p
أدخل كلمة المرور لمستخدم الجذر MariaDB لتسجيل الدخول.
قم بتشغيل الاستعلامات التالية لإنشاء قاعدة بيانات ومستخدم قاعدة بيانات لتثبيت LibreNMS.
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
EXIT;
يمكنك استبدال اسم قاعدة البيانات واسم librenmsالمستخدم librenmsوفقًا لاختيارك. يرجى التأكد من التغيير StrongPasswordإلى كلمة مرور قوية للغاية.
بصرف النظر عن التبعيات أعلاه ، يحتاج LibreNMS إلى عدد قليل من التبعيات. قم بتثبيتها عن طريق التشغيل.
sudo yum -y install cronie fping git ImageMagick jwhois mtr MySQL-python net-snmp net-snmp-utils nmap python-memcached rrdtool
إضافة مستخدم جديد غير مميز لتطبيق LibreNMS.
sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms nginx
يمكن تثبيت LibreNMS مباشرة عن طريق استنساخ مستودع Github.
cd /opt
sudo git clone https://github.com/librenms/librenms.git librenms
قم بإصلاح الملكية.
sudo chown librenms:librenms -R /opt/librenms
يعتمد LibreNMS على SNMP في العديد من المهام. نظرًا لأننا قمنا بالفعل بتثبيت SNMP ، انسخ مثال ملف التكوين إلى موقعه.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
افتح ملف التكوين في المحرر.
sudo nano /etc/snmp/snmpd.conf
ابحث عن هذا الخط.
com2sec readonly default RANDOMSTRINGGOESHERE
قم بتحرير النص RANDOMSTRINGGOESHEREواستبدال سلسلة المجتمع بأي سلسلة من اختيارك. فمثلا.
com2sec readonly default my-org
تذكر السلسلة لأنها ستكون مطلوبة لاحقًا عندما نضيف أول جهاز SNMP.
يحتاج SNMP أيضًا إلى معلومات حول إصدار التوزيع. قم بتنزيل وتثبيت البرنامج النصي للعثور على إصدار التوزيع.
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro
ابدأ تشغيل خدمة SNMP daemon وتمكينها من البدء تلقائيًا في وقت التمهيد.
sudo systemctl enable snmpd
sudo systemctl restart snmpd
ستحتاج الآن إلى إضافة بعض إدخالات crontab لتشغيل المهام المجدولة. قم بإنشاء ملف مهمة cron جديد.
sudo nano /etc/cron.d/librenms
قم بملء الملف بالنص التالي.
33 */6 * * * librenms /opt/librenms/cronic /opt/librenms/discovery-wrapper.py 1
*/5 * * * * librenms /opt/librenms/discovery.php -h new >> /dev/null 2>&1
*/5 * * * * librenms /opt/librenms/cronic /opt/librenms/poller-wrapper.py 16
15 0 * * * librenms /opt/librenms/daily.sh >> /dev/null 2>&1
* * * * * librenms /opt/librenms/alerts.php >> /dev/null 2>&1
*/5 * * * * librenms /opt/librenms/poll-billing.php >> /dev/null 2>&1
01 * * * * librenms /opt/librenms/billing-calculate.php >> /dev/null 2>&1
*/5 * * * * librenms /opt/librenms/check-services.php >> /dev/null 2>&1
أعد تشغيل خدمة cron daemon.
sudo systemctl restart crond
قم بالإعداد logrotateبحيث يتم تحديث ملفات السجل تلقائيًا بمرور الوقت.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
أخيرًا ، قم بتعيين الملكية والأذونات المناسبة.
sudo chown -R librenms:nginx /opt/librenms
sudo chmod g+w -R /opt/librenms
sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs
لا يتم تأمين تسجيلات الدخول والمعلومات الأخرى المرسلة من خلال واجهة الويب الخاصة بـ LibreNMS إذا لم يتم تشفير الاتصال باستخدام SSL. سنقوم بتكوين Nginx لاستخدام SSL الذي تم إنشاؤه باستخدام Let's Encrypt free SSL.
قم بتثبيت Certbot ، وهو تطبيق العميل لـ Let's Encrypt CA.
sudo yum -y install certbot
قبل أن تتمكن من طلب الشهادات، سوف تحتاج للسماح للميناء 80و 443، أو معيار HTTPو HTTPSالخدمات من خلال جدار الحماية.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
ملاحظة : للحصول على شهادات من Let's Encrypt CA ، يجب توجيه النطاق الذي سيتم إنشاء الشهادات من أجله إلى الخادم. إذا لم يكن الأمر كذلك ، قم بإجراء التغييرات اللازمة على سجلات DNS للمجال وانتظر DNS للنشر قبل إجراء طلب الشهادة مرة أخرى. يتحقق Certbot من سلطة المجال قبل تقديم الشهادات.
إنشاء شهادات SSL:
sudo certbot certonly --webroot -w /usr/share/nginx/html -d nms.example.com
من المرجح أن يتم تخزين الشهادات التي تم إنشاؤها في /etc/letsencrypt/live/nms.example.com/الدليل. سيتم تخزين شهادة SSL كـ وسيتم تخزين fullchain.pemالمفتاح الخاص كـ privkey.pem.
تنتهي صلاحية شهادات التشفير في غضون 90 يومًا ، وبالتالي يوصى بإعداد التجديد التلقائي للشهادات باستخدام وظيفة cron.
افتح ملف مهمة كرون.
sudo crontab -e
أضف السطر التالي في نهاية الملف.
30 5 * * 1 /usr/bin/certbot renew --quiet
سيتم تشغيل وظيفة cron المذكورة أعلاه كل يوم إثنين الساعة 5:30 صباحًا بالتوقيت المحلي. إذا كانت الشهادة ستنتهي صلاحيتها ، فسيتم تجديدها تلقائيًا.
إنشاء مضيف افتراضي جديد.
sudo nano /etc/nginx/conf.d/nms.example.com.conf
تعبئة الملف.
server {
listen 80;
server_name nms.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name nms.example.com;
ssl_certificate /etc/letsencrypt/live/nms.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nms.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /opt/librenms/logs/librenms.nginx.access.log;
root /opt/librenms/html;
index index.php;
charset utf-8;
gzip on;
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /api/v0 {
try_files $uri $uri/ /api_v0.php?$query_string;
}
location ~ \.php {
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
استبدل nms.example.comبنطاقك الفعلي في التكوين أعلاه.
أعد تشغيل Nginx.
sudo chown nginx:nginx /var/lib/php/session
sudo systemctl restart nginx
لإنهاء التثبيت ، افتح https://nms.example.comالمتصفح المفضل لديك. سترى تلبية المتطلبات. قدم تفاصيل قاعدة البيانات الخاصة بك وإنشاء حساب إداري جديد. بمجرد التثبيت ، ستحصل على رسالة للتحقق من التثبيت. انقر فوق الارتباط وقم بتسجيل الدخول باستخدام حساب المسؤول. سترى أن كل شيء ما عدا الحالة " Poller" له حالة " Ok".

الآن ، انقر على الرابط لإضافة جهاز. على Add Deviceواجهة " " ، قدم اسم المضيف مثل المضيف المحلي واترك كل شيء كما هو. قدم سلسلة المجتمع الخاص بك في مجال المجتمع. يجب أن تكون نفس السلسلة التي قدمتها بالضبط snmpd.confأثناء تكوين SNMP.
بمجرد إضافة الجهاز ، يمكنك رؤية التفاصيل بالانتقال إلى Devicesعلامة التبويب "".
وبالمثل ، يمكنك إضافة المزيد من الأجهزة إلى تطبيق LibreNMS لرصد "على مدار الساعة".
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد