<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Realm of Chaos - metrics</title>
    <subtitle>Welcome to my notebook! I’m a Site Reliability Engineer who is curious, loves to learn and discover the nature of things.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://realmofchaos.xyz/tags/metrics/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://realmofchaos.xyz"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2022-05-10T00:00:00+00:00</updated>
    <id>https://realmofchaos.xyz/tags/metrics/atom.xml</id>
    <entry xml:lang="en">
        <title>The art of extracting metrics</title>
        <published>2022-05-10T00:00:00+00:00</published>
        <updated>2022-05-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Thomas Cuthbert
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://realmofchaos.xyz/tech/performance-analysis/extracting-metrics/"/>
        <id>https://realmofchaos.xyz/tech/performance-analysis/extracting-metrics/</id>
        
        <content type="html" xml:base="https://realmofchaos.xyz/tech/performance-analysis/extracting-metrics/">&lt;h2 id=&quot;awk&quot;&gt;Awk&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;filtering-between-log-timestamps&quot;&gt;filtering between log timestamps&lt;&#x2F;h3&gt;
&lt;p&gt;second precision&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;awk \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -v from=&amp;quot;$(date +&amp;#39;%s&amp;#39; -d &amp;#39;2021-10-29 02:34&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -v to=&amp;quot;$(date +&amp;#39;%s&amp;#39; -d &amp;#39;2021-10-29 02:36&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  split($0, parts, &#x2F;[\- :]&#x2F;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    linefmt=&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    for(i=1;i&amp;lt;=6;i++) linefmt = sprintf(&amp;quot;%s %s&amp;quot;,linefmt, parts[i]);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    ts=mktime(sprintf(&amp;quot;%s UTC&amp;quot;, linefmt))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    if (ts &amp;gt; from &amp;amp;&amp;amp; ts &amp;lt; to) print&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39;&amp;lt;&amp;lt;&amp;lt;&amp;#39;2021-10-29 04:50:00 172.31.43.164&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;awk \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -v from=&amp;quot;$(date +&amp;#39;%s&amp;#39; -d &amp;#39;2021-11-27 04:15:00 UTC&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -v to=&amp;quot;$(date +&amp;#39;%s&amp;#39; -d &amp;#39;now UTC&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  patsplit($1, p, &#x2F;[0-9]+&#x2F;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    ts=mktime(sprintf(&amp;quot;%d %d %d %d %d %d&amp;quot;, p[1], p[2], p[3], p[4], p[5], p[6]), 1)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    if (ts &amp;gt; from &amp;amp;&amp;amp; ts &amp;lt; to) print&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39; &amp;lt;(tac &#x2F;var&#x2F;log&#x2F;frr&#x2F;frr.log)|head&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;perl-alternative&quot;&gt;perl alternative&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;from=&amp;quot;$(date -Is -d &amp;#39;2021-11-27T04:15:00 UTC&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;to=&amp;quot;$(date -Is -d &amp;#39;now UTC&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;perl \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -MDate::Parse \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -lane \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  $ts=str2time($F[0]);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  $f=str2time($ENV{from});&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  $t=str2time($ENV{to});&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  print if ($ts &amp;gt;= $f &amp;amp;&amp;amp; $ts &amp;lt;= $t )&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39; &amp;lt;(zcat -f &#x2F;var&#x2F;log&#x2F;syslog*) | tee &amp;quot;&#x2F;syslog-$(date -Im)&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;from-ms-precision-unix-timestamp&quot;&gt;from ms precision unix timestamp&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;awk \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -v format=&amp;quot;%F %T&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -v from=&amp;quot;$(date +&amp;#39;%s&amp;#39; -d &amp;#39;2021-10-29 02:34&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -v to=&amp;quot;$(date +&amp;#39;%s&amp;#39; -d &amp;#39;2021-10-29 02:36&amp;#39; --utc)&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  ts=substr($0, 0, index($0, &amp;quot;.&amp;quot;)-1)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  if (ts &amp;gt; from &amp;amp;&amp;amp; ts &amp;lt; to) print strftime(format, ts), substr($0,index($0,$1))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &amp;#39; &amp;lt;&amp;lt;&amp;lt;&amp;#39;2021-10-29 04:50:00 172.31.43.164&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sed&quot;&gt;Sed&lt;&#x2F;h2&gt;
&lt;p&gt;Filtering interesting lines for nxos. Note, NXOS has an ancient version of sed, it only supports the &lt;code&gt;-n&lt;&#x2F;code&gt; flag.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;monitoring-procfs&quot;&gt;monitoring procfs&lt;&#x2F;h2&gt;
&lt;p&gt;Continuously monitor a procfs file, output is tabular.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;cat &#x2F;proc&#x2F;pressure&#x2F;cpu&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;some avg10=1.34 avg60=1.63 avg300=2.33 total=2483371233&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;full avg10=0.18 avg60=0.03 avg300=0.06 total=827064553&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;sleep trap: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;65644307&#x2F;ctrl-c-doesnt-always-terminate-a-shell-script&quot;&gt;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;65644307&#x2F;ctrl-c-doesnt-always-terminate-a-shell-script&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;getline summary: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;gawk&#x2F;manual&#x2F;gawk.html#Getline-Summary&quot;&gt;https:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;gawk&#x2F;manual&#x2F;gawk.html#Getline-Summary&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;printf formatting: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bl831.als.lbl.gov&#x2F;~gmeigs&#x2F;scripting_help&#x2F;printf_awk_notes.txt&quot;&gt;https:&#x2F;&#x2F;bl831.als.lbl.gov&#x2F;~gmeigs&#x2F;scripting_help&#x2F;printf_awk_notes.txt&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;gawk&#x2F;manual&#x2F;html_node&#x2F;Printf.html&quot;&gt;https:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;gawk&#x2F;manual&#x2F;html_node&#x2F;Printf.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;!-- --&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;awk -F&amp;#39;[ =]&amp;#39; -vlinefmt=&amp;quot;%-8s%-8s%-10s%-10s%-8s\n&amp;quot; -vcpu_pressure=&amp;quot;&#x2F;proc&#x2F;pressure&#x2F;cpu&amp;quot; &amp;#39;BEGIN {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    printf linefmt, &amp;quot;avg10&amp;quot;, &amp;quot;avg60&amp;quot;, &amp;quot;avg300&amp;quot;, &amp;quot;increase&amp;quot;, &amp;quot;total&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    do {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        if (system(&amp;quot;trap true INT; sleep 1&amp;quot;)) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            exit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        if ($1==&amp;quot;full&amp;quot;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            printf linefmt, $3, $5, $7, int($9-prev_tot), $9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            prev_tot = $9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    } while ((getline &amp;lt; cpu_pressure) || (close(cpu_pressure) == 0))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;avg10   avg60   avg300    increase  total&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0.36    0.17    0.07      829472174 829472174&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0.36    0.17    0.07      0         829472174&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0.24    0.16    0.07      24957     829497131&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;collect metrics for all PSI.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;awk -F&amp;#39;[ =\t]&amp;#39; -vlinefmt=&amp;quot;%-14s&amp;quot; -vfields=&amp;#39;&amp;quot;cpuavg10&amp;quot;, &amp;quot;cpuavg60&amp;quot;, &amp;quot;cpuavg300&amp;quot;, &amp;quot;cputotal&amp;quot;, &amp;quot;cpuincrease&amp;quot;, &amp;quot;ioavg10&amp;quot;, &amp;quot;ioavg60&amp;quot;, &amp;quot;ioavg300&amp;quot;, &amp;quot;iototal&amp;quot;, &amp;quot;ioincrease&amp;quot;, &amp;quot;memavg10&amp;quot;, &amp;quot;memavg60&amp;quot;, &amp;quot;memavg300&amp;quot;, &amp;quot;memtotal&amp;quot;,&amp;quot;memincrease&amp;quot;&amp;#39; -vcpu_pressure=&amp;quot;bash -c &amp;#39;paste &#x2F;proc&#x2F;pressure&#x2F;{cpu,io,memory}&amp;#39;&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;#39;BEGIN { patsplit(fields, fmts, &#x2F;[^&amp;quot;, ]+&#x2F;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    do {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        if (system(&amp;quot;trap true INT; sleep 1&amp;quot;)) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            exit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        if ($1==&amp;quot;some&amp;quot;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            for(x in fmts) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                printf linefmt, fmts[x]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            printf &amp;quot;\n&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            for(i=3;i&amp;lt;=NF;i+=2) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                if(i%9 == 0 &amp;amp;&amp;amp; i%3 == 0) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    printf linefmt&amp;quot;&amp;quot;linefmt, $(i), int($(i)-increase[i]) &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    increase[i]=$i&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    i+=1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                } else {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    printf linefmt, $i&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            printf &amp;quot;\n\n&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    } while ((cpu_pressure|getline) || (close(cpu_pressure) == 0))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;histograms&quot;&gt;histograms&lt;&#x2F;h2&gt;
&lt;p&gt;The .1 decimal for size helps tie breakers when min == max.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;while :; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  ss -n -t -o $(printf &amp;quot; state %s&amp;quot; {fin-wait-1,fin-wait-2,time-wait,close-wait,last-ack,closing}) |\&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    awk -v bmin=0 -vsize=10000.1 &amp;#39;BEGIN{tm[&amp;quot;sec&amp;quot;] = 1000;tm[&amp;quot;min&amp;quot;] = &amp;quot;60000&amp;quot;} match($6,&#x2F;,([0-9.]+)(sec|ms|min)&#x2F;,m){t=(m[2]==&amp;quot;ms&amp;quot;?int(m[1]):int(tm[m[2]]*m[1]) );b=int(t&#x2F;size);a[b]++;bmax=b&amp;gt;bmax?b:bmax; bmin=b&amp;lt;bmin?b:bmin} END{for(i=bmin;i&amp;lt;=bmax;++i) printf &amp;quot;%d %d %d\n&amp;quot;, (i*size)&#x2F;tm[&amp;quot;sec&amp;quot;],((i+1)*size)&#x2F;tm[&amp;quot;sec&amp;quot;],a[i]}&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  sleep 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Using time functions.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;LC_ALL=C awk -v bmin=0 -vsize=10.1 -v date=&amp;quot;2022 03 06&amp;quot; &amp;#39;split($4,p,&#x2F;[: ]&#x2F;){t=mktime(date&amp;quot; &amp;quot;p[2]&amp;quot; &amp;quot;p[3]&amp;quot; &amp;quot;p[4]); b=int(t&#x2F;size);a[b]++;bmax=b&amp;gt;bmax?b:bmax; bmin=b&amp;lt;bmin?b:bmin} END{for(i=bmin;i&amp;lt;=bmax;++i) if(a[i]) printf &amp;quot;%s %s %d\n&amp;quot;, strftime(&amp;quot;%T&amp;quot;,(i*size)),strftime(&amp;quot;%T&amp;quot;,((i+1)*size)),a[i]}&amp;#39; gopkg.in-access.log-2022-03-06T13\:00.log&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Useful squid one&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;for i in $(awk &amp;#39;!s[$4]++{print $4}&amp;#39; squid-access.log); do  LC_ALL=C awk -v bmin=0 -vsize=300.1 -vhist=&amp;quot;$i&amp;quot; &amp;#39;$0 !~ hist{next} {t=int($1);b=int(t&#x2F;size);a[b]++;bmax=b&amp;gt;bmax?b:bmax; bmin=b&amp;lt;bmin?b:bmin} END{printf &amp;quot;%s 300s histogram\n&amp;quot;, hist;for(i=bmin;i&amp;lt;=bmax;++i) if(a[i]) printf &amp;quot;%s %s %d\n&amp;quot;, strftime(&amp;quot;%T&amp;quot;,(i*size)),strftime(&amp;quot;%T&amp;quot;,((i+1)*size)),a[i] &amp;gt; &amp;quot;histograms.sout&amp;quot;}&amp;#39; squid-access.log; done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;LC_ALL=C awk -v bmin=0 -vsize=10.1 -v date=&amp;quot;2022 03 06&amp;quot; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;#39;split($4, p, &#x2F;[: ]&#x2F;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  t = mktime(date &amp;quot; &amp;quot; p[2] &amp;quot; &amp;quot; p[3] &amp;quot; &amp;quot; p[4])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b = int(t &#x2F; size)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a[b]++&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  bmax = b &amp;gt; bmax ? b : bmax&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  bmin = b &amp;lt; bmin ? b : bmin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;END {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  for (i = bmin; i &amp;lt;= bmax; ++i) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    if (a[i]) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      printf &amp;quot;%s %s %d\n&amp;quot;, strftime(&amp;quot;%T&amp;quot;, (i * size)), strftime(&amp;quot;%T&amp;quot;, ((i + 1) * size)), a[i]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;iptables filtering&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #F8F8F2; background-color: #272822;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sudo iptables -t nat  -nL |awk -vrgxp=&amp;quot;$(rgxg cidr 10.131.31.0&#x2F;24)&amp;quot; &amp;#39;&#x2F;^(Chain|target)&#x2F;{f=1} f==1||$0 ~ rgxp{s[NR]=$0;f++}; length($0)==0{if(f&amp;gt;2){for(i in s) print s[i]};split(&amp;quot;&amp;quot;,s);f=0}&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
</feed>
