← يتطلب: مقدمة في IRIS الحوكمة والتشغيل متقدم ⏱ 6 ساعات الدورة 25

إدارة النظام

System Administration

🎯 أهداف التعلم

1فهم بنية إدارة النظام في IRIS
2تعلم إعدادات النظام الأساسية
3فهم إدارة المستخدمين والأذونات
4تعلم مراقبة النظام والأداء
5فهم السجلات (Logs) والتشخيص
01

نظرة عامة على إدارة النظام

إدارة نظام IRIS تتضمن إعدادات النظام والأمان والمراقبة.

// معلومات النظام
ClassMethod GetSystemInfo()
{
    Set info = ##class(%SYS.System).GetSystemInfo(.sysInfo)
    Write "اسم النظام: ", sysInfo("SystemName"), !
    Write "إصدار IRIS: ", sysInfo("Version"), !
    Write "نظام التشغيل: ", sysInfo("OS"), !
    Write "المسارات: ", sysInfo("InstallDir"), !
    
    // معلومات الذاكرة
    Do ##class(%SYSTEM.Process).GetMemoryInfo(.memInfo)
    Write "الذاكرة المستخدمة: ", memInfo("Used"), " MB", !
    Write "الذاكرة المتاحة: ", memInfo("Free"), " MB", !
}

// إدارة Namespaces
ClassMethod ManageNamespaces()
{
    // عرض جميع Namespaces
    Set rs = ##class(%SYS.Namespace).ListFunc()
    While rs.%Next() {
        Write rs.%Get("Name"), !
    }
    
    // إنشاء Namespace جديد
    Do ##class(%SYS.Namespace).Create("HOSPITAL")
    
    // إعداد Global Mapping
    Set map = ##class(Config.MapGlobals).%New()
    Set map.Namespace = "HOSPITAL"
    Set map.Name = "^Hospital"
    Set map.Database = "HOSPITAL"
    Do map.%Save()
}
02

إدارة المستخدمين والأذونات

نظام الأمان في IRIS يتحكم في من يمكنه الوصول إلى ماذا.

// إدارة المستخدمين
ClassMethod ManageUsers()
{
    // إنشاء مستخدم جديد
    Set user = ##class(Security.Users).%New()
    Set user.Name = "dr_ahmed"
    Set user.FullName = "د. أحمد محمد"
    Set user.Password = "***"
    Set user.Roles = "HOSPITAL_USER"
    Set user.Enabled = 1
    Do user.%Save()
    
    // تعديل صلاحيات
    Set user = ##class(Security.Users).OpenId("dr_ahmed")
    Set user.Roles = "HOSPITAL_USER,REPORT_VIEWER"
    Do user.%Save()
    
    // عرض المستخدمين
    Set rs = ##class(Security.Users).ListFunc()
    While rs.%Next() {
        Write rs.%Get("Name"), " - ", rs.%Get("Roles"), !
    }
}

// إدارة الأدوار
ClassMethod ManageRoles()
{
    // إنشاء دور جديد
    Set role = ##class(Security.Roles).%New()
    Set role.Name = "HOSPITAL_DOCTOR"
    Set role.Description = "صلاحيات الطبيب"
    Set role.Resources = "HOSPITAL_PATIENT:RW,HOSPITAL_ORDER:RW"
    Do role.%Save()
}
03

مراقبة النظام

مراقبة النظام بشكل مستمر لضمان الأداء والاستقرار.

// مراقبة النظام
ClassMethod MonitorSystem()
{
    // استخدام النظام
    Set stats = ##class(%SYSTEM.CPU).GetUsage()
    Write "استخدام CPU: ", stats, "%", !
    
    // العمليات النشطة
    Set procs = ##class(%SYS.ProcessQuery).%New()
    Set procs.Status = "RUN"
    While procs.%Next() {
        Write "PID: ", procs.PID, " - ", procs.Name, !
    }
    
    // استخدام قاعدة البيانات
    Set dbList = ##class(%SYS.Database).ListFunc()
    While dbList.%Next() {
        Set db = dbList.%Get("Directory")
        Do ##class(%SYS.Database).GetDatabaseStats(db, .stats)
        Write db, ": ", stats("Size"), " MB (", stats("FreeSpace"), " MB free)", !
    }
}

// إعداد التنبيهات
ClassMethod SetupAlerts()
{
    // تنبيه عند ارتفاع استخدام CPU
    Set alert = ##class(Ens.Alerting.AlertRule).%New()
    Set alert.Name = "HighCPU"
    Set alert.Condition = "CPU > 90"
    Set alert.Action = "EMAIL"
    Set alert.Recipient = "admin@hospital.com"
    Do alert.%Save()
}
04

السجلات والتشخيص

السجلات تساعد في تتبع المشاكل وتشخيصها.

// إدارة السجلات
ClassMethod ManageLogs()
{
    // عرض سجلات النظام
    Set log = ##class(%SYS.System).GetLastNSysLog(100)
    For i = 1:1:$LISTLENGTH(log) {
        Set entry = $LIST(log, i)
        Write $LIST(entry, 1), " - ", $LIST(entry, 2), !
    }
    
    // تنظيف السجلات القديمة
    Do ##class(%SYS.System).PurgeSysLog(30)  // 30 يوم
}

// تشخيص المشاكل
ClassMethod DiagnoseIssue()
{
    // التحقق من اتصالات قاعدة البيانات
    Set status = ##class(%SYS.Database).CheckIntegrity("USER")
    Write "سلامة قاعدة البيانات: ", $SELECT($$$ISOK(status):"جيد", 1:"مشكلة"), !
    
    // التحقق من الذاكرة
    Do ##class(%SYSTEM.Process).GetMemoryInfo(.mem)
    If mem("Used") > mem("Total") * 0.9 {
        Write "تحذير: الذاكرة تقترب من النفاد!", !
    }
}

📝 اختبار التحقق

1 كيف تعرض معلومات النظام في IRIS؟
A باستخدام ##class(%SYS.System).GetSystemInfo()
B باستخدام Write $SYSTEM
C باستخدام ##class(Config.System).Info()
D باستخدام Show-System cmdlet
💡 الشرح

##class(%SYS.System).GetSystemInfo() يُرجع معلومات شاملة عن النظام.

2 ما هو Namespace في IRIS؟
A نوع من قواعد البيانات
B مساحة عمل منطقية لتنظيم البيانات
C مستخدم النظام
D دور الصلاحيات
💡 الشرح

Namespace هو مساحة عمل منطقية تنظم البيانات والكود في IRIS.

كيف يمكن مراقبة استخدام الذاكرة في IRIS؟
💡 الشرح

Management Portal يوفر System Usage لمراقبة الذاكرة والمعالج والقرص

💡 النقاط الرئيسية

  • إدارة النظام تتضمن إعدادات والأمان والمراقبة
  • المستخدمين والأدوار تتحكم في الوصول
  • مراقبة النظام تضمن الأداء والاستقرار
  • السجلات تساعد في تشخيص المشاكل
  • Namespace ي organize البيانات والكود