| syslog-ng.conf(5) | The syslog-ng.conf manual page | syslog-ng.conf(5) |
نام (NAME)
syslog-ng.conf - فایل پیکربندی syslog-ng OSE
خلاصه دستور (SYNOPSIS)
syslog-ng.conf
توضیحات (DESCRIPTION)
این صفحه راهنما صرفاً یک چکیده است.
برنامه syslog-ng OSE یک برنامه منعطف و بسیار مقیاسپذیر برای ثبت وقایع سیستم (system logging) است. بهطور معمول، syslog-ng OSE برای مدیریت پیامهای گزارش (log messages) و پیادهسازی ثبت متمرکز وقایع به کار میرود؛ جایی که هدف، جمعآوری پیامهای گزارش از چندین دستگاه مختلف بر روی یک کارگزار لاگ مرکزی و واحد است. دستگاههای مختلف - که کلاینتهای syslog-ng OSE نامیده میشوند - همگی syslog-ng OSE را اجرا میکنند و پیامهای گزارش را از برنامهها، فایلها و سایر منابع گوناگون جمعآوری مینمایند. کلاینتها تمامی پیامهای گزارش مهم را به کارگزار دوردست syslog-ng OSE PE ارسال میکنند، جایی که کارگزار آنها را مرتبسازی و ذخیره مینماید.
مفاهیم پایهای syslog-ng OSE (BASIC CONCEPTS OF syslog-ng OSE)
برنامه syslog-ng OSE پیامهای دریافتی را میخواند و آنها را به مقصدهای انتخابشده هدایت (forward) میکند. برنامه syslog-ng OSE میتواند پیامها را از فایلها، میزبانهای دوردست و سایر منابع دریافت کند.
پیامهای لاگ در یکی از منابع (sources) تعریفشده وارد syslog-ng OSE میشوند و به یک یا چند مقصد (destinations) فرستاده میشوند.
منابع و مقصدها اشیاء مستقلی هستند؛ مسیرهای لاگ (log paths) مشخص میکنند که syslog-ng OSE با یک پیام چه کاری انجام دهد و منابع را به مقصدها متصل میکنند. یک مسیر لاگ شامل یک یا چند مبدأ و یک یا چند مقصد است: پیامهایی که از یک مبدأ میرسند، به تکتک مقصدهای ذکرشده در آن مسیر لاگ ارسال میشوند. یک مسیر لاگ که در syslog-ng OSE تعریف میشود، دستور لاگ (log statement) نامیده میشود.
مسیرهای لاگ میتوانند به صورت اختیاری شامل فیلترها باشند. فیلترها قوانینی هستند که فقط پیامهای خاصی را انتخاب میکنند؛ برای مثال، فقط پیامهای ارسالشده توسط یک برنامه خاص را برمیگزینند. اگر یک مسیر لاگ دارای فیلتر باشد، syslog-ng OSE فقط پیامهایی را که شرایط قوانین فیلتر را برآورده میکنند به مقصدهای تعیینشده در مسیر لاگ ارسال میکند.
سایر عناصر اختیاری که میتوانند در دستورات لاگ ظاهر شوند عبارتند از تجزیهکنندهها (parsers) و قوانین بازنویسی (rewriting rules). تجزیهکنندهها پیامها را برای کمک به پردازش به فیلدهای مختلف بخشبندی میکنند، در حالی که قوانین بازنویسی با افزودن، جایگزینی یا حذف بخشهایی از پیامها، آنها را تغییر میدهند.
پیکربندی syslog-ng OSE (CONFIGURING syslog-ng OSE)
- •
- بدنه اصلی فایل پیکربندی از تعاریف اشیاء تشکیل شده است: منابع، مقصدها و مسیرهای لاگ مشخص میکنند که چه پیامهای گزارشی دریافت شوند و به کجا ارسال گردند. همه شناسهها، نامهای گزینهها و ویژگیها، و هر رشته متنی دیگری که در فایل پیکربندی syslog-ng OSE استفاده میشود، به حروف کوچک و بزرگ حساس هستند (case sensitive). تعاریف اشیاء (که statement نیز نامیده میشوند) دارای ساختار نحوی زیر هستند:
type-of-the-object identifier-of-the-object {<parameters>};
- نوع شیء (Type of the object): یکی از موارد source، destination، log، filter، parser، rewrite rule یا template.
- شناسه شیء (Identifier of the object): نامی منحصربهفرد که شیء را مشخص میکند. هنگام استفاده از کلمات رزروشده به عنوان شناسه، شناسه را درون علامت نقلقول (\"\") قرار دهید.
تمامی شناسهها، ویژگیها و هر رشته متنی دیگری که در فایل پیکربندی syslog-ng OSE به کار میرود، به حروف کوچک و بزرگ حساس هستند.
نکته کاربردی: از شناسههایی استفاده کنید که به نوع شیئی که مشخص میکنند اشاره داشته باشند. برای مثال، پیشوند s_ را برای اشیاء مبدأ (source)، پیشوند d_ را برای مقصدها (destination) و مواردی از این دست قرار دهید.
توجه: تکرار تعریف یک شیء (یعنی تعریف یک شیء مشابه با همان شناسه بیش از یک بار) مجاز نیست، مگر اینکه از تعریف @define allow-config-dups 1 در فایل پیکربندی استفاده کنید. - پارامترها (Parameters): پارامترهای شیء، محصور در آکولاد {parameters}. - نقطه ویرگول (Semicolon): تعاریف اشیاء با یک نقطه ویرگول (;) خاتمه مییابند.
برای مثال، خط زیر یک مبدأ را تعریف کرده و آن را s_internal مینامد.
source s_internal { internal(); };
بعداً میتوان با استفاده از شناسه این شیء در سایر دستورات به آن ارجاع داد؛ برای مثال، مبدأ قبلی به عنوان یک پارامتر در دستور لاگ زیر استفاده شده است:
log { source(s_internal); destination(d_file); };
- •
- پارامترها و گزینههای درون یک عبارت، شبیه به فراخوانی توابع در زبان برنامهنویسی C هستند: نام گزینه که به دنبال آن فهرستی از پارامترهایش درون پرانتز قرار گرفته و به یک نقطه ویرگول ختم میشود.
option(parameter1, parameter2); option2(parameter1, parameter2);
برای مثال، درایور file() در عبارت مبدأ زیر دارای سه گزینه است: نام فایل (/var/log/apache/access.log)، follow-freq() و flags(). گزینه follow-freq() نیز یک پارامتر دارد، در حالی که گزینه flags() دارای دو پارامتر است.
source s_tail { file("/var/log/apache/access.log"
follow-freq(1) flags(no-parse, validate-utf8)); };
اشیاء ممکن است پارامترهای اجباری و اختیاری داشته باشند. پارامترهای اجباری وابسته به موقعیت (positional) هستند، به این معنی که باید به ترتیبی معین مشخص شوند. پارامترهای اختیاری را میتوان با هر ترتیبی با استفاده از قالب option(value) مشخص کرد. اگر پارامتری (اختیاری یا اجباری) مشخص نشود، از مقدار پیشفرض آن استفاده میشود. پارامترها و مقادیر پیشفرض آنها در بخش مرجع شیء مربوطه فهرست شدهاند.
مثال: استفاده از پارامترهای اجباری و اختیاری
درایور مبدأ unix-stream() یک آرگومان اجباری دارد: نام سوکتی که باید روی آن گوش فرا دهد. پارامترهای اختیاری پس از نام سوکت با هر ترتیبی قرار میگیرند، بنابراین تعاریف مبدأ زیر عملکرد یکسانی دارند:
source s_demo_stream1 {
unix-stream("<path-to-socket>"
max-connections(10) group(log));
};
source s_demo_stream2 {
unix-stream("<path-to-socket>"
group(log) max-connections(10));
};
- •
- برخی از گزینهها، گزینههای سراسری هستند یا میتوان آنها را به صورت سراسری تنظیم کرد؛ برای مثال، اینکه آیا syslog-ng OSE باید از تفکیک DNS برای وضوح نشانیهای IP استفاده کند یا خیر.
options { use-dns(no); };
- اشیاء میتوانند پیش از تعریف شدن مورد استفاده قرار گیرند.
- اشیاء را میتوان به صورت درونخطی (inline) نیز تعریف کرد. این حالت زمانی کاربرد دارد که از شیء فقط یک بار استفاده میکنید (برای مثال، یک فیلتر).
- برای افزودن توضیحات (کامنت) به فایل پیکربندی، سطر را با # شروع کرده و نظر خود را بنویسید. این سطرها توسط syslog-ng OSE نادیده گرفته میشوند.
# Comment: This is a stream source
source s_demo_stream {
unix-stream("<path-to-socket>" max-connections(10) group(log)); };
ساختار دستوری عبارتهای لاگ به شرح زیر است:
log {
source(s1); source(s2); ...
optional_element(filter1|parser1|rewrite1);
optional_element(filter2|parser2|rewrite2);
...
destination(d1); destination(d2); ...
flags(flag1[, flag2...]);
};
دستور لاگ زیر تمام پیامهای ورودی به لوکالهاست (localhost) را به یک کارگزار دوردست ارسال میکند.
source s_localhost { network(ip(127.0.0.1) port(1999)); };
destination d_tcp { network("10.1.2.3" port(1999) localport(999)); };
log { source(s_localhost); destination(d_tcp); };
برنامه syslog-ng OSE دارای چندین گزینه سراسری است که نحوه استفاده از DNS، قالب برچسب زمانی مورد استفاده و سایر موارد عمومی را مدیریت میکنند. هر گزینه ممکن است مانند مشخصات درایور دارای پارامترهایی باشد. برای تنظیم گزینههای سراسری، یک دستور options را با استفاده از ساختار زیر به فایل پیکربندی syslog-ng OSE اضافه کنید:
options { option1(params); option2(params); ... };
برای مثال:
جهت غیرفعال کردن تفکیک نام دامنه، خط زیر را به فایل پیکربندی syslog-ng OSE بیفزایید:
options { use-dns(no); };
منابع، مقصدها و فیلترهای موجود در syslog-ng OSE در ادامه فهرست شدهاند.
جدول ۱: درایورهای مبدأ موجود در syslog-ng OSE (TABLE 1: SOURCE DRIVERS AVAILABLE IN syslog-ng OSE)
| نام | توضیحات |
| file() | فایل مشخصشده را باز میکند و پیامها را میخواند. |
| wildcard-file() | پیامها را از چندین فایل و دایرکتوری میخواند. |
| internal() | پیامهایی که به صورت داخلی در syslog-ng OSE تولید میشوند. |
| network() | پیامها را از میزبانهای دوردست با استفاده از پروتکل BSD-syslog روی IPv4 و IPv6 دریافت میکند. از پروتکلهای شبکه TCP، UDP و TLS پشتیبانی میکند. |
| nodejs() | پیامهای JSON را از برنامههای nodejs دریافت میکند. |
| mbox() | پیامهای ایمیل را از فایلهای محلی mbox میخواند و آنها را به پیامهای گزارش چندخطی تبدیل میکند. |
| osquery() | پرسوجوهای osquery را اجرا کرده و نتایج آنها را به پیامهای لاگ تبدیل میکند. |
| pacct() | پیامها را از لاگهای حسابرسی فرایندها در لینوکس میخواند. |
| pipe() | پایپ نامگذاریشده مشخصشده را باز میکند و پیامها را میخواند. |
| program() | برنامه مشخصشده را باز میکند و پیامها را از خروجی استاندارد آن میخواند. |
| snmptrap() | تلههای SNMP مربوط به برنامه snmptrapd از Net-SNMP را خوانده و تجزیه میکند. |
| sun-stream(), sun-streams() | دستگاه STREAMS مشخصشده در سیستمهای Solaris را باز میکند و پیامهای ورودی را میخواند. |
| syslog() | با استفاده از پروتکل جدید استاندارد IETF برای syslog، به پیامهای ورودی گوش فرا میدهد. |
| system() | بهطور خودکار پلتفرمی را که syslog-ng OSE روی آن در حال اجراست تشخیص داده و پیامهای لاگ بومی آن پلتفرم را جمعآوری میکند. |
| systemd-journal() | پیامها را مستقیماً از ژورنال پلتفرمهایی که از systemd استفاده میکنند جمعآوری مینماید. |
| systemd-syslog() | پیامها را با استفاده از یک سوکت از ژورنال پلتفرمهایی که از systemd استفاده میکنند جمعآوری مینماید. |
| unix-dgram() | سوکت یونیکس مشخصشده را در حالت SOCK_DGRAM باز میکند و به پیامهای ورودی گوش فرا میدهد. |
| unix-stream() | سوکت یونیکس مشخصشده را در حالت SOCK_STREAM باز میکند و به پیامهای ورودی گوش فرا میدهد. |
| stdin() | پیامها را از جریان ورودی استاندارد جمعآوری میکند. |
جدول ۲: درایورهای مقصد موجود در syslog-ng OSE (TABLE 2: DESTINATION DRIVERS AVAILABLE IN syslog-ng OSE)
| نام | توضیحات |
| amqp() | پیامها را با استفاده از پروتکل پیشرفته صفبندی پیام (AMQP) منتشر میکند. |
| elasticsearch-http | پیامها را به یک کارگزار Elasticsearch ارسال میکند. |
| file() | پیامها را در فایل مشخصشده مینویسد. |
| graphite() | معیارها را برای ذخیرهسازی دادههای سری زمانی عددی به یک کارگزار Graphite ارسال میکند. |
| graylog2() | پیامهای syslog را به Graylog ارسال میکند. |
| hdfs() | پیامها را در فایلی روی یک گره سیستم فایل توزیعشده هادوپ (HDFS) مینویسد. |
| http() | پیامها را از طریق پروتکل HTTP ارسال میکند. دو پیادهسازی متفاوت از این درایور وجود دارد: یک درایور http مبتنی بر جاوا، و یک درایور http بدون جاوا. |
| kafka() | پیامهای لاگ را در گذرگاه پیام Apache Kafka منتشر میکند، جایی که مشترکین میتوانند به آنها دسترسی داشته باشند. |
| loggly() | پیامهای لاگ را به ارائهدهنده «ثبت وقایع به عنوان سرویس» Loggly ارسال میکند. |
| logmatic() | پیامهای لاگ را به ارائهدهنده «ثبت وقایع به عنوان سرویس» Logmatic.io ارسال میکند. |
| mongodb() | پیامها را به یک پایگاه داده MongoDB ارسال میکند. |
| network() | پیامها را با استفاده از پروتکل BSD-syslog روی IPv4 و IPv6 به یک میزبان دوردست ارسال میکند. از پروتکلهای شبکه TCP، UDP و TLS پشتیبانی میکند. |
| pipe() | پیامها را در پایپ نامگذاریشده مشخصشده مینویسد. |
| program() | برنامه مشخصشده را اجرا (fork/launch) میکند و پیامها را به ورودی استاندارد آن ارسال مینماید. |
| redis() | پیامها را به صورت جفتهای نام-مقدار به یک ذخیرهساز کلید-مقدار Redis ارسال میکند. |
| riemann() | معیارها یا رویدادها را به سامانه نظارتی Riemann ارسال میکند. |
| smtp() | پیامهای ایمیل را به گیرندگان مشخصشده ارسال میکند. |
| sql() | پیامها را به یک پایگاه داده SQL ارسال میکند. علاوه بر بستههای استاندارد syslog-ng OSE، مقصد sql() نیازمند نصب بستههای مخصوص پایگاه داده است. |
| stomp() | پیامها را به یک کارگزار STOMP ارسال میکند. |
| syslog() | پیامها را با استفاده از پروتکل IETF-syslog به میزبان دوردست مشخصشده ارسال میکند. استاندارد IETF از انتقال پیام با استفاده از پروتکلهای شبکه UDP، TCP و TLS پشتیبانی میکند. |
| unix-dgram() | پیامها را به سبک SOCK_DGRAM به سوکت یونیکس مشخصشده ارسال میکند (BSD). |
| unix-stream() | پیامها را به سبک SOCK_STREAM به سوکت یونیکس مشخصشده ارسال میکند (Linux). |
| usertty() | در صورتی که کاربر وارد سیستم شده باشد، پیامها را به ترمینال کاربر مشخصشده ارسال میکند. |
جدول ۳: توابع فیلتر موجود در syslog-ng OSE (TABLE 3: FILTER FUNCTIONS AVAILABLE IN syslog-ng OSE)
| نام | توضیحات |
| facility() | |
| filter() | |
| host() | |
| inlist() | |
| level() or priority() | |
| match() | |
| message() | |
| netmask() | |
| program() | |
| source() | |
| tags() |
فایلها (FILES)
/Users/hofi/Develop/Balabit/syslog-ng/build/install/
/Users/hofi/Develop/Balabit/syslog-ng/build/install/etc/syslog-ng.conf
توجه: اگر با مشکلی مواجه شدید یا در رابطه با syslog-ng OSE به کمک نیاز داشتید، به syslog-ng OSE Administration Guide[1] مراجعه کنید، یا به syslog-ng OSE mailing list[2] سر بزنید. برای اخبار و اطلاعیههای مربوط به syslog-ng OSE، از syslog-ng OSE blogs[3] دیدن کنید.
نویسنده (AUTHOR)
این صفحه راهنما از syslog-ng OSE Administration Guide[1] تولید شده است که توسط چندین مشارکتکننده نوشته شده و مایلیم از آنها صمیمانه تشکر و قدردانی نماییم.
حق نشر (COPYRIGHT)
نکات (NOTES)
[1] syslog-ng OSE Administration Guide
⟨https://syslog-ng.github.io/admin-guide/README⟩
[2] syslog-ng OSE mailing list
⟨https://lists.balabit.hu/mailman/listinfo/syslog-ng⟩
[3] syslog-ng OSE blogs
⟨https://syslog-ng.com/blog/⟩
| 18 December 2025 | 4.10.2 |