Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

amx logs -> sql [Orpheu]

, Плагин позволяет трансферить логи в БД
Статус пользователя mazdan
сообщение 8.12.2013, 20:57
Сообщение #21


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Ну вот как-то так. Порядка 30К строк от 4х серверов среднего онлайна примерно часов за 5.
Сделал странички себе и подсветочку - как-то так
Всё в ваших руках короче :)

Прикрепленное изображение


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя apTmusic
сообщение 8.12.2013, 20:59
Сообщение #22


Стаж: 14 лет

Сообщений: 419
Благодарностей: 126
Полезность: 232

А я олух, у меня почему-то не работает....

L 12/08/2013 - 20:58:42: TCONNECTION_FAILED time 0.048044

Хотя на этом же сервере стоит банс и все в порядке :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ViP.Predator
сообщение 8.12.2013, 23:42
Сообщение #23


Стаж: 16 лет

Сообщений: 127
Благодарностей: 89
Полезность: 516

Цитата(mazdan @ 8.12.2013, 22:57) *
Ну вот как-то так. Порядка 30К строк от 4х серверов среднего онлайна примерно часов за 5.
Сделал странички себе и подсветочку - как-то так
Всё в ваших руках короче :)

Прикрепленное изображение



Видел подобное, но реализовано через perl скрипт получающий логи с сервера через logaddress add, и помещающий их в базу. С точки зрения производительности, думаю такой вариант наиболее выгодный.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 9.12.2013, 0:23
Сообщение #24


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Поставил. В БД ничего не пишется.


Гнилой фашистской нечисти
Загоним пулю в лоб,
Отродью человечества
Сколотим крепкий гроб!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 9.12.2013, 7:41
Сообщение #25


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ViP.Predator, не умею пользоваться perl-ом + у меня еще побочная цель снизить число записей в файлы, logaddress мне в этом не поможет.
HLSW вроде как умеет в файл сохранять логи тоже
Относительно производительности вроде гладко всё. стату я так же пуляю. Куча запросов в БД летит, потоковое потому пофиг. Единственное сейчас немного путаются по порядку (те что в одну секунду вылетают) надо будет добавить переменную или счетчик в плагин чтобы порядок был верный.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ViP.Predator
сообщение 9.12.2013, 9:54
Сообщение #26


Стаж: 16 лет

Сообщений: 127
Благодарностей: 89
Полезность: 516

Цитата(mazdan @ 9.12.2013, 9:41) *
ViP.Predator, не умею пользоваться perl-ом + у меня еще побочная цель снизить число записей в файлы, logaddress мне в этом не поможет.
HLSW вроде как умеет в файл сохранять логи тоже
Относительно производительности вроде гладко всё. стату я так же пуляю. Куча запросов в БД летит, потоковое потому пофиг. Единственное сейчас немного путаются по порядку (те что в одну секунду вылетают) надо будет добавить переменную или счетчик в плагин чтобы порядок был верный.


logaddress нет, но если задать:
mp_logdetail 3
mp_logecho 0
mp_logfile 0
mp_logmessages 3

будет сыпать логи вместо файлов или консоли, только на указанный адрес в logaddress.

А про производительность это я к тому, что если какие то проблемы с базой (повреждение), недоступность - то последствия будут отражаться на сервере. В случае когда логи ловит "демон" и кидает их в базу - все проблемы будут отражается на нем а не на сервере. Перл в данном случае используется как кроссплатформенный язык, А написать можно на чем угодно. Там все просто ловится на сокете строчка и кидается в базу - это основной принцип. А как это реализовать каждый выбирает сам.

Насчет перла - как пример в hlstatsx есть демон на перле получающий логи, парсящий их и кидающий в базу результаты парсинга.

