برای انتخاب کلیدenter انتخاب کنید یا برای لغو ESC فشار دهید.

ایجاد ردیابی پیشرفته ترافیک سایت با ClickHouse و WP

ایجاد ردیابی پیشرفته ترافیک سایت با ClickHouse در وردپرس

ClickHouse یک دیتابیس تحلیل سریع و مقیاس‌پذیر است که برای ذخیره و پردازش داده‌های بزرگ طراحی شده است. در این راهنما، نحوه‌ی نصب و پیکربندی ClickHouse روی سرور وردپرس، ارسال رویدادهای ترافیک، ایجاد جدول‌های تحلیلی، نوشتن کوئری‌های SQL، نمایش نتایج در داشبورد وردپرس و بهینه‌سازی عملکرد آن را بررسی می‌کنیم. هدف این است که تجربه‌ی ردیابی دقیق و سریع ترافیک وب‌سایت شما را به حداکثر برسانیم.

نصب و راه‌اندازی ClickHouse روی سرور وردپرس

برای نصب ClickHouse، ابتدا باید به سرور وردپرس دسترسی SSH داشته باشید. سپس مراحل زیر را دنبال کنید:

  1. نصب بسته‌های لازم: apt-get update && apt-get install -y ca-certificates curl
  2. دانلود کلید GPG و افزودن مخزن: curl https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG | apt-key add -
  3. افزودن مخزن ClickHouse: echo "deb https://repo.clickhouse.com/deb/stable/ main" | tee /etc/apt/sources.list.d/clickhouse.list
  4. به‌روزرسانی و نصب ClickHouse: apt-get update && apt-get install -y clickhouse-server clickhouse-client
  5. راه‌اندازی سرویس: systemctl enable clickhouse-server && systemctl start clickhouse-server

اگر سرور شما بر پایه‌ی Docker است، می‌توانید از مخزن رسمی Docker استفاده کنید:


docker run -d --name clickhouse-server 
  -p 8123:8123 -p 9000:9000 
  yandex/clickhouse-server

برای اطمینان از عملکرد صحیح، دستورات زیر را اجرا کنید:


clickhouse-client --query="SELECT version()"

اگر نسخه‌ی ClickHouse نمایش داده شد، نصب موفقیت‌آمیز بوده است.

ایجاد و مدیریت جدول‌های تحلیلی

یک جدول مناسب برای ذخیره‌ی رویدادهای ترافیک می‌تواند به شکل زیر باشد:


CREATE TABLE traffic_events (
  event_time DateTime,
  user_id UInt64,
  page_url String,
  referrer String,
  device String,
  country String,
  session_id String
) ENGINE = MergeTree()
ORDER BY (event_time, session_id)
SETTINGS index_granularity = 8192;

این ساختار به‌صورت MergeTree تنظیم شده است تا کوئری‌های زمان‌بر را سریعاً انجام دهد. برای مقیاس‌پذیری، می‌توانید از تنظیمات replication و sharding استفاده کنید.

ارسال رویدادهای ترافیک از وردپرس به ClickHouse

برای ارسال داده‌ها، دو روش اصلی وجود دارد:

  • استفاده از افزونه‌ی ClickHouse Analytics for WordPress که به‌صورت اتوماتیک رویدادهای بازدید را جمع‌آوری می‌کند.
  • نوشتن کد سفارشی در فایل functions.php:

add_action('wp_head', function() {
    $event = [
        'event_time' => current_time('mysql'),
        'user_id' => get_current_user_id(),
        'page_url' => $_SERVER['REQUEST_URI'],
        'referrer' => $_SERVER['HTTP_REFERER'] ?? '',
        'device' => wp_is_mobile() ? 'mobile' : 'desktop',
        'country' => wp_get_canonical_url(),
        'session_id' => session_id()
    ];
    $json = json_encode($event);
    $ch = curl_init('http://localhost:8123/?query=INSERT%20INTO%20traffic_events%20FORMAT%20JSONEachRow');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_exec($ch);
    curl_close($ch);
});

این کد هر بار که یک بازدید رخ می‌دهد، داده‌های آن را به صورت JSON به ClickHouse ارسال می‌کند. برای جلوگیری از تأثیر بر کارایی سایت، می‌توانید از AJAX یا