একটি নির্দিষ্ট প্রোগ্রাম থেকে একটি রিমোট সিসলগ সার্ভারে লগগুলি প্রেরণের জন্য আমি কীভাবে rsyslog কনফিগার করব?


17

আমার একটি প্রোগ্রাম রয়েছে যা একটি প্রদত্ত ট্যাগ / প্রোগ্রামের নাম সহ সিসলগকে আউটপুট করে। আমি সেই প্রোগ্রামটি থেকে সিসলোগ ট্র্যাফিক ফিল্টার করতে এবং অন্য সমস্ত সিসলোগ ট্র্যাফিক স্থানীয় রেখে এটিকে একটি রিমোট সিসলগ সার্ভারে পাঠাতে সক্ষম হতে চাই।

আমি সমস্ত ট্র্যাফিক এর সাথে রিমোট সার্ভারে পাঠাতে পারি

*.* @remote_server

আমি কীভাবে এটি ফিল্টার করব?


1
এই আমার প্রশ্নের উত্তর। stackoverflow.com/questions/4042115/ruby-syslog-custom-facility
Simmo

উত্তর:


37

Rsyslog কনফিগারেশন ফাইলগুলি এখানে অবস্থিত: /etc/rsyslog.d/*.conf

Rsyslog কনফিগারেশন ফাইলগুলি ক্রমানুসারে পড়ে, তাই আপনার কনফিগার ফাইলটির নামকরণ করা গুরুত্বপূর্ণ, যাতে অন্য কোনও কিছু হওয়ার আগে নির্দিষ্ট কনফিগারেশনটি লোড হয়। সুতরাং, আপনার ফাইলের নাম শুরুর শূন্যের অর্থাত্‍ দিয়ে শুরু করুন00-my-file.conf । একটি নতুন ফাইল তৈরি করা আরও ভাল যাতে আপডেটগুলি এবং আপনার স্থানীয় কনফিগারেশনটি ওভাররাইট না করে।

উদাহরণ:

if $programname == 'programname' and $msg contains 'a text string' and $syslogseverity <= '6' then /var/log/custom/bind.log

অথবা আপনি যদি কিছু নির্দিষ্ট এন্ট্রিগুলি ফেলে দিতে চান:

if $programname == 'programname' then ~

আপনার ক্ষেত্রে: (ইউডিপি)

if $programname == 'programname' then @remote.syslog.server
& ~

বা (টিসিপি)

if $programname == 'programname' then @@remote.syslog.server
& ~

& ~মানে প্রক্রিয়াকরণের ম্যাচিং থামাতে (পূর্ববর্তী লাইন শুধুমাত্র!) আরও প্রবেশকার্য নেই।

আরও কিছু সাধারণ তথ্য:

এছাড়াও, সর্বদা নিশ্চিত করুন যে ফিল্টারগুলি একই লাইনে রয়েছে:

# Example: Log mail server control messages to mail-queue.log
if $hostname == 'titus'\
and $programname == 'smtp.queue.'\
and $syslogseverity <= '6' then /var/log/titus/mail-queue.log
& ~

ব্যবহারযোগ্য ফিল্টার:

$hostname
$programname
$msg
$syslogseverity

অপারেটর:

== (equals)
contains
and
or

আরও তথ্য: http://wiki.rsyslog.com/index.php/ কনফিগারেশন_সাম্পলগুলি


1
আমরা কি ভাঙা লিঙ্কটি ঠিক করতে পারি?
মার্ক ওয়ালশ

1

আমরা এটিও চেষ্টা করতে পারি। এটা আমার জন্য ভাল কাজ করছে।

$template Incoming-logs,"/var/log/testing_docker/%PROGRAMNAME%.log"
if $programname startswith 'docker' then -?Incoming-logs

দ্রষ্টব্য: এখানে testing_dockerফোল্ডারের মালিকানা সিসলোগ ব্যবহারকারীকে দেওয়া উচিত। অনুমতি সেট করতে নীচের কমান্ডটি অনুসরণ করুন।

chown syslog:syslog testing_docker
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.