مقالات
توسعه وب

نصب پرومتئوس به صورت یک سرویس روی لینوکس

در این مقاله راهنمای کامل و جامعی درباره نصب پرومتئوس روی سرویس لینوکس را آماده کرده‌ایم که اطلاعات دقیقی را در این باره به شما می‌دهد.

امروزه مانیتورینگ سرویس‌های مختلف در شرکت‌های گوناگون به امری حیاتی تبدیل شده است. یکی از سرویس‌های محبوب برای جمع‌آوری متریک‌های مانیتورینگ، پرومتئوس است که در این مقاله نحوه نصب آن را روی لینوکس به طور کامل و دقیق توضیح داده‌ایم. ما در مجموعه یوتاب می‌توانیم مانیتورینگ سرویس‌های شما را به طور دقیق با این سرویس و گرافانا انجام دهیم. با این حال راهنمای جامعی درباره نصب این سرویس نیز برای شما در این مقاله آماده کرده‌ایم. در ادامه این مطلب جذاب و کاربردی همراه ما باشید.

نصب پرومتئوس روی اوبونتو و دبیان

در این مقاله در ابتدا شما را با روش نصب آخرین نسخه پرومتئوس روی اوبونتو و دبیان و نحوه پیکربندی آن برای سرور لینوکس آشنا می‌کنیم. طبق مراحل زیر پیش بروید.

1.      دانلود پرومتئوس

در مرحله اول وارد صفحه دانلود پرومتئوس شوید. سپس در قسمت Operating System، سیستم عامل خود را وارد کنید و معماری پردازنده خود را نیز در قسمت Architucture در همین صفحه مشخص کنید.

به نسخه‌ای که از پرومتئوس دانلود می‌کنید دقت کنید؛ چرا که این نسخه باید آخرین نسخه پایدار از این نرم افزار باشد و نباید نسخه “rc” آن را دانلود کنید. نسخه‌های “rc” می‌توانند پایدار نباشند. این آرشیو را با کلیک روی گزینه آرشیو دانلود کنید، اگر از ترمینال برای دسترسی استفاده می‌کنید، دستور wget را به شکل زیر وارد کنید.

$ wget https://github.com/prometheus/prometheus/releases/download/v2.11.2/prometheus-2.11.2.linux-amd64.tar.gz

اکنون بعد از انجام این مراحل، فایل tar.gz را روی سیستم خود خواهید داشت. اکنون باید این فایل را از حالت فشردگی خارج یا اصطلاحا آن را Untar کنید.

$ tar xvzf prometheus-2.11.2.linux-amd64.tar.gz

این فایل آرشیوی شامل بخش‌های بسیار مهمی است، اما مهم‌ترین این موارد که باید بدانید، شامل موارد زیر هستند:

  • yml: این فایل برای پیکربندی پرومتئوس است. شما با استفاده از این فایل می‌توانید از سرور پرومتئوس خود استفاده کنید. به‌عنوان‌مثال می‌توانید از آن برای تغییر فاصله اسکرپینگ داخلی یا پیکربندی هشدارهای کاستوم استفاده کنید.
  • Prometheus: این بخش یک باینری برای سرور پرومتئوس شما است. با استفاده از این دستور می‌توانید نمونه پرومتئوس خود را در لینوکس باکس اجرا کنید.
  • Promtool: این یک دستور برای تایید پیکربندی پرومتئوس شما است.

ما قرار نیست پرومتئوس را مستقیما اجرا کنیم، بلکه قرار است آن را به عنوان یک سرویس پیکربندی کنیم. در این حالت اگر پرومتئوس ما ناگهان متوقف شود، استحکام و قابلیت اطمینان بالاتری از خود نشان می‌دهد.

2.    پیکربندی پرومتئوس به عنوان یک سرویس

ابتدای امر برای رعایت مسائل امنیتی، باید یک یوزر پرومتئوس را با استفاده از یک گروه پرومتئوس بسازید:

$ sudo useradd -rs /bin/false prometheus

سپس مطمئن شوید که باینری‌ها را به مسیر local bin خود انتقال داده باشید. برای مثال می‌توانید این باینری‌ها را در فولدر پرومتئوس در دایرکتوری home خود قرار دهید. برای این مرحله از نصب پرومتئوس، می‌توانید از دستور زیر استفاده کنید.

$ cd Prometheus/prometheus-2.11.2.linux-amd64/

$ sudo cp prometheus promtool /usr/local/bin

