<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>

<feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
<link href="https://www.blogger.com/atom/15945726" rel="service.post" title="*NIX as a second language" type="application/atom+xml"/>
<link href="https://www.blogger.com/atom/15945726" rel="service.feed" title="*NIX as a second language" type="application/atom+xml"/>
<title mode="escaped" type="text/html">*NIX as a second language</title>
<tagline mode="escaped" type="text/html">Talks about various system administration and networking projects I am currently working on.</tagline>
<link href="http://blog.glinskiy.com" rel="alternate" title="*NIX as a second language" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726</id>
<modified>2006-08-31T18:18:49Z</modified>
<generator url="http://www.blogger.com/" version="6.72">Blogger</generator>
<info mode="xml" type="text/html">
<div xmlns="http://www.w3.org/1999/xhtml">This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the <a href="http://help.blogger.com/bin/answer.py?answer=697">Blogger Help</a> for more info.</div>
</info>
<convertLineBreaks xmlns="http://www.blogger.com/atom/ns#">true</convertLineBreaks>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/15945726/115704785324410181" rel="service.edit" title="Arrgh! Netscape Mail is no more" type="application/atom+xml"/>
<author>
<name>V. Glinskiy</name>
</author>
<issued>2006-08-31T13:27:00-04:00</issued>
<modified>2006-08-31T18:18:49Z</modified>
<created>2006-08-31T18:10:53Z</created>
<link href="http://blog.glinskiy.com/2006/08/arrgh-netscape-mail-is-no-more.html" rel="alternate" title="Arrgh! Netscape Mail is no more" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726.post-115704785324410181</id>
<title mode="escaped" type="text/html">Arrgh! Netscape Mail is no more</title>
<content type="application/xhtml+xml" xml:base="http://blog.glinskiy.com" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">I have kept e-mail account @netscape.net to read several newsletters. I know, I know: RSS, Web2.0... But old habits die hard. Anyway, AOL migrated Netscape users to AOL mail. Old Netscape Mail interface sucked, it did not have many now considered standard e-mail features, but replacement is not much better. The new login screen greets me with "<span style="font-style:italic;">"We are sorry, but you will need to enable cookies and Javascript to use your Screen Name with this site."</span>Even though both cookies and Javascript are enabled in my Firefox. And AOL agrees, that they are, indeed, enabled after I click on <span style="font-style:italic;">"Click here to try again after you have enabled cookies and Javascript in"</span>. After logging in, I do not get access to my Inbox. That would be too easy. I get advertizing screen. How is that for "improved" service? Next disappointment is everything is in pop-up windows. I mean EVERYTHING. I guess, it is AOL's AJAX replacement :). So, I've had it enough. Good bye Netscape.<br/>If you think I am complaining too much, check out comments on <a href="http://journals.aol.com/websuiteblog/productinsider/">AOL/AIM Web Suite Product Insider Blog</a>.</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/15945726/115496268835564978" rel="service.edit" title="Foundry ServerIron GSLB" type="application/atom+xml"/>
<author>
<name>V. Glinskiy</name>
</author>
<issued>2006-08-07T10:56:00-04:00</issued>
<modified>2006-08-07T15:00:10Z</modified>
<created>2006-08-07T14:58:08Z</created>
<link href="http://blog.glinskiy.com/2006/08/foundry-serveriron-gslb.html" rel="alternate" title="Foundry ServerIron GSLB" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726.post-115496268835564978</id>
<title mode="escaped" type="text/html">Foundry ServerIron GSLB</title>
<content type="application/xhtml+xml" xml:base="http://blog.glinskiy.com" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
<br/>gslb protocol<br/>gslb policy<br/> metric-order set health-check weighted-site preference<br/> weighted-site<br/> preference<br/> dns active-only<br/> dns best-only<br/> dns override<br/> dns cname-detect<br/>
<br/>gslb-host-policy testwww<br/> metric-order set health-check weighted-site preference<br/> weighted-site<br/> preference<br/> dns active-only<br/> dns best-only<br/>
<br/>gslb site sanjose                                                 <br/> weight 100<br/> si vsj-lb1 10.60.0.66 0<br/>gslb site newark<br/> si nwklb01-a 10.50.30.208 250<br/>
<br/>gslb dns zone jabodo.com<br/> host-info www http<br/> host-info www gslb-policy testwww<br/>
<br/>
<br/>
<br/>gslb log-dns<br/>
<br/>
</pre>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/15945726/115282458380651407" rel="service.edit" title="MRTG and CPU usage" type="application/atom+xml"/>
<author>
<name>V. Glinskiy</name>
</author>
<issued>2006-07-13T16:46:00-04:00</issued>
<modified>2006-07-13T21:05:58Z</modified>
<created>2006-07-13T21:03:03Z</created>
<link href="http://blog.glinskiy.com/2006/07/mrtg-and-cpu-usage.html" rel="alternate" title="MRTG and CPU usage" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726.post-115282458380651407</id>
<title mode="escaped" type="text/html">MRTG and CPU usage</title>
<content mode="escaped" type="text/html" xml:base="http://blog.glinskiy.com" xml:space="preserve">Juniper Netscreen CPU utilization OID 1.3.6.1.4.1.3224.16.1.4.0&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Target[10.50.28.5_cpu]:.1.3.6.1.4.1.3224.16.1.4.0&amp;.1.3.6.1.4.1.3224.16.1.4.0:public@10.50.28.5:&lt;br /&gt;SetEnv[10.50.28.5_cpu]: MRTG_INT_IP="10.50.28.5"&lt;br /&gt;MaxBytes[10.50.28.5_cpu]: 100&lt;br /&gt;Title[10.50.28.5_cpu]: CPU Utilization&lt;br /&gt;PageTop[10.50.28.5_cpu]: CPU Utilization -- netscreen25&lt;br /&gt;Options[10.50.28.5_cpu]: growright,gauge,integer,nopercent&lt;br /&gt;Unscaled[10.50.28.5_cpu]: dwym&lt;br /&gt;YLegend[10.50.28.5_cpu]: CPU load&lt;br /&gt;ShortLegend[10.50.28.5_cpu]: CPU Load&lt;br /&gt;Legend1[10.50.28.5_cpu]: CPU Load&lt;br /&gt;Legend2[10.50.28.5_cpu]: CPU Load&lt;br /&gt;LegendO[10.50.28.5_cpu]:&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Foundry's CPU utilization OID  1.3.6.1.4.1.1991.1.1.2.11.1.1.4&lt;br /&gt;There is a catch - Foundry reports utilization in 1/100 of the procent, so number 820 means 8.2%. I have Fondry ServerIron 450 with 1 management CPU and 3 CPUs on Web Switching module and wanted to know 5 min. average for management CPU:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Target[10.50.254.5_cpu]: 1.3.6.1.4.1.1991.1.1.2.11.1.1.4.1.1.300&amp;amp;1.3.6.1.4.1.1991.1.1.2.11.1.1.4.1.1.300:public@10.50.254.5:::::2&lt;br /&gt;SetEnv[10.50.254.5_cpu]: MRTG_INT_IP="10.50.254.5"&lt;br /&gt;MaxBytes[10.50.254.5_cpu]: 10000&lt;br /&gt;Title[10.50.254.5_cpu]: SI450 Management CPU Utilization&lt;br /&gt;PageTop[10.50.254.5_cpu]: Management CPU Utilization -- nwklb01-a&lt;br /&gt;Options[10.50.254.5_cpu]: growright,gauge,integer&lt;br /&gt;#Unscaled[10.50.254.5_cpu]: dwym&lt;br /&gt;YLegend[10.50.254.5_cpu]: 1/100 percent&lt;br /&gt;ShortLegend[10.50.254.5_cpu]: CPU Load&lt;br /&gt;Legend1[10.50.254.5_cpu]: Mangemnt CPU 5min average&lt;br /&gt;LegendO[10.50.254.5_cpu]:&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;OIDs for WSM CPUs 1-3: 1.3.6.1.4.1.1991.1.1.2.11.1.1.4.[2-4].300&lt;br /&gt;&lt;br /&gt;PS: my community string is not really "public"</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/15945726/115099921224027346" rel="service.edit" title="Nagios BGP plugin" type="application/atom+xml"/>
<author>
<name>V. Glinskiy</name>
</author>
<issued>2006-06-22T13:51:00-04:00</issued>
<modified>2006-06-22T18:00:12Z</modified>
<created>2006-06-22T18:00:12Z</created>
<link href="http://blog.glinskiy.com/2006/06/nagios-bgp-plugin.html" rel="alternate" title="Nagios BGP plugin" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726.post-115099921224027346</id>
<title mode="escaped" type="text/html">Nagios BGP plugin</title>
<content type="application/xhtml+xml" xml:base="http://blog.glinskiy.com" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">I converted the script I wrote to monitor BGP on Cisco routers via SNMP into Nagios plugin. I did not like check_bgp plugin which comes with Nagios, because it requires username and password to access a router to be stored in plain text.<br/>
<br/>Here is how to configure Nagios to use my plugin:<br/>copy check_bgp_snmp.pl into nagios/libexec directory.  Then, add the following to  Nagios config<br/>
<br/>
<pre>
<br/>define command{       <br/>      command_name    check_bgp_snmp<br/>      command_line    $USER1$/check_bgp_snmp.pl -r $HOSTADDRESS$ -c $ARG1$<br/>      }<br/>
<br/>
<br/>
<br/>define service{<br/>      host_name               router1<router>
<br/>      service_description     BGP CHECK<br/>      check_command           check_bgp_snmp!public<community string="">
<br/>      max_check_attempts      2<br/>      normal_check_interval   5<br/>      retry_check_interval    2<br/>      check_period            24x7<br/>      notification_interval   10<br/>      notification_period     24x7<br/>      notification_options    w,u,c,r<br/>      notifications_enabled   0<br/>      contact_groups          admins<br/>}<br/>
</community>
</router>
</pre>
<br/>Download <a href="http://blog.glinskiy.com/check_bgp_snmp.pl.txt">check_bgp_snmp.pl</a>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/15945726/115031612021947600" rel="service.edit" title="more BGP monitor changes" type="application/atom+xml"/>
<author>
<name>V. Glinskiy</name>
</author>
<issued>2006-06-14T16:05:00-04:00</issued>
<modified>2006-06-14T20:15:20Z</modified>
<created>2006-06-14T20:15:20Z</created>
<link href="http://blog.glinskiy.com/2006/06/more-bgp-monitor-changes.html" rel="alternate" title="more BGP monitor changes" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726.post-115031612021947600</id>
<title mode="escaped" type="text/html">more BGP monitor changes</title>
<content type="application/xhtml+xml" xml:base="http://blog.glinskiy.com" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">I added "send alarm" feautre and changed the way it checks router. First, it checks if BGP session with neighbor is established. If not, it proceeds to verify that neighbor is not administratively down and sends e-mail. But if BGP session is established, it checks whether router receives prefixes from that neighbor.<br/>Let me know if you find any bugs.<br/>
<br/>
<a href="http://blog.glinskiy.com/bgpmonitor1-4.pl.txt">Download bgpmonitor.pl</a>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/15945726/115014725156030950" rel="service.edit" title="BGP monitor changes" type="application/atom+xml"/>
<author>
<name>V. Glinskiy</name>
</author>
<issued>2006-06-12T17:14:00-04:00</issued>
<modified>2006-06-12T21:20:51Z</modified>
<created>2006-06-12T21:20:51Z</created>
<link href="http://blog.glinskiy.com/2006/06/bgp-monitor-changes.html" rel="alternate" title="BGP monitor changes" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726.post-115014725156030950</id>
<title mode="escaped" type="text/html">BGP monitor changes</title>
<content type="application/xhtml+xml" xml:base="http://blog.glinskiy.com" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">I made some changes to the script. The output format is different and it also retreives number of prefixes received from neighbors.<br/>
<pre>
<br/>nas-server:~$ ./bgpmonitor.pl router1<br/>
<br/>=============================<br/>Router: router1  AS  64512<br/>Neighbor                Status          PfxRcd<br/>192.168.1.1           established     2841107<br/>172.16.1.1            established     3445788<br/>10.0.0.2              established     2886739<br/>10.0.0.3              established     3<br/>
</pre>
<br/>
<br/>
<br/>
<a href="http://blog.glinskiy.com/bgpmonitor1-2.pl.txt">Download bgpmonitor.pl</a>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/15945726/114987517660618022" rel="service.edit" title="BGP monitor" type="application/atom+xml"/>
<author>
<name>V. Glinskiy</name>
</author>
<issued>2006-06-09T12:37:00-04:00</issued>
<modified>2006-06-09T18:24:59Z</modified>
<created>2006-06-09T17:46:16Z</created>
<link href="http://blog.glinskiy.com/2006/06/bgp-monitor.html" rel="alternate" title="BGP monitor" type="text/html"/>
<id>tag:blogger.com,1999:blog-15945726.post-114987517660618022</id>
<title mode="escaped" type="text/html">BGP monitor</title>
<content type="application/xhtml+xml" xml:base="http://blog.glinskiy.com" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Our ISP had maintenance couple of nights ago and failed to tell us. That maintenace resulted in 2 out of 4 our BGP neighbors going down. That event did not trigger monitor alarms because physical links stayed up. So, I needed to be able to receive information about BGP session state without logging into Cisco router and running "<span aj.nocstyle="font-weight:bold;">show ip bgp summary</span>" command. Here is the output of this command:<br/>router2#sho ip bgp summary<br/>
<pre>
<br/>BGP router identifier 10.0.0.1, local AS number 64512<br/>BGP table version is 14738877, main routing table version 14738877<br/>185644 network entries using 18750044 bytes of memory<br/>556906 path entries using 26731488 bytes of memory<br/>67493 BGP path attribute entries using 3779888 bytes of memory<br/>2 BGP rrinfo entries using 48 bytes of memory<br/>30185 BGP AS-PATH entries using 774560 bytes of memory<br/>0 BGP route-map cache entries using 0 bytes of memory<br/>3 BGP filter-list cache entries using 36 bytes of memory<br/>BGP using 50036064 total bytes of memory<br/>BGP activity 870972/685328 prefixes, 6757346/6200440 paths, scan interval 60 secs<br/>
<br/>Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd<br/>10.0.0.2        4 64512 3358195 3465622 14738877    0    0 11w2d      185628<br/>10.0.0.3        4 64512  114502  114499 14738877    0    0 11w2d           3<br/>192.168.1.1     4 65535 3005050  110420 14738846    0    0 13:02:41   185636<br/>172.16.1.1      4 65535 2987510  114513 14738846    0    0 10w3d      185636<br/>
</pre>
<br/>
<br/>Note, that I replaced AS numbers and IP addresses with fake ones.<br/>I wanted to see state of BPG neighbors only. At first I wanted to write expect script to log into routers and run <span style="font-weight:bold;">show ip bgp summary</span>, but there are obvious security implications. I needed to store password somewhere. Another solutions is to wrap snmpwalk command into shell script and parse the output. I decided to shake off some rust of my perl skills and do it in perl. <br/>
<a href="http://blog.glinskiy.com/bpgmonitor.pl.txt">Download bpgmonitor.pl</a>
<br/>
<pre>
<br/>Usage example<br/>
<br/>nas-server:~$ ./bgpmonitor.pl router2<br/>
<br/>=============================<br/>Router: router2  AS 64512 <br/>Neighbor:       10.0.0.2       Status:        established<br/>Neighbor:       10.0.0.3       Status:        active<br/>Neighbor:       192.168.1.1    Status:        established<br/>Neighbor:       172.16.1.1     Status:        established<br/>
<br/>
</pre>
<br/>Next version of the script will send alarms whenever neighbor status is not "establised" and bgp session is not administratively down.<br/>Thank <a href="http://www.oreilly.com/catalog/advperl/excerpt/ch01.html">O'Reilly book</a> for helping me figuring out hash derefencing.</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
</feed>
