<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های امیرحسین</title><link>https://virgool.ir/feed/@amirhosein.zlf</link><description>برنامه نویس سمت سرور. شیفته رئال‌مادرید، تیم مرسدس در فرمول یک و گروه موسیقی کلدپلی. عضوی از خانوده تخفیفان</description><language>fa</language><pubDate>2026-11-12 15:46:41</pubDate><image><url>https://files.virgool.ir/upload/users/17975/avatar/vtCb8F.png</url><title>امیرحسین</title><link>https://virgool.ir/@amirhosein.zlf</link></image><item><title>چگونه تخفیفان برنده جایزه کار آفرین برتر شد؟</title><link>https://virgool.ir/@amirhosein.zlf/چگونه-تخفیفان-برنده-جایزه-کار-آفرین-برتر-شد-knlpkialte51</link><description>چند روز پیش خبر برنده شدن تخفیفان در جایزه کار آفرین برتر آسیا و اقیانوسیه بود که گروه شرکت رو ترکوند. همه خوشحال و پرانرژی از اتفاقی که افتاده و بالاخره در ۳۲مین دوره این مسابقات یک شرکت از ایران برنده شده و ما بخشی از اون هستیم.نازنین دانشور کیست؟جلسه مصاحبه‌م رو به خوبی به خاطر دارم که چقد صمیمی و بر خلاف بقیه جاهایی که رفته بودم متکی به مسئولیت‌پذیری بود نه اینکه چه چیزی بلدی و چقد بلدی. برای من اولین بار بود که با مدیر عامل خانم صحبت میکردم برای استخدام و حقیقتا کمی عجیب بود. همه چی به خوبی پیش رفت و من از ۱ مرداد ۱۳۹۶ عضوی از خانواده تخفیفان شدم.اگر تو جلسه مصاحبه ندیده بودمش بدون شک نمیتونستم تشخیص بدم آدمی که روی پله نشسته و داره با گوشیش صحبت میکنه مدیرعامل شرکت هستش. آدمی با روحیه بسیار قوی و جنگجو و فراری از حاشیه. در این ۱ سال و خورده‌ای که اونجا مشغولم یک بار هم ندیدم که دنبال حاشیه‌هایی که همیشه تو شرکت‌ها هست بره. فقط و فقط روی کارش تمرکز داره و دنبال انجام کار هستش.تا حالا نشده که بخوام در مورد یک مساله کاری یا غیرکاری باهاش صحبت کنم و بگه برو فردا بیا. تنها چیزی که ازش دیدم رفع مشکل در لحظه‌س و موکول نکردن چیزی به آینده.دلایل موفقیت تخفیفاندلایل خیلی زیادی میتونه در موفقیت تخفیفان خصوصا تو چند سال اخیر دخیل باشه ولی موارد زیر چیزهایی هستن که به نظر من خیلی پررنگ بودن.کار تیمیدنبال راه حل گشتن به جای غر زدنمدیر فنی بسیار قوینترس بودنفرصت دادن به آدم‌هاانعطاف پذیریجنگندگی نازنین دانشور و القای این روحیه به کل سازمان.ما چگونه با مشکلات مواجه می‌شویم؟چیزی که در تخفیفان یاد گرفتم داشتن اتحاد و روحیه سازندگی هست. ما همیشه در تخفیفان یک تیم هستیم و همه با هم به دنبال رفع مشکل هستیم. بهترین نمونه این داستان اتفاقی هست که تابستون امسال افتاد و اجراهای اول سیرک ایران - پرتغال با مشکل مواجه شد و مجبور به کنسل کردن ۳ اجرای اول شدیم. یادمه که نازنین با یک مسیج بهم گفت که برم اتاقش، وقتی رسیدم دیدم که ۴ نفر آدم مبهوت در اتاق در حال فکر کردن هستن. تازه فهمیدم که چند ساعت مانده به شروع مراسم مجبور به لغو ۳ اجرای اول شدیم. نزدیک به هزار بلیط برای اجرای روز اول فروخته شده بود که چند ساعت دیگه قرار بود شروع بشه. خودتون میتونید تصور کنید که چه حجم از مشکلات میتونه به وجود بیاره. هر کسی از هر بخش و تیمی که بود اومد و یک تیم آماده شدن برای حضور در محل و پاسخگویی به افرادی که اونجا هستن. من و رئیس تیم فنی هم مسئول برگشت زدن مبالغ به حساب مشتریان شدیم. مدیر عامل کجاست؟ همراه بچه‌ها رفته برج میلاد برای پاسخگویی به مشتریان. اینجاست که کلمه اتحاد معنی پیدا میکنه. وقتی که مدیر یا مسئولی در کنار تیم هست نه جلوی تیم.روحیه سازندگی یکی دیگه از مهم‌ترین ویژگی‌های افراد تخفیفان هستش. تمام افرادی که اینجا هستن از غر زدن و حواله کردن مقصر مشکلات به دیگران فراری هستن و به جاش به دنبال راهکار برای رفع مشکل. چیزی که من همیشه دنبالش بودم و در تخفیفان دیدم که واقعا داره اتفاق میوفته.لینک‌های مرتبطhttps://www.isna.ir/news/97090602605/</description><category>امیرحسین</category><author>امیرحسین</author><pubDate>Thu, 29 Nov 2018 12:49:53 +0330</pubDate></item><item><title>چه‌جوری سریع یه سیستم مانیتورینگ راه‌اندازی کنیم؟</title><link>https://virgool.ir/@amirhosein.zlf/چهجوری-سریع-یه-سیستم-مانیتورینگ-راهاندازی-کنیم-pmjm7y6fv30n</link><description>اینجا میخوام توضیح بدم که چه‌جوری میشه خیلی سریع یه سیستم مانیتورینگ برای مانیتور کردن Resource روی سرورها اضافه کرد.ابزاری که ما در تخفیفان اضافه کردیم و تونستیم خیلی راحت لود رو روی تمام سرورهامون ببینیم ترکیب Grafana و Prometheus بود.Grafana چیه؟یه ابزار طبعا اوپن سورس که کارش نمایش داده‌ها و کشیدن نمودارهای مختلف هست.Prometheus چیه؟یک ابزار برای جمع‌آوری دیتا از نقاط مختلف. این سرویس میتونه دیتای لازم رو از هر سروری بخونه و تو خودش نگه داره و با استفاده از زبانی که برای کوئری کردن دیتا داره میشه دیتا رو در زمان‌های مختلف دید و ازش نمودار به دست آورد.ترکیب این ۲ تا سرویس با هم اینجوریه که Prometheus دیتا رو جمع میکنه و نگه‌داری میکنه. بعد از اون کار Grafana آینه که این دیتا رو بخونه و تو نمودارهای مختلفی که میخواین نشون بده. به عنوان مثال این یه نمودار خیلی ساده از CPU Load روی یکی از سرورهاست در بازه زمانی ۶ ساعت.توصیه میکنم حتما اول یک بار روی لوکال خودتون این مراحل رو برید و هر کاری دوست داشتید بکنید و بعدش به سرور منتقل کنین. چه‌جوری ستاپ کنیم؟برای ستاپ کردن ترجیح و توصیه من استفاده از داکر هست چون خیلی سریع و راحت میتونین اینا رو به هم وصل کنین. من اینجا یه سمپل خیلی ساده از فایل docker-compose میذارم و قسمت‌های مختلف اون رو در ادامه توضیح میدم.version: &#34;3&#34;&#xA;services:&#xA;  prometheus:&#xA;    image: prom/prometheus&#xA;    volumes:&#xA;       - /home/apps/system_monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml&#xA;       - /home/apps/system_monitoring/prometheus/data:/prometheus&#xA;    ports:&#xA;      - &#39;127.0.0.1:9090:9090&#39;&#xA;    network_mode: bridge&#xA;    extra_hosts:&#xA;      my_server: 127.0.0.1&#xA;  grafana:&#xA;    image: grafana/grafana&#xA;    environment:&#xA;      GF_DATABASE_TYPE: postgres&#xA;      GF_DATABASE_HOST: &#39;postgres&#39;&#xA;      GF_DATABASE_NAME: &#39;grafana&#39;&#xA;      GF_DATABASE_USER: &#39;postgres&#39;&#xA;      GF_DATABASE_PASSWORD: &#39;&#39;&#xA;    ports:&#xA;      - &#39;127.0.0.1:3100:3000&#39;&#xA;    links:&#xA;      - prometheus&#xA;      - postgres&#xA;    user: &#34;1000&#34;&#xA;    network_mode: bridge&#xA;    volumes:&#xA;      - /home/apps/system_monitoring/grafana/data:/var/lib/grafana&#xA;      - /var/log/grafana:/var/log/grafana&#xA;    depends_on:&#xA;      - postgres&#xA;  postgres:&#xA;    image: postgres:latest&#xA;    environment:&#xA;      POSTGRES_USER: postgres&#xA;      POSTGRES_PASSWORD:  &#xA;      POSTGRES_DB: grafana&#xA;    volumes:&#xA;      - /home/apps/system_monitoring/postgres:/var/lib/postgresql/data&#xA;      - /var/log/postgres:/var/log/postgresql&#xA;    network_mode: bridgeقسمت اول:prometheus:&#xA;  image: prom/prometheus&#xA;  volumes:&#xA;    - /home/apps/system_monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml&#xA;    - /home/apps/system_monitoring/prometheus/data:/prometheus&#xA;  ports:&#xA;    - &#39;127.0.0.1:9090:9090&#39;&#xA;  network_mode: bridge&#xA;  extra_hosts:&#xA;    my_server: 127.0.0.1در قسمت volumes دایرکتوری‌هایی که پرومتئوس برای نگه‌داری دیتا و همچنین فایل تنظیماتش رو مشخص کردیم. پورتی که به صورت پیش‌فرض فعال هست هم پورت 9090 هست که اون رو برای لوکال باز گذاشتیم که اگر لازم بود بتونیم بهش دسترسی داشته باشیم. در قسمت extra_hosts هم باید آدرس تمام سرورهایی که میخواین دیتا رو ازشون بخونین به همراه آیپی بذارین. اینکه این هاست‌ها کجا به درد میخورن رو تو تنظیماتی که باید انجام بدیم متوجه میشید.قسمت دوم: grafana:&#xA;   image: grafana/grafana&#xA;   environment:&#xA;     GF_DATABASE_TYPE: postgres&#xA;     GF_DATABASE_HOST: &#39;postgres&#39;&#xA;     GF_DATABASE_NAME: &#39;grafana&#39;&#xA;     GF_DATABASE_USER: &#39;postgres&#39;&#xA;     GF_DATABASE_PASSWORD: &#39;&#39;&#xA;   ports:&#xA;     - &#39;127.0.0.1:3100:3000&#39;&#xA;   links:&#xA;     - prometheus&#xA;     - postgres&#xA;   user: &#34;1000&#34;&#xA;   network_mode: bridge&#xA;   volumes:&#xA;     - /home/apps/system_monitoring/grafana/data:/var/lib/grafana&#xA;     - /var/log/grafana:/var/log/grafana&#xA;   depends_on:&#xA;     - postgresگرافانا به صورت پیش‌فرض از دیتابیس sqlite استفاده میکنه برای نگه‌داری تمام داده‌هایی که داره ولی چون ما ترجیح میدادیم که یه دیتابیس مطمئن‌تر داشته باشیم تصمیم گرفتیم از postgres استفاده کنیم. تمام مواردی هم که در قسمت environment اومده هم برای برقراری ارتباط با دیتابیس هست. توی داکیومنت خودش میتونید ببینید چه دیتابیس‌هایی رو پشتیبانی میکنه و از هرکدوم که دوست داشتین استفاده کنید.در قسمت ports هم باید پورت ۳۰۰۰ کانتینر گرافانا که به صورت پیش‌فرض وجود داره رو به یه پورت دلخواه در سیستم هاست بفرستین که بتونید به پنل گرافانا دسترسی داشته باشید.User: یکی از مهم‌ترین چیزهایی که در ستاپ گرافانا به گیر خواهید خورد قرار دادن permission  درست برای فولدرهای گرافانا و یوزری که قراره تو اون فولدرها دیتا بنویسه خواهد بود. چرا ۱۰۰۰؟ این مقدار رو باید با اجرای این کامند توسط یوزری که قراره این سرویس رو اجرا کنه به دست میادecho $(id -u)قسمت سوم: postgres:&#xA;   image: postgres:latest&#xA;   environment:&#xA;     POSTGRES_USER: postgres&#xA;     POSTGRES_PASSWORD:  &#xA;     POSTGRES_DB: grafana&#xA;   volumes:&#xA;     - /home/apps/system_monitoring/postgres:/var/lib/postgresql/data&#xA;     - /var/log/postgres:/var/log/postgresql&#xA;   network_mode: bridgeتو این قسمت هم که فقط دیتابیس postgres رو اضافه کردیم و تنظیمات لازم رو قرار دادیم که گرافانا بتونه بهش وصل شه و دیتایی که لازم داره رو ذخیره کنه.بعد از اینکه این فایل رو در مسیری که میخواهید قرار دادید لازمه که دایرکتوری‌های لازمی که تو این فایل بهشون اشاره شده رو بسازید و permission های اونها رو ست کنید.mkdir prometheus/datasudo chown -R 65534:65534 prometheus/data/چرا 65534؟ این یوزری هست که داخل کانتینر prometheus داره کار میکنه و اگر permission نداشته باشه نمیتونه هیچ چیزی رو داخل این فولدر سیو کنه. پس بهش دسترسی میدیم که بدون مشکل کارش رو انجام بده.تنظیمات prometheus کجاست؟فایل prometheus.yml فایلی هست که کلیه تنظیماتی که به سرویس پرومتئوس میگه چه دیتایی رو چه‌جوری و از کدوم سرور بخون داخل خودش نگه میداره. این فایل به صورت نمونه میاد دیتای همین سروری که دارید روش ستاپ انجام میدید رو نگه داری میکنه. فقط لازمه که محتویات زیر رو داخل آدرس زیر بذارید.prometheus/prometheus.ymlمحتویات تنظیمات prometheus:global:&#xA;  scrape_interval:     15s # By default, scrape targets every 15 seconds&#xA;scrape_configs:&#xA;  - job_name: node&#xA;    static_configs:&#xA;      - targets:&#xA;        - &#39;127.0.0.1:9100&#39;مهم‌ترین قسمت تو این فایل قسمت targets هست که لیست سرورهایی که میخواهید ببینید رو قرار میدید. extra_hosts که در فایل docker-compose.yml برای پرمتئوس هم قرار دادیم برای همینه که این کانتینر بتونه به راحتی و با استفاده از اسم هاست بهشون وصل بشه بجای اینکه هی آی‌پی بذارید و یادتون بره که این کدوم سرور بود.پورت ۹۱۰۰ دیگه چیه؟خب قراره یه سرویسی وجود داشته باشه که دیتا رو برای prometheus بفرسته یا بشه رفت ازش این دیتا رو گرفت. لازم داریم که یه سرویسی رو روی پورت ۹۱۰۰ ایجاد کنیم که این دیتا رو برامون جمع‌آوری کنه و promethus با خوندن و نگه داشتن اون دیتا بتونه بهمون گزارش بده.node_exporter حلال مسائلاین سرویس که توسط خود تیم prometheus نوشته شده و خب طبعا مثل بقیه سرویس‌هایی که استفاده کردیم اوپن سورس هم هست این امکان رو میده که دیتاهایی که لازم هست مثلاً لود سی‌پی‌یو، وضعیت فضای هارد دیسک‌ها و پارتیشن‌های مختلف، نتورک و خیلی چیزای دیگه رو جمع آوری کنه. داخل پروژه گیت‌هاب این سرویس نوشته که چه‌جوری میتونین اون رو نصب کنین. فقط لازمه Go Compiler رو نصب داشته باشید. بعدش به راحتی میتونین با اجرای دستورات زیر این سرویس رو اجرا کنید.go get github.com/prometheus/node_exporter&#xA;cd ${GOPATH-$HOME/go}/src/github.com/prometheus/node_exporter&#xA;make&#xA;./node_exporter &lt;flags&gt;خب این سرویس میاد به صورت پیش‌فرض تمام دیتاهایی که فکر میکنه لازم هست(این دیتاها رو از طریق flags میتونین عوض کنین) رو شروع به اندازه‌گیری میکنه.خب دیگه وقتشه که یه سری نمودار خوشگل ببینیمهمونجوری که سرویس node_exporter در حال اجرا هست کامند docker-compose up رو اجرا کنید تا پرومتئوس و گرافانا و پستگرس به هم وصل بشن و بشه یه سری نمودار دید.بعد از اینکه هر سه تای اینا کامل اجرا شدن و بالا اومدن میتونین آدرس زیر رو بزنید و وارد پنل گرافانا بشید.یوزر و پسورد دیفالت هم admin هستش.http://localhost:3100خب اینجا که هیچی نیست :(آره خب لازمه برید تو قسمت تنظیمات گرافانا و Data source رو بهش معرفی کنید.دکمه Add data source رو بزنیدو فیلدهاش رو مقدارهای زیر رو وارد کنید.Name: PrometheusType: PrometheusURL: http://prometheus:9090Access: Server(Default)بقیه فیلدها رو هم همون چیزی که هست بذارید بمونه. بعد از اینکه فیلدها رو وارد کردید دکمه Save &amp; test رو بزنید که ذخیره بشه.هنوز هم که هیچی نشون نمیده :((خب دیگه همه چی آماده است و فقط باید بری داخل قسمت import dashboard و داشبورد زیر رو ایمپورت کنید.https://grafana.com/dashboards/1860بعدش که برید داخل این داشبورد کلی ذوق میکنید.لینک‌های به درد بخورhttps://prometheus.io/docs/introduction/overview/http://docs.grafana.org/https://grafana.com/dashboardshttps://github.com/prometheus/node_exporterhttps://grafana.com/dashboards/1860</description><category>امیرحسین</category><author>امیرحسین</author><pubDate>Tue, 20 Nov 2018 20:10:36 +0330</pubDate></item></channel></rss>