.TH goaccess 1 "JUL 2026" GNU+Linux "User Manuals" .SH "نام (NAME)" goaccess \- تحلیل‌گر سریع لاگ وب و نمایش‌دهنده تعاملی .SH "خلاصه دستور (SYNOPSIS)" .LP .B goaccess [filename] [options...] [-c][-M][-H][-q][-d][...] .SH "توضیحات (DESCRIPTION)" برنامه .B goaccess یک تحلیل‌گر لاگ و نمایش‌دهنده تعاملی بلادرنگ و متن‌باز است که در یک .I پایانه روی سیستم‌های *nix یا مستقیماً در .I مرورگر شما اجرا می‌شود. این ابزار با در نظر گرفتن مدیران سیستم، مهندسان DevOps و متخصصان امنیت طراحی شده است و آمارهای سریع و کاربردی HTTP و گزارش‌های تصویری سرور را به شکل بلادرنگ ارائه می‌دهد. GoAccess لاگ‌های وب‌سرور شما را بلافاصله پردازش و تحلیل کرده و داده‌ها را مستقیماً در پایانه یا از طریق یک داشبورد زنده HTML نمایش می‌دهد که پایش ترافیک، شناسایی ناهنجاری‌ها و عیب‌یابی آنی مشکلات را آسان می‌سازد. .IP "آمار کلی (General Statistics):" این پنل خلاصه‌ای از چندین معیار را ارائه می‌دهد؛ مانند تعداد درخواست‌های معتبر و نامعتبر، زمان صرف‌شده برای تحلیل مجموعه داده، بازدیدکنندگان یکتا، فایل‌های درخواست‌شده، فایل‌های ایستا (CSS، ICO، JPG و غیره)، ارجاع‌دهنده‌های HTTP، خطاهای 404، حجم فایل لاگ پردازش‌شده و میزان مصرف پهنای باند. .IP "بازدیدکنندگان یکتا (Unique visitors)" این پنل معیارهایی چون تعداد بازدیدها (hits)، بازدیدکنندگان یکتا و پهنای باند تجمعی را به ازای هر تاریخ نمایش می‌دهد. درخواست‌های HTTP که دارای IP یکسان، تاریخ یکسان و user agent یکسان باشند به عنوان یک بازدیدکننده یکتا در نظر گرفته می‌شوند. به صورت پیش‌فرض، خزنده‌ها/اسپایدرهای وب نیز لحاظ می‌شوند. .IP به صورت اختیاری، دقت تاریخ را می‌توان با استفاده از .I --date-spec=hr در سطح ساعت تنظیم کرد که تاریخ‌هایی مانند 05/Jun/2016:16 را نمایش می‌دهد، یا در سطح دقیقه که خروجی 05/Jun/2016:16:59 را تولید می‌کند. این قابلیت برای زمانی که می‌خواهید ترافیک روزانه خود را در مقیاس ساعت یا دقیقه ردیابی کنید بسیار کاربردی است. .IP "فایل‌های درخواست‌شده (Requested files)" این پنل بیشترین فایل‌های (غیرایستای) درخواست‌شده روی وب‌سرور شما را نمایش می‌دهد. این پنل تعداد بازدیدها، بازدیدکنندگان یکتا و درصد را همراه با پهنای باند تجمعی، پروتکل و متد درخواستِ استفاده‌شده نشان می‌دهد. .IP "فایل‌های ایستای درخواست‌شده (Requested static files)" فایل‌های ایستایی که بیشترین تکرار درخواست را داشته‌اند مانند پسوندهای JPG، CSS، SWF، JS، GIF و PNG را همراه با معیارهای مشابه پنل قبلی فهرست می‌کند. فایل‌های ایستای بیشتر را می‌توان به فایل پیکربندی افزود. .IP "۴۰۴ یا یافت‌نشد (404 or Not Found)" معیارهایی مشابه پنل‌های درخواست پیشین را نمایش می‌دهد، با این تفاوت که داده‌های آن شامل تمام صفحاتی است که روی سرور یافت نشده‌اند (که عموماً با کد وضعیت 404 شناخته می‌شوند). .IP "میزبان‌ها (Hosts)" این پنل اطلاعات دقیقی درباره خود میزبان‌ها ارائه می‌دهد. این بخش برای شناسایی خزنده‌های تهاجمی و تشخیص اینکه چه کسی پهنای باند شما را مصرف می‌کند عالی است. گسترش دادن پنل می‌تواند اطلاعات بیشتری مانند نتیجه جستجوی معکوس DNS (یا همان reverse DNS lookup) میزبان، کشور مبدا و شهر را نشان دهد. اگر آرگومان .I -a فعال باشد، می‌توان با انتخاب نشانی IP مورد نظر و سپس فشردن ENTER، فهرستی از user agentها را مشاهده کرد. .IP "سیستم‌عامل‌ها (Operating Systems)" این پنل گزارش می‌دهد که میزبان هنگام اتصال به سرور از چه سیستم‌عاملی استفاده کرده است. این پنل تلاش می‌کند دقیق‌ترین نگارش از هر سیستم‌عامل را ارائه دهد. .IP "مرورگرها (Browsers)" این پنل گزارش می‌دهد که میزبان هنگام ارسال درخواست به سرور از چه مرورگری استفاده کرده است. این بخش تلاش می‌کند دقیق‌ترین نگارش از هر مرورگر را ارائه دهد. .IP "زمان‌های بازدید (Visit Times)" این پنل یک گزارش ساعتی را نمایش می‌دهد. این گزینه ۲۴ نقطه داده، یکی برای هر ساعت از شبانه‌روز، را به نمایش درمی‌آورد. .IP به صورت اختیاری، می‌توان دقت ساعت را با استفاده از .I --hour-spec=min در سطح یک‌دهم ساعت تنظیم کرد که ساعت‌ها را به صورت 16:4 نمایش می‌دهد. این امکان برای مشخص کردن نقاط اوج ترافیک روی سرور بسیار مناسب است. .IP "میزبان‌های مجازی (Virtual Hosts)" این پنل تمام میزبان‌های مجازی متفاوتی را که از لاگ دسترسی تجزیه شده‌اند نمایش می‌دهد. این پنل زمانی نشان داده می‌شود که از .I %v درون رشته log-format استفاده شده باشد. .IP "نشانی‌های ارجاع‌دهنده (Referrers URLs)" اگر میزبان مورد نظر از طریق منبع دیگری به سایت دسترسی یافته باشد، یا از میزبان دیگری به سمت شما پیوند داده شده یا هدایت شده باشد، نشانی اینترنتی (URL) که از آن ارجاع داده شده است در این پنل ارائه خواهد شد. برای فعال‌سازی آن به گزینه `--ignore-panel` در فایل پیکربندی خود مراجعه کنید. به‌طور پیش‌فرض .I غیرفعال است. .IP "سایت‌های ارجاع‌دهنده (Referring Sites)" این پنل فقط بخش میزبان (host) را نمایش می‌دهد و نه کل URL را؛ یعنی نشانی سایتی که درخواست از آن ارسال شده است. .IP "عبارت‌های کلیدی (Keyphrases)" عبارت‌های کلیدی استفاده‌شده در جستجوی گوگل، حافظه موقت (cache) گوگل و مترجم گوگل را که به وب‌سرور شما ختم شده‌اند گزارش می‌دهد. در حال حاضر، این قابلیت فقط از پرس‌وجوهای جستجوی گوگل از طریق HTTP پشتیبانی می‌کند. برای فعال‌سازی آن به `--ignore-panel` در فایل پیکربندی خود مراجعه کنید. به‌طور پیش‌فرض .I غیرفعال است. .IP "موقعیت جغرافیایی (Geo Location)" موقعیت جغرافیایی نشانی IP را مشخص می‌کند. آمارها به تفکیک قاره و کشور دسته‌بندی می‌شوند و هنگامی که داده‌های GeoIP در سطح شهر در دسترس باشد، شهرهای مربوط به هر بازدید را نیز فهرست می‌کند. برای استفاده از این قابلیت باید برنامه با پشتیبانی از GeoLocation کامپایل شده باشد. .IP "کدهای وضعیت HTTP (HTTP Status Codes)" مقادیر عددی کدهای وضعیت برای درخواست‌های HTTP. .IP "سیستم خودگردان (ASN)" این پنل داده‌های ASN (شماره‌های سیستم خودگردان یا Autonomous System Numbers) را برای GeoIP2 و پایگاه‌های داده قدیمی‌تر نمایش می‌دهد. برای شناسایی ترافیک مخرب و مسدودسازی متناسب با آن بسیار کارآمد است. .IP "کاربر راه دور / احرازهویت HTTP (Remote User)" این شناسه کاربری (userid) شخصی است که سند را درخواست کرده، طبق آنچه در احرازهویت HTTP مشخص شده است. اگر سند با گذرواژه محافظت نشده باشد، این بخش درست مانند مقدار قبلی "-" خواهد بود. این پنل فعال نمی‌شود مگر اینکه .I %e در متغیر log-format مشخص شده باشد. .IP "وضعیت حافظه پنهان (Cache Status)" اگر از حافظه پنهان (caching) در سرور خود استفاده می‌کنید، ممکن است بخواهید بدانید که آیا درخواست شما کش شده و از حافظه پنهان پاسخ داده می‌شود یا خیر. این پنل وضعیت کش شیئی را که سرور ارائه داده است نشان می‌دهد. این پنل فعال نمی‌شود مگر اینکه .I %C در متغیر log-format مشخص شده باشد. وضعیت می‌تواند یکی از مقادیر `MISS`، `BYPASS`، `EXPIRED`، `STALE`، `UPDATING`، `REVALIDATED` یا `HIT` باشد. .IP "انواع رسانه / MIME (MIME Types)" این پنل نوع رسانه (Media Types که سابقاً با عنوان انواع MIME شناخته می‌شد) و زیرنوع‌های رسانه را که تخصیص داده شده و در ذیل آن فهرست می‌شوند مشخص می‌کند. این پنل فعال نمی‌شود مگر اینکه .I %M در متغیر log-format داده شده باشد. برای جزئیات بیشتر به https://www.iana.org/assignments/media-types/media-types.xhtml مراجعه کنید. .IP "تنظیمات رمزنگاری (Encryption Settings)" این پنل پروتکل SSL/TLS استفاده‌شده را به همراه مجموعه‌های رمزنگاری (Cipher Suites) نشان می‌دهد. این پنل فعال نمی‌شود مگر اینکه .I %K در متغیر log-format داده شده باشد. .P پنل‌های GoAccess را می‌توان از طریق رابط کاربری پایانه مرتب‌سازی مجدد کرد و زیرمجموعه‌های آن‌ها را باز یا جمع کرد تا مهم‌ترین معیارها همواره در دید مستقیم قرار گیرند. همچنین معیارها و مقیاس‌های نمودار از طریق منوی تعاملی شرح‌داده‌شده در ادامه به صورت آنی قابل تنظیم هستند. .P .I نکته: به صورت اختیاری و در صورت پیکربندی، تمام پنل‌ها می‌توانند میانگین زمان صرف‌شده برای پاسخ‌گویی به درخواست را نمایش دهند..SH "ذخیره‌سازی (STORAGE)" .P سه گزینه برای ذخیره‌سازی وجود دارد که می‌توان با GoAccess استفاده کرد. انتخاب یکی از آن‌ها به محیط و نیازهای شما بستگی دارد. .TP جدول‌های درهم‌سازی پیش‌فرض (Default Hash Tables) ذخیره‌سازی درون حافظه (In-memory) عملکرد بهتری را به قیمت محدود شدن اندازه مجموعه داده به مقدار حافظه فیزیکی در دسترس فراهم می‌کند. GoAccess از جدول‌های درهم‌سازی درون حافظه استفاده می‌کند. این روش مصرف حافظه بسیار بهینه و کارایی بسیار مناسبی دارد. این حالت ذخیره‌سازی از پایدارسازی روی دیسک (on-disk persistence) نیز پشتیبانی می‌کند. .SH "پیکربندی (CONFIGURATION)" .P گزینه‌های متعددی برای پیکربندی GoAccess وجود دارد. برای مشاهده فهرست کامل و به‌روز گزینه‌های پیکربندی، این دستور را اجرا کنید: .I ./configure --help .TP \fB\-\-enable-debug کامپایل به همراه نمادهای اشکال‌زدایی (debugging symbols) و غیرفعال کردن بهینه‌سازی‌های کامپایلر. .TP \fB\-\-enable-utf8 کامپایل با پشتیبانی از نویسه‌های عریض (wide character). کتابخانه Ncursesw مورد نیاز است. .TP \fB\-\-enable-geoip= کامپایل با پشتیبانی از موقعیت جغرافیایی (GeoLocation). ابزار GeoIP متعلق به MaxMind مورد نیاز است. .I legacy از پایگاه‌های داده اولیه GeoIP استفاده خواهد کرد. .I mmdb از پایگاه‌های داده ارتقایافته GeoIP2 استفاده خواهد کرد. .TP \fB\-\-with-getline گسترش پویای بافر خط به منظور تجزیه خطوط کامل درخواست‌ها به جای استفاده از یک بافر با اندازه ثابت ۴۰۹۶. .TP \fB\-\-with-zlib ساخت به همراه پشتیبانی از zlib برای خواندن گزارش‌های فشرده‌شده با gzip. به‌طور پیش‌فرض غیرفعال است. .TP \fB\-\-with-openssl کامپایل GoAccess با پشتیبانی از OpenSSL برای سرور WebSocket آن. \fB\-\-with-zlib پشتیبانی اختیاری از zlib را فعال می‌کند تا امکان تجزیه فایل‌های گزارش فشرده‌شده (مانند .gz) به‌طور مستقیم و بدون نیاز به باز کردن دستی فشرده‌سازی فراهم شود. .SH "گزینه‌ها (OPTIONS)" .P گزینه‌های زیر را می‌توان به دستور فرستاد یا در فایل پیکربندی مشخص کرد. اگر در فایل پیکربندی مشخص شوند، گزینه‌های بلند باید بدون پیشوند -- و بدون استفاده از علامت مساوی = به کار روند. .SS قالب گزارش/تاریخ/زمان (LOG/DATE/TIME FORMAT) .TP \fB\-\-time-format= متغیر time-format که به دنبال آن یک فاصله می‌آید، زمانِ قالب گزارش را مشخص می‌کند که شامل نام یکی از قالب‌های از‌پیش‌تعریف‌شده (گزینه‌های زیر را ببینید) یا هر ترکیبی از نویسه‌های معمولی و مشخص‌کننده‌های ویژه قالب است. .IP همگی با علامت درصد (%) شروع می‌شوند. به `man strftime` مراجعه کنید. .I %T یا %H:%M:%S. .IP توجه داشته باشید که اگر یک برچسب زمانی (timestamp) بر حسب میکروثانیه داده شده باشد، .I %f باید به عنوان time-format استفاده شود. اگر برچسب زمانی بر حسب میلی‌ثانیه داده شده باشد، .I %* باید به عنوان time-format استفاده شود. .TP \fB\-\-date-format= متغیر date-format که به دنبال آن یک فاصله می‌آید، تاریخِ قالب گزارش را مشخص می‌کند که شامل نام یکی از قالب‌های از‌پیش‌تعریف‌شده (گزینه‌های زیر را ببینید) یا هر ترکیبی از نویسه‌های معمولی و مشخص‌کننده‌های ویژه قالب است. .IP همگی با علامت درصد (%) شروع می‌شوند. به `man strftime` مراجعه کنید. .I %Y-%m-%d. .IP توجه داشته باشید که اگر یک برچسب زمانی بر حسب میکروثانیه داده شده باشد، .I %f باید به عنوان date-format استفاده شود. اگر برچسب زمانی بر حسب میلی‌ثانیه داده شده باشد، .I %* باید به عنوان date-format استفاده شود. .TP \fB\-\-datetime-format= قالب تاریخ و زمان، این دو متغیر را در یک گزینه واحد ترکیب می‌کند. این قابلیت امکان دریافت منطقه زمانی (timezone) از یک درخواست و تبدیل آن به یک منطقه زمانی دیگر را در خروجی فراهم می‌سازد. ببینید: .I --tz= .IP همگی با علامت درصد (%) شروع می‌شوند. به `man strftime` مراجعه کنید؛ برای مثال: .I %d/%b/%Y:%H:%M:%S %z. .IP توجه داشته باشید که در صورت استفاده از --datetime-format، .I %x باید در متغیر log-format فرستاده شود تا فیلد تاریخ و زمان را نشان دهد. .TP \fB\-\-log-format= متغیر log-format که به دنبال آن یک فاصله یا .I \\\\t برای تفکیک با تب (tab-delimited) می‌آید، رشته قالب گزارش را مشخص می‌کند. توجه داشته باشید که اگر درون قالب فاصله وجود دارد، رشته باید درون علامت‌های نقل‌قول تکی یا دوتایی قرار گیرد. نقل‌قول‌های داخلی باید گریز داده شوند (escaped شوند). .IP علاوه بر مشخص کردن قالب‌های خامِ گزارش/تاریخ/زمان، برای سهولت کار، هر یک از نام‌های قالب گزارش از‌پیش‌تعریف‌شده زیر را می‌توان برای متغیرهای log/date/time-format تعیین کرد. GoAccess همچنین می‌تواند یک نام از‌پیش‌تعریف‌شده را در یک متغیر و نام از‌پیش‌تعریف‌شده دیگری را در متغیر دیگر به کار گیرد. .IP COMBINED - Combined Log Format, VCOMBINED - Combined Log Format with Virtual Host, COMMON - Common Log Format, VCOMMON - Common Log Format with Virtual Host, W3C - W3C Extended Log File Format, SQUID - Native Squid Log Format, CLOUDFRONT - Amazon CloudFront Web Distribution, CLOUDSTORAGE - Google Cloud Storage, AWSELB - Amazon Elastic Load Balancing, AWSS3 - Amazon Simple Storage Service (S3) AWSALB - Amazon Application Load Balancer CADDY - Caddy's JSON Structured format (local/info format) TRAEFIKCLF - Traefik's CLF flavor .IP .I نکته: به‌طور کلی، مقادیری که شامل فاصله (whitespace)، ویرگول، پایپ (|)، نقل‌قول یا براکت هستند نیاز به نقل‌قول (کوتیشن) دارند. نقل‌قول‌های داخلی باید escape شوند. .IP .I نکته: هدایت داده‌ها با لوله‌کشی (Piping) به GoAccess کادر محاوره‌ای پیکربندی گزارش/تاریخ/زمان را نمایش نخواهد داد؛ بنابراین باید از قبل آن را در فایل پیکربندی یا در خط فرمان تعریف کرده باشید. .IP .I نکته: قالب پیش‌فرض GoAccess برای CADDY، قالب \(aqlocal/info\(aq است. با این حال در صورت نیاز، می‌توانید از یک قالب گزارش سفارشی در GoAccess برای مطابقت با پیکربندی خاص خود استفاده کنید..SS گزینه‌های رابط کاربری (USER INTERFACE OPTIONS) .TP \fB\-c \-\-config-dialog پنجره پیکربندی لاگ/زمان/تاریخ را هنگام شروع برنامه نمایش می‌دهد. تنها زمانی که curses مقداردهی اولیه شده باشد. .TP \fB\-i \-\-hl-header پنل فعال ترمینال را با رنگ برجسته (هایلایت) می‌کند. .TP \fB\-m \-\-with-mouse پشتیبانی از موش‌واره (ماوس) را در داشبورد اصلی ترمینال فعال می‌کند. .TP \fB\-\-\-color= رنگ‌های سفارشی را برای خروجی ترمینال تعیین می‌کند. .I نحو رنگ (Color Syntax) DEFINITION space/tab colorFG#:colorBG# [attributes,PANEL] FG# = رنگ پیش‌زمینه [\-1...255] (\-1 = رنگ پیش‌فرض ترمینال) BG# = رنگ پس‌زمینه [\-1...255] (\-1 = رنگ پیش‌فرض ترمینال) به صورت اختیاری، اعمال ویژگی‌های رنگ امکان‌پذیر است (ویژگی‌های چندگانه با کاما جدا می‌شوند)، مانند: .I bold, .I underline, .I normal, .I reverse, .I blink در صورت تمایل، اعمال رنگ‌های سفارشی به ازای هر پنل امکان‌پذیر است؛ به این معنی که یک معیار در پنل REQUESTS می‌تواند به رنگ A باشد، در حالی که همان معیار در پنل BROWSERS می‌تواند به رنگ B باشد. .I تعاریف رنگی موجود: COLOR_MTRC_HITS COLOR_MTRC_VISITORS COLOR_MTRC_DATA COLOR_MTRC_BW COLOR_MTRC_AVGTS COLOR_MTRC_CUMTS COLOR_MTRC_MAXTS COLOR_MTRC_PROT COLOR_MTRC_MTHD COLOR_MTRC_HITS_PERC COLOR_MTRC_HITS_PERC_MAX COLOR_MTRC_VISITORS_PERC COLOR_MTRC_VISITORS_PERC_MAX COLOR_PANEL_COLS COLOR_BARS COLOR_ERROR COLOR_SELECTED COLOR_PANEL_ACTIVE COLOR_PANEL_HEADER COLOR_PANEL_DESC COLOR_OVERALL_LBLS COLOR_OVERALL_VALS COLOR_OVERALL_PATH COLOR_ACTIVE_LABEL COLOR_BG COLOR_DEFAULT COLOR_PROGRESS برای نمونه‌ای از طرح رنگ، فایل پیکربندی را ببینید. .TP \fB\-\-color-scheme=<1|2|3> انتخاب میان طرح‌های رنگی. .I 1 برای طرح خاکستری پیش‌فرض. .I 2 برای طرح سبز. .I 3 برای طرح Monokai (تنها در صورتی نمایش داده می‌شود که ترمینال از ۲۵۶ رنگ پشتیبانی کند). .TP \fB\-\-crawlers-only تنها خزنده‌ها (ربات‌ها) را تجزیه و نمایش می‌دهد. .TP \fB\-\-html-custom-css= مسیر یک فایل CSS سفارشی را برای بارگذاری در گزارش HTML مشخص می‌کند. .TP \fB\-\-html-custom-js= مسیر یک فایل JS سفارشی را برای بارگذاری در گزارش HTML مشخص می‌کند. .TP \fB\-\-html-report-title= عنوان صفحه و سرآیند گزارش HTML را تنظیم می‌کند. .TP \fB\-\-html-refresh=<secs> گزارش HTML را هر X ثانیه تازه‌سازی می‌کند. این مقدار باید عددی بین ۱ تا ۶۰ ثانیه باشد. مقدار پیش‌فرض روی تازه‌سازی گزارش HTML در هر ۱ ثانیه تنظیم شده است. .TP \fB\-\-html-prefs=<JSON> تنظیمات ترجیحی پیش‌فرض گزارش HTML را تعیین می‌کند. یک شیء JSON معتبر حاوی ترجیحات HTML ارائه دهید. این گزینه امکان سفارشی‌سازی نمودار هر پنل را فراهم می‌کند. مثال زیر را ببینید. .IP .I نکته: شیء JSON ارائه‌شده باید یک رشته JSON تک‌خطی باشد. برای نمونه، .IP .nf \-\-html-prefs='{"theme":"bright","perPage":5,"layout":"horizontal","showTables":true,"visitors":{"plot":{"chartType":"bar"}}}' .fi .TP \fB\-\-json-pretty-print خروجی JSON را با استفاده از تب‌ها و خطوط جدید قالب‌بندی می‌کند. .IP .I نکته: استفاده از این گزینه هنگام ایجاد گزارش HTML بلادرنگ (real-time) توصیه نمی‌شود، زیرا اندازه بار داده (payload) در WebSocket بسیار بزرگ‌تر خواهد شد. .TP \fB\-\-max-items=<number> حداکثر تعداد موارد برای نمایش در هر پنل. این بیشینه می‌تواند عددی بین ۱ تا n باشد. .IP .I نکته: تنها خروجی CSV و JSON اجازه تعیین مقداری بیشتر از مقدار پیش‌فرض ۳۶۶ مورد در هر پنل (یا ۵۰ در خروجی HTML بلادرنگ) را می‌دهند. .TP \fB\-\-no-color خروجی رنگی را غیرفعال می‌کند. این خروجی پیش‌فرض در ترمینال‌هایی است که از رنگ پشتیبانی نمی‌کنند. .TP \fB\-\-no-csv-summary معیارهای خلاصه را در خروجی CSV غیرفعال می‌کند. .TP \fB\-\-no-progress معیارهای پیشرفت [کل درخواست‌ها/درخواست‌ها در ثانیه] را غیرفعال می‌کند. .TP \fB\-\-no-tab-scroll پیمایش میان پنل‌ها هنگام فشردن کلید TAB یا زمانی که یک پنل با استفاده از کلید عددی انتخاب می‌شود را غیرفعال می‌کند. .TP \fB\-\-no-html-last-updated فیلد آخرین به‌روزرسانی (last updated) نمایش داده‌شده در گزارش تولیدی HTML را نشان نمی‌دهد. .TP \fB\-\-no-parsing-spinner معیارهای پیشرفت و اسپینر تجزیه را نمایش نمی‌دهد. .TP \fB\-\-tz=<timezone> داده‌های تاریخ/زمان گزارش را در منطقه زمانی مشخص‌شده خروجی می‌دهد. توجه داشته باشید که این گزینه از نام استاندارد منطقه زمانی (canonical timezone name) استفاده می‌کند؛ مانند: .I Europe/Berlin یا .I America/Chicago یا .I Africa/Cairo اگر نام منطقه زمانی نامعتبر داده شود، خروجی بر اساس GMT خواهد بود. برای تعیین صحیح منطقه زمانی در قالب تاریخ/زمان، گزینه .I \-\-datetime-format را ببینید..SS "گزینه‌های سرور (SERVER OPTIONS)" .P .I نکته این بخش تنها یک سرور WebSocket برای ارائه داده‌های خام بی‌درنگ است. این ابزار به خودیِ خود یک WebServer نیست. برای دسترسی به فایل html گزارش‌هایتان، همچنان به سرور HTTP خود نیاز خواهید داشت؛ فایل گزارش تولیدشده را در دایرکتوری ریشه اسناد (document root) آن قرار دهید و فایل html را در مرورگر خود باز کنید. سپس مرورگر اتصال WebSocket دیگری به سرور ws که ممکن است در اینجا برپا کنید برقرار می‌کند تا داشبورد را به‌روز نگه دارد. .TP \fB\-\-addr آدرس IP را برای مقید کردن (bind) سرور به آن مشخص می‌کند. در غیر این صورت به 0.0.0.0 مقید می‌شود. .IP معمولاً نیازی به مشخص کردن آدرس نیست، مگر اینکه عمداً بخواهید سرور را به آدرس دیگری درون سرور خود مقید کنید. .TP \fB\-\-daemonize اجرای GoAccess به عنوان دیمن (daemon) (تنها در صورت فعال بودن \fB\-\-real-time-html\fR). .IP نکته: مهم است که در سراسر پیکربندی GoAccess از مسیرهای مطلق استفاده شود. .TP \fB\-\-user-name=<username> اجرای GoAccess با کاربر مشخص‌شده. .IP نکته: مهم است مطمئن شوید کاربر یا گروه کاربری مربوطه می‌تواند به فایل‌های ورودی و خروجی و همچنین هر فایل مورد نیاز دیگری دسترسی داشته باشد. سایر گروه‌هایی که کاربر عضو آن‌هاست نادیده گرفته خواهند شد. از این رو توصیه می‌شود GoAccess در پشت یک پروکسی SSL اجرا شود، زیرا بعید است این کاربر بتواند به گواهی‌های SSL دسترسی داشته باشد. .TP \fB\-\-origin=<url> اطمینان حاصل می‌کند که کلاینت‌ها هنگام دست‌تکانی (handshake) اولیه WebSocket، هدر origin مشخص‌شده را ارسال کنند. .TP \fB\-\-pid-file=<path/goaccess.pid> در صورت استفاده به همراه گزینه --daemonize، شناسه فرایند (PID) دیمن را در یک فایل می‌نویسد. .TP \fB\-\-port=<port> پورت مورد استفاده را مشخص می‌کند. به صورت پیش‌فرض، سرور WebSocket برنامه GoAccess روی پورت 7890 گوش می‌دهد. .TP \fB\-\-real-time-html خروجی HTML بی‌درنگ را فعال می‌کند. .IP برنامه GoAccess از سرور WebSocket اختصاصی خود برای ارسال (push) داده‌ها از سرور به کلاینت استفاده می‌کند. برای جزئیات بیشتر در مورد نحوه کارکرد سرور WebSocket به http://gwsocket.io مراجعه کنید. .TP \fB\-\-ws-auth=<jwt[:secret]> | jwt:verify:secret\fR احراز هویت WebSocket را با استفاده از یک JSON Web Token (JWT) فعال می‌کند. این گزینه بسته به اینکه JWT به صورت محلی تولید شده یا از خارج دریافت و اعتبارسنجی شود، از دو قالب پشتیبانی می‌کند: .IP \fB<jwt[:secret]>\fR: یک JWT ایستا را برای احراز هویت WebSocket، به همراه یک کلید محرمانه (secret) اختیاری برای تولید یا اعتبارسنجی محلی مشخص می‌کند. اگر تنها "jwt" ارائه شود (برای نمونه، \fB\-\-ws-auth=jwt\fR)، GoAccess با استفاده از کلید محرمانه‌ای که از متغیر محیطی \fBGOACCESS_WSAUTH_SECRET\fR گرفته شده یا یک کلید پیش‌فرض سازگار با HS256 در صورت تنظیم نشدن، یک JWT تولید می‌کند. اگر یک کلید محرمانه گنجانده شود (برای نمونه، \fB\-\-ws-auth=jwt:mysecret\fR)، مستقیماً به عنوان کلید امضای HS256 استفاده می‌شود، یا اگر مقدار یک مسیر معتبر باشد (برای نمونه، \fB\-\-ws-auth=jwt:/path/to/secret.key\fR)، از فایل خوانده می‌شود. .IP \fBjwt:verify:secret\fR: اعتبارسنجی یک JWT دریافت‌شده از خارج را فعال می‌کند (برای نمونه، از طریق \fB\-\-ws-auth-url\fR). کلمه کلیدی "verify" نشان می‌دهد که JWT توسط یک منبع خارجی ارائه شده است و کلید محرمانه باید برای اعتبارسنجی مشخص شود. این کلید می‌تواند یک کلید مستقیم HS256 (برای نمونه، \fB\-\-ws-auth=jwt:verify:mysecret\fR)، یک مسیر فایل (برای نمونه، \fB\-\-ws-auth=jwt:verify:/path/to/secret.key\fR) یا نام یک متغیر محیطی (برای نمونه، \fB\-\-ws-auth=jwt:verify:$JWT_SECRET\fR) باشد. این قالب هنگام استفاده از \fB\-\-ws-auth-url\fR و به صورت اختیاری \fB\-\-ws-auth-refresh-url\fR برای دریافت و اعتبارسنجی JWTها از نقاط پایانی خارجی الزامی است. .IP هنگام استفاده از این گزینه، گزارش HTML داده‌های اولیه‌ٔ تجزیه‌شده را راه‌اندازی (bootstrap) نمی‌کند. در عوض، تنها در صورت موفقیت‌آمیز بودن احراز هویت، گزارش را نمایش می‌دهد و دسترسی امن به داده‌های بی‌درنگ را تضمین می‌کند. .IP سیستم این گزینه را به صورت زیر پردازش می‌کند: .IP برای \fB<jwt[:secret]>\fR: اگر هیچ کلید محرمانه‌ای ارائه نشود، GoAccess یک JWT را به صورت محلی با استفاده از متغیر محیطی \fBGOACCESS_WSAUTH_SECRET\fR یا یک کلید پیش‌فرض تولید می‌کند. اگر کلید محرمانه‌ای مشخص شود، برای امضای JWT (به صورت مستقیم یا از طریق یک فایل) به کار می‌رود. .IP برای \fBjwt:verify:secret\fR: کلید محرمانه اجباری است و برای اعتبارسنجی JWTهای دریافت‌شده از خارج استفاده می‌شود. این کلید باید با کلید امضای مورد استفاده توسط سرور احراز هویت خارجی (برای نمونه، در \fB\-\-ws-auth-url\fR) مطابقت داشته باشد. .IP نیازمند ساخت GoAccess با .I --with-openssl. است. .TP \fB\-\-ws-auth-expire=<secs> زمانی را تنظیم می‌کند که پس از آن JWT منقضی می‌شود. در صورت مشخص نشدن، به طور پیش‌فرض 8 ساعت (28800 ثانیه) است. .IP .I تنها برای JWT تولیدشده به صورت محلی در دسترس است. .IP کاربران می‌توانند زمان انقضا را در قالب‌های گوناگون مشخص کنند. این مقدار برای اعتبارسنجی انقضای JWT به ثانیه تبدیل می‌شود. قالب‌های پشتیبانی‌شده: .RS .IP \(bu 4 "3600" -> 3600 ثانیه .IP \(bu 4 "120s" -> 2 دقیقه .IP \(bu 4 "24h" -> 24 ساعت = 86,400 ثانیه .IP \(bu 4 "10m" -> 10 دقیقه = 600 ثانیه .IP \(bu 4 "10d" -> 10 روز = 864,000 ثانیه .RE .IP زمان انقضا مشخص می‌کند که JWT پس از صدور تا چه مدت معتبر بماند و از این طریق اتصالات امن WebSocket را تضمین می‌کند. .TP \fB\-\-ws-auth-url=<url> آدرسی (URL) را مشخص می‌کند که GoAccess از آنجا JWT اولیه را برای احراز هویت اتصال WebSocket دریافت می‌کند. .IP هنگام استفاده از این گزینه، GoAccess یک درخواست GET به URL مشخص‌شده ارسال می‌کند تا JWT اولیه را دریافت کند. پاسخ باید یک شیء JSON شامل فیلدهای \fBstatus\fR، \fBaccess_token\fR، \fBrefresh_token\fR و \fBexpires_in\fR باشد. .IP مثال: \fB\-\-ws-auth-url=https://site.com/api/get-auth-token\fR .IP هنگام دریافت توکن، GoAccess از .I { credentials: 'include' } به عنوان بخشی از درخواست استفاده می‌کند تا توکن دسترسی را به صورت امن و بر اساس نشست احراز هویتِ موجودِ کاربر در سیستم شما بازیابی کند؛ این امر تضمین می‌کند که تا زمان معتبر بودن احراز هویت کاربران، دریافت توکن ایمن خواهد بود. .IP این گزینه به شما اجازه می‌دهد تا با استفاده از نقاط پایانی دریافت توکن، سیستم احراز هویت موجود خود را با داشبورد GoAccess یکپارچه‌سازی کنید. .TP \fB\-\-ws-auth-refresh-url=<url> آدرسی (URL) را مشخص می‌کند که GoAccess در زمانی که توکن فعلی نزدیک به انقضا است، یک JWT جدید را از آن دریافت می‌کند. .IP برنامه GoAccess به طور پیش‌دستانه ۶۰ ثانیه قبل از انقضا، با ارسال یک درخواست POST همراه با refresh_token به این URL، توکن JWT را تازه‌سازی می‌کند. در صورت ارائه نشدن، پیش‌فرض آن همان URL مشخص‌شده در \fB\-\-ws-auth-url\fR خواهد بود. .IP مثال: \fB\-\-ws-auth-refresh-url=https://site.com/api/refresh-token\fR .IP قالب پاسخ باید با ساختار پاسخِ URL احراز هویت اولیه مطابقت داشته باشد..SS "روند احراز هویت WebSocket" .IP برنامه GoAccess گزینه‌های احراز هویت منعطفی را ارائه می‌دهد و از هر دو رویکرد بدون‌وضعیت (stateless) و با‌وضعیت (stateful) پشتیبانی می‌کند. در رویکرد بدون‌وضعیت، توکن نوسازی (refresh token) بدون کوکی‌ها یا محافظت CSRF به دست می‌آید؛ سمت سرور (backend) شما امضای توکن نوسازی را اعتبارسنجی کرده و توکن دسترسی (access token) جدیدی صادر می‌کند. در مقابل، رویکرد با‌وضعیت به واکشی اولیه اجازه می‌دهد تا توکن‌های JWT را به همراه یک `csrf_token` که در نشست (session) ذخیره می‌شود صادر کند. سپس درخواست نوسازی بعدی (POST) بررسی CSRF را انجام داده و تطابق هدر `X-CSRF-TOKEN` با توکن نشست را الزامی می‌داند. .IP \fBاحراز هویت اولیه:\fR .RS .IP \(bu 4 هنگامی که با \fB\-\-ws-auth-url=<url>\fR اجرا شود، GoAccess یک درخواست GET برای واکشی JWT اولیه ارسال می‌کند. .IP \(bu 4 قالب مورد انتظار برای پاسخ موفقیت‌آمیز: .IP { "status" : "success", "access_token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "csrf_token" : "3RRjNeR4RTXHmrV1cECkyUmmKeRxm4lzkI0eq41o", "refresh_token" : "refresh123xyz", "expires_in" : 3600 } .IP \(bu 4 اگر احراز هویت ناموفق باشد، نقطه پایانی (endpoint) باید این پاسخ را برگرداند: .IP { "status": "error", "message": "User not authenticated" } .RE .IP \fBنوسازی توکن:\fR .RS .IP \(bu 4 برنامه GoAccess توکن JWT را ۶۰ ثانیه قبل از انقضا، با ارسال یک درخواست POST به نشانی URL مشخص‌شده نوسازی می‌کند (اگر \fB--ws-auth-refresh-url\fR تنظیم نشده باشد، مقدار پیش‌فرض \fB--ws-auth-url\fR است): .IP { "refresh_token": "refresh123xyz" } .IP برنامه GoAccess از هر دو احراز هویت بدون‌وضعیت و با‌وضعیت پشتیبانی می‌کند. برای حالت بدون‌وضعیت، به هیچ کوکی یا CSRF نیازی نیست؛ سمت سرور شما امضای توکن نوسازی را اعتبارسنجی می‌کند. برای حالت با‌وضعیت، یک \fBcsrf_token\fR در پاسخ اولیه بگنجانید؛ GoAccess آن را به عنوان \fBX-CSRF-TOKEN\fR در درخواست نوسازی ارسال می‌کند که سمت سرور شما باید آن را در برابر نشست اعتبارسنجی کند. .RE .IP \fBاعتبارسنجی دوره‌ای توکن:\fR .RS .IP \(bu 4 پس از نوسازی، GoAccess اعتبار JWT به‌روزرسانی‌شده را با ارسال پیام زیر به کارساز WebSocket تایید می‌کند: .IP { "action": "validate_token", "token": "current-jwt" } .RE .IP \fBنکته مهم:\fR برای کارکرد این گزینه‌ها، باید \fB\-\-ws-auth=jwt:verify:<secret>\fR را مشخص کنید که در آن <secret> می‌تواند موارد زیر باشد: .RS .IP \(bu 4 مسیری به یک فایل حاوی کلید مخفی (مثلاً /path/to/secret.key) .IP \(bu 4 نام یک متغیر محیطی که کلید مخفی را نگه می‌دارد (مثلاً $JWT_SECRET) .IP \(bu 4 خود کلید مخفی واقعی HS256 به‌صورت یک رشته (مثلاً mysecretkey123) .RE .IP مثال: \fB\-\-ws-auth=jwt:verify:/path/to/secret.key\fR .TP \fB\-\-ws-url=<[scheme://]url[:port]> نشانی URL که کارساز WebSocket به آن پاسخ می‌دهد. این همان URLای است که به سازنده WebSocket در سمت کلاینت داده می‌شود. .IP به‌صورت اختیاری، امکان مشخص کردن طرحواره URI در WebSocket مانند .I ws:// یا .I wss:// برای اتصال‌های رمزنگاری‌نشده و رمزنگاری‌شده وجود دارد. به عنوان مثال: .I wss://goaccess.io .IP اگر GoAccess در پشت یک پراکسی اجرا می‌شود، می‌توانید سمت کلاینت را طوری تنظیم کنید که با مشخص کردن میزبان و به دنبال آن دونقطه و درگاه (پورت)، به یک درگاه دیگر متصل شود. به عنوان مثال: .I goaccess.io:9999 .IP به‌طور پیش‌فرض، تلاش می‌شود تا به نام میزبانِ گزارش تولیدشده متصل شود. اگر GoAccess روی یک سرور راه دور اجرا می‌شود، میزبان سرور راه دور باید در اینجا مشخص شود. همچنین، مطمئن شوید که یک میزبان معتبر است و نه یک نشانی http. .TP \fB\-\-ping-interval=<secs> فعال‌سازی پینگ WebSocket با بازه زمانی مشخص بر حسب ثانیه. این گزینه به جلوگیری از قطع شدن اتصالات غیرفعال (idle) کمک می‌کند. .TP \fB\-\-fifo-in=<path/file> یک لوله نام‌گذاری‌شده (FIFO) ایجاد می‌کند که از مسیر/فایل داده‌شده می‌خواند. .TP \fB\-\-fifo-out=<path/file> یک لوله نام‌گذاری‌شده (FIFO) ایجاد می‌کند که در مسیر/فایل داده‌شده می‌نویسد. .TP \fB\-\-ssl-cert=<cert.crt> مسیر گواهی TLS/SSL. برای فعال‌سازی پشتیبانی از TLS/SSL، برنامه GoAccess نیازمند استفاده هم‌زمان از \-\-ssl-cert و \-\-ssl-key است. تنها در صورتی که با استفاده از --with-openssl پیکربندی شده باشد. .TP \fB\-\-ssl-key=<priv.key> مسیر کلید خصوصی TLS/SSL. برای فعال‌سازی پشتیبانی از TLS/SSL، برنامه GoAccess نیازمند استفاده هم‌زمان از \-\-ssl-cert و \-\-ssl-key است. تنها در صورتی که با استفاده از --with-openssl پیکربندی شده باشد. .SS "گزینه‌های فایل (FILE OPTIONS)" .TP \fB\- فایل لاگ مورد نظر برای تجزیه از ورودی استاندارد (stdin) خوانده می‌شود. .TP \fB\-f \-\-log-file=<logfile> تعیین مسیر فایل لاگ ورودی. اگر در فایل پیکربندی تنظیم شود، اولویت بالاتری نسبت به -f در خط فرمان خواهد داشت. .TP \fB\-S \-\-log-size=<bytes> تعیین اندازه لاگ بر حسب بایت. این گزینه زمانی کاربرد دارد که لاگ‌ها را برای پردازش از طریق لوله‌کشی (pipe) ارسال می‌کنید و اندازه لاگ می‌تواند به‌طور صریح تنظیم شود. .TP \fB\-l \-\-debug-file=<debugfile> ارسال تمام پیام‌های اشکال‌زدایی (debug) به فایل مشخص‌شده. .TP \fB\-p \-\-config-file=<configfile> تعیین یک فایل پیکربندی سفارشی برای استفاده. در صورت تنظیم، اولویت بالاتری نسبت به فایل پیکربندی سراسری (در صورت وجود) خواهد داشت. .TP \fB\-\-external-assets خروجی دادن دارایی‌های HTML به صورت فایل‌های خارجی JS/CSS. این گزینه برای زمانی که در حال راه‌اندازی خط‌مشی امنیت محتوا (CSP) هستید بسیار مناسب است. این کار دو فایل جداگانه به نام‌های .I goaccess.js و .I goaccess.css در همان دایرکتوری فایل report.html شما ایجاد می‌کند. .TP \fB\-\-invalid-requests=<filename> ثبت لاگ درخواست‌های نامعتبر در فایل مشخص‌شده. .TP \fB\-\-unknowns-log=<filename> ثبت لاگ مرورگرها و سیستم‌عامل‌های ناشناخته در فایل مشخص‌شده. .TP \fB\-\-no-global-config عدم بارگیری فایل پیکربندی سراسری. این دایرکتوری معمولاً باید /usr/local/etc باشد، مگر اینکه با .I --sysconfdir=/dir مشخص شده باشد. برای یافتن فایل پیکربندی پیش‌فرض، گزینه --dcf را ببینید..SS گزینه‌های تجزیه (PARSE OPTIONS) .TP \fB\-a \-\-agent-list فعال‌سازی فهرست user-agentها بر اساس میزبان (host). برای تجزیه سریع‌تر، این پرچم را فعال نکنید. .TP \fB\-d \-\-with-output-resolver فعال‌سازی تحلیل‌گر IP (IP resolver) در خروجی HTML|JSON. .TP \fB\-e \-\-exclude-ip=<IP|IP-range> مستثنی کردن یک IPv4 یا IPv6 از شمارش. این گزینه صرفاً در هنگام پردازش داده‌های لاگ دسترسی اعمال می‌شود و داده‌های ذخیره‌شده (persisted) را مستثنی نمی‌کند. همچنین می‌توان بازه‌ها را با استفاده از یک خط تیره میان IPها (start-end) مشخص کرد. .IP .I مثال‌ها: exclude-ip 127.0.0.1 exclude-ip 192.168.0.1-192.168.0.100 exclude-ip ::1 exclude-ip 0:0:0:0:0:ffff:808:804-0:0:0:0:0:ffff:808:808 .TP \fB\-j \-\-jobs=<1-6> این گزینه تعداد رشته‌های پردازش موازی (threads) را برای استفاده در حین اجرای برنامه مشخص می‌کند. این مقدار درجه همزمانی را هنگام تحلیل داده‌های لاگ تعیین کرده و امکان پردازش موازی چندین وظیفه را به صورت هم‌زمان فراهم می‌سازد. مقدار پیش‌فرض آن ۱ رشته است. معمول است که تعداد کارها (jobs) بر اساس منابع سخت‌افزاری موجود، مانند تعداد هسته‌های CPU، تنظیم شود. .TP \fB\-H \-\-http-protocol=<yes|no> تنظیم/لغو پروتکل درخواست HTTP. این کار کلید درخواستی شامل پروتکل درخواست + خود درخواست واقعی ایجاد می‌کند. .TP \fB\-M \-\-http-method=<yes|no> تنظیم/لغو متد درخواست HTTP. این کار کلید درخواستی شامل متد درخواست + خود درخواست واقعی ایجاد می‌کند. .TP \fB\-o \-\-output=<path/file.[json|csv|html]> نوشتن خروجی در stdout با توجه به یکی از فایل‌های زیر و پسوند متناظر برای قالب خروجی: .IP /path/file.csv - مقادیر جداشده با ویرگول (CSV) /path/file.json - جی‌سان (JSON - JavaScript Object Notation) /path/file.html - اچ‌تی‌ام‌ال (HTML) .TP \fB\-q \-\-no-query-string نادیده گرفتن رشته پرس‌وجو (query string) در درخواست. یعنی: www.google.com/page.htm?query => www.google.com/page.htm. .IP .I نکته: حذف رشته پرس‌وجو می‌تواند مصرف حافظه را به ویژه در درخواست‌های دارای مهر زمانی (timestamped) به طور چشمگیری کاهش دهد. .TP \fB\-r \-\-no-term-resolver غیرفعال‌سازی تحلیل‌گر IP در خروجی ترمینال. .TP \fB\-\-444-as-404 در نظر گرفتن کد وضعیت غیر استاندارد 444 به عنوان 404. .TP \fB\-\-4xx-to-unique-count افزودن خطاهای کلاینت 4xx به شمارش بازدیدکنندگان یکتا. .TP \fB\-\-anonymize-ip ناشناس‌سازی نشانی IP کلاینت. گزینه ناشناس‌سازی IP آخرین بایت (octet) نشانی‌های IPv4 کاربران و آخرین ۸۰ بیت نشانی‌های IPv6 را به صفر تغییر می‌دهد. به عنوان مثال، 192.168.20.100 => 192.168.20.0 به عنوان مثال، 2a03:2880:2110:df07:face:b00c::1 => 2a03:2880:2110:df07:: .IP .I نکته: این گزینه \-a را غیرفعال می‌کند. .TP \fB\-\-chunk-size=<256-32768> این گزینه تعداد خطوط تشکیل‌دهنده یک تکه (chunk) را تعیین می‌کند. این پارامتر اندازه داده‌های پردازش‌شده به صورت هم‌زمان توسط هر رشته را تحت تأثیر قرار داده و امکان موازی‌سازی وظایف خواندن و پردازش فایل را فراهم می‌سازد. مقدار chunk-size بر کارایی پردازش موازی اثر می‌گذارد و می‌توان آن را بر اساس عواملی مانند منابع سیستم و ویژگی‌های داده‌های ورودی تنظیم کرد. .IP مقادیر کم: اگر chunk-size خیلی کم تنظیم شود، ممکن است به پردازش ناکارآمد منجر شود. به عنوان مثال، اگر هر تکه شامل تعداد بسیار کمی خط باشد، بار اضافی مدیریت و هماهنگی پردازش موازی ممکن است از مزایای آن بیشتر شود. .IP مقادیر زیاد: برعکس، اگر chunk-size بیش از حد بزرگ تنظیم شود، می‌تواند به اتمام منابع بیانجامد. هر تکه نمایانگر بخشی از داده است که یک رشته به صورت موازی پردازش می‌کند. تنظیم chunk-size روی مقداری بیش از حد بزرگ ممکن است باعث مشکلات حافظه شود، به ویژه اگر تعداد زیادی رشته موازی به طور هم‌زمان در حال اجرا باشند. .TP \fB\-\-anonymize-level سطوح ناشناس‌سازی را مشخص می‌کند: 1 => پیش‌فرض، 2 => قوی، 3 => دقیق (pedantic). .TS allbox; lb lb lb lb l l l l. بیت‌های پنهان‌شده سطح ۱ سطح ۲ سطح ۳ T{ .BR IPv4 T} 8 16 24 T{ .BR IPv6 T} 64 80 96 .TE .TP \fB\-\-all-static-files شامل کردن فایل‌های ایستایی (static) که حاوی رشته پرس‌وجو (query string) هستند؛ مانند: /fonts/fontawesome-webfont.woff?v=4.0.3 .TP \fB\-\-browsers-file=<path> به طور پیش‌فرض GoAccess فهرستی گلچین‌شده و «پایه/ضروری» از مرورگرها و خزنده‌ها را تجزیه می‌کند. در صورتی که نیاز به افزودن مرورگرهای بیشتری دارید، از این گزینه استفاده کنید. یک فهرست تفکیک‌شده اضافی از مرورگرها/خزنده‌ها/فیدها و غیره را وارد کنید. برای نمونه به config/browsers.list مراجعه کنید یا پیوند زیر را ببینید: https://raw.githubusercontent.com/allinurl/goaccess/master/config/browsers.list .TP \fB\-\-date-spec=<date|hr|min> تنظیم دقت تاریخ بر روی date (پیش‌فرض)، hr برای نمایش ساعت، یا min برای نمایش دقیقه‌های الحاق‌شده به تاریخ. .IP این گزینه در پنل بازدیدکنندگان (visitors) استفاده می‌شود و برای ردیابی بازدیدکنندگان در سطح ساعت مفید است. برای نمونه، دقت در سطح ساعت موجب نمایش ترافیک به صورت 18/Dec/2010:19 و دقت در سطح دقیقه به صورت 18/Dec/2010:19:59 می‌شود. .TP \fB\-\-double-decode رمزگشایی مقادیری که دو بار کدگذاری (double-encoded) شده‌اند. این شامل user-agent، درخواست (request) و ارجاع‌دهنده (referrer) می‌شود. .TP \fB\-\-enable-panel=<PANEL> فعال‌سازی تجزیه و نمایش پنل مشخص‌شده. .IP .I پنل‌های موجود: VISITORS REQUESTS REQUESTS_STATIC NOT_FOUND HOSTS OS BROWSERS VISIT_TIMES VIRTUAL_HOSTS REFERRERS REFERRING_SITES KEYPHRASES STATUS_CODES REMOTE_USER CACHE_STATUS GEO_LOCATION MIME_TYPE TLS_TYPE .TP \fB\-\-fname-as-vhost=<regex> استفاده از نام(های) فایل لاگ به عنوان میزبان(های) مجازی (virtual hosts). یک عبارت منظم (regex) سازگار با POSIX برای استخراج میزبان مجازی از نام فایل ارسال می‌شود. به عنوان مثال، .I --fname-as-vhost='[a-z]*\.[a-z]*' می‌تواند برای استخراج awesome.com.log => awesome.com استفاده شود. .TP \fB\-\-hide-referrer=<NEEDLE> مخفی کردن ارجاع‌دهنده در عین محاسبه و شمارش آن. الگوهای عمومی (wildcards) در عبارت مورد جستجو (needle) مجاز هستند؛ مانند *.bing.com. .TP \fB\-\-hour-spec=<hr|min> تنظیم دقت زمان بر روی hour (پیش‌فرض) یا min برای نمایش یک‌دهم ساعت الحاق‌شده به ساعت. .IP این گزینه در پنل توزیع زمانی (time distribution) استفاده می‌شود و برای ردیابی اوج‌های ترافیک سرور شما در زمان‌های خاص کاربرد دارد. .TP \fB\-\-ignore-crawlers نادیده گرفتن خزنده‌ها (crawlers) در شمارش. .TP \fB\-\-unknowns-as-crawlers دسته‌بندی سیستم‌عامل‌ها و مرورگرهای ناشناخته به عنوان خزنده (crawler). .TP \fB\-\-ignore-panel=<PANEL> نادیده گرفتن تجزیه و نمایش پنل مشخص‌شده. .IP .I پنل‌های موجود: VISITORS REQUESTS REQUESTS_STATIC NOT_FOUND HOSTS OS BROWSERS VISIT_TIMES VIRTUAL_HOSTS REFERRERS REFERRING_SITES KEYPHRASES STATUS_CODES REMOTE_USER CACHE_STATUS GEO_LOCATION MIME_TYPE TLS_TYPE .TP \fB\-\-ignore-referrer=<referrer> صرف‌نظر کردن از ارجاع‌دهنده‌ها (referrers) در شمارش. استفاده از کاراکترهای عمومی (wildcards) مجاز است؛ مانند: .I *.domain.com .I ww?.domain.*.TP \fB\-\-ignore-statics=<req|panel> نادیده گرفتن درخواست‌های فایل‌های ایستا (static). .I req تنها نادیده گرفتن درخواست‌ها از درخواست‌های معتبر .I panels نادیده گرفتن درخواست‌ها از تابلوها (پنل‌ها). توجه داشته باشید که این گزینه آن‌ها را در تعداد کل درخواست‌ها به شمار می‌آورد .TP \fB\-\-ignore-status=<CODE> نادیده گرفتن تجزیه و نمایش یک یا چند کد وضعیت (status code). برای چند کد وضعیت، از این گزینه چندین بار استفاده کنید. .TP \fB\-\-keep-last=<num_days> نگهداری تعداد روزهای مشخص‌شده اخیر در فضای ذخیره‌سازی. این کار جدول‌های ذخیره‌سازی را بازیافت (recycle) می‌کند؛ برای مثال، نگهداری و نمایش تنها ۷ روز گذشته. .TP \fB\-\-no-ip-validation غیرفعال کردن اعتبارسنجی IP کلاینت. برای مواردی مفید است که آدرس‌های IP پیش از ثبت در لاگ مبهم‌سازی (obfuscated) شده باشند. لاگ همچنان باید حاوی یک جای‌نگه‌دار برای .I %h باشد، که معمولاً یک IP تحلیل‌شده است؛ مانند .I ord37s19-in-f14.1e100.net. .TP \fB\-\-no-strict-status غیرفعال کردن اعتبارسنجی کد وضعیت HTTP. برخی سرورها این مقدار را تنها در صورتی ثبت می‌کنند که اتصالی با مقصد برقرار شده باشد و مقصد پاسخی فرستاده باشد. در غیر این صورت، ممکن است به‌صورت - ثبت شود. .TP \fB\-\-num-tests=<number> تعداد خطوطی از لاگ دسترسی (access log) که باید در برابر قالب لاگ/تاریخ/زمان ارائه‌شده آزموده شوند. به‌طور پیش‌فرض، تجزیه‌کننده برای آزمودن ۱۰ خط تنظیم شده است. اگر روی 0 تنظیم شود، تجزیه‌کننده هیچ خطی را نمی‌آزماید و تمام لاگ دسترسی را تجزیه خواهد کرد. اگر خطی پیش از رسیدن به .I <number> با قالب لاگ/تاریخ/زمان داده‌شده مطابقت داشته باشد، تجزیه‌کننده لاگ را معتبر در نظر می‌گیرد، در غیر این صورت GoAccess مقدار EXIT_FAILURE را برمی‌گرداند و پیام‌های خطای مربوطه را نمایش می‌دهد. .TP \fB\-\-process-and-exit تجزیه لاگ و خروج بدون خروجی دادن داده‌ها. برای زمانی مفید است که تنها به‌دنبال افزودن داده‌های جدید به پایگاه داده روی دیسک بدون ایجاد خروجی در یک فایل یا یک ترمینال هستیم. .TP \fB\-\-real-os نمایش نام‌های واقعی سیستم‌عامل؛ مانند Windows XP، Snow Leopard. .TP \fB\-\-sort-panel=<PANEL,FIELD,ORDER> مرتب‌سازی تابلو (پنل) در بارگذاری اولیه. گزینه‌های مرتب‌سازی با کاما از هم جدا می‌شوند. گزینه‌ها به این صورت هستند: PANEL,METRIC,ORDER .IP .I معیارهای در دسترس: BY_HITS - مرتب‌سازی بر اساس تعداد بازدیدها (hits) BY_VISITORS - مرتب‌سازی بر اساس بازدیدکنندگان یکتا BY_DATA - مرتب‌سازی بر اساس حجم داده BY_BW - مرتب‌سازی بر اساس پهنای باند BY_AVGTS - مرتب‌سازی بر اساس میانگین زمان پاسخ‌دهی BY_CUMTS - مرتب‌سازی بر اساس مجموع زمان پاسخ‌دهی BY_MAXTS - مرتب‌سازی بر اساس بیشینه زمان پاسخ‌دهی BY_PROT - مرتب‌سازی بر اساس پروتکل http BY_MTHD - مرتب‌سازی بر اساس متد http .IP .I ترتیب‌های در دسترس: ASC DESC .TP \fB\-\-static-file=<extension> افزودن پسوند فایل ایستا؛ برای مثال: .I .mp3 پسوندها به حروف کوچک و بزرگ حساس هستند. .SS "گزینه‌های موقعیت مکانی (GEOLOCATION OPTIONS)" .TP \fB\-g \-\-std-geoip استفاده از پایگاه داده استاندارد GeoIP برای مصرف حافظه کمتر. .TP \fB\-\-geoip-database=<geofile> مشخص کردن مسیر فایل پایگاه داده GeoIP؛ برای مثال GeoLiteCity.dat. در صورت استفاده از GeoIP2، باید پایگاه داده GeoLite2 City یا Country را از MaxMind.com دریافت کرده و از گزینه --geoip-database برای مشخص کردن پایگاه داده استفاده کنید. همچنین می‌توانید فایل‌های پایگاه داده به‌روزشده را برای GeoIP legacy از طریق GeoLite Legacy Databases در MaxMind.com بیابید. فایل‌های IPv4 و IPv6 نیز پشتیبانی می‌شوند. برای نشانی‌های به‌روزشده پایگاه داده، لطفاً فایل پیکربندی پیش‌فرض GoAccess را ببینید. .I نکته: --geoip-city-data نام مستعاری برای --geoip-database است. .SS "سایر گزینه‌ها (OTHER OPTIONS)" .TP \fB\-h \-\-help راهنما. .TP \fB\-s \-\-storage نمایش روش ذخیره‌سازی فعلی؛ مانند B+ Tree یا Hash. .TP \fB\-V \-\-version نمایش اطلاعات نسخه و خروج. .TP \fB\-\-dcf نمایش مسیر فایل پیکربندی پیش‌فرض هنگامی که از `-p` استفاده نشده است. .SS "گزینه‌های ذخیره‌سازی پایدار (PERSISTENCE STORAGE OPTIONS)" .TP \fB\-\-persist پایدارسازی داده‌های تجزیه‌شده بر روی دیسک. در صورت وجود فایل‌های پایگاه داده، بازنویسی خواهند شد. این گزینه باید برای نخستین مجموعه داده تنظیم شود. مثال‌های زیر را ببینید. .TP \fB\-\-restore بارگذاری داده‌های پیش‌تر ذخیره‌شده از روی دیسک. در صورت خواندن داده‌های پایدارسازی‌شده به‌تنهایی، فایل‌های پایگاه داده باید وجود داشته باشند. .I --persist و مثال‌های زیر را ببینید. .TP \fB\-\-db-path=<dir> مسیری که فایل‌های پایگاه داده روی دیسک در آن ذخیره می‌شوند. مقدار پیش‌فرض، دایرکتوری .I /tmp است..SH "قالب سفارشی لاگ/تاریخ (CUSTOM LOG/DATE FORMAT)" ابزار GoAccess می‌تواند تقریباً هر قالب لاگ وبی را تجزیه و تحلیل کند. .P گزینه‌های از پیش تعریف‌شده شامل Common Log Format (CLF)، Combined Log Format (XLF/ELF)، از جمله virtual host، Amazon CloudFront (Download Distribution)، Google Cloud Storage و قالب W3C (IIS) هستند. .P همچنین GoAccess اجازه استفاده از هر رشته قالب سفارشی دیگری را نیز می‌دهد. .P دو روش برای پیکربندی قالب لاگ وجود دارد. ساده‌ترین راه، اجرای GoAccess با .I -c برای نمایش یک پنجره پیکربندی است. در غیر این صورت، می‌توان آن را در ~/.goaccessrc یا %sysconfdir% پیکربندی کرد. .IP "time-format" متغیر .I time-format که پس از آن یک فاصله قرار می‌گیرد، زمان قالب لاگ را مشخص می‌کند که شامل هر ترکیبی از نویسه‌های معمولی و مشخص‌کننده‌های قالب ویژه است. همه آن‌ها با علامت درصد (%) شروع می‌شوند. به `man strftime` مراجعه کنید. .I %T یا %H:%M:%S. .IP .I نکته: اگر یک برچسب زمانی بر حسب میکروثانیه داده شده باشد، باید از .I %f به عنوان .I time-format یا از .I %* در صورتی که برچسب زمانی بر حسب میلی‌ثانیه باشد، استفاده شود. .IP "date-format" متغیر .I date-format که پس از آن یک فاصله قرار می‌گیرد، تاریخ قالب لاگ را مشخص می‌کند که شامل هر ترکیبی از نویسه‌های معمولی و مشخص‌کننده‌های قالب ویژه است. همه آن‌ها با علامت درصد (%) شروع می‌شوند. به `man strftime` مراجعه کنید. به عنوان مثال: .I %Y-%m-%d. .IP .I نکته: اگر یک برچسب زمانی بر حسب میکروثانیه داده شده باشد، باید از .I %f به عنوان .I date-format یا از .I %* در صورتی که برچسب زمانی بر حسب میلی‌ثانیه باشد، استفاده شود. .IP "log-format" متغیر .I log-format که پس از آن یک فاصله یا .I \\\\t می‌آید، رشته قالب لاگ را مشخص می‌کند. .IP %x یک فیلد تاریخ و زمان منطبق با متغیرهای .I time-format و .I date-format است. این فیلد زمانی استفاده می‌شود که یک برچسب زمانی داده شده باشد یا تاریخ و زمان به صورت یک رشته واحد به یکدیگر متصل شده باشند (مانند 1501647332 یا 20170801235000) به جای اینکه تاریخ و زمان در دو متغیر جداگانه قرار گیرند. .IP %t فیلد زمان منطبق با متغیر .I time-format است. .IP %d فیلد تاریخ منطبق با متغیر .I date-format است. .IP %v نام رسمی کارساز (Canonical Server Name) که به درخواست پاسخ می‌دهد (Virtual Host). .IP %e این فیلد شناسه کاربری (userid) شخصی است که سند را طبق احراز هویت HTTP درخواست کرده است. .IP %C وضعیت حافظه پنهان (Cache) شیئی که توسط کارساز ارائه شده است. .IP %h میزبان (نشانی IP کلاینت، خواه IPv4 یا IPv6). .IP %r خط درخواست از کلاینت. برای اینکه این مقدار قابل تجزیه باشد، نیاز به جداکننده‌های خاصی در اطراف درخواست (مانند نقل‌قول تکی، نقل‌قول دوگانه یا هر چیز دیگری) دارد. در غیر این صورت، باید از ترکیبی از مشخص‌کننده‌های قالب ویژه مانند %m %U %H استفاده کنیم. .IP %q رشته پرس‌وجو (query string). .IP %m روش درخواست (request method). .IP %U مسیر URL درخواست‌شده. .I نکته: اگر رشته پرس‌وجو در %U باشد، نیازی به استفاده از .I %q نیست. با این حال، اگر مسیر URL شامل هیچ رشته پرس‌وجویی نباشد، می‌توانید از .I %q استفاده کنید و رشته پرس‌وجو به انتهای درخواست ضمیمه خواهد شد. .IP %H پروتکل درخواست. .IP %s کد وضعیتی که کارساز به کلاینت بازمی‌گرداند. .IP %b اندازه شیء بازگردانده‌شده به کلاینت. .IP %R سرآیند درخواست HTTP ارجاع‌دهنده ("Referrer"). .IP %u سرآیند درخواست HTTP عامل کاربر ("user-agent"). .IP %K تنظیمات رمزنگاری TLS انتخاب‌شده برای اتصال. (در LogFormat آپاچی: %{SSL_PROTOCOL}x) .IP %k تنظیمات رمزنگاری TLS انتخاب‌شده برای اتصال. (در LogFormat آپاچی: %{SSL_CIPHER}x) .IP %M نوع MIME منبع درخواست‌شده. (در LogFormat آپاچی: %{Content-Type}o) .IP %D زمان صرف‌شده برای پاسخ به درخواست، بر حسب میکروثانیه به صورت یک عدد اعشاری (در مبنای ده). .IP %T زمان صرف‌شده برای پاسخ به درخواست، بر حسب ثانیه با تفکیک‌پذیری میلی‌ثانیه‌ای. .IP %L زمان صرف‌شده برای پاسخ به درخواست، بر حسب میلی‌ثانیه به صورت یک عدد اعشاری (در مبنای ده). .IP %n زمان صرف‌شده برای پاسخ به درخواست، بر حسب نانوثانیه. .IP %^ نادیده گرفتن این فیلد. .IP %~ حرکت به جلو در طول رشته لاگ تا زمانی که یک نویسه غیرفاصله (!isspace) یافت شود. .IP ~h میزبان (نشانی IP کلاینت، خواه IPv4 یا IPv6) در فیلد X-Forwarded-For (XFF). این بخش از یک مشخص‌کننده ویژه استفاده می‌کند که شامل یک علامت مدک (~) پیش از مشخص‌کننده میزبان است و به دنبال آن نویسه(هایی) که فیلد XFF را جدا می‌کنند و درون دو ابرو محصور شده‌اند، می‌آید؛ مانند "~h{, } برای مثال، "~h{, }" برای تجزیه فیلد "11.25.11.53, 17.68.33.17" که با یک ویرگول و یک فاصله جدا شده است (درون علامت‌های نقل‌قول دوگانه محصور شده)، استفاده می‌شود. .TS allbox; lb lb l l. فیلد XFF مشخص‌کننده T{ .BR \[dq]192.1.2.3, \~192.68.33.17,\~192.1.1.2\[dq] T} \[dq]~h{, }\[dq] T{ .BR \[dq]192.1.2.12\[dq],\~\[dq]192.68.33.17\[dq] T} ~h{\[dq], } T{ .BR 192.1.2.12,\~192.68.33.17 T} ~h{, } T{ .BR 192.1.2.14\~192.68.33.17\~192.1.1.2 T} ~h{ } .TE .P .I نکته: به منظور دریافت میانگین، زمان تجمعی و بیشینه زمان پاسخ‌دهی در GoAccess، باید ثبت زمان پاسخ را در کارساز وب خود فعال کنید. در Nginx می‌توانید .I $request_time را به قالب لاگ خود اضافه کنید، یا .I %D را در Apache. .P .I مهم: اگر چندین مشخص‌کننده زمان پاسخ به طور هم‌زمان استفاده شوند، نخستین گزینه مشخص‌شده در رشته قالب نسبت به سایر مشخص‌کننده‌ها اولویت خواهد داشت. .P ابزار GoAccess .I نیازمند فیلدهای زیر است: .IP .I %h یک IPv4/6 معتبر .IP .I %d یک تاریخ معتبر .IP .I %r درخواست.SH "منوی تعاملی (INTERACTIVE MENU)" .IP "F1 یا h" راهنمای اصلی. .IP "F5" بازترسیم پنجره اصلی. .IP "q" خروج از برنامه، پنجره فعلی یا جمع کردن ماژول فعال. .IP "o یا ENTER" باز کردن ماژول انتخاب‌شده یا باز کردن پنجره. .IP "+" باز کردن زیرمجموعه‌های آیتم انتخاب‌شده در صورتی که ماژول از قبل باز شده باشد. .IP "-" جمع کردن زیرمجموعه‌های آیتم انتخاب‌شده در صورتی که ماژول از قبل باز شده باشد. .IP "0-9 و Shift + 0" تنظیم ماژول انتخاب‌شده به عنوان ماژول فعال. .IP "p" بازآرایی تعاملی پنل‌های پیشخوان (فشردن `p` یا `P`). .IP "j" پیمایش به پایین در ماژول بازشده. .IP "k" پیمایش به بالا در ماژول بازشده. .IP "c" تنظیم یا تغییر طرح رنگ (scheme color). .IP "r" تغییر وضعیت ترتیب معکوس میله‌های نمودار برای ماژول فعال. .IP "m" چرخش رو به جلو در معیارهای نمودار برای ماژول فعال (hits، بازدیدکنندگان، پهنای باند). .IP "M" چرخش رو به عقب در معیارهای نمودار برای ماژول فعال. .IP "l" تغییر وضعیت مقیاس لگاریتمی میله‌های نمودار در ماژول فعال. .IP "TAB" حرکت رو به جلو میان ماژول‌ها. از ماژول فعال فعلی شروع می‌شود. .IP "SHIFT + TAB" حرکت رو به عقب میان ماژول‌ها. از ماژول فعال فعلی شروع می‌شود. .IP "^f" پیمایش یک صفحه به جلو درون یک ماژول فعال. .IP "^b" پیمایش یک صفحه به عقب درون یک ماژول فعال. .IP "s" گزینه‌های مرتب‌سازی برای ماژول فعال. .IP "/" جست‌وجو در تمام ماژول‌ها (عبارات باقاعده مجاز است). .IP "n" یافتن موقعیت رخداد بعدی در تمام ماژول‌ها. .IP "g" رفتن به اولین آیتم یا بالای صفحه. .IP "G" رفتن به آخرین آیتم یا پایین صفحه. .SH "مثال‌ها (EXAMPLES)" .I نکته: ارسال داده‌ها از طریق لوله (pipe) به GoAccess کادر محاوره‌ای پیکربندی لاگ/تاریخ/زمان را نمایش نخواهد داد؛ باید آن را از پیش در فایل پیکربندی خود یا در خط فرمان مشخص کرده باشید. .SS خروجی‌های گوناگون (DIFFERENT OUTPUTS) .P برای ارسال خروجی به ترمینال و تولید یک گزارش تعاملی: .IP # goaccess access.log .P برای تولید یک گزارش HTML: .IP # goaccess access.log -a -o report.html .P برای تولید یک گزارش JSON: .IP # goaccess access.log -a -d -o report.json .P برای تولید یک فایل CSV: .IP # goaccess access.log --no-csv-summary -o report.csv .P همچنین GoAccess امکان پایش بی‌درنگ (real-time) از طریق stdin را فراهم می‌کند: .IP # tail -f access.log | goaccess - .P برای پالایش (فیلتر کردن) هم‌زمان با باز نگه‌داشتن لوله جهت تحلیل بی‌درنگ: .IP # tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED - .P تجزیه از ابتدای فایل در حین باز نگه‌داشتن لوله: .IP # tail -f -n +0 access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -o report.html --real-time-html - .P تبدیل منطقه زمانی تاریخ لاگ به Europe/Berlin: .IP # goaccess access.log --log-format='%h %^[%x] "%r" %s %b "%R" "%u"' --datetime-format='%d/%b/%Y:%H:%M:%S %z' --tz=Europe/Berlin --date-spec=min .SS چندین فایل لاگ (MULTIPLE LOG FILES) .P تجزیه چندین فایل لاگ با ارسال آن‌ها به خط فرمان: .IP # goaccess access.log access.log.1 .P تجزیه از یک لوله هم‌زمان با خواندن فایل‌های معمولی (افزودن \fB-\fR برای stdin): .IP # cat access.log.2 | goaccess access.log access.log.1 - .P .I توجه: علامت خط تیره تکی به خط فرمان اضافه می‌شود تا GoAccess بداند که باید ورودی را از طریق لوله (pipe) بخواند. .P پردازش تمام فایل‌های لاگ فشرده‌شده به همراه لاگ فعلی: .IP # zcat access.log.*.gz | goaccess access.log - .P .I نکته: در macOS، به‌جای \fBzcat\fR از \fBgunzip -c\fR استفاده کنید. .I نکته: اگر GoAccess با گزینه \fB--with-zlib\fR کامپایل شده باشد، می‌تواند فایل‌های \fB.gz\fR را مستقیماً و بدون نیاز به ابزارهای فشرده‌زدای خارجی تجزیه کند: .IP # goaccess access.log access.log.1.gz access.log.2.gz .SS خروجی HTML بی‌درنگ (REAL-TIME HTML OUTPUT) .P تولید یک گزارش HTML بی‌درنگ: .IP # goaccess access.log -o /usr/share/nginx/html/site/report.html --real-time-html .P مشخص کردن صریح نشانی اینترنتی WebSocket: .IP # goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io .P استفاده از یک درگاه (پورت) سفارشی: .IP # goaccess access.log -o report.html --real-time-html --port=9870 .P مقید کردن WebSocket به یک آدرس مشخص: .IP # goaccess access.log -o report.html --real-time-html --addr=127.0.0.1 .P .I نکته: برای خروجی بی‌درنگ مبتنی بر TLS/SSL، از \fB--ssl-cert=<cert.crt>\fR و \fB--ssl-key=<priv.key>\fR استفاده کنید. اگر GoAccess پشت یک پراکسی معکوس (reverse proxy) اجرا می‌شود، نشانی اینترنتی WebSocket را طوری تنظیم کنید که شامل مسیر و پورت پراکسی باشد، به عنوان مثال: .IP # goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io:8080/ws.SS کار با تاریخ‌ها (WORKING WITH DATES) .P همه درخواست‌ها از یک تاریخ مشخص تا انتهای فایل: .IP # sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -a - .P استفاده از یک تاریخ نسبی (یک هفته پیش): .IP # sed -n '/'$(date '+%d\/%b\/%Y' -d '1 week ago')'/,$ p' access.log | goaccess -a - .P تجزیه یک بازه تاریخی مشخص: .IP # sed -n '/5\/Nov\/2010/,/5\/Dec\/2010/ p' access.log | goaccess -a - .P تنها نگه‌داشتن داده‌های ۵ روز اخیر: .IP # goaccess access.log --keep-last=5 .SS میزبان‌های مجازی (VIRTUAL HOSTS) .P از \fB--concat-vhost-req\fR برای افزودن میزبان مجازی یا بلوک سرور (%v) به ابتدای فیلد درخواست استفاده کنید. .P الحاق دستی میزبان مجازی: .IP # awk '$8=$1$8' access.log | goaccess -a - .P مستثنی کردن فهرستی از میزبان‌های مجازی: .IP # grep -v "`cat exclude_vhost_list_file`" vhost_access.log | goaccess - .SS فایل‌ها، کدهای وضعیت و ربات‌ها (FILES, STATUS CODES & BOTS) .P تنها تجزیه انواع خاصی از صفحات (html، htm، php): .IP # awk '$7~/\.html|\.htm|\.php/' access.log | goaccess - .P تجزیه بازدیدهای صفحه بدون پسوند: .IP # awk '$7!~/\..*$/' access.log | goaccess - .P فیلتر کردن بر اساس یک کد وضعیت منفرد (مثلاً 500): .IP # awk '$9~/500/' access.log | goaccess - .P فیلتر کردن بر اساس چندین کد وضعیت (3xx یا 5xx): .IP # tail -f -n +0 access.log | awk '$9~/3[0-9]{2}|5[0-9]{2}/' | goaccess -o out.html - .P تخمین ترافیک ربات‌ها: .IP # tail -F -n +0 access.log | grep -i --line-buffered 'bot' | goaccess - .SS سرور (SERVER) .P اجرای GoAccess با اولویت پردازشی (CPU) پایین‌تر: .IP # nice -n 19 goaccess -f access.log -a .P انتقال لاگ‌ها از یک سرور دوردست از طریق لوله (Pipe): .IP # ssh -n root@server 'tail -f /var/log/apache2/access.log' | goaccess - .P .I نکته: دستور SSH نیازمند \fB-n\fR است تا GoAccess بتواند از ورودی استاندارد (stdin) بخواند. برای احراز هویت از کلیدهای SSH استفاده کنید. .SS پردازش افزایشی لاگ (INCREMENTAL LOG PROCESSING) .P ابزار GoAccess می‌تواند لاگ‌ها را با ذخیره دائمی داده‌ها روی دیسک، سپس بازیابی آن‌ها و الحاق داده‌های جدید، به صورت افزایشی پردازش کند. GoAccess شماره‌های inode، آخرین خط تجزیه‌شده و آخرین برچسب زمانی را به ازای هر فایل رهگیری می‌کند. .P .I نکته: اگر inode مطابقت نداشته باشد، تمام خطوط تجزیه می‌شوند. اگر مطابقت داشته باشد، خطوط باقی‌مانده خوانده شده و تعداد خطوط/برچسب زمانی به‌روزرسانی می‌شوند. خطوط لاگ با برچسب زمانی ≤ مقدار ذخیره‌شده نادیده گرفته می‌شوند. داده‌های لوله‌کشی‌شده (piped) بر اساس برچسب زمانی آخرین خط خوانده‌شده عمل می‌کنند. .P .I هشدار: داده‌های لوله‌کشی‌شده (piped) ممکن است ورودی‌های تکراری ایجاد کنند زیرا چندین خط متوالی می‌توانند برچسب زمانی یکسانی داشته باشند. بهترین روش برای پردازش افزایشی این است که داده‌ها به جای پایپ کردن، مستقیماً با GoAccess تجزیه شوند. .P ذخیره دائمی لاگ ماه گذشته: .IP # goaccess access.log.1 --persist .P الحاق لاگ این ماه و حفظ آن: .IP # goaccess access.log --restore --persist .P تنها خواندن داده‌های ذخیره‌شده: .IP # goaccess --restore .P نکات (NOTES) ابزار GoAccess شماره‌های inode تمام فایل‌های پردازش‌شده را رهگیری می‌کند (با این فرض که فایل‌ها روی همان پارتیشن باقی بمانند)؛ علاوه بر این، قطعه‌ای از داده‌های لاگ را به همراه آخرین خط تجزیه‌شده از هر فایل و برچسب زمانی آخرین خط تجزیه‌شده استخراج می‌کند. به عنوان مثال: inode:29627417|line:20012|ts:20171231235059 ابتدا بررسی می‌کند که آیا این قطعه داده با لاگی که در حال تجزیه است مطابقت دارد یا خیر؛ اگر مطابقت داشت، فرض می‌کند که لاگ تغییر فاحشی نکرده است، مثلاً کوتاه (truncate) نشده است. اگر inode با فایل فعلی مطابقت نداشته باشد، تمام خطوط را تجزیه می‌کند. اگر فایل فعلی با inode مطابقت داشته باشد، سپس خطوط باقی‌مانده را می‌خواند و تعداد خطوط تجزیه‌شده و برچسب زمانی را به‌روزرسانی می‌کند. به عنوان یک اقدام احتیاطی مضاعف، خطوط لاگی را که برچسب زمانی آن‌ها ≤ برچسب ذخیره‌شده است تجزیه نخواهد کرد. داده‌های لوله‌کشی‌شده (piped) بر اساس برچسب زمانی آخرین خط خوانده‌شده عمل می‌کنند. به عنوان مثال، تمام ورودی‌های دریافتی را تا زمانی که به یک برچسب زمانی >= مقدار ذخیره‌شده برسد، تجزیه کرده و دور می‌اندازد. .P به عنوان مثال: .IP // لاگ دسترسی ماه گذشته .br # goaccess access.log.1 --persist .P سپس، بارگذاری آن با: .IP // الحاق لاگ دسترسی این ماه، و حفظ داده‌های جدید .br # goaccess access.log --restore --persist .P تنها برای خواندن داده‌های ذخیره‌شده (بدون تجزیه داده‌های جدید): .IP # goaccess --restore .P.SH "نکات (NOTES)" هر پنل فعال در مجموع دارای ۳۶۶ آیتم، یا ۵۰ آیتم در گزارش زنده HTML است. تعداد آیتم‌ها با استفاده از .I max-items قابل سفارشی‌سازی است. توجه داشته باشید که خروجی‌های HTML، CSV و JSON مقداری بیش از مقدار پیش‌فرض ۳۶۶ آیتم در هر پنل را مجاز می‌دانند. .P یک hit یک درخواست است (یک سطر در گزارش دسترسی)، برای مثال، ۱۰ درخواست = ۱۰ hit. درخواست‌های HTTP با IP، تاریخ و user agent یکسان، یک بازدید یکتا (unique visit) در نظر گرفته می‌شوند. .P اگر می‌خواهید پشتیبانی از dual-stack را فعال کنید، لطفاً از .I --addr=:: به جای مقدار پیش‌فرض .I --addr=0.0.0.0 استفاده کنید. .P گزارش تولیدشده پس از ۱ ثانیه با عقب‌نشینی نمایی (exponential backoff) تلاش خواهد کرد مجدداً به سرور WebSocket متصل شود. این گزارش ۲۰ بار برای برقراری اتصال تلاش خواهد کرد. .SH "گزارش باگ‌ها (BUGS)" اگر فکر می‌کنید باگی پیدا کرده‌اید، لطفاً یک ایمیل به .I goaccess@prosoftcorp.com ارسال کنید یا از ردیاب مشکلات در https://github.com/allinurl/goaccess/issues استفاده نمایید. .SH "نویسندگان (AUTHORS)" Gerardo Orellana <hello@goaccess.io> برای جزئیات بیشتر درباره آن، یا نسخه‌های جدید، لطفاً به https://goaccess.io مراجعه کنید.