Отредактировал: ViP.Predator, - 9.12.2013, 10:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 9.12.2013, 10:04
Сообщение #27


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ViP.Predator, ну потоковые запросы, если без вывода ошибок, то и никак не отражается =)
Подумаю с logaddress, еще раз спасибо!
Ну плюс было весело орфеем хукнуть amxmodx_mm функцию =)

UPD: но amxx логи писаться будут же всё равно так


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ViP.Predator
сообщение 9.12.2013, 16:50
Сообщение #28


Стаж: 16 лет

Сообщений: 127
Благодарностей: 89
Полезность: 516

Цитата(mazdan @ 9.12.2013, 12:04) *
ViP.Predator, ну потоковые запросы, если без вывода ошибок, то и никак не отражается =)
Подумаю с logaddress, еще раз спасибо!
Ну плюс было весело орфеем хукнуть amxmodx_mm функцию =)

UPD: но amxx логи писаться будут же всё равно так



Для amx логов нужно core.ini немного поднастроить :)
amxx_logging 3
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 9.12.2013, 16:54
Сообщение #29


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ViP.Predator,
Цитата
От вас ничего не утаишь. На то вы и генерал.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ViP.Predator
сообщение 9.12.2013, 21:52
Сообщение #30


Стаж: 16 лет

Сообщений: 127
Благодарностей: 89
Полезность: 516

Спасибо. Просто жалко усилий хороших людей, если есть варианты наиболее эффективные.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 10.12.2013, 5:02
Сообщение #31


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ViP.Predator, спасибо :) ну я чет как-то и не подумал даже по стандарт - костность мышления + мало опыта работы с серверами, я года три всего в этой области, соответственно в амхх больше чем в стандарте. Зато я много нового узнал пока занималсяэтой ерундой, давно не было такого, так что не всё впустую :)


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 14.12.2013, 15:59
Сообщение #32


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