سپس به کاربر پرومتئوس خود مجوزهای لازم برای استفاده از کتابخانه یا library پرومتئوس را بدهید.

$ sudo chown prometheus:prometheus /usr/local/bin/prometheus

سپس برای پرومتئوس در مسیر /etc یک فولدر بسازید و فایل‌های کنسول، کتابخانه‌های کنسول و محتویات پیکربندی پرومتئوس را به فولدر جدید خود انتقال دهید.

$ sudo mkdir /etc/prometheus

$ sudo cp -R consoles/ console_libraries/ prometheus.yml /etc/prometheus

در این مرحله یک فولدر Data در مسیر روت بسازید و یک فولدر پرومتئوس نیز درون آن قرار دهید.

$ sudo mkdir -p data/prometheus

سپس مجوزهای بازگشتی مربوط را به این فولدرها بدهید.

$ sudo chown -R prometheus:prometheus data/prometheus /etc/prometheus/*

بسیار عالی. شما تا اینجای کار مقدمات اولیه برای ساخت سرویس پرومتئوس را انجام داده‌اید. اکنون به مسیر /lib/systemd/system بروید و یک فایل جدید به نام prometheus.service در آن ایجاد کنید.

$ cd /lib/systemd/system

$ sudo touch prometheus.service

برای دیدن آپشن‌های لانچ مختلف برای پرومتئوس، می‌توانید دستور پرومتئوس را با یک پرچم یا فلگ h، به شکل زیر اجرا کنید.

$ prometheus -h

usage: prometheus [<flags>]

The Prometheus monitoring server

Flags:

-h, –help                     Show context-sensitive help (also try –help-long and

–help-man).

–version                  Show application version.

–config.file=”prometheus.yml”

Prometheus configuration file path.

–web.listen-address=”0.0.0.0:9090″

ویرایش فایل جدید ساخته‌شده

سپس فایل جدید ساخته‌شده را باید ویرایش کنید. برای این کار کافی است دستور زیر را کپی کنید.

$ sudo nano prometheus.service

[Unit]

Description=Prometheus

Wants=network-online.target

After=network-online.target

[Service]

Type=simple

User=prometheus

Group=prometheus

ExecStart=/usr/local/bin/prometheus \

–config.file=/etc/prometheus/prometheus.yml \

–storage.tsdb.path=”/data/prometheus” \

–web.console.templates=/etc/prometheus/consoles \

–web.console.libraries=/etc/prometheus/console_libraries \

–web.listen-address=0.0.0.0:9090 \

–web.enable-admin-api

Restart=always

[Install]

WantedBy=multi-user.target

اکنون فایل خود را ذخیره کنید، سرویس خود را در بخش startup فعال کنید و سرویس خود را شروع کنید.

$ sudo systemctl enable prometheus

$ sudo systemctl start prometheus

اکنون سرور پرومتئوس شما در حال اجرا است، حال برای اطمینان از درستی همه موارد باید Web UI خود را متصل کنید. اگر آن را در فایل سرویس خود تغییر نداده باشید، سرور پرومتئوس شما روی آدرس http://localhost:9090 در حال اجرا خواهد بود. در این شرایط شما به صورت پیش‌فرض در این لینک تصویر پرومتئوس را خواهید دید. از طرفی در این شرایط پرومتئوس عملیات مانیتورینگ را خودش آغاز می‌کند.

حال در این تب باز شده، روی گزینه Status کلیک کنید، سپس وارد Targets شوید. در این قسمت تارگت یا هدف خود را که خود سرور پرومتئوس است را مشخص کنید. با تغییر وضعیت State به UP، همه چیز به صورت روان در پرومتئوس شما اجرا می‌شود. اکنون که سرور پرومتئوس ما در حال اجرا است، باید به مرحله بعدی از نصب پرومتئوس، یعنی پیکربندی یک پراکسی معکوس (reverse) برای رمزگذاری و احراز هویت برویم.

راه‌اندازی یک پراکسی معکوس (reverse) برای نصب پرومتئوس

پرومتئوس به صورت پیش‌فرض، از احراز هویت (authentication) یا رمزگذاری TLS پشتیبانی نمی‌کند. اگر شما می‌خواهید پرومتئوس را به صورت محلی اجرا کنید، این مسئله اهمیت خیلی زیادی نیز ندارد. با این حال برای افزایش امنیت شما ضروری است. در واقع اگر می‌خواهید اند پوینت‌های خود را به دنیای بیرون از فضای محلی سیستم خود گسترش دهید، نیاز دارید که یک سیستم احراز هویت قوی برای کاربران پرومتئوس خود ایجاد کنید. ما در این مرحله از انجینیکس (NGINX) به عنوان یک پراکسی معکوس استفاده می‌کنیم، اما پراکسی‌های دیگری نیز هستند که می‌توانید از آن‌ها هم استفاده کنید.

1.      نصب NGINX روی دبیان ۱۰

در این قسمت نحوه نصب NGINX روی دبیان ۱۰ را توضیح خواهیم داد. مراحل این کار تقریبا شبیه به مراحل نصب آن روی اوبونتو است. در مرحله اول می‌توانید به سادگی NGINX را از منابع apt دانلود کنید.

$ sudo apt update

$ sudo apt-get install nginx

این مرحله یک سرویس انجینیکس را روی سرور شما می‌سازد و به صورت پیش‌فرض نیز اجرا خواهد شد.

$ sudo systemctl status nginx

● nginx.service – A high performance web server and a reverse proxy server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

Active: active (running) since Fri 2019-07-05 06:01:12 UTC; 1 months 10 days ago

Docs: man:nginx(8)

Main PID: 15792 (nginx)

Tasks: 3 (limit: 4704)

CGroup: /system.slice/nginx.service

├─15792 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

NGINX به صورت پیش‌فرض درخواست‌های HTTP شما روی پورت پیش‌فرض که ۸۰ است، دریافت می‌کند. اگر درباره پورت مورد استفاده توسط NGINX مطمئن نیستید، می‌توانید از دستور زیر استفاده کنید. خط آخر این دستور پورت مربوط به NGINX را به شما می‌گوید.

$ sudo lsof | grep LISTEN | grep nginx

nginx     15792     root    8u     IPv4         1140223421       0t0        TCP *:http (LISTEN)

2.    پیکربندی NGINX به عنوان یک پراکسی معکوس (reverse)

در این مرحله، ما از NGINX به عنوان یک وب سرور استاندارد استفاده نمی‌کنیم؛ به جای آن از این سرویس به عنوان یک پراکسی معکوس برای افزایش امنیت استفاده خواهیم کرد. ریورس پراکسی به گونه‌ای عمل خواهد کرد که دیتاهایی که دریافت می‌شود را به صورت مشخص به پورت‌های مختلف ارسال می‌کند.

به صورت پیش‌فرض، پیکربندی NGINX در مسیر /etc/nginx/nginx.conf. قرار گرفته است. شما باید اطمینان حاصل کنید که در این فایل، میزبان‌های مجازی در مسیر دستور conf.d قرار گرفته‌اند.

$ cat /etc/nginx/nginx.conf

##

# Virtual Host Configs

##

include /etc/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

دستوردهنده conf.d، مسیری است که می‌خواهیم در آن پیکربندی پراکسی معکوس خود را برای پرومتئوس در آن بسازیم. یک فایل جدید به نام prometheus.conf در این مسیر ایجاد کنید و شروع به ویرایش آن کنید.

$ cd conf.d/

$ sudo touch prometheus.conf

پیکربندی زیر را که برای شما آماده کرده‌ایم را در فایل پیکربندی خود کپی کنید.

server {

listen 1234;

location / {

proxy_pass           http://localhost:9090/;

          }

}

اکنون سرور NGINX خود را ری استارت کنید و مسیر http://localhost:1234 را جستجو کنید.

$ sudo systemctl restart nginx

(if you have any errors)

$ sudo journalctl -f -u nginx.service

بسیار عالی. بعد از این جستجو، پرومتئوس خود را می‌بینید که پشت یک پراکسی معکوس قرار گرفته است.

3.  تغییر پیکربندی پرومتئوس برای یک پراکسی معکوس

اکنون که پرومتئوس پشت یک پراکسی معکوس قرار گرفته است، نیاز داریم تا پیکربندی پرومتئوس را برای سازگاری با پراکسی معکوس تغییر دهیم. در ابتدا باید به مسیر /lib/systemd/system بروید و پیکربندی فایل سرویس خود را تغییر دهید.

$ cd /lib/systemd/system

$ sudo nano prometheus.service

ExecStart=/usr/local/bin/prometheus \

–config.file=/etc/prometheus/prometheus.yml \

–storage.tsdb.path=”/data/prometheus” \

–web.console.templates=/etc/prometheus/consoles \

–web.console.libraries=/etc/prometheus/console_libraries \

–web.listen-address=0.0.0.0:9090 \

–web.enable-admin-api \

–web.external-url=https://localhost:1234

اکنون باید سرویس خود را ری استارت کنید. پس از ری استارت کردن مطمئن می‌شوید که سرور شما بالا است و به درستی کار می‌کند. مطمئن شوید که پرومتئوس همچنان در مسیر http://localhost:1234 قابل دسترسی است.

$ sudo systemctl daemon-reload

S sudo systemctl restart prometheus

$ journalctl -f -u prometheus.service

4.    فعال‌کردن احراز هویت (authentication) پراکسی معکوس

قبل از ادامه کار، بیایید نگاهی گذرا به نحوه اعتبارسنجی و احراز هویت بدر سرویس پرومتئوس خود داشته باشیم. خود سرویس پرومتئوس احراز هویت یا اعتبارسنجی درون سرویس ندارد، به همین دلیل برای این کار باید به پراکسی معکوس خود تکیه کنیم. در ابتدا باید یک فایل رمز عبور در فولدر پیکربندی پرومتئوس خود بسازیم. اگر یک htpasswd قابل اجرا روی سیستم خود ندارید، ابتدا مطمئن شوید که آن را در ابتدا نصب می‌کنید.

$ sudo apt-get install apache2-utils

S cd /etc/prometheus

$ sudo htpasswd -c .credentials admin

برای خود یک پسورد قوی شامل ترکیبی از اعداد، حروف بزرگ و کوچک انگلیسی و نشانه‌ها بسازید. همچنین توجه داشته باشید که فایل پسورد خود را درست ساخته باشید. اکنون زمان وارد کردن این فایل به فایل پیکربندی NGINX است. برای این کار به مسیر /etc/nginx/conf.d بروید و با اضافه کردن موارد مورد نیاز، پیکربندی سرور خود را تغییر دهید.

$ cd /etc/nginx/conf.d

server {

listen 1234;

location / {

auth_basic           “Prometheus”;

auth_basic_user_file /etc/prometheus/.credentials;

proxy_pass           http://localhost:9090/;

     }

}

سپس فایل خود را ذخیره کنید و NGINX را ری استارت کنید.

$ sudo systemctl restart nginx

$ journalctl -f -u nginx.service

اگر همه چیز درست بود، به مسیر http://localhost:1234 بروید و چک کنید که آیا مراحل ورود پسورد و احراز هویت آیا از شما خواسته می‌شود یا خیر. اگر باکس ورود نام کاربری و پسورد را دیدید، نشان‌دهنده آن است که مراحل اعتبارسنجی را به درستی اضافه کرده‌اید.

5.  فعال کردن HTTPS روی پراکسی معکوس

برای قسمت آخر این مقاله، به فعال‌سازی پروتکل TLS روی نمونه NGINX خود خواهیم پرداخت. استفاده از پروتکل HTTPS درخواست‌های ورودی به سرور شما را رمزگذاری می‌کند، اما مهم‌تر از آن این است که این مسئله پاسخ‌های سرور شما از جمله تمام متریک‌های موجود را نیز رمزگذاری می‌کند. در ابتدا نیاز داریم تا کلیدهایی را برای پرومتئوس بسازیم.

ساخت کلیدهای خصوصی و عمومی برای پرومتئوس

در این قسمت باید از گواهی‌های خود امضا یا self-signed استفاده کنیم. البته اگر یک مرجع گواهی دارید می‌توانید درخواستی برای گواهی از مرجع خود داشته باشید. برای ساخت این گواهی‌ها، شما نیاز به ابزار certtool برای ساخت گواهی روی نمونه لینوکس خود دارید. ابتدا پکیج‌های مرتبط gnutls را روی سیستم خود نصب کنید. (utils برای اوبونتو و bin برای دبیان)

(Ubuntu)

$ sudo apt-get install gnutls-utils

(Debian)

$ sudo apt-get install gnutls-bin

سپس یک دایرکتوری جدید در مسیر /etc/ssl برای ذخیره‌سازی کلیدهای پرومتئوس خود بسازید.

$ cd /etc/ssl

$ sudo mkdir prometheus

در این مرحله به دایرکتوری پرومتئوس خود بروید و کار خود را با جنریت کردن یک کلید خصوصی برای پرومتئوس شروع کنید.

$ sudo certtool –generate-privkey –outfile prometheus-private-key.pem

اکنون شما کلید خصوصی خود را دارید، بیایید یک گواهی (کلید عمومی) برای پرومتئوس جنریت کنیم.

$ sudo certtool –generate-self-signed –load-privkey prometheus-private-key.pem –outfile prometheus-cert.pem

# The certificate will expire in (days): 3650

# Does the certificate belong to an authority? (Y/N): y

# Will the certificate be used to sign other certificates? (Y/N): y

# Will the certificate be used to sign CRLs? (y/N): y

بسیار عالی. اکنون شما دو کلید در مسیر /etc/ssl/prometheus قرار دادید.

پیکربندی پروتکل HTTPS روی NGINX

اکنون که کلیدها را برای این مورد ساخته‌ایم، باید آن‌ها را وارد پیکربندی NGINX خود کنیم. برای این کار به مسیر /etc/nginx/conf.d برگردید و فایل prometheus.conf خود را ویرایش کنید.

$ cd /etc/nginx/conf.d

$ sudo nano prometheus.conf

server {

listen 1234 ssl;

ssl_certificate /etc/ssl/prometheus/prometheus-cert.pem;

ssl_certificate_key /etc/ssl/prometheus/prometheus-private-key.pem;

location / {

auth_basic           “Prometheus”;

auth_basic_user_file /etc/prometheus/.credentials;

proxy_pass           http://localhost:9090/;

     }

}

اکنون دوباره سرور NGINX خود را ری استارت کنید. اکنون هاست مجازی شما باید به HTTPS تغییر کرده باشد.

$ sudo systemctl restart nginx

$ sudo journalctl -f -u nginx.service

تایید دریافت پرومتئوس توسط پروتکل HTTPS

اکنون می‌خواهیم cURL برای تایید دریافت پرومتئوس توسط پروتکل HTTPS استفاده کنیم. اگر cURL را روی سیستم خود ندارید، ابتدا مطمئن شوید که آن را روی سیستم خود نصب خواهید کرد.

$ sudo apt-get update

$ sudo apt-get install curl

S curl -u admin -k https://localhost:1234/metrics

Enter host password for user admin:

بعد از انجام این کار باید با چنین مضمون پیامی مواجه شوید.

Sampleforyottab@debian-10:/etc/nginx/conf.d$ curl -u admin -k https://localhost:1234/metrics

Enter host password for user ‘admin’:

# HELP go_gc_duration_seconds A summary of the GC invocation durations.

# TYPE go_gc_durationseconds summary

go_gc_duration_seconds{quantile=”0″} 3.764e-06

go_gc_duration_seconds{quantile=”0.25-} 8.374e-06

go_gc_duration_seconds{quantile=”0.5″) 8.797e-06

go_gc_duration seconds{quantile=”0.75-} 9.308e-06

go_gc_duration_seconds{quantile=”1″) 1.7067e-05

go_gc_duration seconds sum 0.000818489

go_gc_duration_seconds_count 91

اکنون نصب پرومتئوس شما تمام شده است و آماده نصب گرافانا برای مانیتورینگ متریک‌های دریافتی از پرومتئوس هستید.

کلام آخر

در این مقاله سعی کردیم تا شما را به طور کامل با نصب پرومتئوس به صورت یک سرویس روی لینوکس آشنا کنیم. همان‌طور که در مقاله خواندیم، نصب این سرویس فرایند نسبتا طولانی دارد، اما با انجام این کار می‌توانید به راحتی از پرومتئوس استفاده کنید. در مقاله بعدی به نصب گرافانا و مانیتورینگ سرور با استفاده از پرومتئوس و گرافانا پرداخته‌ایم.

همان‌طور که در مقاله دیدیم، نصب پرومتئوس روی لینوکس امر سختی است و نیاز به کمک یک فرد متخصص دارد. ما در مجموعه یوتاب سعی کرده‌ایم تا کار شما را از این بابت راحت کنیم و با ارائه سرویس مانیتورینگ با استفاده از پرومتئوس و گرافانا، شما را در مانیتورینگ سرور یاری کرده باشیم. اگر نیاز به مشاوره با کارشناسان ما برای استفاده از پرومتئوس و مانیتورینگ سرویس‌های خود دارید، می‌توانید همین حالا با ما تماس بگیرید. امیدواریم از خواندن این مقاله نهایت استفاده را برده باشید.

ارسال دیدگاه