[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP парсер DeepMetrix ipMonitor 6 с MySQL. Скрипт
Leks_
Доброго времени суток.
Помогите пожалуйста с парсером мониторинга DeepMetrix ipMonitor 6. Это програма-мониторинг.
Есть код html кторый я могу получить:

<!--// status00.htm 05/13/1998 //-->
<HTML><HEAD>
<META
HTTP-EQUIV="Expires" CONTENT="Tue, 04 Dec 1993 0:0:0 GMT">
<META
HTTP-EQUIV="Pragma" CONTENT="no-cache"><META HTTP-EQUIV="refresh" CONTENT="60; url=/em?stat_list_3F4CC01900000000"><style>
a.lft:link { color: #B9CFE4; background: #000000; text-decoration: none; font-size: 8pt; }
a.lft:visited { color: #B9CFE4; background: #000000; text-decoration: none; font-size: 8pt; }
a.lft:active { color: #B9CFE4; background: #000000; text-decoration: none; font-size: 8pt; }
</style>
<LINK
REL="STYLESHEET" HREF="/em6.css">
</HEAD>
<script
LANGUAGE="JavaScript">
<!--
function hl(im) { if (document[im]) { document[im].src = "/6_"+im+"b.gif"; }}
function uhl(im) { if (document[im]) { document[im].src = "/6_"+im+"a.gif"; }}

var imglist = new Array (
"6_em1b.gif",
"6_em2b.gif",
"6_em3b.gif",
"6_em4b.gif",
"6_em5b.gif",
"6_em6b.gif"
);

var imgs = new Array();
var count;
if (document.images)
for (count=0; count<imglist.length; count++)
{imgs[count]=new Image(); imgs[count].src=imglist[count];}

//-->
</SCRIPT>
<body
bgcolor=#FFFFFF TOPMARGIN=0 LEFTMARGIN=0 MARGINHEIGHT=0 MARGINWIDTH=0>
<TABLE
WIDTH="778" BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR>
<TD
WIDTH="778" COLSPAN="2" ALIGN="left"> <IMG SRC="/6_topbar1.jpg" WIDTH="778" HEIGHT="33" ALIGN="left" VSPACE=0 HSPACE=0 ALT="ipMonitor 6.1.5"></TD>
</TR>
<TR
VALIGN="top">
<TD
WIDTH="788" COLSPAN="2">
<IMG
SRC="/6_topbar2b.jpg" WIDTH="339" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 ALT="ipMonitor 6.1.5">
<A
HREF="/em?config" ONMOUSEOVER="hl('em19')" ONMOUSEOUT="uhl('em19')"> <IMG SRC="/6_em19a.gif" NAME="em19" WIDTH="76" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 BORDER=0></A>
<IMG
SRC="/6_spacerb.gif" WIDTH="18" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 BORDER=0>
<A
HREF="/em?stat_summary" ONMOUSEOVER="hl('em20')" ONMOUSEOUT="uhl('em20')"> <IMG SRC="/6_em20a.gif" NAME="em20" WIDTH="70" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 BORDER=0></A>
<A
HREF="/em?stat_list" ONMOUSEOVER="hl('em21')" ONMOUSEOUT="uhl('em21')"> <IMG SRC="/6_em21a.gif" NAME="em21" WIDTH="69" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 BORDER=0></A>
<A
HREF="/em?stat_adminlist" ONMOUSEOVER="hl('em22')" ONMOUSEOUT="uhl('em22')"> <IMG SRC="/6_em22a.gif" NAME="em22" WIDTH="69" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 BORDER=0></A>
<A
HREF="/em?form=statbyserv&" ONMOUSEOVER="hl('em23')" ONMOUSEOUT="uhl('em23')"> <IMG SRC="/6_em23a.gif" NAME="em23" WIDTH="69" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 BORDER=0></A>
<A
HREF="/em?log_select" ONMOUSEOVER="hl('em24')" ONMOUSEOUT="uhl('em24')"> <IMG SRC="/6_em24a.gif" NAME="em24" WIDTH="68" HEIGHT="25" ALIGN="left" VSPACE=0 HSPACE=0 BORDER=0></A>
</TD>
</TR>

<TR
VALIGN="top">
<TD
ALIGN="left" WIDTH="110">
<TABLE
WIDTH="110" HEIGHT="444" BACKGROUND="/6_leftmenu.jpg" BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR
VALIGN="top">
<TD
ALIGN="left">
<IMG
align=top width=13 height=14 src="/blank.gif"><FONT CLASS="titley">Please Select</FONT><BR>
<IMG
align=top width=13 height=10 src="/blank.gif"><BR>
<IMG
align=top width=13 height=14 src="/blank.gif"><FONT CLASS="title">Monitor Status<BR>
<IMG
align=top width=20 height=14 src="/6_bdots.gif"><A HREF="/em?stat_summary" CLASS="mst"> Summary</A><BR>
<IMG
align=top width=29 height=14 SRC="/6_rmdots2.gif"><A HREF="/em?stat_list" CLASS="m"> All (Details)</A><BR>
<IMG
align=top width=29 height=14 SRC="/6_rbdots2.gif"><A HREF="/em?stat_adminlist" CLASS="m"> All (Control<BR><IMG BORDER=0 SRC="/blank.gif" WIDTH="45" HEIGHT="1"> Room)</A><BR>
<IMG
align=top width=13 height=10 src="/blank.gif"><BR>
<IMG
align=top width=13 height=14 src="/blank.gif"><FONT CLASS="title">View Statistics<BR>
<IMG
align=top width=20 height=14 SRC="/6_mdots.gif"><A HREF="/em?form=statbyserv&" CLASS="m"> Select by Server</A><BR>
<IMG
align=top width=20 height=14 SRC="/6_bdots.gif"><A HREF="/em?form=statbygroup&" CLASS="m"> Select by Group</A><BR>
<IMG
align=top width=13 height=10 src="/blank.gif"><BR>
<IMG
align=top width=13 height=14 src="/blank.gif"><FONT CLASS="title"> History Status<BR>
<IMG
align=top width=20 height=14 SRC="/6_mdots.gif"><A HREF="/em?log_list_37_18_0" CLASS="m"> Monitor</A><BR>
<IMG
align=top width=20 height=14 SRC="/6_mdots.gif"><A HREF="/em?log_list_37_3_0" CLASS="m"> Notifications</A><BR>
<IMG
align=top width=20 height=14 SRC="/6_mdots.gif"><A HREF="/em?log_list_37_4_0" CLASS="m"> Security</A><BR>
<IMG
align=top width=20 height=14 SRC="/6_bdots.gif"><A HREF="/em?log_select" CLASS="m"> User Defined</A><BR>
<IMG
align=top width=13 height=10 src="/blank.gif"><BR>
<IMG
align=top width=13 height=10 src="/blank.gif"><BR>
<IMG
align=top width=13 height=14 src="/blank.gif"><FONT CLASS="title">Help<BR>
<IMG
align=top width=20 height=14 SRC="/6_mdots.gif"><A target="EMHelpScreen" HREF="/book/index.htm" CLASS="sm" onClick="window.open( '/book/index.htm', 'EMHelpScreen', 'toolbar=1,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=560,height=400');"> Online Book</A><BR>
<IMG
align=top width=20 height=14 SRC="/6_mdots.gif"><A CLASS="sm" TARGET="EMHelpScreen" HREF="/em?search" onClick="window.open('/em?search', 'EMHelpScreen', 'toolbar=1,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=560,height=400');"> Search Book</a><BR>
<IMG
align=top width=20 height=14 SRC="/6_mdots.gif"><A HREF="/em?welcome0" CLASS="sm"> Welcome</A><BR>
<IMG
align=top width=20 height=14 SRC="/6_bdots.gif"><A HREF="/em?tips" CLASS="sm"> Tips</A><BR>
</TD>
</TR>
</TABLE>
</TD>
<TD
WIDTH="778" ALIGN="left">
<!-- todo list -->
<table width=668 border=0 cellpadding=0 cellspacing=0 BGCOLOR=#e7e7e7 style="background:#D8E0E5 url(/6_todoback.jpg) no-repeat top left">
<tr
valign="top">
<td
NOWRAP><font size=-2 class="tiny">   <B>Things to do:</B>  These are recommended tasks to help you get up and running quickly with ipMonitor.</td>
<td
rowspan=2 class="ml" align="left" valign="TOP"><font size=-2 class="tiny"></td></tr>
<tr><td><table
border=0 width=668 cellpadding=0 cellspacing=0>
<colgroup><col
width=1%><col><col><col>
<tr><td><img
src="/blank.gif" height=8 width=1></td><td></td><td></td><td></td></tr>
<tr>
<td
nowrap><font size=-2 class="tiny">   <s>1.  Visit Site Settings</s></td>
<td
nowrap><font size=-2 class="tiny">   4.  <a href="/em?grp_edit0_4B8E57B200000021" class="smt">Add Monitors to Groups</a></td>
<td
nowrap><font size=-2 class="tiny">   <s>7.  Add Reports</s>   </td><td><font size=-2 class="tiny"> </td></tr><tr>
<td
nowrap><font size=-2 class="tiny">   <s>2.  Add Groups</s></td>
<td
nowrap><font size=-2 class="tiny">   <s>5.  Add Profiles</s></td>
<td
nowrap><font size=-2 class="tiny">   <s>8.  Add Report Cells</s>   </td><td><font size=-2 class="tiny"><a href="/em?todo_"><b>Hide this list</a> </td></tr><tr>
<td
nowrap><font size=-2 class="tiny">   <s>3.  Add Monitors or Add Network</s></td>
<td
nowrap><font size=-2 class="tiny">   <s>6.  Add Alerts to Profiles</s></td>
<td
nowrap><font size=-2 class="tiny">   9.  <a href="/em?job_add" class="smt">Add Jobs / Schedule Reports</a>   </td><td><font size=-2 class="tiny"> </td></tr>
<tr><td><img
src="/blank.gif" height=8 width=1></td><td></td><td></td></tr>
</table>
</td></tr></table>

<!-- end of todo list -->
<!-- interface bar -->

<TABLE WIDTH=668 HEIGHT=28 CELLSPACING=0 BORDER=0 CELLPADDING=0 BGCOLOR=#c0c0c0 style="background:#c0c0c0 url(/6_sgreyspace.gif) repeat-x top left"><TR><TD BACKGROUND="/6_ibarspace.gif"><font size=-2 class="tiny" color=#000000><a href="/em?stat_summary"><IMG BORDER=0 SRC="/6_back.gif" WIDTH=61 HEIGHT=28 ALT="Return to the previous Page"></a><a href="/em?stat_list_3F4CC01900000000"><IMG BORDER=0 SRC="/6_refresh.gif" WIDTH=61 HEIGHT=28 ALT="Update this Page's Content"></a><a TARGET="_top" href="/em?print_stat_list_3F4CC01900000000"><IMG BORDER=0 SRC="/6_fullscreen.gif" WIDTH=89 HEIGHT=28 ALT="Frameless View"></a><IMG BORDER=0 SRC="/6_left.gif" WIDTH=7 HEIGHT=28></td>
<td
align=right BACKGROUND="/6_ibarspace.gif"><IMG BORDER=0 SRC="/6_right.gif" WIDTH=6 HEIGHT=28><IMG BORDER=0 SRC="/6_helpoffa.gif" WIDTH=88 HEIGHT=28><a target="EMHelpScreen" href="/book/status.htm" onClick="window.open( '/book/status.htm', 'EMHelpScreen', 'toolbar=1,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=560,height=400' );"><IMG BORDER=0 SRC="/6_help.gif" WIDTH=56 HEIGHT=28 ALT="Page Sensitive Help"></a></TD></TR></TABLE><center>
<!-- end of interface bar -->


 <br>



<TABLE
WIDTH=600 BORDER=0 CELLPADDING=0 CELLSPACING=1>
<TR
BGCOLOR=#313031>
<TD
COLSPAN=6><font class="titley"> Monitor Status - for Group: Global (All Monitors)</TD>
</TR>

<!--// status02.htm 05/13/1998 //-->

<TR BGCOLOR=#636163>
<TD
NOWRAP><font size=-1 class="medium" color=#ffffff><b> Member Name</TD>
<TD
NOWRAP><font size=-1 class="medium" color=#ffffff><b> Type</TD>
<TD
NOWRAP><font size=-1 class="medium" color=#ffffff><b> Last Status</TD>
<TD
NOWRAP><font size=-1 class="medium" color=#ffffff><b> Pending</TD>
<TD
NOWRAP><font size=-1 class="medium" color=#ffffff><b> Up/Down </TD>
<TD
NOWRAP><font size=-1 class="medium" color=#ffffff><b> Next Poll </TD></TR>

<tr
valign="top" bgcolor=#DA4747><td><font size=-2 class="tiny">  <a href="/em?mon_edit_461CBF240000000E" class="nil">Server3</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server timed out</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1179:00 / 640:34 min </td><td><font size=-2 class="tiny"> 4:23 min</td></tr>
<tr
valign="top" bgcolor=#DA4747><td><font size=-2 class="tiny">  <a href="/em?mon_edit_490AB1250000001F" class="nil">Server4</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server timed out</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1133:39 / 685:55 min </td><td><font size=-2 class="tiny"> 0:46 min</td></tr>
<tr
valign="top" bgcolor=#FF4040><td><font size=-2 class="tiny">  <a href="/em?mon_edit_498A914300000006" class="nil">BackUp S3</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused failure</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1370:12 / 449:22 min </td><td><font size=-2 class="tiny"> 2:03 min</td></tr>
<tr
valign="top" bgcolor=#EBB361><td><font size=-2 class="tiny">  <a href="/em?mon_edit_498A914300000006" class="nil">BackUp S4</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused failure</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1370:12 / 449:22 min </td><td><font size=-2 class="tiny"> 2:03 min</td></tr>
<tr
valign="top" bgcolor=#51A851><td><font size=-2 class="tiny">  <a href="/em?mon_edit_408626A900000009" class="nil">Server1</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server handshaked OK</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 3:31 min</td></tr>
<tr
valign="top" bgcolor=#51A851><td><font size=-2 class="tiny">  <a href="/em?mon_edit_4C74EB2A0000016E" class="nil">Server2</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server handshaked OK</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> n/a / n/a min </td><td><font size=-2 class="tiny"> 1:41 min</td></tr>
<tr
valign="top" bgcolor=#51A851><td><font size=-2 class="tiny">  <a href="/em?mon_edit_4D774EBC00000479" class="nil">BackUp S1</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused success</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 0:02 min</td></tr>
<tr
valign="top" bgcolor=#51A851><td><font size=-2 class="tiny">  <a href="/em?mon_edit_4D7746AF00000475" class="nil">BackUp S2</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused success</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 0:44 min</td></tr>
<tr
valign="top" bgcolor=#A4A4A4><td><font size=-2 class="tiny">  <a href="/em?mon_edit_4D8B56B50000002C" class="nil">Server5</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Pattern found</td><td><font size=-2 class="tiny"> In Maintenance</td><td NOWRAP><font size=-2 class="tiny"> 1127:20 / 8:23 min </td><td><font size=-2 class="tiny"> 1730:00 min</td></tr>
<tr
valign="top" bgcolor=#A4A4A4><td><font size=-2 class="tiny">  <a href="/em?mon_edit_4A49B6BA0000000A" class="nil">BackUp S5</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> Pattern found</td><td><font size=-2 class="tiny"> In Maintenance</td><td NOWRAP><font size=-2 class="tiny"> 1143:59 / 0:00 min </td><td><font size=-2 class="tiny"> 1730:00 min</td></tr>
<!--// status03.htm 05/13/1998 //-->

</TABLE>

</td></tr><tr><td>
 </td><td align=center> <p><font color=#999999 size=-2>Content Created on 2:10:40 Sat Apr 30th, 2011 by ipMonitor 6.1.5<br>Copyright © 1996 - 2003 DeepMetrix Corporation.<br> </td></tr></table></BODY></HTML>




Проверки различаются по цветам:
DA4747 - Проверка не пройдена больше 3 раз (красный).
FF4040 - Проверка не пройдена больше 3 раз иногда (ярко красный).
EBB361 - Проверка не пройдена менее 3 раз (желтый).
51A851 - Проверка пройдена (зеленый).
A4A4A4 - Проверка отключена (серый).
user posted image
Кол-во проверок я сократил с 1300 до 10 для примера.

Задача:
Написать php парсер для вывода только красных и желтых проверок в онлайн режиме.
В идеале чтоб скрипт загонял в MySQL базу красные и ярко красные ошибки, которые дольше 10 минут, и регистрировал время возникновения ошибки (когда покраснела).
В СУБД нужно заносить только:
Member Name
Type
Last Status
и время покраснения.

P.S. Я не программист. Поломал себе уже всю голову с регулярными выражениями и остальным. Помогите пожалуйста.



Спустя 1 час, 58 минут, 37 секунд (30.04.2011 - 05:46) walerus написал(а):
Цитата

Задача:
Написать php парсер для вывода только красных и желтых проверок в онлайн режиме.


На счет парсера - нет проблем, но вот я не совсем понял, что значит в онлаин режиме?, скрипт должен каждую секунду запрашивать такой результат? или через определенное время или же ты сам будешь запускать его ?

Цитата

В идеале чтоб скрипт загонял в MySQL базу красные и ярко красные ошибки, которые дольше 10 минут, и регистрировал время возникновения ошибки (когда покраснела).


Не знаю чем тебе это поможет, если тут же пишешь... -
Цитата

P.S. Я не программист.


Чего с базой то делать дальше? И опять же вид базы, куда потом ее прикручивать будешь...

Много не совсем понятного...

Вот регулярка:



$data = ''; // В эту переменную передаешь свою страницу, которую приводил выше

preg_match_all('~<tr valign="top" bgcolor=(.*)><td><font size=-2 class="tiny"> <a href="(.*)" class="nil">(.*)</a></td><td align=center><font size=-2 class="tiny">(.*)</td><td><font size=-2 class="tiny">(.*)</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny">(.*)</td><td><font size=-2 class="tiny">(.*)</td></tr>~iUs', $data, $match);


Результат - массив.


Array
(
[
0] => Array
(
[
0] => <tr valign="top" bgcolor=#DA4747><td><font size=-2 class="tiny"> <a href="/em?mon_edit_461CBF240000000E" class="nil">Server3</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server timed out</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1179:00 / 640:34 min </td><td><font size=-2 class="tiny"> 4:23 min</td></tr>

[1] => <tr valign="top" bgcolor=#DA4747><td><font size=-2 class="tiny"> <a href="/em?mon_edit_490AB1250000001F" class="nil">Server4</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server timed out</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1133:39 / 685:55 min </td><td><font size=-2 class="tiny"> 0:46 min</td></tr>
[2] => <tr valign="top" bgcolor=#FF4040><td><font size=-2 class="tiny"> <a href="/em?mon_edit_498A914300000006" class="nil">BackUp S3</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused failure</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1370:12 / 449:22 min </td><td><font size=-2 class="tiny"> 2:03 min</td></tr>

[3] => <tr valign="top" bgcolor=#EBB361><td><font size=-2 class="tiny"> <a href="/em?mon_edit_498A914300000006" class="nil">BackUp S4</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused failure</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1370:12 / 449:22 min </td><td><font size=-2 class="tiny"> 2:03 min</td></tr>
[4] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_408626A900000009" class="nil">Server1</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server handshaked OK</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 3:31 min</td></tr>

[5] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_4C74EB2A0000016E" class="nil">Server2</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server handshaked OK</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> n/a / n/a min </td><td><font size=-2 class="tiny"> 1:41 min</td></tr>
[6] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_4D774EBC00000479" class="nil">BackUp S1</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused success</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 0:02 min</td></tr>

[7] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_4D7746AF00000475" class="nil">BackUp S2</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused success</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 0:44 min</td></tr>
)

[
1] => Array
(
[
0] => #DA4747
[1] => #DA4747
[2] => #FF4040
[3] => #EBB361
[4] => #51A851
[5] => #51A851
[6] => #51A851
[7] => #51A851
)

[
2] => Array
(
[
0] => /em?mon_edit_461CBF240000000E
[1] => /em?mon_edit_490AB1250000001F
[2] => /em?mon_edit_498A914300000006
[3] => /em?mon_edit_498A914300000006
[4] => /em?mon_edit_408626A900000009
[5] => /em?mon_edit_4C74EB2A0000016E
[6] => /em?mon_edit_4D774EBC00000479
[7] => /em?mon_edit_4D7746AF00000475
)

[
3] => Array
(
[
0] => Server3
[1] => Server4
[2] => BackUp S3
[3] => BackUp S4
[4] => Server1
[5] => Server2
[6] => BackUp S1
[7] => BackUp S2
)

[
4] => Array
(
[
0] => PING
[1] => PING
[2] => QASQL
[3] => QASQL
[4] => PING
[5] => PING
[6] => QASQL
[7] => QASQL
)

[
5] => Array
(
[
0] => Server timed out
[1] => Server timed out
[2] => More than condition caused failure
[3] => More than condition caused failure
[4] => Server handshaked OK
[5] => Server handshaked OK
[6] => More than condition caused success
[7] => More than condition caused success
)

[
6] => Array
(
[
0] => 1179:00 / 640:34 min
[1] => 1133:39 / 685:55 min
[2] => 1370:12 / 449:22 min
[3] => 1370:12 / 449:22 min
[4] => 1819:34 / 0:00 min
[5] => n/a / n/a min
[6] => 1819:34 / 0:00 min
[7] => 1819:34 / 0:00 min
)

[
7] => Array
(
[
0] => 4:23 min
[1] => 0:46 min
[2] => 2:03 min
[3] => 2:03 min
[4] => 3:31 min
[5] => 1:41 min
[6] => 0:02 min
[7] => 0:44 min
)

)



Дальше уже сам выбирай что нужно и куда писать B)

Спустя 19 часов, 1 минута (1.05.2011 - 00:47) Leks_ написал(а):
Цитата
скрипт должен каждую секунду запрашивать такой результат?

Обновление нужно один раз в минуту.
Но..
После Ваших вопросов в голове прояснилось :)
Я сисадмин, мониторинг проверяет Очень большое кол-во оборудования и процессов, но у него нет логирования, а менять его на новый технически офигенно сложно.
Чтоб облегчить задачу мониторинга за ошибками нужно:
1.Отображать отчет только с ошибками.
2.Организовать логирование в MySQL.

Теперь я понимаю, что нужно:
1.Написать один скрипт, чтоб он, опрашивая мониторинг 1 раз в минуту, загонял все красные и желтые ошибки в БД, регистрируя время появления и время устранения.
2.Написать второй скрипт, который будет 1 раз в минуту опрашивать БД и выводить красные и желтые ошибки.
3.Написать страничку, с кнопками запуска и остановки двух предидущих скриптов(или встроить их в страницу мониторинга).

Когда я пытался так:

<?php
$data = file_get_contents('http://server:8080/em?stat_list');
preg_match_all('~<tr valign="top" bgcolor=(.*)><td><font size=-2 class="tiny"> <a href="(.*)" class="nil">(.*)</a></td><td align=center><font size=-2 class="tiny">(.*)</td><td><font size=-2 class="tiny">(.*)</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny">(.*)</td><td><font size=-2 class="tiny">(.*)</td></tr>~iUs', $data, $match);
var_dump($match);
?>

После минут 8-ми задумия выдает:
Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) )