БД
CREATE TABLE IF NOT EXISTS `amx_logs` (
`server` varchar(64) NOT NULL,
`type` int(1) NOT NULL,
`name` varchar(64) NOT NULL,
`team` varchar(16) NOT NULL,
`cmd` text NOT NULL,
`ip` varchar(16) NOT NULL,
`steam` varchar(32) NOT NULL,
`time` int(16) NOT NULL,
`count` int(16) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Вывод делал под 4 сервера, переделать не сложно, каждый сам
Вывод
Код
<?
session_start();
if( $_SESSION['level'] == NULL || !$_SESSION['loggedin']==true) {
    header("Location: index.php");
    exit();
}

//require_once("include/db.config.inc.php");
require_once("include/access.inc.php");

if ( !has_access("amxadmins_view") )
{

    header("Location:index.php");
    exit();
}


$host = 'localhost';
$login = '';
$password = '';
$db = '';
$table = 'amx_logs';

$conn = mysql_connect($host, $login, $password);

?>
<center>
<table width=90% align=center><tr bgcolor=#CCCCCC>
<td bgcolor=#DDDDDD onMouseOver="this.style.backgroundColor='#FFDDDD'" onMouseOut="this.style.backgroundColor='#DDDDDD'" onclick="location.href='logs2.php?serv=Lite&type=<?echo (htmlspecialchars($_GET[type]));?>'"><center><a href="logs2.php?serv=Lite">Lite</a>       </center> </td>
<td bgcolor=#DDDDDD onMouseOver="this.style.backgroundColor='#FFDDDD'" onMouseOut="this.style.backgroundColor='#DDDDDD'" onclick="location.href='logs2.php?serv=DM&type=<?echo (htmlspecialchars($_GET[type]));?>'"><center><a href="logs2.php?serv=DM">DM</a>           </center></td>
<td bgcolor=#DDDDDD onMouseOver="this.style.backgroundColor='#FFDDDD'" onMouseOut="this.style.backgroundColor='#DDDDDD'" onclick="location.href='logs2.php?serv=GG&type=<?echo (htmlspecialchars($_GET[type]));?>'"><center><a href="logs2.php?serv=GG">GG</a>           </center></td>
<td bgcolor=#DDDDDD onMouseOver="this.style.backgroundColor='#FFDDDD'" onMouseOut="this.style.backgroundColor='#DDDDDD'" onclick="location.href='logs2.php?serv=War3FT&type=<?echo (htmlspecialchars($_GET[type]));?>'"><center><a href="logs2.php?serv=War3FT">War3FT</a>   </center></td>
</tr>
</table>
<table width=90%><tr>



<td width=5% bgcolor=#DDDDDD onMouseOver="this.style.backgroundColor='#FFDDDD'" onMouseOut="this.style.backgroundColor='#DDDDDD'" onclick="location.href='logs2.php?<?
    
    if(isset($_GET[serv]))
    {
     echo "serv=". htmlspecialchars($_GET[serv])."&";
    }
    if(isset($_GET[type]))
    {
     echo "type=". htmlspecialchars($_GET[type])."&";
    }
    if(intval($_GET[page]) > 1)
    {
     echo "page=".(intval($_GET[page]) - 1);
    }
  
?>'" >
<center><font size=900><</font> </center>

</td>


<td>
<?

if ($conn)
{
    if (mysql_select_db($db))
    {
        
        $serv = mysql_real_escape_string($_GET[serv]);
        $count = intval($_GET[page])*50;

        if(isset($_GET[type]))
        {
            $type = intval($_GET[type]);
            if($type==2 or type == 3)
            {
                $query = "SELECT * FROM ".$table." WHERE (`type` = 2 OR `type` = 3)";
            }
            else
            {
                $query = "SELECT * FROM ".$table." WHERE `type` = ".$type;
            }
            if(isset($_GET[serv]))
            {
                $query.= " AND `server` LIKE '".$serv."'";
            }
        }
        else
        {
            if(isset($_GET[serv]))
            {
                $query= "SELECT * FROM ".$table." WHERE `server` LIKE '".$serv."'";
            }
            else
            {
                $query = "SELECT * FROM ".$table;
            }
        }
        


        $query.=  " ORDER BY `time` DESC, `count` ASC";

        $result = mysql_query($query." LIMIT ".$count.",30 ");
        
        if (!$result) {
            die('Invalid query: ' . mysql_error());
        }
        
        echo '<center><table order = 0 cellpadding = 3 cellspacing = 3 width=98%>';
        echo "<tr bgcolor=#EEEEEE>
        <td width=5% >Сервер</td>
        <td width=6%>Время</td>";
        
        echo '<td  width=9% bgcolor=#DDDDDD onMouseOver="this.style.backgroundColor=\'#BBFFBB\'" onMouseOut="this.style.backgroundColor=\'#DDDDDD\'" ';
        echo 'onclick="location.href=\'logs2.php?';
        if(isset($_GET[serv]))
        {
            echo "serv=". htmlspecialchars($_GET[serv])."&";
        }
        if(intval($_GET[type])==2)
        {
            echo "type=4";
        }
        else
        {
            if(intval($_GET[type])!=4)
            {
                echo "type=". (intval($_GET[type])+1);
            }
        }
        
        echo "'";
        echo '">';
        if(isset($_GET[type]))
        {
            if($_GET[type]==0) echo '<center><b> COMMANDS </b> </center></td>';
            if($_GET[type]==1) echo '<center><b> SV LOGS </b> </center></td>';
            if($_GET[type]==2) echo '<center><b> CHAT </b> </center></td>';
            if($_GET[type]==3) echo '<center><b> CHAT </b> </center></td>';
            if($_GET[type]==4) echo '<center><b> AMXX LOGS </b> </center></td>';
        }
        else
        {
            echo '<center><b> ALL </b> </center></td>';
        }
        echo "<td  width=5% >Team</td>";
        echo "<td  width=75% >Лог</td></tr>";
        
        $i = $count;
        while($row=mysql_fetch_array($result))
        {
            $time = date("d.m - H:i:s", $row['time']);
            if($i%2)
            {
                    $col = "#EFEFEF";
            }
            else
            {
                $col = "#FEFEFE";
            }
            $team = $row[team];
            if($team=="[UN]") {$teamcolor = "#DDDDDD";}
            if($team=="[TT]") {$teamcolor = "#FFDDDD";}
            if($team=="[CT]") {$teamcolor = "#DDDDFF";}
          
            if(stripos($row[cmd], "error")!=FALSE and stripos($row[log], "error") != stripos($row[log], "terror") +1 ) {$col = "#FE0000";}
            if($row[type]==2 or $row[type]==3) {$lgcol = "#EFEFAF";} else {$lgcol = $col;}
            if(($row[name] == "SERVER")) {$plcol = "#DEDEFE";} else {$plcol = $col;}
            if(($row[name] == "fresh_bans.amxx")) {$plcol = "#FFDEDE";} else {$plcol = $plcol;}
            if(($row[name] == "aim_detector.amxx")) {$plcol = "#FFCECE";} else {$plcol = $plcol;}
            if(($row[name] == "alias_detector.amxx")) {$plcol = "#FFCECE";} else {$plcol = $plcol;}
            
            echo "<tr bgcolor=".$col."><td>".htmlspecialchars($row[server])."</td>";
            echo "<td>".$time."</td>";
            echo "<td bgcolor=".$plcol.">".htmlspecialchars($row[name])."</td>";
            echo "<td bgcolor=".$teamcolor."><center>".$team."</center></td>";
            echo "<td bgcolor=".$lgcol.">".htmlspecialchars($row[cmd])."</td></tr>";
            
        }
        echo '</table></center>';
    }
}

mysql_close($conn);

?>

</td>
<td width=5% bgcolor=#DDDDDD onMouseOver="this.style.backgroundColor='#FFDDDD'" onMouseOut="this.style.backgroundColor='#DDDDDD'" onclick="location.href='logs2.php?<?
    
    if(isset($_GET[serv]))
    {
     echo "serv=". htmlspecialchars($_GET[serv])."&";
    }
    if(isset($_GET[type]))
    {
     echo "type=". htmlspecialchars($_GET[type])."&";
    }
         echo "page=".(intval($_GET[page]) + 1);
?>'" >
<center><font size=900>></font> </center>
</td></tr></table>

</center>
Вроде как работает вполне себе.
Скрытый текст
Прикрепленное изображение


Прикрепленный файл  all2sql.rar ( 11,95 килобайт ) Кол-во скачиваний: 25
В архиве версия с орфеем и без. Для версии с орфеем нужны сигнатуры - они есть в первом архиве
Команды в конфиге управляют тем что нужно логгировать.
!
Предупреждение:
НЕ РЕКОМЕНДУЕТСЯ К ИСПОЛЬЗОВАНИЮ


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя tnav
сообщение 15.2.2014, 16:18
Сообщение #33


Стаж: 14 лет

Сообщений: 28
Благодарностей: 26
Полезность: 602

версия из последнего сообщения

Цитата
L 02/15/2014 - 15:11:53: TCONNECTION_FAILED time 0.100999
L 02/15/2014 - 15:11:56: TCONNECTION_FAILED time 0.284000
L 02/15/2014 - 15:12:02: TCONNECTION_FAILED time 0.303000
L 02/15/2014 - 15:12:21: TCONNECTION_FAILED time 0.062000
...


таблицу создал, данные БД заданы правильно, хост указан ip адресом
ту же БД юзают другие плагины, из за этого не может быть проблемы?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 15.2.2014, 16:50
Сообщение #34


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

вряд ли. Я вообще забил на это ViP.Predator всё сказал по делу. Тему прикрою.
!
Предупреждение:
НЕ РЕКОМЕНДУЕТСЯ К ИСПОЛЬЗОВАНИЮ



Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: