<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های رسول صفری</title>
        <link>https://virgool.io/feed/@rasooll</link>
        <description>دوستدار گنو/لینوکس ، دواپس در کافه بازار</description>
        <language>fa</language>
        <pubDate>2026-06-17 05:56:33</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/21355/avatar/ptNwu4.png?height=120&amp;width=120</url>
            <title>رسول صفری</title>
            <link>https://virgool.io/@rasooll</link>
        </image>

                    <item>
                <title>آموزش استفاده از Ceph RBD در کوبرنتیز</title>
                <link>https://virgool.io/@rasooll/ceph-rbd-in-k8s-m4cmxktrrf3z</link>
                <description>امروز می‌خوام توی این پست درباره‌ی نحوه استفاده از Ceph RDB در PVC های کوبرنتیز بنویسم. توجه: در این آموزش فرض بر این است که شما از یک Ceph provider سرویس می‌گیرید، لذا از توضیحات مربوط به ساخت Pool در Ceph صرف نظر شده است.خب تا اینجای کار شما باید اطلاعات اتصال به یک Ceph pool را داشته باشید که در ادامه از آنها استفاده خواهیم کرد.قدم اول - راه اندازی rbd-provisioner :برای دیپلوی کردن rbd-provisioner می‌توانید از این مخزن در گیت‌هاب با استفاده از دستورات زیر استفاده کنید:$ git clone https://github.com/rasooll/rbd-provisioner.git
$ kubectl apply -n kube-system -f ./rbd-provisioner/deplyبه این صورت می‌توانیم دیپلوی را چک کنیم:$ kubectl get pods -l app=rbd-provisioner -n kube-system
NAME                               READY   STATUS    RESTARTS   AGE
rbd-provisioner-75b85f85bd-p9b8c   1/1     Running   0         3m45sدر اینجا ما توانستیم rbd-provisioner را در نیم‌اسپیس kube-system دیپلوی کنیم.قدم دوم - ساخت Secretها:برای admin-key و client-key که از سرویس دهنده Ceph گرفته‌ایم نیاز است یک سکرت به صورت زیر بسازیم:$ kubectl create secret generic ceph-admin-secret \
    --type=&amp;quotkubernetes.io/rbd&amp;quot \
    --from-literal=key=&#039;&lt;key-value&gt;&#039; \
    --namespace=kube-systemبه جای &lt;key-value&gt; باید مقدار admin-key خود را قرار دهید.و برای client-key هم به همین صورت:kubectl create secret generic ceph-k8s-secret \
  --type=&amp;quotkubernetes.io/rbd&amp;quot \
  --from-literal=key=&#039;&lt;key-value&gt;&#039; \
  --namespace=kube-systemقدم سوم - ساخت Storage Class:فرض می‌کنیم آدرس مانیتورهای Ceph ما به صورت زیر باشد:10.10.10.11:678910.10.10.12:678910.10.10.13:6789لازم هست برای آنها Service و ‌Endpoint بسازیم چون اگر زمانی آدرس آنها تغییر کند و ما مستقیما از آنها در storageClass خود استفاده کرده باشیم تمامی PVC هایی که قبلا ساخته ایم دیگر کار نخواهند کرد.در ابتدا این پروژه را Clone می‌کنیم:$ git clone https://github.com/rasooll/k8s-ceph-storageclass.gitسپس فایل های endpoint و storageClass را با اطلاعاتی که از سرویس دهنده Ceph گرفته‌ایم تکمیل می‌کنیم و با استفاده از دستور زیر storageClass را می‌سازیم:$ kubectl apply -n kube-system -f ./k8s-ceph-storageclass/deployقدم چهارم - ساخت PVC برای تست:ابتدا فایل مربوط به ساخت pvc را ایجاد می‌کنیم:$ vim ceph-rbd-claim.yml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ceph-rbd-claim1
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ceph-rbd
  resources:
    requests:
      storage: 1Giسپس آن را اعمال می‌کنیم:$ kubectl apply -f ceph-rbd-claim.yml
