Today's Work
بعد از این بخش
بیشتر زمان کار روی یک پروژه سپری شد
ساخت یک
Microservice
برای مانیتورینگ پکیج های
MikroTik
مدلی که تو دیتا سنتر داشتیم این بود 😼
MikroTik RB4011iGS+RM
یک روتر قدرتمند برای شبکههای متوسط
که
RouterOS API
هم داره
ایده سرویس ساده بود
یک
Agent
کوچیک نوشتهشده با
Go
که به
MikroTik
متصل شه، اطلاعات پکیج های نصبشده رو بررسی کنه و وضعیت رو برای یک سرور مرکزی ارسال میکنه
Sd03::12
Architecture
+----------------+
| MikroTik |
| RB4011 |
| RouterOS API |
+--------+-------+
|
|
Go Microservice
Package Monitor
|
+---------------+----------------+
| |
| Package Scanner |
| Health Reporter |
| Central Server REST API |
+--------------------------------+
Data Model
type RouterPackage struct {
Name string `json:"name"`
Version string `json:"version"`
Disabled bool `json:"disabled"`
RouterID string `json:"router_id"`
Timestamp int64 `json:"timestamp"`
}
اسم
Package
نسخه
وضعیت فعال بودن
شناسه روتر
زمان ثبت اطلاعات
Package Scanner
Agent
از طریق
RouterOS API
اطلاعات پکیج ها رو دریافت میکنه
func (c *Client) GetPackages() ([]RouterPackage, error) {
reply, err := c.api.Run("/system/package/print")
if err != nil {
return nil, err
}
var packages []RouterPackage
for _, item := range reply.Re {
packages = append(packages, RouterPackage{
Name: item.Map["name"],
Version: item.Map["version"],
})
}
return packages, nil
}
Reporting
بعد از جمعآوری اطلاعات
Agent
دادهها رو به سرور مرکزی ارسال میکنه
func Report(data []RouterPackage) error {
body, _ := json.Marshal(data)
resp, err := http.Post(
"https://monitor.example.com/api/mikrotik/packages",
"application/json",
bytes.NewBuffer(body),
)
if err != nil {
return err
}
defer resp.Body.Close()
return nil
}
Example Payload
{
"router_id": "branch-tehran-01",
"device": "RB4011",
"packages": [
{
"name": "routeros",
"version": "7.16.1"
},
{
"name": "wireless",
"version": "7.16.1"
}
]
}
پایان روز
امروز شاید از بیرون روز خیلی شلوغی نبود
ولی روز به شدت خوبی بود
یک پیام
چند خاطره
یک شروع دوبار
و چند ساعت کد
گاهی مسیر، آدمهایی که تو اون هستند و چیزهایی که ساخته میشن، خودشون کافی ان
روز سوم تموم شد
روز چهارم دیگه کاری نیست مرخصی گرفتم
یکمی هم حال خوب
🛤
Top comments (0)