Блин, я сам не смогу справится. Я могу чуть изменить под нужды свои, но не могу даже представить как загнать все что мне нужно в переменные из масива и отправить в БД... Готов пиво выслать по почте, только помогите...
Начинаться будет так:
$html = file_get_contents('http://server:8080/em?stat_list');

P.S. На данный момент html документ, который я пытаюсь загрузить, на 1696 строк... может в этом проблема?

Спустя 15 часов, 27 минут, 38 секунд (1.05.2011 - 16:14) walerus написал(а):
$html = file_get_contents('http://server:8080/em?stat_list');


У меня не открывает, висит и потом выдает
Цитата
Попытка соединения не удалась


Цитата
На данный момент html документ, который я пытаюсь загрузить, на 1696 строк... может в этом проблема?


да вроде не, проблем не должно быть, попробуй сохранить файл на локал, и с ним работай, чтоб сервер не насиловать по многу раз )

Спустя 1 день, 12 часов, 10 минут, 40 секунд (3.05.2011 - 04:25) Leks_ написал(а):
Загадка розгадана:)
&nbsp; - заменилось пробеломи в коде форума и из за этого все пошло не так.
+добавлено еще одно (.*) там где статус проверки (Pending) и разделено Up\Down время.
Теперь все бысто и правильно работает.
Спасибо огромное!!!!!!