persistentvolumeclaim/ceph-rbd-claim1 createdو در نهایت خواهیم داشت:$ kubectl get pvc
NAME              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
ceph-rbd-claim1   Bound    pvc-c6f4399d-43cf-4fc1-ba14-cc22f5c85304   1Gi        RWO            ceph-rbd       43sاگر مانند خروجی بالا بود که همه چیز ردیف هست اما اگر نبود به من پیام بدید!</description>
                <category>رسول صفری</category>
                <author>رسول صفری</author>
                <pubDate>Fri, 22 May 2020 15:13:55 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از گواهی LetsEncrypt SSL در ایمیل سرور Zimbra</title>
                <link>https://virgool.io/@rasooll/installing-a-letsencrypt-ssl-certificate-sd7gmjssbc24</link>
                <description>سلام، امروز میخواهیم با همدیگه در ایمیل سرور Zimbra یک گواهی SSL از نوع LetsEncrypt نصب کنیم، کار خیلی آسونی هست بریم که انجامش بدیم.نکته: در Zimbra Server نسخه ۸.۷ و بالاتر برخی دستورات با کاربر zimbra انجام می‌شود، اما در نسخه ۸.۶ و پایین‌تر تمامی این دستورات باید با کاربر root انجام شوند.ابتدا باید سرویس &#x60;zimbraproxy&#x60; و &#x60;mailboxd&#x60; رو متوقف کنیم:$  zmproxyctl stop
$ zmmailboxdctl stopحال نیاز است تا پروژه LetsEncrypt رو داشته باشیم(البته می‌توانید از بسته Certbot نیز با توجه با سیستم عامل یا توزیع خود استفاده کنید).$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencryptالان با استفاده از دستور زیر می‌توانیم برای دامنه مورد نظر خودمون درخواست گواهی SSL بدهیم:# ./letsencrypt-auto certonly --standalone -d xmpp.example.comچون سرویس &#x60;zimbraproxy&#x60; متوقف شده است یک وب سرور standalone میتواند روی پورت ۸۰ شروع به کار کند برای تایید هویت دامنه شما.با دیدن خروجی مانند زیر یعنی گواهی SSL شما صادر شده است:IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/zimbra86.zimbra.io/fullchain.pem. Your cert
   will expire on 2016-03-04. To obtain a new version of the
   certificate in the future, simply run Let&#039;s Encrypt again.
 - If like Let&#039;s Encrypt, please consider supporting our work by:

   Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-leفایل های SSL کجا قرار دارند؟ در مسیر زیر/etc/letsencrypt/live/domainnameکه در اینجا domainname همان نام دامنه شماست.root@zimbra86:/etc/letsencrypt/live/zimbra86.zimbra.io# ls -al
