অ্যাপাচি ভার্চুয়াল হোস্টগুলির সাথে "সমস্ত কিছু" অ্যাক্সেস লগ?


16

আমি একটি ওয়েব সার্ভারে অনেক ভার্চুয়াল হোস্ট সেট আপ করেছি, প্রত্যেকের নিজস্ব ত্রুটি এবং অ্যাক্সেস লগ রয়েছে। সম্পর্কিত লাইনগুলি httpd.confএই জাতীয় কিছু:

ErrorLog /var/log/httpd-error.log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd-access.log combined

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName myhost.com
    ServerAlias www.myhost.com
    DocumentRoot /var/www/myhost.com/htdocs
    ErrorLog /var/www/myhost.com/log/error.log
    CustomLog /var/www/myhost.com/log/access.log combined
</VirtualHost>

# ... many more VirtualHosts

বর্তমানে, আমি /var/log/httpd-error.log এ কিছু এলোমেলো ত্রুটি পেয়েছি, কিন্তু আমি /var/log/httpd-access.log- তে কিছুই পাচ্ছি না। সমস্ত অ্যাক্সেস এবং ত্রুটিগুলি কোনও ভাগ করা লগফাইলে নকল করা সম্ভব? প্রতিটি ভার্চুয়ালহস্টে নতুন এন্ট্রি যুক্ত না করে এটি করা কি সম্ভব?

উত্তর:


17

Http://httpd.apache.org/docs/2.2/logs.html#virtualhost দেখুন

যদি কাস্টমলগ বা ত্রুটিলোগের নির্দেশাবলী কোনও বিভাগের মধ্যে রাখা হয়, তবে সেই ভার্চুয়াল হোস্টের জন্য সমস্ত অনুরোধ বা ত্রুটি কেবলমাত্র নির্দিষ্ট ফাইলটিতে লগ করা হবে। লগিংয়ের নির্দেশনা নেই এমন কোনও ভার্চুয়াল হোস্টের এখনও তার অনুরোধগুলি মূল সার্ভার লগগুলিতে প্রেরণ করা হবে।

অন্য কথায়, আপনি যদি ভার্চুয়ালহস্ট বিভাগের মধ্যে লগিংয়ের নির্দেশিকা রাখেন তবে এটি মূল সার্ভার কনফিগারেশনের মধ্যে লগিং নির্দেশকে ওভাররাইড করবে। আপনি যদি কোনও একক লগফাইলে লগইন করতে চান তবে আপনার ভার্চুয়ালহস্ট বিভাগগুলি থেকে লগ কনফিগারেশনটি সরিয়ে দিন।

সরলতার জন্য, আমি একক লগফাইলে সমস্ত অ্যাক্সেস ডেটা লগ করতে পছন্দ করি। পরে, আপনি লগগুলি প্রক্রিয়া করতে পারেন এবং ভার্চুয়াল হোস্টগুলির জন্য লগফাইলে লগফাইলে বিভক্ত করতে পারেন। এছাড়াও, একক লগফাইলে লিখিতভাবে কম্পিউটার সংস্থানগুলির আরও কার্যকর ব্যবহার করা হয় একবারে 30 লগফাইলে লিখে। আপনার লগফর্ম্যাটটিতে '% v' অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন, যা ভার্চুয়াল হোস্টের নাম লগ করবে।

সমস্ত অ্যাক্সেস এবং ত্রুটিগুলি কোনও ভাগ করা লগফাইলে নকল করা সম্ভব?

আপনি সমস্ত ত্রুটি লগ করতে এবং একটি ভাগ করা লগফাইলে অ্যাক্সেস করতে পারেন তবে লগফাইলটি কুৎসিত। প্রথমে সাইক্লগে অ্যাপাচি লগ ডেটা প্রেরণ করুন এবং তারপরে স্থানীয় ফাইল বা রিমোট লগ সার্ভারে প্রেরণে সিসলগ ব্যবহার করুন।

# Send access logs to syslog
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "|/usr/bin/logger -t httpd -i -p local7.notice" combined
# Send error logs to syslog
ErrorLog syslog:local7

এবং তারপরে /etc/syslog.conf এ

# Send all HTTP log data to this file
local7.*        /var/log/http-all.log

2

আমি যা করেছি তা হ'ল ভার্চুয়ালহস্ট বিভাগে একটি দ্বিতীয় কাস্টমলগ লাইন যুক্ত করা। তবে আমি প্রতি একক ভোস্ট কনফ ফাইলের জন্য এটি করতে হয়েছিল। এটি কাজ করে এবং এটি এখন আমার টেম্পলেটে যাতে নতুন ভোস্টগুলি গাড়ি নেওয়া হয়।

