Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2012, 17:12   #1
Katrina24
 
Регистрация: 15.04.2012
Сообщений: 6
По умолчанию Проанализировать лог файл сервера apache

Народ!!! Может кто поможет

написать на языке Си
Написать программу анализирующую лог файл сервера apache, рассчитывающую увеличение нагрузки на сервере по минутам суток. В результате нужно вывести на экран значение массива из 1440 элементов, в каждом элементе которого написано значение соответствующее определенной минуте

Лог файл находиться во вложении
Вложения
Тип файла: rar access_log.rar (86.4 Кб, 12 просмотров)
Katrina24 вне форума Ответить с цитированием
Старый 17.05.2012, 20:18   #2
Katrina24
 
Регистрация: 15.04.2012
Сообщений: 6
По умолчанию

вот кусок лог файла если нужно
"-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:15:55:48 +0300] "GET /icons/apache_pb2.gif HTTP/1.1" 200 1797 "http://95.163.16.94/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:15:55:48 +0300] "GET /icons/poweredby.png HTTP/1.1" 200 3034 "http://95.163.16.94/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:15:55:48 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:15:59:14 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:15:59:21 +0300] "GET /phpmyadmin HTTP/1.1" 404 286 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:15:59:21 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:15:59:28 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:01:56 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:02:50 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:03:31 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:04:34 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:06:44 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:07:19 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:10:31 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:10:38 +0300] "GET / HTTP/1.1" 403 4609 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:10:38 +0300] "GET /icons/apache_pb2.gif HTTP/1.1" 304 - "http://95.163.16.94/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:10:38 +0300] "GET /icons/poweredby.png HTTP/1.1" 304 - "http://95.163.16.94/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:10:38 +0300] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
2.95.222.233 - - [08/Nov/2010:16:10:48 +0300] "GET / HTTP/1.1" 403 4609 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.10pre) Gecko/20100916 ALTLinux/Sisyphus/3.6.10-alt0.20100909.M50P.1 Firefox/3.6.9"
Katrina24 вне форума Ответить с цитированием
Старый 18.05.2012, 17:58   #3
Katrina24
 
Регистрация: 15.04.2012
Сообщений: 6
По умолчанию

Вот есть похожий код, но там нужно по месяцам выводить и они вручную вбиты, а как сделать так, что бы выводил минуты. Не вбивать же каждую минуту вручную

Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <string.h>
 
 
static const char* months[] = {
    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
    
const char** find_month(const char*);
time_t construct_time(int, int, int, int, const char*, int);
 
#define ENTRY_SIZE 512
#define DATE_FMT "%3s %2d %2d:%2d:%2d %4d"
 
int main(int argc, char* argv[])
{
    char entry[ENTRY_SIZE];
    time_t bounds[2], date;
    size_t i;
    int sec, min, hour, mday, year;
    char mon[4];
        
    if(argc != 3)
    {
        fputs("Usage: analize DATE DATE\n", stderr);
        exit(1);
    }
    
    for(i = 0; i < 2; ++i)
    {
        if(sscanf(argv[i + 1], DATE_FMT, 
                  mon, &mday, &hour, &min, &sec, &year) != 6)
        {
            fprintf(stderr, "Malformed date specification: %s\n", argv[i + 1]);
            exit(1);
        }
        
        bounds[i] = construct_time(sec, min, hour, mday, mon, year);
    }
    
    if(bounds[0] >= bounds[1])
    {
        fprintf(stderr, "Illegal date range: %s -- %s\n", argv[1], argv[2]);
        exit(1);
    }
    
    while(fgets(entry, ENTRY_SIZE, stdin) != NULL)
    {
        if(sscanf(entry, "[%*3s " DATE_FMT,
                  mon, &mday, &hour, &min, &sec, &year) != 6)
        {
            fprintf(stderr, "Malformed date for entry: %s", entry);
            exit(1);
        }
        
        date = construct_time(sec, min, hour, mday, mon, year);
 
        if(date >= bounds[0] && date <= bounds[1])
            fputs(entry, stdout);
    }
    
    if(ferror(stdin))
    {
        fputs("Error occured while reading stdin\n", stderr);
        exit(1);
    }
    
    exit(0);
}
 
const char** find_month(const char* mon)
{
    size_t i;
    
    for(i = 0; i < sizeof(months) / sizeof(*months); ++i)
        if(strcmp(months[i], mon) == 0)
            return months + i;
    return NULL;
}
 
time_t construct_time(int sec, int min, int hour, int mday, const char* mon, int year)
{
    struct tm date;
    
    const char** ptrmon = find_month(mon);
    assert(ptrmon != NULL);
    
    date.tm_sec = sec;
    date.tm_min = min;
    date.tm_hour = hour;
    date.tm_mday = mday;
    date.tm_mon = months - ptrmon;
    date.tm_year = year - 1900;
    date.tm_isdst = 0;
 
    return mktime(&date);
}

Последний раз редактировалось Stilet; 21.05.2012 в 22:12.
Katrina24 вне форума Ответить с цитированием
Старый 21.05.2012, 22:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
рассчитывающую увеличение нагрузки на сервере по минутам суток.
Кол-во подключений это еще не показатель нагрузки. Можно подхватить одно подключение, которое умудрится повесить базу (к примеру если сайт с базой данных) огромным сложным и не оптимизированным запросом.
Опять таки в одно время (почти в одно) может состояться (утрирую) миллион подключений, которых сервер удовлетворит так быстро что в логах не заметить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
.htaccess apache безымяный файл gunsoy PHP 2 14.03.2012 21:31
Как правильно организовывать лог-файл в многопоточных приложениях? Человек_Борща Общие вопросы Delphi 1 26.11.2011 15:08
Прога с/с++, она должна анализировать лог файл hacker007 Помощь студентам 5 27.05.2011 16:35
скрипт получает post запросы и логирует в лог файл quarty Помощь студентам 2 01.02.2011 17:39
мне надо засунуть файл лога squid прокси-сервера в базу! Edimus БД в Delphi 3 30.10.2007 17:02