total 8
drwxr-xr-x 2 root root 4096 Dec  5 16:46 .
drwx------ 3 root root 4096 Dec  5 16:46 ..
lrwxrwxrwx 1 root root   42 Dec  5 16:46 cert.pem -&gt; ../../archive/zimbra86.zimbra.io/cert1.pem
lrwxrwxrwx 1 root root   43 Dec  5 16:46 chain.pem -&gt; ../../archive/zimbra86.zimbra.io/chain1.pem
lrwxrwxrwx 1 root root   47 Dec  5 16:46 fullchain.pem -&gt; ../../archive/zimbra86.zimbra.io/fullchain1.pem
lrwxrwxrwx 1 root root   45 Dec  5 16:46 privkey.pem -&gt; ../../archive/zimbra86.zimbra.io/privkey1.pemحال شما علاوه بر Intermediate CA نیاز به Root CA نیز دارید که میتوانید آن را از این لینک دریافت نمایید.فایل chain.pem را با یک ویرایشگر متن باز کرده و یک نمونه از Root CA مانند زیر به انتهای فایل خود اضافه کنید.-----BEGIN CERTIFICATE-----
YOURCHAIN
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----حال با استفاده از دستورات زیر گواهی SSL خود را به محل نصب Zimbra منتقل می‌کنیم:root@mail2:~# mkdir /opt/zimbra/ssl/letsencrypt
root@mail2:~# cp /etc/letsencrypt/live/mail2.next.zimbra.io/* /opt/zimbra/ssl/letsencrypt/
root@mail2:~# chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*
root@mail2:~# ls -la /opt/zimbra/ssl/letsencrypt/
total 24
drwxr-xr-x 2 root   root   4096 Jul 15 22:59 .
drwxr-xr-x 8 zimbra zimbra 4096 Jul 15 22:59 ..
-rw-r--r-- 1 zimbra zimbra 1809 Jul 15 22:59 cert.pem
-rw-r--r-- 1 zimbra zimbra 2847 Jul 15 22:59 chain.pem
-rw-r--r-- 1 zimbra zimbra 3456 Jul 15 22:59 fullchain.pem
-rw-r--r-- 1 zimbra zimbra 1704 Jul 15 22:59 privkey.pemتوجه داشته باید نام دامنه خود را جایگزین کنید.حال باید اعتبار گواهی SSL خود را بررسی کنید:zimbra@zimbra87:/opt/zimbra/ssl/letsencrypt/$ /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem 
** Verifying cert.pem against privkey.pem
Certificate (cert.pem) and private key (privkey.pem) match.
Valid Certificate: cert.pem: OKحال بهتر است که از گواهی های موجود در سرور بکاپ بگیریم، به هر حال بکاپ هیچوقت ضرر نداره.cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date &amp;quot+%Y%m%d&amp;quot)حال باید Private key مربوط به SSL خودمون رو کپی کنیم:cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.keyالان می‌تونیم Deploy نهایی رو انجام بدیم:zimbra@mail2://opt/zimbra/ssl/letsencrypt/$ /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem 
** Verifying &#039;cert.pem&#039; against &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.key&#039;
Certificate &#039;cert.pem&#039; and private key &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.key&#039; match.
** Verifying &#039;cert.pem&#039; against &#039;chain.pem&#039;
Valid certificate chain: cert.pem: OK
** Copying &#039;cert.pem&#039; to &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.crt&#039;
** Copying &#039;chain.pem&#039; to &#039;/opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt&#039;
** Appending ca chain &#039;chain.pem&#039; to &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.crt&#039;
** Importing cert &#039;/opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt&#039; as &#039;zcs-user-commercial_ca&#039; into cacerts &#039;/opt/zimbra/common/lib/jvm/java/jre/lib/security/cacerts&#039;
** NOTE: restart mailboxd to use the imported certificate.
** Saving config key &#039;zimbraSSLCertificate&#039; via zmprov modifyServer mail2.next.zimbra.io...failed (rc=1)
** Installing ldap certificate &#039;/opt/zimbra/conf/slapd.crt&#039; and key &#039;/opt/zimbra/conf/slapd.key&#039;
** Copying &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.crt&#039; to &#039;/opt/zimbra/conf/slapd.crt&#039;
** Copying &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.key&#039; to &#039;/opt/zimbra/conf/slapd.key&#039;
** Creating file &#039;/opt/zimbra/ssl/zimbra/jetty.pkcs12&#039;
** Creating keystore &#039;/opt/zimbra/mailboxd/etc/keystore&#039;
** Installing mta certificate &#039;/opt/zimbra/conf/smtpd.crt&#039; and key &#039;/opt/zimbra/conf/smtpd.key&#039;
** Copying &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.crt&#039; to &#039;/opt/zimbra/conf/smtpd.crt&#039;
** Copying &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.key&#039; to &#039;/opt/zimbra/conf/smtpd.key&#039;
** Installing proxy certificate &#039;/opt/zimbra/conf/nginx.crt&#039; and key &#039;/opt/zimbra/conf/nginx.key&#039;
** Copying &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.crt&#039; to &#039;/opt/zimbra/conf/nginx.crt&#039;
** Copying &#039;/opt/zimbra/ssl/zimbra/commercial/commercial.key&#039; to &#039;/opt/zimbra/conf/nginx.key&#039;
** NOTE: restart services to use the new certificates.
** Cleaning up 3 files from &#039;/opt/zimbra/conf/ca&#039;
** Removing /opt/zimbra/conf/ca/41b01cbb.0
** Removing /opt/zimbra/conf/ca/ca.key
** Removing /opt/zimbra/conf/ca/ca.pem
** Copying CA to /opt/zimbra/conf/ca
** Copying &#039;/opt/zimbra/ssl/zimbra/ca/ca.key&#039; to &#039;/opt/zimbra/conf/ca/ca.key&#039;
** Copying &#039;/opt/zimbra/ssl/zimbra/ca/ca.pem&#039; to &#039;/opt/zimbra/conf/ca/ca.pem&#039;
** Creating CA hash symlink &#039;41b01cbb.0&#039; -&gt; &#039;ca.pem&#039;
** Creating /opt/zimbra/conf/ca/commercial_ca_1.crt
** Creating CA hash symlink &#039;4f06f81d.0&#039; -&gt; &#039;commercial_ca_1.crt&#039;
** Creating /opt/zimbra/conf/ca/commercial_ca_2.crt
** Creating CA hash symlink &#039;2e5ac55d.0&#039; -&gt; &#039;commercial_ca_2.crt&#039;حال یکبار لازم است تا سرور Zimbra راه اندازی مجدد گردد:zmcontrol restartکار تمام شد الان میتوانیم آدرس ایمیل سرور خودمون رو باز کنیم و صفحه زیر را ببینیمگواهی SSL ما نیز به صورت زیر است:</description>
                <category>رسول صفری</category>
                <author>رسول صفری</author>
                <pubDate>Tue, 10 Sep 2019 14:32:27 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش کانفیگ سیستم مانیتورینگ - Alertmanager</title>
                <link>https://virgool.io/bistoon/monitoring-system-4-alertmanager-hylms5nthls7</link>
                <description>قسمت چهارم از سری آموزش های کانفیگ سیستم مانیتورینگ توسط Prometheus را شروع می‌کنیم.در این بخش قصد داریم تا Alertmanager را کانفیگ کنیم، تا هر زمانی که مقدار دیتایی که در حال مانیتور کردن آن هستیم از حد مشخصی فاصله گرفت به سرعت با خبر شویم.چرا Prometheus Alertmanager ؟چون قابلیت شخصی سازی بسیار زیادی دارد و تقریبا می‌توان گفت کنترل همه چیز در دستان شماست!می‌توانید تنظیم کنید برایتان ایمیل ارسال شود یا از طریق تلگرام، Slack و ... شما را مطلع سازد، همچنین قابلیت ارسال Alert از طریق وب هوک به دیگر سیستم‌ها را نیز دارا می‌باشد.برای یادگیری بهتر این آموزش لازم است تا قسمت‌های قبلی آن را دیده باشید:قسمت اولقسمت دومقسمت سومبرای شروع باید فایل docker-compose.yml را ویرایش کنیم و کانتینر مربوط به Alertmanager را اضافه کنیم:alertmanager:    image: quay.io/prometheus/alertmanager:latest    volumes:      - ./alertmanager_volume/alertmanager.yml:/etc/prometheus/alertmanager.yml      - ./alertmanager_volume/data:/data    command:      - &#x27;--config.file=/etc/prometheus/alertmanager.yml&#x27;      - &#x27;--storage.path=/data&#x27;    ports:      - 9093:9093همچنین لازم است تا کانتینر alertmanager در کانتینر prom نیز لینک شود.سپس یک دایرکتوری به نام alertmanager_volume ایجاد کرده و فایل alertmanager.yml را داخل آن ایجاد میکنیم، محتویات این فایل به صورت زیر است:global:
  # The smarthost and SMTP sender used for mail notifications.
  smtp_smarthost: &#039;smtp.google.com:587&#039;
  smtp_from: &#039;your-alerting-email@google.com&#039;
  smtp_auth_username: &#039;your-alerting-email@gmail.com&#039;
  smtp_auth_password: &#039;your-password&#039;