Ослалось еще чуть-чуть...

Допустим есть масив:
Array
(
[
0] => Array
(
[
0] => <tr valign="top" bgcolor=#DA4747><td><font size=-2 class="tiny"> <a href="/em?mon_edit_461CBF240000000E" class="nil">Server3</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server timed out</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1179:00 / 640:34 min </td><td><font size=-2 class="tiny"> 4:23 min</td></tr>

[1] => <tr valign="top" bgcolor=#DA4747><td><font size=-2 class="tiny"> <a href="/em?mon_edit_490AB1250000001F" class="nil">Server4</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server timed out</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1133:39 / 685:55 min </td><td><font size=-2 class="tiny"> 0:46 min</td></tr>
[2] => <tr valign="top" bgcolor=#FF4040><td><font size=-2 class="tiny"> <a href="/em?mon_edit_498A914300000006" class="nil">BackUp S3</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused failure</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1370:12 / 449:22 min </td><td><font size=-2 class="tiny"> 2:03 min</td></tr>

[3] => <tr valign="top" bgcolor=#EBB361><td><font size=-2 class="tiny"> <a href="/em?mon_edit_498A914300000006" class="nil">BackUp S4</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused failure</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1370:12 / 449:22 min </td><td><font size=-2 class="tiny"> 2:03 min</td></tr>
[4] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_408626A900000009" class="nil">Server1</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server handshaked OK</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 3:31 min</td></tr>

[5] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_4C74EB2A0000016E" class="nil">Server2</a></td><td align=center><font size=-2 class="tiny">PING</td><td><font size=-2 class="tiny"> Server handshaked OK</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> n/a / n/a min </td><td><font size=-2 class="tiny"> 1:41 min</td></tr>
[6] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_4D774EBC00000479" class="nil">BackUp S1</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused success</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 0:02 min</td></tr>

[7] => <tr valign="top" bgcolor=#51A851><td><font size=-2 class="tiny"> <a href="/em?mon_edit_4D7746AF00000475" class="nil">BackUp S2</a></td><td align=center><font size=-2 class="tiny">QASQL</td><td><font size=-2 class="tiny"> More than condition caused success</td><td><font size=-2 class="tiny"> </td><td NOWRAP><font size=-2 class="tiny"> 1819:34 / 0:00 min </td><td><font size=-2 class="tiny"> 0:44 min</td></tr>
)

[
1] => Array
(
[
0] => #DA4747
[1] => #DA4747
[2] => #FF4040
[3] => #EBB361
[4] => #51A851
[5] => #51A851
[6] => #51A851
[7] => #51A851
)

[
2] => Array
(
[
0] => /em?mon_edit_461CBF240000000E
[1] => /em?mon_edit_490AB1250000001F
[2] => /em?mon_edit_498A914300000006
[3] => /em?mon_edit_498A914300000006
[4] => /em?mon_edit_408626A900000009
[5] => /em?mon_edit_4C74EB2A0000016E
[6] => /em?mon_edit_4D774EBC00000479
[7] => /em?mon_edit_4D7746AF00000475
)

[
3] => Array
(
[
0] => Server3
[1] => Server4
[2] => BackUp S3
[3] => BackUp S4
[4] => Server1
[5] => Server2
[6] => BackUp S1
[7] => BackUp S2
)

[
4] => Array
(
[
0] => PING
[1] => PING
[2] => QASQL
[3] => QASQL
[4] => PING
[5] => PING
[6] => QASQL
[7] => QASQL
)

[
5] => Array
(
[
0] => Server timed out
[1] => Server timed out
[2] => More than condition caused failure
[3] => More than condition caused failure
[4] => Server handshaked OK
[5] => Server handshaked OK
[6] => More than condition caused success
[7] => More than condition caused success
)

[
6] => Array
(
[
0] =>  Testing...
[
1] =>  
[2] =>  
[3] =>  Testing...
[
4] =>  Testing...
[
5] =>  
[6] =>  In Maintenance
[7] =>  In Maintenance
)

[
7] => Array
(
[
0] => 1179:00
[1] => 1133:39
[2] => 1370:12
[3] => 1370:12
[4] => 1819:34
[5] => n/a
[6] => 1819
[7] => 1819:34
)

[
8] => Array
(
[
0] => 640:34
[1] => 685:55
[2] => 449:22
[3] => 449:22
[4] => 0:00
[5] => n/a
[6] => 0:00
[7] => 0:00
)

[
9] => Array
(
[
0] => 4:23 min
[1] => 0:46 min
[2] => 2:03 min
[3] => 2:03 min
[4] => 3:31 min
[5] => 1:41 min
[6] => 0:02 min
[7] => 0:44 min
)

)

