مانیتورینگ nginx با zabbix

در پست قبل در مورد Nginx صحبت کردیم و همینطور سناریویی رو هم مطرح کردیم تا Feature های مختلف ان را یاد بگیریم .در این پست به سراغ مانیتورینگ Nginx با  zabbix خواهیم رفت .

در ابتدا شروع به نصب Nginx میکنیم و برای انکه server block درست کنیم تا بتوانیم چندین website در یک webserver داشته باشیم  و سپس شروع به نصب  zabbix agent بر روی ان میکنیم و آن را در زبیکس به عنوان Host اضافه میکنیم .

Download

نصب Nginx  بر روی Ubuntu 20.04

Nginx در Repository های Default  در Linux وجود دارد , این امکان فراهم است تا ان را با استفاده از این Repository ها با apt نصب کنیم .

sudo apt update

sudo apt install nginx

بعد از اتمام پروسه ی نصب Nginx ,

Ununtu 20.04 سرویس Nginx را استارت میکند .web server باید در وضعیت Running باشد که میتوانیم با دستور زیر مطمئن شویم که سرویس در وضعیت Running است :

systemctl status nginx

برای Test کردن , اگر در Browser ادرس  http://your_server_ip  را وارد کنیم باید صفحه ی Default ان Nginx  را ببینیم :

اگر صفحه ی بالا را ببینیم یعنی web server ما  running است و میتوانیم ان را manage کنیم .

Managing the Nginx Process

برای Stop  کردن web server:

sudo systemctl stop nginx

برای Start کردن Web Server زمانی که ان Stop  است :

sudo systemctl start nginx

برای Stop  و سپس Start کردن ان :

sudo systemctl restart nginx

اگر در Configuration file مربوط به Nginx تغییرات ایجاد کرده باشیم , Nginx  میتواند Reload شود بدون انکه Dropp شدن connection ها :

sudo systemctl reload nginx

حال که با دستورات ابتدایی management مربوط به nginx اشنا شدیم , به سراغ این می رویم که بر روی یک host بیش از یک domain را داشته باشیم و config کنیم .

ایجاد Server Blocks  :

در واقع Server Block همانند Virtual Host در Apache  است و از ان استفاده میکنیم تا بر روی یک Host بیش از یک Domain داشته باشیم .در این مثال ما از دامین sananetco.com استفاده میکنیم و شما ان را با دامین مورد نظر خود جایگزین کنید .

در Nginx  در Ununtu 20.04 یک Server block به صورت Default فعال است و وجود دارد که اگر بخواهیم چندین Website بر روی یک host داشته باشیم برای ما ناخوشایند خواهد بود .

حال شروع به ساختن directory structure در  /var/www/ برای سایت sananetco.com میکنیم .در واقع مسیر /var/www/html را برای زمانی که درخواست های client با هیچ یک از سایت های دیگر match نبود به حال خود رها میکنیم .

برای ایجاد directory  مربوط به sananetco.com :

sudo mkdir -p /var/www/sananetco.com/html

حال برای ایجاد ownership :

sudo chown -R $USER:$USER /var/www/sananetco.com/html

برای اعمال دسترسی به owner جهت Read, Write,Execute  :

sudo chmod -R 755 /var/www/sananetco.com

حال برای ایجاد یک نمونه index.html وارد مسیر var/www/sananetco.com/html/ می شویم و index.html را با nano باز میکنیم :

nano /var/www/sananetco.com/html/index.html

و حال HTML نمونه زیر را در ان Paste میکنیم :

<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>

برای انکه Nginx بتواند از این محتوا استفاده کند و ان را ارائه دهد , ایجاد یک server block ضروری است .به جای انکه  configuration file directory  حالت default را تغییر دهیم , در مسیر زیر پرونده جدید را ایجاد میکنیم :

sudo nano /etc/nginx/sites-available/sananetco.com

حال configuration های زیر را در ان paste میکنیم :

server {
listen 80;
listen [::]:80;

root /var/www/sananetco.com/html;
index index.html index.htm index.nginx-debian.html;

server_name sananetco.com www.sananetco.com;

location / {
try_files $uri $uri/ =404;
}
}

سپس برای  فعال کردن این فایل با ایجاد یک لینک از ان به دایرکتوری sites-enabled ,سرویس nginx در زمان start شدن ان را میخواند :

sudo ln -s /etc/nginx/sites-available/sananetco.com /etc/nginx/sites-enabled/

حال 2 server block وجود دارد تا با توجه به اسم و همچنین پورت به درخواست های کاربران پاسخ دهد :

  • sananetco.com که به درخواست های sananetco.com و www.sananetco.com پاسخ خواهد داد
  • default که به تمامی درخواست های روی پورت 80 که با server block های دیگر match نیست پاسخ خواهد داد .

حال برای انکه مطمئن باشیم که هیج syntax error ای در nging file وجود ندارد :

sudo nginx -t

و در نهایت سرویس nginx  را restart   میکنیم تا تغییرات اعمال شود :

sudo systemctl restart nginx

حال اگر در Browserخود ادرس https://sananetco.com را وارد کنیم صفحه ی زیر را خواهیم دید :