route:
  group_by: [&#039;alertname&#039;, &#039;cluster&#039;, &#039;service&#039;]
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 3h
  receiver: &#039;support-team-email&#039;
receivers:
- name: &#039;support-team-email&#039;
  email_configs:
      - to: &#039;your-email-for-get-alert@example.com&#039;
          send_resolved: trueحال باید فایل prometheus.yml را که در قسمت اول ساختیم ویرایش نماییم و تنظیمات زیر را به آن اضافه نماییم:alerting:  alertmanagers:
    - static_configs:
      - targets:
        - alertmanager:9093
rule_files:
  - &quot;prometheus.rules.yml&quot;مقدار alertmanager:9093 همان نامی از که شما زمان لینک کردن alertmanager به prometheus وارد کرده‌اید.حال در کنار فایل prometheus.yml یک فایل جدید ایجاد می‌کنیم و نام آن را prometheus.rules.yml می‌گذاریم و محتویات آن نیز به صورت زیر می‌نویسیم:groups:
  - name: nginx1
    rules:
        - alert: Active Connection
          expr: nginx_server_connections{instance=&quot;xxx.xxx.xxx.xxx:port&quot;, status=&quot;active&quot;} &gt; 1000
          for: 5m
          labels:
            severity: 2
         annotations:
         summary: &quot;Value: {{ $value }}, Limit: 100&quot;
         description: &quot;This is a decscription.&quot;برای توضیح کد بالا می‌توان گفت اگر کانکشن های active سرور مشخص شده برای ۵ دقیقه بیشتر از ۱۰۰۰ عدد بود برای ما alert ارسال شود.به همین صورت می‌توانید برای مقادیر مورد نظر خود rule نوشته و از alertmanager استفاده نمایید.قسمت چهارم از سری آموزش کانفیگ سیستم مانیتورینگ به پایان رسید.</description>
                <category>رسول صفری</category>
                <author>رسول صفری</author>
                <pubDate>Mon, 26 Nov 2018 16:06:25 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش کانفیگ سیستم مانیتورینگ -  Nginx</title>
                <link>https://virgool.io/bistoon/monitoring-system-3-nginx-hfvwtsabxvmi</link>
                <description>قسمت سوم آموزش کانفیگ سیستم مانیتورینگ رو شروع میکنیم با آموزش مانیتور کردن Nginx.یک ماژول هست به اسم [nginx-module-vts] که دیتا های لازم برای مانیتور کردن Nginx را در اختیار ما قرار میدهد، در ابتدای کار باید این ماژول را نصب کنیم که نصب آن نیز به این صورت است:در توزیع اوبونتو ابتدا لازم است تا پیشنیازهای آن را نصب کنیم:$ sudo apt install -y build-essential git tree
$ sudo apt install -y perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-devسپس ماژول مربوطه را Clone می‌کنیم:git clone git://github.com/vozlt/nginx-module-vts.gitحال باید سورس Nginx را برای لینوکس دانلود کنیم [پیوند] و بعد از خارج کردن از حالت فشرده وارد دایرکتوری آن می‌شویم و دستورات زیر را اجرا میکنیم:./configure \
    --user=nginx \
    --group=nginx \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-pcre \
    --with-file-aio \
    --with-http_realip_module \
    --without-http_scgi_module \
    --without-http_uwsgi_module \
    --without-http_fastcgi_module \
    --add-module=/path/to/nginx-module-vtsتوجه کنید که خط آخر دستور بالا باید آدرس دایرکتوری ماژولی که Clone کرده‌اید را وارد نمایید.و سپس:$ make
$ sudo make installکامپایل Nginx هم به پایان رسید، حال به مرحله‌ی پیکربندی میرسیم.تنظیمات Nginx خود را باید به صورت زیر انجام دهید:http {
    vhost_traffic_status_zone;
    ...
    server {
        ...
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}حال برای دریافت دیتا توسط Prometheus باید از exporter مربوط به این کار استفاده کنیم.روی سروری که Nginx نصب است بااستفاده از دستور زیر کانتینر مربوط به exporter را راه اندازی میکنیم:$ docker run  --restart always  --net host --env NGINX_STATUS=&quot;http://localhost/status/format/json&quot; -d --name nginx-prometheus-exporter sophos/nginx-vts-exporterحال روی پورت ۹۹۱۳ می‌توانیم به این exporter دسترسی داشته باشیم.الان نوبت به تنظیمات Prometheus برای اتصال به این exporter رسیده ، فایل prometheus.yml را باز می‌کنیم و تنظیمات زیر را در آن قرار میدهیم:- job_name: &quot;nginx-exporter&quot;
    scrape_interval: &quot;15s&quot;
    static_configs:
        - targets: [&#039;localhost:9913&#039;]مقدار لوکال هاست باید با آدرس Nginx جایگزین گردد.کار تقریبا تمام است فقط برای رسم نمودار برای دیتا ها ، ما از Grafana استفاده می‌کردیم که در اینجا باید داشبورد مربوط به این ماژول [2949] را نیز نصب کنیم.پیش نمایش داشبورد 2949</description>
                <category>رسول صفری</category>
                <author>رسول صفری</author>
                <pubDate>Tue, 13 Nov 2018 16:53:03 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش کانفیگ سیستم مانیتورینگ -  Grafana</title>
                <link>https://virgool.io/bistoon/monitoring-system-2-grafana-ljp6uvjbbu99</link>
                <description>گرافانا چیست؟تا حالا شده یک سری دیتا داشته باشید و بخواهید نمودار برای دیتاهاتون رسم کنید؟ خوب Grafana دقیقا برای شما ساخته شده ولی در کنار این امکان کلی امکانات دیگه در اختیار شما قرار میدهد، مثلا شما میتوانید برای دیتا هاتون Alert تعریف کنید و اعلانات را از طریق ایمیل ، تلگرام و ... دریافت کنید.راستی Grafana متن باز هم هست و در صورت تمایل می‌توانید روی پروژه مشارکت داشته باشید. [پیوند]در مطلب قبل آموزش نصب و پیکربندی Prometheus را توضیح دادم یعنی در حال حاضر ما یکسری دیتا داریم که قصد داریم برای آنها گراف رسم کنیم.تنظیمات Docker compose:به سرویس‌های فایل docker-compose.yml ای که داریم تنظیمات زیر را اضافه می‌کنیم:grafana:
    image: grafana/grafana
    restart: always
    ports:
       - &quot;3000:3000&quot;
    depends_on:
      - prom
    links:
      - prom:prom
    volumes:
      - &quot;/your-path-to-volume/data/:/var/lib/grafana/&quot;
      - &quot;/your-path-to-volume/config/grafana.ini:/etc/grafana/grafana.ini&quot;
      - &quot;/your-path-to-volume/log/:/var/log/grafana/&quot;برای grafana.ini ایجاد یک فایل خالی کافی است ، در آینده میتوانید کانفیگ‌های خود را در این فایل بنویسید.کل دایرکتوری های ساخته شده باید توسط کاربر و گروه 472 قابل نوشتن باشد.حال باید یکبار Docker compose را راه‌اندازی مجدد کنیم، الان با استفاده از پورت ۳۰۰۰ به گرافانا دسترسی داریم نام کاربری و رمز عبور پیشفرض admin می باشد.از بخش Configuration وارد صفحه Data source می‌شویم و روی Add ... کلیک می‌کنیم، نوع آن را Prometheus قرار میدهیم و آدرس سرویس خودمان را می‌دهیم که در اینجا برای ما prom:9090 می‌باشد.برای PostgreSQL می‌توانید از داشبورد شماره [455] استفاده کنید.پیشنمایش:این آموزش ادامه دارد ...</description>
                <category>رسول صفری</category>
                <author>رسول صفری</author>
                <pubDate>Mon, 12 Nov 2018 16:04:55 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش کانفیگ سیستم مانیتورینگ - Prometheus</title>
                <link>https://virgool.io/bistoon/monitoring-system-1-prometheus-usezhlpf02zx</link>
                <description>اول از هر چیزی Prometheus چیست؟یک سرویس مانیتورینگ همه فن حریف است که به صورت متن باز منتشر می‌شود (پیوند) ، همچنین این سرویس توسعه پذیری بسیار بالایی دارد و از افزونه‌های زیادی بهره میبرد.پیشنیازها:DockerDocker Composeکانفیگ Docker compose:version: &quot;3&quot;
services:
        prom:
                image: quay.io/prometheus/prometheus
                volumes:
                        - /path/to/file/prometheus.yml:/etc/prometheus/prometheus.yml
                command: &quot;--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus&quot;
                restart: always
                ports:
                        - 9090:9090فایل prometheus.yml:global:
    scrape_interval:     15s # By default, scrape targets every 15 seconds.
    evaluation_interval: 15s # By default, scrape targets every 15 seconds.
    external_labels:
          monitor: &#039;codelab-monitor&#039;
     scrape_configs:
         - job_name: &#039;prometheus&#039;
     scrape_interval: 5s
     # metrics_path defaults to &#039;/metrics&#039;
    # scheme defaults to &#039;http&#039;.
    static_configs:
        - targets: [&#039;localhost:9090&#039;]توجه داشته باشید داخل فایل &#x60;docker-compose.yml&#x60; باید آدرس مربوط به فایل &#x60;prometheus.yml&#x60; را ویرایش نمایید.حال با استفاده از دستور زیر باید کانتینر مربوط به Prometheus را اجرا نمایید:$ docker-compose up -dخوب تبریک میگم الان شما روی پورت ۹۰۹۰ سرویس Prometheus را دارید.حال باید کانفیگ مربوط به سرویسی که میخواهید مانیتور کنید را انجام دهید ، Prometheus پارامترهای مورد نیاز را از طریق Exporter ها دریافت می‌کند [لیست کامل]راه اندازی و کانفیگ exporter برای Prometheus:داخل فایل &#x60;docker-compose.yml&#x60; در بخش &#x60;services&#x60; تنظیمات زیر را اضافه میکنیم:postgres:
     image: wrouesnel/postgres_exporter
     ports:
            - &quot;9187:9187&quot;
     environment: DATA_SOURCE_NAME=&quot;postgresql://postgres:password@localhost:5432/?sslmode=disable&quot;حال لازم است که داخل فایل &#x60;prometheus.yml&#x60; را نیز ویرایش نمایید و در انتهای آن تنظیمات زیر را وارد نمایید:- job_name: &quot;postgres&quot;
    scrape_interval: &quot;15s&quot;
    static_configs:
          - targets: [&#039;postgres:9187&#039;]حال باید کانتینر ها را راه اندازی مجدد نمایید.$ docker-compose kill
$ docker-compose up -dخوب دیگه کار تمام شد ، اکنون داخل Prometheus روی پورت ۹۰۹۰ میتوانید پارامترهای مربوط به مانیتورینگ PostgreSQL را مشاهده نمایید.این آموزش ادامه دارد ، در بخش بعدی آموزش مربوط به اتصال Grafana به Prometheus را خواهیم داشت...</description>
                <category>رسول صفری</category>
                <author>رسول صفری</author>
                <pubDate>Mon, 12 Nov 2018 13:53:28 +0330</pubDate>
            </item>
            </channel>
</rss>