Получаемый из user posted image
DA4747 - Проверка не пройдена больше 3 раз (красный).
FF4040 - Проверка не пройдена больше 3 раз иногда (ярко красный).
EBB361 - Проверка не пройдена менее 3 раз (желтый).
51A851 - Проверка пройдена (зеленый).
A4A4A4 - Проверка отключена (серый).
И есть таблица:
CREATE TABLE `ipmonitor` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 50 ) NOT NULL ,
`type` VARCHAR( 10 ) NOT NULL ,
`description` VARCHAR( 50 ) NOT NULL ,
`pending` VARCHAR( 25 ) NOT NULL ,
`up` DATE NOT NULL ,
`down` DATE NOT NULL ,
`next` VARCHAR( 10 ) NOT NULL ,
`status` VARCHAR( 10 ) NOT NULL ,
`timedown` DATE NOT NULL ,
`timeup` DATE NOT NULL
) TYPE = MYISAM ;


Проверка 1

Проверяем масcив на красные проверки (DA4747 и FF4040).
Если нашли, проверяем в таблице ipmonitor по status = open и сравниваем по имени.
Если нет такой, заносим:
Member name => name
Type => type
Last status => description
Pending => pending
Array([7]) => up
Array([8]) => down
Next Poll => next
status ставим open
timedown ставим время сейчас.
Если нашл... то и славно.

Проверка 2

Проверяем таблицу ipmonitor по status = open
Все что нашли сравниваем name => Member name с массивом если не нашли, то ставим status => close и записываем в timeup время сейчас.
Если не нашли...ну и хорошо.

Проверка 3

Для мониторинга в реальном времени:
Берем красные (DA4747 и FF4040) из таблицы ipmonitor по status = open с временем возникновения (timedown) и желтые (EBB361) из масива и выводим в виде таблички с цветами и линком http://server:8080/Array([2]).


Помогите бедному сисадмину облегчить жизнь пожалуйста:)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.