আমার অ্যাপাচি 2 এখন দুটি জায়গায় লগ করেছে:

  1. সেই ভোস্টের ডিরেক্টরিতে এবং একটি vhost এর নির্দিষ্টকরণ
  2. থেকে /var/log/apache2সব vhosts জন্য একটি সম্মিলিত ফাইলে।

আমি অবশ্যই এই দুটি লগের যথাক্রমে যথাযথভাবে যুক্ত করতে আলাদা লগফর্ম্যাট প্রয়োগ করি। /var/log/apache2লগ পার্ল সঙ্গে পার্স এবং বিশ্লেষণ এবং রিপোর্ট করার জন্য একটি অত্যন্ত সাধারণ মাইএসকিউএল গঠন মধ্যে স্তন্যদান করা হয়। লোগ্রোটেট সপ্তাহে একবারে ঝাপটায়।


1

ভাল আপনি যদি সমস্ত ভার্চুয়াল হোস্টের জন্য কেবলমাত্র এক জায়গায় লাইভ লগ দেখতে চান তবে আপনি কেবল টাইপ করতে পারেন:

tail -f /var/www/*/access.log

একই নিয়মটি গ্রেপযুক্ত বিড়ালের জন্য প্রযোজ্য:

 cat /var/www/*/access.log | grep "something"

অথবা যদি লগ ঘোরানো আগে থেকেই ফাইলগুলিকে সঙ্কুচিত করে:

gzip -d /var/www/*/access.log.2.gz

উদাহরণগুলি দেবিয়ান / উবুন্টুতে পরীক্ষা করা হয়


0

আমি মনে করি না এটি সম্ভব। কমপক্ষে ডকুমেন্টেশনে এ জাতীয় বিষয় উল্লেখ করা হয়নি।

এই ধরণের আচরণ অনুকরণের সর্বোত্তম উপায় হ'ল ভার্চুয়াল হোস্টের নির্দিষ্ট ফাইলগুলিতে লগ ফাইলগুলির একটি অনুলিপি ভাগ করে ফর্ম্যাটে% v ট্যাগটিকে সংজ্ঞায়িত করা।


0

আপনার লগ ফাইলের অবস্থানগুলি ভার্চুয়ালহোস্টগুলি জুড়ে যে কোনও ধরণের প্যাটার্ন অনুসরণ করে কিনা তা আমি জানি না, তবে তারা যদি তা করে থাকে তবে আমি অ্যাপাচি ডুপ্লিকেট লগ তৈরি করার কথা ভুলে যাব এবং আমার যখন প্রয়োজন তখন কেবল লগগুলিকে বিড়াল করতে হবে।

cat /var/www/*/log/access.log > /var/www/logs/access.log

0

আমি এই প্রশ্নের উত্তরও খুঁজছি। এখনও অবধি আমার দুটি সমাধান রয়েছে:

  1. বিড়াল সমাধান joebert উল্লিখিত
  2. আমার নিজস্ব লেজ সমাধান: tail -f /var/log/httpd/*access_log

আমি tail -fহোস্টের সমস্ত ওয়েব সার্ভার ক্রিয়াকলাপে এক ধরণের দর্শন দেখতে সক্ষম হতে চাই । আমি বরং একটি মাত্র ফাইল টেল করতে সক্ষম হব, যদিও, লেজ একাধিক ফাইল হ্যান্ডল করার উপায়টি আমার পছন্দ নয়।


মাল্টিটেল পান। এটি বেশ কার্যকর।
পর্যন্ত

0

আপনি 2 সম্ভাবনার করেছেন সেগুলি ব্যবহার করে ErrorLog নির্দেশ http://httpd.apache.org/docs/2.2/mod/core.html#errorlog

1) সিসলগ ব্যবহার করুন এবং [r] syslog.conf এ সদৃশ পরিচালনা করুন

২) পাইপ ব্যবহার করুন, কোনও অ্যাপ্লিকেশন / স্ক্রিপ্টে লগ এন্ট্রি প্রেরণ করুন এবং সেই অ্যাপ্লিকেশন / স্ক্রিপ্টের সদৃশটি পরিচালনা করুন


0

সমস্ত অ্যাক্সেস লগগুলি কি কঠোরভাবে প্রয়োজনীয়? যদি ত্রুটিগুলি আসলে কোনও ভোস্টের অনুরোধের কারণে ঘটে থাকে তবে vhost ত্রুটি লগটিতে কিছু লগড হওয়া উচিত। সেক্ষেত্রে, কোন ভোস্ট অপরাধী তা নির্ধারণ করার জন্য ls -t /var/www/*/log/error.log এবং তারপরে কেবল অ্যাক্সেস লগ ফাইলটি দেখানো অনেক অপ্রয়োজনীয় লগ রিডিং অপসারণের জন্য প্রথম পদক্ষেপ বলে মনে হবে ।

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