{"id":954,"date":"2016-10-11T09:20:55","date_gmt":"2016-10-11T07:20:55","guid":{"rendered":"http:\/\/www.netnea.com\/cms\/?page_id=954"},"modified":"2025-11-07T11:06:02","modified_gmt":"2025-11-07T10:06:02","slug":"apache-tutorial-11_visualizing-log-files","status":"publish","type":"page","link":"https:\/\/www.netnea.com\/cms\/apache-tutorial-11_visualizing-log-files\/","title":{"rendered":"Visualizing Apache and ModSecurity Log Files"},"content":{"rendered":"\n<h2 id=\"visualizing-apache-and-modsecurity-log-files\">Visualizing Apache and ModSecurity Log Files<\/h2>\n<h3 id=\"what-are-we-doing\">What are we doing?<\/h3>\n<p>We are interpreting the log files visually.<\/p>\n<h3 id=\"why-are-we-doing-this\">Why are we doing this?<\/h3>\n<p>In the preceding tutorials we have customized the Apache log format and performed a variety of statistical analyses. But we have yet to graphically display the numbers obtained. The visualization of data does in fact provide a big help in identifying problems. In particular, time series are very informative and even performance problems can be better quantified and narrowed down visually. But graphical display can also provide interesting information about false positives among the volumes of ModSecurity alarms.<\/p>\n<p>The benefit of visualization is readily apparent and is a good reason why graphs have always been an important component of dashboards and regular reports. However, in this tutorial we will not be aiming for perfectly laid out graphs that management would like. We instead want to get highly informative graphs showing the essential parts of data by the simplest of means possible.<\/p>\n<p>For this reason, we will be using a little-known feature of <code>gnuplot<\/code>.<\/p>\n<h3 id=\"requirements\">Requirements<\/h3>\n<ul>\n<li>An Apache web server, ideally one created using the file structure shown in <a href=\"https:\/\/www.netnea.com\/cms\/apache_tutorial_1_apache_compilieren\/\">Tutorial 1 (Compiling an Apache web server)<\/a>.<\/li>\n<li>Understanding of the minimal configuration in <a href=\"https:\/\/www.netnea.com\/cms\/apache_tutorial_2_apache_minimal_konfigurieren\/\">Tutorial 2 (Configuring a minimal Apache server)<\/a>.<\/li>\n<li>An Apache web server with SSL\/TLS support as in <a href=\"https:\/\/www.netnea.com\/cms\/apache-tutorial-4-ssl-server-konfigurieren\">Tutorial 4 (Configuring an SSL server)<\/a><\/li>\n<li>An Apache web server with extended access log as in <a href=\"https:\/\/www.netnea.com\/cms\/apache-tutorial-5-zugriffslog-ausbauen\/\">Tutorial 5 (Extending and analyzing the access log)<\/a><\/li>\n<li>An Apache web server with ModSecurity as in <a href=\"https:\/\/www.netnea.com\/cms\/apache-tutorial-6-modsecurity-einbinden\/\">Tutorial 6 (Embedding ModSecurity)<\/a><\/li>\n<li>An Apache web server with a Core Rule Set installation as in <a href=\"http:\/\/www.netnea.com\/cms\/modsecurity-core-rules-einbinden\/\">Tutorial 7 (Embedding Core Rules)<\/a><\/li>\n<li>The <code>gnuplot<\/code> package; e.g.\u00a0as present in the <code>Ubuntu<\/code> distribution.<\/li>\n<\/ul>\n<h3 id=\"step-1-graphically-displaying-time-series-in-the-shell\">Step 1: Graphically displaying time series in the shell<\/h3>\n<p>The appearance of entries in log files follows a chronological sequence. However, it is actually relatively difficult to follow this chronological sequence in the text file. Visualization of the log files is the answer. Dashboards have already been mentioned and a variety of commercial products and open source projects have become established in the past few years. These tools are very useful. But they are not always easily accessible or the log data must first be imported and sometimes even converted or indexed. There is thus a big gap in displaying graphs in the shell. The graphical tool <code>gnuplot<\/code> can in fact do this in ASCII and be controlled completely from the command line.<\/p>\n<p><code>gnuplot<\/code> can be demanding to use and control and if you only use it occasionally you face the same learning curve again and again. For this reason, I have developed a wrapper script called <code>arbigraph<\/code> that uses gnuplot to display simple graphs: <a href=\"https:\/\/raw.githubusercontent.com\/Apache-Labor\/labor\/master\/bin\/arbigraph\">arbigraph<\/a> We will be using this script in different situations in this tutorial and become familiar with a large number of command line options. So, let\u2019s start off with a simple case:<\/p>\n<p>Let\u2019s generate a simple graph in which the number of requests per hour is presented on a time line. As an example, to do this we are using the access log that we became familiar with while fine tuning ModSecurity false positives in one of the preceding tutorials: <a href=\"https:\/\/www.netnea.com\/files\/tutorial-8-example-access.log\">tutorial-8-example-access.log<\/a>.<\/p>\n<p>Let\u2019s concentrate on the entries from May 20 to 29 and extract the timestamps from them:<\/p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb1-1\"><a href=\"#cb1-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">grep<\/span> 2015-05-2 tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">altimestamp<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">head<\/span><\/span>\n<span id=\"cb1-2\"><a href=\"#cb1-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:53:11.139981<\/span>\n<span id=\"cb1-3\"><a href=\"#cb1-3\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:53:12.232266<\/span>\n<span id=\"cb1-4\"><a href=\"#cb1-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:54:57.772135<\/span>\n<span id=\"cb1-5\"><a href=\"#cb1-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:54:58.842986<\/span>\n<span id=\"cb1-6\"><a href=\"#cb1-6\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:54:59.009303<\/span>\n<span id=\"cb1-7\"><a href=\"#cb1-7\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:54:59.003103<\/span>\n<span id=\"cb1-8\"><a href=\"#cb1-8\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:54:59.006098<\/span>\n<span id=\"cb1-9\"><a href=\"#cb1-9\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:54:58.992113<\/span>\n<span id=\"cb1-10\"><a href=\"#cb1-10\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:54:58.994096<\/span>\n<span id=\"cb1-11\"><a href=\"#cb1-11\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 12:55:00.270296<\/span><\/code><\/pre><\/div>\n<p>Each of these lines represents a request. The number of requests per unit of time can thus be easily determined by counting them. Totaling by hour can be easily done by cutting the timestamp at the colon and adding them up via <code>uniq -c<\/code>. Just to be safe, we\u2019ll insert a <code>sort<\/code> since the log files are not necessarily in chronological order (the entry follows the completion of the request, but the timestamp indicates the receipt of the request line in the request. This means that a \u201cslower\u201d request at 12:59 may appear in the log file after a \u201cfast\u201d request at 13:00. We can already see this problem at 12:54:58 and 12:54:59 above).<\/p>\n<p>Here\u2019s the total per hour:<\/p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb2-1\"><a href=\"#cb2-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">grep<\/span> 2015-05-2 tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">altimestamp<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">cut<\/span> -d: -f1 <span class=\"kw\">|<\/span> <span class=\"fu\">sort<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">uniq<\/span> -c <span class=\"kw\">|<\/span> <span class=\"fu\">head<\/span><\/span>\n<span id=\"cb2-2\"><a href=\"#cb2-2\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">37<\/span> 2015-05-20 12<\/span>\n<span id=\"cb2-3\"><a href=\"#cb2-3\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">6<\/span> 2015-05-20 13<\/span>\n<span id=\"cb2-4\"><a href=\"#cb2-4\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">1<\/span> 2015-05-20 14<\/span>\n<span id=\"cb2-5\"><a href=\"#cb2-5\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">105<\/span> 2015-05-20 15<\/span>\n<span id=\"cb2-6\"><a href=\"#cb2-6\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">38<\/span> 2015-05-20 16<\/span>\n<span id=\"cb2-7\"><a href=\"#cb2-7\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">25<\/span> 2015-05-20 17<\/span>\n<span id=\"cb2-8\"><a href=\"#cb2-8\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">19<\/span> 2015-05-20 18<\/span>\n<span id=\"cb2-9\"><a href=\"#cb2-9\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">32<\/span> 2015-05-20 19<\/span>\n<span id=\"cb2-10\"><a href=\"#cb2-10\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">19<\/span> 2015-05-20 22<\/span>\n<span id=\"cb2-11\"><a href=\"#cb2-11\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">1<\/span> 2015-05-21 06<\/span><\/code><\/pre><\/div>\n<p>This seems to work, although there also seem to be gaps in the log file. We\u2019ll be taking care of them later on. In the first column we now see the requests per hour, with the second and third columns showing the time or hour. We now feed the result into the <code>arbigraph<\/code> script which only uses the first column for graphical display:<\/p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb3-1\"><a href=\"#cb3-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">grep<\/span> 2015-05-2 tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">altimestamp<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">cut<\/span> -d: -f1 <span class=\"kw\">|<\/span> <span class=\"fu\">sort<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">uniq<\/span> -c <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span><\/span>\n<span id=\"cb3-2\"><a href=\"#cb3-2\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb3-3\"><a href=\"#cb3-3\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> ++-----------------+-------------------+-------------------+-------------------+-------------------+-------------------++<\/span>\n<span id=\"cb3-4\"><a href=\"#cb3-4\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                  <span class=\"ex\">+<\/span>                   +                   +                   +                   +       Col 1 ******+<span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-5\"><a href=\"#cb3-5\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                            <span class=\"ex\">**<\/span>                                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-6\"><a href=\"#cb3-6\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                            <span class=\"ex\">**<\/span>                                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-7\"><a href=\"#cb3-7\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                            <span class=\"ex\">**<\/span>                                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-8\"><a href=\"#cb3-8\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                           **                              **                        ++<\/span>\n<span id=\"cb3-9\"><a href=\"#cb3-9\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                            <span class=\"ex\">**<\/span>                              **    **                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-10\"><a href=\"#cb3-10\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                            <span class=\"ex\">**<\/span>                              **    **                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-11\"><a href=\"#cb3-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                           <span class=\"ex\">***<\/span>                              **    **       ** **       <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-12\"><a href=\"#cb3-12\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                           <span class=\"ex\">***<\/span>                              **    **       ** **       <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-13\"><a href=\"#cb3-13\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                        **                                ***            **                ** *****       ** ** **   ++<\/span>\n<span id=\"cb3-14\"><a href=\"#cb3-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                 <span class=\"ex\">**<\/span>      **                                ***            **                ** *******     ***** **    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-15\"><a href=\"#cb3-15\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                 <span class=\"ex\">**<\/span>      **                                ***            **   **           ** *******     ***** **    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-16\"><a href=\"#cb3-16\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>           <span class=\"ex\">**<\/span>    **     ***                                ***            **   **           ** *******     ***** **    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-17\"><a href=\"#cb3-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>          <span class=\"ex\">***<\/span>    **     ***                                ***           ***   **  **       ** *******     ***** **    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-18\"><a href=\"#cb3-18\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++ **      ***    **     ***                                ***           ***** **  **       ** *******     ***** ***  ++<\/span>\n<span id=\"cb3-19\"><a href=\"#cb3-19\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>  <span class=\"ex\">**<\/span>      ***    **     ***        **                     ****           ***** **  **       ** *******     *********   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-20\"><a href=\"#cb3-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>  <span class=\"ex\">**<\/span>     ****   ***     ***        **                     *****          ***** **  **       ** *******     *********   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-21\"><a href=\"#cb3-21\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>  <span class=\"ex\">**<\/span>     *****  ***     ***  ***   ** **                  *****          ********  **       **********   ***********   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-22\"><a href=\"#cb3-22\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>  <span class=\"ex\">**<\/span>     *****  ***     ***  ***   ** ****                *****          ******** ***       **********   ***********   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-23\"><a href=\"#cb3-23\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++ **     **********   ****** ***   *******                *****          ************       **********   ***********  ++<\/span>\n<span id=\"cb3-24\"><a href=\"#cb3-24\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">**<\/span> ***    **********   ****** ***   ******* **             *****  **   ** ************       **********   ***********   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-25\"><a href=\"#cb3-25\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">**<\/span> *** ** **********   **********   ******* **        **   *****  ***  ** **************     ************ ************  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-26\"><a href=\"#cb3-26\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">**<\/span> *****************   ********** ********* ****      ** ************* ** **************   **************************** <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb3-27\"><a href=\"#cb3-27\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">*********************<\/span>  **************************    *** ********************************  ******************************<\/span>\n<span id=\"cb3-28\"><a href=\"#cb3-28\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> *************************************************************************************************************************<\/span>\n<span id=\"cb3-29\"><a href=\"#cb3-29\" aria-hidden=\"true\"><\/a>                         <span class=\"ex\">20<\/span>                  40                  60                  80                 100                 120<\/span><\/code><\/pre><\/div>\n<p>In this rudimentary graphical display we see the number of requests on the y-axis. The timeline is on the x-axis. Peak load is approx. 250 requests per hour. In general, we see the volume of traffic going strongly up and down. At the top right we see the legend which by default the asterisks describe as <code>Col 1<\/code>. A serious drawback is the useless labeling on the x-axis, since the numbers from 20 to 120 only indicate the line number of the value on the y-axis.<\/p>\n<p>But because we had gaps in the dataset our data is based on, we can no longer infer the time of a value from the number of lines and hence the x-axis in the graph. We\u2019ll first have to close these gaps, then have a closer look at the x-axis problem.<\/p>\n<h3 id=\"step-2-filling-in-the-gaps-on-the-timeline\">Step 2: Filling in the gaps on the timeline<\/h3>\n<p>The problem with the gaps is that for some hours we don\u2019t have a single request in the log file. The log file comes from a server with relatively little traffic. But filtering the log file after an error on a server with significantly more traffic results in gaps appearing in the timeline. We have to close them for good. Up to now we have extracted the date and time from the log file. The approach has proven to be inadequate: Instead of deriving the sequence of dates and hours from the log file, we will be rebuilding it ourselves and looking for the number of requests in the log file for every date and hour combination. A repetitive <code>grep<\/code> on the same log file would be a bit inefficient, but entirely suitable for the size of the log file in this case. The approach must be optimized for larger files.<\/p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb4-1\"><a href=\"#cb4-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <\/span>\n<span id=\"cb4-2\"><a href=\"#cb4-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 00<\/span>\n<span id=\"cb4-3\"><a href=\"#cb4-3\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 01<\/span>\n<span id=\"cb4-4\"><a href=\"#cb4-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 02<\/span>\n<span id=\"cb4-5\"><a href=\"#cb4-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 03<\/span>\n<span id=\"cb4-6\"><a href=\"#cb4-6\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 04<\/span>\n<span id=\"cb4-7\"><a href=\"#cb4-7\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 05<\/span>\n<span id=\"cb4-8\"><a href=\"#cb4-8\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 06<\/span>\n<span id=\"cb4-9\"><a href=\"#cb4-9\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 07<\/span>\n<span id=\"cb4-10\"><a href=\"#cb4-10\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 08<\/span>\n<span id=\"cb4-11\"><a href=\"#cb4-11\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 09<\/span>\n<span id=\"cb4-12\"><a href=\"#cb4-12\" aria-hidden=\"true\"><\/a><span class=\"ex\">2015-05-20<\/span> 10<\/span>\n<span id=\"cb4-13\"><a href=\"#cb4-13\" aria-hidden=\"true\"><\/a><span class=\"ex\">...<\/span><\/span><\/code><\/pre><\/div>\n<p>This is our timeline without gaps. Let\u2019s use these values as the basis for a loop and select the number of requests for each value:<\/p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb5-1\"><a href=\"#cb5-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb5-2\"><a href=\"#cb5-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>; <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb5-3\"><a href=\"#cb5-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> <span class=\"st\">&quot;<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\"> <\/span><span class=\"va\">$STRING<\/span><span class=\"st\"> &quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span><\/span>\n<span id=\"cb5-4\"><a href=\"#cb5-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 00 <\/span>\n<span id=\"cb5-5\"><a href=\"#cb5-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 01 <\/span>\n<span id=\"cb5-6\"><a href=\"#cb5-6\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 02 <\/span>\n<span id=\"cb5-7\"><a href=\"#cb5-7\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 03 <\/span>\n<span id=\"cb5-8\"><a href=\"#cb5-8\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 04 <\/span>\n<span id=\"cb5-9\"><a href=\"#cb5-9\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 05 <\/span>\n<span id=\"cb5-10\"><a href=\"#cb5-10\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 06 <\/span>\n<span id=\"cb5-11\"><a href=\"#cb5-11\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 07 <\/span>\n<span id=\"cb5-12\"><a href=\"#cb5-12\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 08 <\/span>\n<span id=\"cb5-13\"><a href=\"#cb5-13\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 09 <\/span>\n<span id=\"cb5-14\"><a href=\"#cb5-14\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 10 <\/span>\n<span id=\"cb5-15\"><a href=\"#cb5-15\" aria-hidden=\"true\"><\/a><span class=\"ex\">0<\/span> 2015-05-20 11 <\/span>\n<span id=\"cb5-16\"><a href=\"#cb5-16\" aria-hidden=\"true\"><\/a><span class=\"ex\">37<\/span> 2015-05-20 12 <\/span>\n<span id=\"cb5-17\"><a href=\"#cb5-17\" aria-hidden=\"true\"><\/a><span class=\"ex\">6<\/span> 2015-05-20 13 <\/span>\n<span id=\"cb5-18\"><a href=\"#cb5-18\" aria-hidden=\"true\"><\/a><span class=\"ex\">1<\/span> 2015-05-20 14 <\/span>\n<span id=\"cb5-19\"><a href=\"#cb5-19\" aria-hidden=\"true\"><\/a><span class=\"ex\">105<\/span> 2015-05-20 15 <\/span>\n<span id=\"cb5-20\"><a href=\"#cb5-20\" aria-hidden=\"true\"><\/a><span class=\"ex\">...<\/span><\/span><\/code><\/pre><\/div>\n<p>We thus read the combined date-hour string in a while loop. We then count the number of requests for each of the strings (via <code>grep -c<\/code> here) and then output the result along with the date-hour string. This gives us the same result as in the previous example, but this time the gaps are filled in.<\/p>\n<p>Let\u2019s put this output into our graph script.<\/p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb6-1\"><a href=\"#cb6-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb6-2\"><a href=\"#cb6-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>; <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb6-3\"><a href=\"#cb6-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> <span class=\"st\">&quot;<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\"> <\/span><span class=\"va\">$STRING<\/span><span class=\"st\"> &quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span><\/span>\n<span id=\"cb6-4\"><a href=\"#cb6-4\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb6-5\"><a href=\"#cb6-5\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> ++-----------------------+------------------------+------------------------+------------------------+------------------++<\/span>\n<span id=\"cb6-6\"><a href=\"#cb6-6\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                        <span class=\"ex\">+<\/span>                        +                        +                        +      Col 1 ****** <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-7\"><a href=\"#cb6-7\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-8\"><a href=\"#cb6-8\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-9\"><a href=\"#cb6-9\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-10\"><a href=\"#cb6-10\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *                  ++<\/span>\n<span id=\"cb6-11\"><a href=\"#cb6-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-12\"><a href=\"#cb6-12\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-13\"><a href=\"#cb6-13\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-14\"><a href=\"#cb6-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-15\"><a href=\"#cb6-15\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                           **                                              **         **          ****         ****  ++<\/span>\n<span id=\"cb6-16\"><a href=\"#cb6-16\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         **          *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-17\"><a href=\"#cb6-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-18\"><a href=\"#cb6-18\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-19\"><a href=\"#cb6-19\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>               <span class=\"ex\">**<\/span>  *        **                                              **         ** * *      *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-20\"><a href=\"#cb6-20\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++      *       **  *        **                                              **         **** *      *****        ***** ++<\/span>\n<span id=\"cb6-21\"><a href=\"#cb6-21\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       **  *        **         *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-22\"><a href=\"#cb6-22\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        **         *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-23\"><a href=\"#cb6-23\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****        ****       ***                                 ***         **** *      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-24\"><a href=\"#cb6-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****        ****       ****                                ***         ******      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-25\"><a href=\"#cb6-25\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++      *       *****       *****       ****                                ***         ******      *****       ****** ++<\/span>\n<span id=\"cb6-26\"><a href=\"#cb6-26\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">****<\/span>      *****       *****       ******                              *** *  *    ******      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-27\"><a href=\"#cb6-27\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*****<\/span>     *****       *****       ******                       *      *** ** *    *******     ******      ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-28\"><a href=\"#cb6-28\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*******<\/span>   *****       ***** **    ****** *                     *     ******* *    *******  **********     ******* <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-29\"><a href=\"#cb6-29\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*******<\/span>   ******   +  ********    ****** ** +                 **     **********   ******** **********     ********<span class=\"kw\">|<\/span><\/span>\n<span id=\"cb6-30\"><a href=\"#cb6-30\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> ++----*******--*********-+--********----******-**-+--**--*-----*********---***********--*******************-----********+<\/span>\n<span id=\"cb6-31\"><a href=\"#cb6-31\" aria-hidden=\"true\"><\/a>                               <span class=\"ex\">50<\/span>                      100                      150                      200<\/span><\/code><\/pre><\/div>\n<p>There now appears to be a degree of regularity, because every 24 values is an entire day. Knowing this, we see the daily rhythm, can surmise Saturday and Sunday and may even see indications of a specific lunch break.<\/p>\n<h3 id=\"step-3-x-axis-label\">Step 3: X-axis label<\/h3>\n<p>The gaps are closed. Let\u2019s get to the specific labeling of the x-axis. <code>arbigraph<\/code> is able to read labels from the input. It identifies the labels on its own; but for this purpose they must be separated by a tab from the actual data. <code>echo<\/code> does this for us when we set the <code>escape flag<\/code><\/p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb7-1\"><a href=\"#cb7-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb7-2\"><a href=\"#cb7-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>; <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb7-3\"><a href=\"#cb7-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> -e <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">\\t<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span><\/span>\n<span id=\"cb7-4\"><a href=\"#cb7-4\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb7-5\"><a href=\"#cb7-5\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<\/span>\n<span id=\"cb7-6\"><a href=\"#cb7-6\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Col<\/span> 1+******++<\/span>\n<span id=\"cb7-7\"><a href=\"#cb7-7\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-8\"><a href=\"#cb7-8\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-9\"><a href=\"#cb7-9\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-10\"><a href=\"#cb7-10\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *                  ++<\/span>\n<span id=\"cb7-11\"><a href=\"#cb7-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-12\"><a href=\"#cb7-12\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *             **    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-13\"><a href=\"#cb7-13\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *             **    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-14\"><a href=\"#cb7-14\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                           **                                              **         **          ****          ***  ++<\/span>\n<span id=\"cb7-15\"><a href=\"#cb7-15\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         **          *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-16\"><a href=\"#cb7-16\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-17\"><a href=\"#cb7-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-18\"><a href=\"#cb7-18\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>               <span class=\"ex\">**<\/span>  *        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-19\"><a href=\"#cb7-19\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++              **  *        **         *                                   ***         ****        *****        ***** ++<\/span>\n<span id=\"cb7-20\"><a href=\"#cb7-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>               <span class=\"ex\">**<\/span> **        **         *                                   ***         ****        *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-21\"><a href=\"#cb7-21\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>               <span class=\"ex\">**<\/span> **        ****       *                                   ***         ****        *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-22\"><a href=\"#cb7-22\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>               <span class=\"ex\">*****<\/span>        ****       ***                                 ***         ****        *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-23\"><a href=\"#cb7-23\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++              *****        ****       ****                                ***         ******      *****       ****** ++<\/span>\n<span id=\"cb7-24\"><a href=\"#cb7-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>               <span class=\"ex\">*****<\/span>       *****       ******                              ***         ******      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-25\"><a href=\"#cb7-25\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*****<\/span>     *****       *****       ******                       *      *** *       *******     *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-26\"><a href=\"#cb7-26\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*******<\/span>   *****  *    ****** **   *********         *          ***    ****** *    ******************* *   ******* <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb7-27\"><a href=\"#cb7-27\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">+++++********++*******+*++++*********+++*********++++*+**+*++++++**+****+++**********+++*******************+*+++********+<\/span><\/span>\n<span id=\"cb7-28\"><a href=\"#cb7-28\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> +++*+*********+*********+**+*********+*+*********+**+******++++*********+*+************+*******************+*+**********+<\/span>\n<span id=\"cb7-29\"><a href=\"#cb7-29\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">20150151501515015150151501515015150151501515015150151501515015150151501515015150151501515015150151501515015150151501515015<\/span><\/span>\n<span id=\"cb7-30\"><a href=\"#cb7-30\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">-<\/span>  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  - -  -<\/span>\n<span id=\"cb7-31\"><a href=\"#cb7-31\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">05-20-2020-2020-2121-2121-2122-2222-2222-2323-2323-2324-2424-2425-2525-2525-2626-2626-2627-2727-2727-2828-2828-2829-2929-29<\/span><\/span><\/code><\/pre><\/div>\n<p>The labels are there, but they are clearly too close together and overlap one another. We have to find a remedy here. One option with the cumbersome name of <code>--xaxisticsmodulo<\/code> enables us to now write every nth x-axis value. Every 24th value would add one label per day:<\/p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb8-1\"><a href=\"#cb8-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb8-2\"><a href=\"#cb8-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>; <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb8-3\"><a href=\"#cb8-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> -e <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">\\t<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> --xaxisticsmodulo 24<\/span>\n<span id=\"cb8-4\"><a href=\"#cb8-4\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb8-5\"><a href=\"#cb8-5\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb8-6\"><a href=\"#cb8-6\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb8-7\"><a href=\"#cb8-7\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<\/span>\n<span id=\"cb8-8\"><a href=\"#cb8-8\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Col<\/span> 1+******++<\/span>\n<span id=\"cb8-9\"><a href=\"#cb8-9\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-10\"><a href=\"#cb8-10\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-11\"><a href=\"#cb8-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-12\"><a href=\"#cb8-12\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *  *               ++<\/span>\n<span id=\"cb8-13\"><a href=\"#cb8-13\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-14\"><a href=\"#cb8-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-15\"><a href=\"#cb8-15\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-16\"><a href=\"#cb8-16\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                           **                                              **         **          ****         ****  ++<\/span>\n<span id=\"cb8-17\"><a href=\"#cb8-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         **          *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-18\"><a href=\"#cb8-18\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-19\"><a href=\"#cb8-19\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-20\"><a href=\"#cb8-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       **  *        **                                              **         ** * *      *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-21\"><a href=\"#cb8-21\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++      *       **  *        **         *                                   ***         **** *      *****        ***** ++<\/span>\n<span id=\"cb8-22\"><a href=\"#cb8-22\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        **         *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-23\"><a href=\"#cb8-23\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        ****       *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-24\"><a href=\"#cb8-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****        ****       ***                                 ***         **** *      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-25\"><a href=\"#cb8-25\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++      *       *****        ****       ****                                ***         ******      *****       ****** ++<\/span>\n<span id=\"cb8-26\"><a href=\"#cb8-26\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****       *****       ******                              ***    *    ******      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-27\"><a href=\"#cb8-27\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*****<\/span>     *****       *****       ******                       *      *** ** *    *******     *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb8-28\"><a href=\"#cb8-28\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*******<\/span>   *****  **   *****  **   ****** **          **        * **  ******* **   *********************   *********<\/span>\n<span id=\"cb8-29\"><a href=\"#cb8-29\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">++++++*******+++******+**+++*********+++******+**++++++++++**+++++++**+**++**********+++*********************+++*********<\/span><\/span>\n<span id=\"cb8-30\"><a href=\"#cb8-30\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> ++++++*******++**********+++*********+++******+**++++**++*+**++**********++***********++*********************+++*********<\/span>\n<span id=\"cb8-31\"><a href=\"#cb8-31\" aria-hidden=\"true\"><\/a>               <span class=\"ex\">2015<\/span>        2015        2015        2015        2015        2015        2015        2015        2015        2015<\/span>\n<span id=\"cb8-32\"><a href=\"#cb8-32\" aria-hidden=\"true\"><\/a>                 <span class=\"ex\">-<\/span>           -           -           -           -           -           -           -           -           -<\/span>\n<span id=\"cb8-33\"><a href=\"#cb8-33\" aria-hidden=\"true\"><\/a>               <span class=\"ex\">05-20<\/span>       05-21       05-22       05-23       05-24       05-25       05-26       05-27       05-28       05-29<\/span><\/code><\/pre><\/div>\n<p>We are getting closer to the goal. What\u2019s still problematic is that the date-hour combination is wrapped at the hyphen and the hours are completely missing. If we replace the hyphen, this wrapping will no longer occur. Let\u2019s have <code>sed<\/code> help us out.<\/p>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb9-1\"><a href=\"#cb9-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb9-2\"><a href=\"#cb9-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>; <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb9-3\"><a href=\"#cb9-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> -e <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">\\t<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">sed<\/span> -e <span class=\"st\">&quot;s\/-\/.\/g&quot;<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> --xaxisticsmodulo 24<\/span>\n<span id=\"cb9-4\"><a href=\"#cb9-4\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb9-5\"><a href=\"#cb9-5\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb9-6\"><a href=\"#cb9-6\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb9-7\"><a href=\"#cb9-7\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<\/span>\n<span id=\"cb9-8\"><a href=\"#cb9-8\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Col<\/span> 1+******++<\/span>\n<span id=\"cb9-9\"><a href=\"#cb9-9\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-10\"><a href=\"#cb9-10\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-11\"><a href=\"#cb9-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-12\"><a href=\"#cb9-12\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *  *               ++<\/span>\n<span id=\"cb9-13\"><a href=\"#cb9-13\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-14\"><a href=\"#cb9-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-15\"><a href=\"#cb9-15\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-16\"><a href=\"#cb9-16\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                           **                                              **         **          ****         ****  ++<\/span>\n<span id=\"cb9-17\"><a href=\"#cb9-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         **          *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-18\"><a href=\"#cb9-18\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-19\"><a href=\"#cb9-19\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-20\"><a href=\"#cb9-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       **  *        **                                              **         ** * *      *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-21\"><a href=\"#cb9-21\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++      *       **  *        **         *                                   ***         **** *      *****        ***** ++<\/span>\n<span id=\"cb9-22\"><a href=\"#cb9-22\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        **         *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-23\"><a href=\"#cb9-23\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        ****       *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-24\"><a href=\"#cb9-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****        ****       ***                                 ***         **** *      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-25\"><a href=\"#cb9-25\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++      *       *****        ****       ****                                ***         ******      *****       ****** ++<\/span>\n<span id=\"cb9-26\"><a href=\"#cb9-26\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****       *****       ******                              ***    *    ******      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-27\"><a href=\"#cb9-27\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*****<\/span>     *****       *****       ******                       *      *** ** *    *******     *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb9-28\"><a href=\"#cb9-28\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*******<\/span>   *****  **   *****  **   ****** **          **        * **  ******* **   *********************   *********<\/span>\n<span id=\"cb9-29\"><a href=\"#cb9-29\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">++++++*******+++******+**+++*********+++******+**++++++++++**+++++++**+**++**********+++*********************+++*********<\/span><\/span>\n<span id=\"cb9-30\"><a href=\"#cb9-30\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> ++++++*******++**********+++*********+++******+**++++**++*+**++**********++***********++*********************+++*********<\/span>\n<span id=\"cb9-31\"><a href=\"#cb9-31\" aria-hidden=\"true\"><\/a>            <span class=\"ex\">2015.05.20<\/span>  2015.05.21  2015.05.22  2015.05.23  2015.05.24  2015.05.25  2015.05.26  2015.05.27  2015.05.28  2015.05.29<\/span><\/code><\/pre><\/div>\n<p>Now only the hours are still not visible. As can be seen further above, they are separated by a space from the date. If we replace this space by a hyphen then be get a word wrap between the date and the hour.<\/p>\n<div class=\"sourceCode\" id=\"cb10\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb10-1\"><a href=\"#cb10-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb10-2\"><a href=\"#cb10-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>; <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb10-3\"><a href=\"#cb10-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> -e <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">\\t<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">sed<\/span> -e <span class=\"st\">&quot;s\/-\/.\/g&quot;<\/span> -e <span class=\"st\">&quot;s\/ \/-\/&quot;<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> --xaxisticsmodulo 24<\/span>\n<span id=\"cb10-4\"><a href=\"#cb10-4\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<\/span>\n<span id=\"cb10-5\"><a href=\"#cb10-5\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Col<\/span> 1+******++<\/span>\n<span id=\"cb10-6\"><a href=\"#cb10-6\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-7\"><a href=\"#cb10-7\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-8\"><a href=\"#cb10-8\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-9\"><a href=\"#cb10-9\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *  *               ++<\/span>\n<span id=\"cb10-10\"><a href=\"#cb10-10\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-11\"><a href=\"#cb10-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-12\"><a href=\"#cb10-12\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-13\"><a href=\"#cb10-13\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                           **                                              **         **          ****         ****  ++<\/span>\n<span id=\"cb10-14\"><a href=\"#cb10-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         **          *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-15\"><a href=\"#cb10-15\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-16\"><a href=\"#cb10-16\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-17\"><a href=\"#cb10-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       **  *        **                                              **         ** * *      *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-18\"><a href=\"#cb10-18\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++      *       **  *        **         *                                   ***         **** *      *****        ***** ++<\/span>\n<span id=\"cb10-19\"><a href=\"#cb10-19\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        **         *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-20\"><a href=\"#cb10-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        ****       *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-21\"><a href=\"#cb10-21\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****        ****       ***                                 ***         **** *      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-22\"><a href=\"#cb10-22\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++      *       *****        ****       ****                                ***         ******      *****       ****** ++<\/span>\n<span id=\"cb10-23\"><a href=\"#cb10-23\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****       *****       ******                              ***    *    ******      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-24\"><a href=\"#cb10-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*****<\/span>     *****       *****       ******                       *      *** ** *    *******     *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-25\"><a href=\"#cb10-25\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*******<\/span>   *****       *****  *    ****** *                     *     ******* *    *******  **********     ******* <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb10-26\"><a href=\"#cb10-26\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">++++++*******+++******++++++********++++******+**+++++++++++++++++++**+++++**********+++********+**********+++++********+<\/span><\/span>\n<span id=\"cb10-27\"><a href=\"#cb10-27\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> ++++++*******++*********++++********++++******+**++++**++*+++++*********+++***********++*******************+++++********+<\/span>\n<span id=\"cb10-28\"><a href=\"#cb10-28\" aria-hidden=\"true\"><\/a>            <span class=\"ex\">2015.05.20<\/span>  2015.05.21  2015.05.22  2015.05.23  2015.05.24  2015.05.25  2015.05.26  2015.05.27  2015.05.28  2015.05.29<\/span>\n<span id=\"cb10-29\"><a href=\"#cb10-29\" aria-hidden=\"true\"><\/a>                 <span class=\"ex\">-<\/span>           -           -           -           -           -           -           -           -           -<\/span>\n<span id=\"cb10-30\"><a href=\"#cb10-30\" aria-hidden=\"true\"><\/a>                <span class=\"ex\">22<\/span>          22          22          22          22          22          22          22          22          22<\/span><\/code><\/pre><\/div>\n<p>We will now label the x-axis with every 24th value and by chance we get only to the 22nd hour. We should shift it. Ideally, the middle of each day as well as the 12th hour should be labeled. We can specify such a shift using the <code>--xaxisticsmodulo<\/code> option. This is done as follows:<\/p>\n<div class=\"sourceCode\" id=\"cb11\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb11-1\"><a href=\"#cb11-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb11-2\"><a href=\"#cb11-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>; <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb11-3\"><a href=\"#cb11-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> -e <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">\\t<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">sed<\/span> -e <span class=\"st\">&quot;s\/-\/.\/g&quot;<\/span> -e <span class=\"st\">&quot;s\/ \/-\/&quot;<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> --xaxisticsmodulo 24\/10 -w 130<\/span>\n<span id=\"cb11-4\"><a href=\"#cb11-4\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb11-5\"><a href=\"#cb11-5\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb11-6\"><a href=\"#cb11-6\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb11-7\"><a href=\"#cb11-7\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<\/span>\n<span id=\"cb11-8\"><a href=\"#cb11-8\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Col<\/span> 1+******++<\/span>\n<span id=\"cb11-9\"><a href=\"#cb11-9\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-10\"><a href=\"#cb11-10\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-11\"><a href=\"#cb11-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-12\"><a href=\"#cb11-12\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *  *               ++<\/span>\n<span id=\"cb11-13\"><a href=\"#cb11-13\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-14\"><a href=\"#cb11-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-15\"><a href=\"#cb11-15\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *         ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-16\"><a href=\"#cb11-16\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                           **                                              **         **          ****         ****  ++<\/span>\n<span id=\"cb11-17\"><a href=\"#cb11-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         **          *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-18\"><a href=\"#cb11-18\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-19\"><a href=\"#cb11-19\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-20\"><a href=\"#cb11-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       **  *        **                                              **         ** * *      *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-21\"><a href=\"#cb11-21\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++      *       **  *        **         *                                   ***         **** *      *****        ***** ++<\/span>\n<span id=\"cb11-22\"><a href=\"#cb11-22\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        **         *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-23\"><a href=\"#cb11-23\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       ** **        ****       *                                   ***         **** *      *****        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-24\"><a href=\"#cb11-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****        ****       ***                                 ***         **** *      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-25\"><a href=\"#cb11-25\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++      *       *****        ****       ****                                ***         ******      *****       ****** ++<\/span>\n<span id=\"cb11-26\"><a href=\"#cb11-26\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       *****       *****       ******                              ***    *    ******      *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-27\"><a href=\"#cb11-27\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*****<\/span>     *****       *****       ******                       *      *** ** *    *******     *****       ******  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-28\"><a href=\"#cb11-28\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>     <span class=\"ex\">*******<\/span>   *****       *****  *    ****** *                     *     ******* *    *******  **********     ******* <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb11-29\"><a href=\"#cb11-29\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">++++++*******+++******++++++********++++******+**+++++++++++++++++++**+++++**********+++********+**********+++++********+<\/span><\/span>\n<span id=\"cb11-30\"><a href=\"#cb11-30\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> ++++++*******++*********++++********++++******+**++++**++*+++++*********+++***********++*******************+++++********+<\/span>\n<span id=\"cb11-31\"><a href=\"#cb11-31\" aria-hidden=\"true\"><\/a>       <span class=\"ex\">2015.05.20<\/span>  2015.05.21  2015.05.22  2015.05.23  2015.05.24  2015.05.25  2015.05.26  2015.05.27  2015.05.28  2015.05.29<\/span>\n<span id=\"cb11-32\"><a href=\"#cb11-32\" aria-hidden=\"true\"><\/a>            <span class=\"ex\">-<\/span>           -           -           -           -           -           -           -           -           -<\/span>\n<span id=\"cb11-33\"><a href=\"#cb11-33\" aria-hidden=\"true\"><\/a>           <span class=\"ex\">12<\/span>          12          12          12          12          12          12          12          12          12<\/span><\/code><\/pre><\/div>\n<p>We can use a number value after a slash to shift the labeled value to the left or right. Whole positive and negative values are allowed for this.<\/p>\n<p>This gives use the desired graph. One detail are the many plus signs in the top and bottom borders of the graph. They are related to the large number of (hidden) labels and disrupt the picture a bit. I will try to suppress them in a future version of this tutorial.<\/p>\n<h3 id=\"step-4-additional-labels\">Step 4: Additional labels<\/h3>\n<p><code>arbigraph<\/code> provides some options for influencing graphs. Let\u2019s have a look at the options:<\/p>\n<div class=\"sourceCode\" id=\"cb12\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb12-1\"><a href=\"#cb12-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"ex\">arbigraph<\/span> -h<\/span>\n<span id=\"cb12-2\"><a href=\"#cb12-2\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb12-3\"><a href=\"#cb12-3\" aria-hidden=\"true\"><\/a><span class=\"op\">&lt;<\/span><span class=\"ex\">STDIN<\/span><span class=\"op\">&gt;<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> [OPTIONS] <\/span>\n<span id=\"cb12-4\"><a href=\"#cb12-4\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb12-5\"><a href=\"#cb12-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">A<\/span> script to plot a simple graph<\/span>\n<span id=\"cb12-6\"><a href=\"#cb12-6\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb12-7\"><a href=\"#cb12-7\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-c<\/span>  --columnnames STR     Name for columns. Separate by <span class=\"st\">&#39;;&#39;<\/span>.<\/span>\n<span id=\"cb12-8\"><a href=\"#cb12-8\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-C<\/span>  --custom STR          Custom arbitrary gnuplot directives<span class=\"kw\">;<\/span> <span class=\"ex\">will<\/span> be placed right<\/span>\n<span id=\"cb12-9\"><a href=\"#cb12-9\" aria-hidden=\"true\"><\/a>                           <span class=\"ex\">before<\/span> the plot directive. Separate commands with semicolon.<\/span>\n<span id=\"cb12-10\"><a href=\"#cb12-10\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-d<\/span>  --dots                Graph with dots instead of blocks<\/span>\n<span id=\"cb12-11\"><a href=\"#cb12-11\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-e<\/span>  --enablescript        Output the gnuplot script below the graph and keep data file<\/span>\n<span id=\"cb12-12\"><a href=\"#cb12-12\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-h<\/span>  --help                This text<\/span>\n<span id=\"cb12-13\"><a href=\"#cb12-13\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-H<\/span>  --height  STR         Graph height in characters<\/span>\n<span id=\"cb12-14\"><a href=\"#cb12-14\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-l<\/span>  --lines               Graph with lines instead of blocks<\/span>\n<span id=\"cb12-15\"><a href=\"#cb12-15\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">--label<\/span>               Additional text inside the graph. Default positioned top left<\/span>\n<span id=\"cb12-16\"><a href=\"#cb12-16\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-L<\/span>  --logscale            Logarithmic scale. Default is normal scale.<\/span>\n<span id=\"cb12-17\"><a href=\"#cb12-17\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-m<\/span>  --minx STR            Starting value of x-axis. Default is 1<\/span>\n<span id=\"cb12-18\"><a href=\"#cb12-18\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-o<\/span>  --output STR          Write graph into a file (png)<\/span>\n<span id=\"cb12-19\"><a href=\"#cb12-19\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-s<\/span>  --sameaxis            Use the same y-axis. Default is separate axis<\/span>\n<span id=\"cb12-20\"><a href=\"#cb12-20\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-t<\/span>  --title STR           Title of graph<\/span>\n<span id=\"cb12-21\"><a href=\"#cb12-21\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-w<\/span>  --width STR           Width of graph (terminal actually)<span class=\"bu\">.<\/span> <span class=\"ex\">Default<\/span> is terminal width<\/span>\n<span id=\"cb12-22\"><a href=\"#cb12-22\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-x<\/span>  --xaxisticsmodulo N   Suppress labels on certain tics on the x axis. xaxisticsmodulo 5<\/span>\n<span id=\"cb12-23\"><a href=\"#cb12-23\" aria-hidden=\"true\"><\/a>                           <span class=\"ex\">means<\/span> every Nth tics gets a label. Default is 5. 1 means<\/span>\n<span id=\"cb12-24\"><a href=\"#cb12-24\" aria-hidden=\"true\"><\/a>                           <span class=\"ex\">every<\/span> tics gets a label.<\/span>\n<span id=\"cb12-25\"><a href=\"#cb12-25\" aria-hidden=\"true\"><\/a> <span class=\"ex\">-2<\/span>                        Use an additional, second data column<\/span>\n<span id=\"cb12-26\"><a href=\"#cb12-26\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb12-27\"><a href=\"#cb12-27\" aria-hidden=\"true\"><\/a><span class=\"ex\">Example<\/span>: <\/span>\n<span id=\"cb12-28\"><a href=\"#cb12-28\" aria-hidden=\"true\"><\/a> <span class=\"fu\">ls<\/span> -l \/tmp <span class=\"kw\">|<\/span> <span class=\"fu\">head<\/span> -15 <span class=\"kw\">|<\/span> <span class=\"fu\">grep<\/span> -v total <span class=\"kw\">|<\/span> <span class=\"fu\">awk<\/span> <span class=\"st\">&#39;{ print $5 &quot; &quot; $9 } &#39;<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span><\/span>\n<span id=\"cb12-29\"><a href=\"#cb12-29\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb12-30\"><a href=\"#cb12-30\" aria-hidden=\"true\"><\/a><span class=\"ex\">Arbigraph<\/span> will graph the first column. Subsequent columns are ignored.<\/span>\n<span id=\"cb12-31\"><a href=\"#cb12-31\" aria-hidden=\"true\"><\/a><span class=\"ex\">The<\/span> X-axis is actually the line number of a value.<\/span>\n<span id=\"cb12-32\"><a href=\"#cb12-32\" aria-hidden=\"true\"><\/a><span class=\"ex\">Command<\/span> line option <span class=\"st\">&quot;minx&quot;<\/span> therefore defines the<\/span>\n<span id=\"cb12-33\"><a href=\"#cb12-33\" aria-hidden=\"true\"><\/a><span class=\"ex\">starting<\/span> point of the line numbering.<\/span>\n<span id=\"cb12-34\"><a href=\"#cb12-34\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb12-35\"><a href=\"#cb12-35\" aria-hidden=\"true\"><\/a><span class=\"ex\">A<\/span> label inside the graph can be added with the --label option. By default, this is<\/span>\n<span id=\"cb12-36\"><a href=\"#cb12-36\" aria-hidden=\"true\"><\/a><span class=\"ex\">is<\/span> put in the top left corner. You can align it to the right by adding <span class=\"st\">&quot;(right)&quot;<\/span><\/span>\n<span id=\"cb12-37\"><a href=\"#cb12-37\" aria-hidden=\"true\"><\/a><span class=\"ex\">inside<\/span> the label text. This will not be printed. You can use \\n to get a CR:<\/span>\n<span id=\"cb12-38\"><a href=\"#cb12-38\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"ex\">arbigraph<\/span> --label <span class=\"st\">&#39;\\n\\n\\n                  PEAK---&gt;&#39;<\/span><\/span>\n<span id=\"cb12-39\"><a href=\"#cb12-39\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb12-40\"><a href=\"#cb12-40\" aria-hidden=\"true\"><\/a><span class=\"ex\">The<\/span> caption (tics) <span class=\"ex\">on<\/span> the x axis are always crowded. Use --xaxisticsmodulo to<\/span>\n<span id=\"cb12-41\"><a href=\"#cb12-41\" aria-hidden=\"true\"><\/a><span class=\"ex\">suppress<\/span> some of the labels. A value of 5 means, that only every 5th label is<\/span>\n<span id=\"cb12-42\"><a href=\"#cb12-42\" aria-hidden=\"true\"><\/a><span class=\"ex\">printed.<\/span> The other ones are hidden.<\/span>\n<span id=\"cb12-43\"><a href=\"#cb12-43\" aria-hidden=\"true\"><\/a><span class=\"ex\">You<\/span> can define an offset for the first label to be printed. So that no the 5th<\/span>\n<span id=\"cb12-44\"><a href=\"#cb12-44\" aria-hidden=\"true\"><\/a><span class=\"ex\">starting<\/span> from 0 will be printed, but the 5th starting from 2. Define this shift<\/span>\n<span id=\"cb12-45\"><a href=\"#cb12-45\" aria-hidden=\"true\"><\/a><span class=\"ex\">behind<\/span> a slash. Negative values are ok.<\/span>\n<span id=\"cb12-46\"><a href=\"#cb12-46\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"ex\">arbigraph<\/span> --xaxisticsmodulo <span class=\"st\">&quot;24\/-2&quot;<\/span><\/span>\n<span id=\"cb12-47\"><a href=\"#cb12-47\" aria-hidden=\"true\"><\/a><span class=\"ex\">You<\/span> will have to try out various values for xaxisticsmodulo and a shift to the<\/span>\n<span id=\"cb12-48\"><a href=\"#cb12-48\" aria-hidden=\"true\"><\/a><span class=\"ex\">right<\/span> or to the left until you find something that suits the data and the graph.<\/span>\n<span id=\"cb12-49\"><a href=\"#cb12-49\" aria-hidden=\"true\"><\/a><\/span><\/code><\/pre><\/div>\n<p>We can thus use <code>--columnnames<\/code> to add a legend and perhaps also a title using <code>--title<\/code>. To try out other display options, it is advisable to with <code>--lines<\/code>:<\/p>\n<div class=\"sourceCode\" id=\"cb13\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb13-1\"><a href=\"#cb13-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb13-2\"><a href=\"#cb13-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>;<span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb13-3\"><a href=\"#cb13-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> -e <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">\\t<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">sed<\/span> -e <span class=\"st\">&quot;s\/-\/.\/g&quot;<\/span> -e <span class=\"st\">&quot;s\/ \/-\/&quot;<\/span><span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb13-4\"><a href=\"#cb13-4\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> -x 24\/10 --columnnames <span class=\"st\">&quot;Num of Reqs\/h&quot;<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb13-5\"><a href=\"#cb13-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">--title<\/span> <span class=\"st\">&quot;Daily Rhythm of Requests in tutorial-8-example-access.log&quot;<\/span> --lines<\/span>\n<span id=\"cb13-6\"><a href=\"#cb13-6\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb13-7\"><a href=\"#cb13-7\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb13-8\"><a href=\"#cb13-8\" aria-hidden=\"true\"><\/a>                                       <span class=\"ex\">Daily<\/span> Rhythm of Requests in tutorial-8-example-access.log<\/span>\n<span id=\"cb13-9\"><a href=\"#cb13-9\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb13-10\"><a href=\"#cb13-10\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<\/span>\n<span id=\"cb13-11\"><a href=\"#cb13-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span><span class=\"ex\">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Num<\/span> of Reqs\/h+******++<\/span>\n<span id=\"cb13-12\"><a href=\"#cb13-12\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                             <span class=\"ex\">*<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-13\"><a href=\"#cb13-13\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                             <span class=\"ex\">*<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-14\"><a href=\"#cb13-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                             <span class=\"ex\">*<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-15\"><a href=\"#cb13-15\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *  *               ++<\/span>\n<span id=\"cb13-16\"><a href=\"#cb13-16\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-17\"><a href=\"#cb13-17\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  **        * *    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-18\"><a href=\"#cb13-18\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  **        ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-19\"><a href=\"#cb13-19\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                            *                                              **          *          * ***        ****  ++<\/span>\n<span id=\"cb13-20\"><a href=\"#cb13-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>         *                                              **          * *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-21\"><a href=\"#cb13-21\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *** *        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-22\"><a href=\"#cb13-22\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** * *      *** *        * ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-23\"><a href=\"#cb13-23\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++      *        *  *        **                                              **         **** *      *** *        * *** ++<\/span>\n<span id=\"cb13-24\"><a href=\"#cb13-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       * * *        **         *                                    **         ******      *** *        * ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-25\"><a href=\"#cb13-25\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       * * *        **         *                                    **         ******      **   *       * ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-26\"><a href=\"#cb13-26\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">**<\/span>      * * **       ** *       ***                                  **         ******      **   *      ** ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-27\"><a href=\"#cb13-27\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">**<\/span>      * * **       ** *       ****                                 **         *** ***     **   *      *   **  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-28\"><a href=\"#cb13-28\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++      **      * ****      *** *       **** *                              *  *   *    *   ***     **   *      *   ** ++<\/span>\n<span id=\"cb13-29\"><a href=\"#cb13-29\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>      <span class=\"ex\">****<\/span>     *  * *      *  * *      **** *                       *      *  *** *    *   ***     **   *      *   **  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-30\"><a href=\"#cb13-30\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>      <span class=\"ex\">****<\/span> *   *  * *      *  * * *    *  *** *                     *      *  *** **   *   * **  * *    **     *   **  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb13-31\"><a href=\"#cb13-31\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span><span class=\"ex\">+++++***++**+++*++*+*++++++*++++****+++*++***+**++++++++++++++++++++**+++++*+++++***+++*+++*+**++*+*+++++**++++*+++++**+<\/span><\/span>\n<span id=\"cb13-32\"><a href=\"#cb13-32\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> +******+*++******++++********+++++*******++**+***********************+******++++++*******++++++*****+++++++******+++++***<\/span>\n<span id=\"cb13-33\"><a href=\"#cb13-33\" aria-hidden=\"true\"><\/a>        <span class=\"ex\">2015.05.20<\/span>  2015.05.21  2015.05.22  2015.05.23  2015.05.24  2015.05.25  2015.05.26  2015.05.27  2015.05.28  2015.05.29<\/span>\n<span id=\"cb13-34\"><a href=\"#cb13-34\" aria-hidden=\"true\"><\/a>             <span class=\"ex\">-<\/span>           -           -           -           -           -           -           -           -           -<\/span>\n<span id=\"cb13-35\"><a href=\"#cb13-35\" aria-hidden=\"true\"><\/a>            <span class=\"ex\">12<\/span>          12          12          12          12          12          12          12          12          12<\/span><\/code><\/pre><\/div>\n<p>This eventually takes us to the limits of <code>arbigraph\u2019s<\/code> capabilities. For <code>gnuplot<\/code> itself, on which it is based, it is still far from the end of the story. We can issue additional <code>gnuplot commands<\/code> via the <code>--custom<\/code> option. Or use <code>--enablescript<\/code> and have the <code>gnuplot script<\/code> displayed to us:<\/p>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb14-1\"><a href=\"#cb14-1\" aria-hidden=\"true\"><\/a><span class=\"kw\">for<\/span> <span class=\"ex\">DAY<\/span> in <span class=\"dt\">{20..29}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"kw\">for<\/span> <span class=\"ex\">HOUR<\/span> in <span class=\"dt\">{00..23}<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">do<\/span> <span class=\"bu\">echo<\/span> <span class=\"st\">&quot;2015-05-<\/span><span class=\"va\">$DAY<\/span><span class=\"st\"> <\/span><span class=\"va\">$HOUR<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span>; <span class=\"kw\">done\\<\/span><\/span>\n<span id=\"cb14-2\"><a href=\"#cb14-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"kw\">while<\/span> <span class=\"bu\">read<\/span> <span class=\"va\">STRING<\/span>; <span class=\"kw\">do<\/span> <span class=\"va\">COUNT=$(<\/span><span class=\"fu\">grep<\/span> -c <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">&quot;<\/span> tutorial-8-example-access.log<span class=\"va\">)<\/span>;<span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb14-3\"><a href=\"#cb14-3\" aria-hidden=\"true\"><\/a><span class=\"bu\">echo<\/span> -e <span class=\"st\">&quot;<\/span><span class=\"va\">$STRING<\/span><span class=\"st\">\\t<\/span><span class=\"va\">$COUNT<\/span><span class=\"st\">&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">done<\/span> <span class=\"kw\">|<\/span> <span class=\"fu\">sed<\/span> -e <span class=\"st\">&quot;s\/-\/.\/g&quot;<\/span> -e <span class=\"st\">&quot;s\/ \/-\/&quot;<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb14-4\"><a href=\"#cb14-4\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> -x 24\/10 --columnnames <span class=\"st\">&quot;Num of Reqs\/h&quot;<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb14-5\"><a href=\"#cb14-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">--title<\/span> <span class=\"st\">&quot;Daily Rhythm of Requests in tutorial-8-example-access.log&quot;<\/span> --lines --enablescript<\/span>\n<span id=\"cb14-6\"><a href=\"#cb14-6\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb14-7\"><a href=\"#cb14-7\" aria-hidden=\"true\"><\/a><span class=\"ex\">...<\/span><\/span>\n<span id=\"cb14-8\"><a href=\"#cb14-8\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb14-9\"><a href=\"#cb14-9\" aria-hidden=\"true\"><\/a><span class=\"ex\">THE<\/span> GNUPLOT SCRIPT<\/span>\n<span id=\"cb14-10\"><a href=\"#cb14-10\" aria-hidden=\"true\"><\/a><span class=\"ex\">------------------<\/span><\/span>\n<span id=\"cb14-11\"><a href=\"#cb14-11\" aria-hidden=\"true\"><\/a><span class=\"kw\">set<\/span> <span class=\"ex\">terminal<\/span> dumb 130 30 <span class=\"kw\">;<\/span>  <span class=\"kw\">set<\/span> <span class=\"ex\">boxwidth<\/span> 1<span class=\"kw\">;<\/span> <span class=\"kw\">set<\/span> <span class=\"ex\">format<\/span> x <span class=\"st\">&quot;\\n\\n&quot;<\/span><span class=\"kw\">;<\/span> <span class=\"kw\">set<\/span> <span class=\"ex\">title<\/span> <span class=\"st\">&quot;Daily Rhythm of Requests in tutorial-8-example-access.log&quot;<\/span><span class=\"kw\">;<\/span> ;; ; ;  <span class=\"ex\">plot<\/span> [1:241][0:253] <span class=\"st\">&quot;\/tmp\/arbigXBwhcT.data&quot;<\/span> using 1:3:xtic(2) <span class=\"ex\">title<\/span> <span class=\"st\">&quot;Num of Reqs\/h&quot;<\/span> with lines<\/span>\n<span id=\"cb14-12\"><a href=\"#cb14-12\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb14-13\"><a href=\"#cb14-13\" aria-hidden=\"true\"><\/a><span class=\"ex\">The<\/span> transformed data file \/tmp\/arbigXBwhcT.data is left for future use.<\/span><\/code><\/pre><\/div>\n<p>We can copy the script into a text file and pass it to gnuplot as STDIN. This works because the data file which <code>arbigraph<\/code> wrote for <code>gnuplot<\/code> in gnuplot data format was saved for further use (<code>\/tmp\/arbigXBwhcT.data<\/code> in this case).<\/p>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb15-1\"><a href=\"#cb15-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> gnuplot-script.gp <span class=\"kw\">|<\/span> <span class=\"ex\">gnuplot<\/span><\/span>\n<span id=\"cb15-2\"><a href=\"#cb15-2\" aria-hidden=\"true\"><\/a>                                       <span class=\"ex\">Daily<\/span> Rhythm of Requests in tutorial-8-example-access.log<\/span>\n<span id=\"cb15-3\"><a href=\"#cb15-3\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb15-4\"><a href=\"#cb15-4\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">250<\/span> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<\/span>\n<span id=\"cb15-5\"><a href=\"#cb15-5\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span><span class=\"ex\">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Num<\/span> of Reqs\/h+******++<\/span>\n<span id=\"cb15-6\"><a href=\"#cb15-6\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                             <span class=\"ex\">*<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-7\"><a href=\"#cb15-7\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                             <span class=\"ex\">*<\/span>                                         <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-8\"><a href=\"#cb15-8\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                             <span class=\"ex\">*<\/span>                     *                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-9\"><a href=\"#cb15-9\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">200<\/span> ++                                                                           **                     *  *               ++<\/span>\n<span id=\"cb15-10\"><a href=\"#cb15-10\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  *                <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-11\"><a href=\"#cb15-11\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  **        * *    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-12\"><a href=\"#cb15-12\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                                                                            <span class=\"ex\">**<\/span>                     *  **        ***    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-13\"><a href=\"#cb15-13\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">150<\/span> ++                            *                                              **          *          * ***        ****  ++<\/span>\n<span id=\"cb15-14\"><a href=\"#cb15-14\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>         *                                              **          * *        *****        ****   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-15\"><a href=\"#cb15-15\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                   <span class=\"ex\">*<\/span>        **                                              **         ** *        *** *        *****  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-16\"><a href=\"#cb15-16\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>                <span class=\"ex\">*<\/span>  *        **                                              **         ** * *      *** *        * ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-17\"><a href=\"#cb15-17\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100<\/span> ++      *        *  *        **                                              **         **** *      *** *        * *** ++<\/span>\n<span id=\"cb15-18\"><a href=\"#cb15-18\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       * * *        **         *                                    **         ******      *** *        * ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-19\"><a href=\"#cb15-19\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">*<\/span>       * * *        **         *                                    **         ******      **   *       * ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-20\"><a href=\"#cb15-20\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">**<\/span>      * * **       ** *       ***                                  **         ******      **   *      ** ***  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-21\"><a href=\"#cb15-21\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>       <span class=\"ex\">**<\/span>      * * **       ** *       ****                                 **         *** ***     **   *      *   **  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-22\"><a href=\"#cb15-22\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">50<\/span> ++      **      * ****      *** *       **** *                              *  *   *    *   ***     **   *      *   ** ++<\/span>\n<span id=\"cb15-23\"><a href=\"#cb15-23\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>      <span class=\"ex\">****<\/span>     *  * *      *  * *      **** *                       *      *  *** *    *   ***     **   *      *   **  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-24\"><a href=\"#cb15-24\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span>      <span class=\"ex\">****<\/span> *   *  * *      *  * * *    *  *** *                     *      *  *** **   *   * **  * *    **     *   **  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb15-25\"><a href=\"#cb15-25\" aria-hidden=\"true\"><\/a>      <span class=\"kw\">|<\/span><span class=\"ex\">+++++***++**+++*++*+*++++++*++++****+++*++***+**++++++++++++++++++++**+++++*+++++***+++*+++*+**++*+*+++++**++++*+++++**+<\/span><\/span>\n<span id=\"cb15-26\"><a href=\"#cb15-26\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">0<\/span> +******+*++******++++********+++++*******++**+***********************+******++++++*******++++++*****+++++++******+++++***<\/span>\n<span id=\"cb15-27\"><a href=\"#cb15-27\" aria-hidden=\"true\"><\/a>        <span class=\"ex\">2015.05.20<\/span>  2015.05.21  2015.05.22  2015.05.23  2015.05.24  2015.05.25  2015.05.26  2015.05.27  2015.05.28  2015.05.29<\/span>\n<span id=\"cb15-28\"><a href=\"#cb15-28\" aria-hidden=\"true\"><\/a>             <span class=\"ex\">-<\/span>           -           -           -           -           -           -           -           -           -<\/span>\n<span id=\"cb15-29\"><a href=\"#cb15-29\" aria-hidden=\"true\"><\/a>            <span class=\"ex\">12<\/span>          12          12          12          12          12          12          12          12          12<\/span><\/code><\/pre><\/div>\n<p>Provided you have sufficient expertise in using gnuplot, you can now carry on and generate a \u201creport-ready\u201d graph.<\/p>\n<h3 id=\"step-5-graphically-displaying-a-value-distribution-in-the-shell\">Step 5: Graphically displaying a value distribution in the shell<\/h3>\n<p>Besides time series, our <code>arbigraph<\/code> combined with <code>gnuplot<\/code> can also visually render the distribution of values. Let\u2019s look for example at the duration value documented in the different requests.<\/p>\n<div class=\"sourceCode\" id=\"cb16\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb16-1\"><a href=\"#cb16-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">head<\/span> -10 tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span><\/span>\n<span id=\"cb16-2\"><a href=\"#cb16-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">935006<\/span><\/span>\n<span id=\"cb16-3\"><a href=\"#cb16-3\" aria-hidden=\"true\"><\/a><span class=\"ex\">867783<\/span><\/span>\n<span id=\"cb16-4\"><a href=\"#cb16-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">991977<\/span><\/span>\n<span id=\"cb16-5\"><a href=\"#cb16-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">985790<\/span><\/span>\n<span id=\"cb16-6\"><a href=\"#cb16-6\" aria-hidden=\"true\"><\/a><span class=\"ex\">981818<\/span><\/span>\n<span id=\"cb16-7\"><a href=\"#cb16-7\" aria-hidden=\"true\"><\/a><span class=\"ex\">1001088<\/span><\/span>\n<span id=\"cb16-8\"><a href=\"#cb16-8\" aria-hidden=\"true\"><\/a><span class=\"ex\">1000670<\/span><\/span>\n<span id=\"cb16-9\"><a href=\"#cb16-9\" aria-hidden=\"true\"><\/a><span class=\"ex\">1048915<\/span><\/span>\n<span id=\"cb16-10\"><a href=\"#cb16-10\" aria-hidden=\"true\"><\/a><span class=\"ex\">1057174<\/span><\/span>\n<span id=\"cb16-11\"><a href=\"#cb16-11\" aria-hidden=\"true\"><\/a><span class=\"ex\">826016<\/span><\/span><\/code><\/pre><\/div>\n<p>What we find here is on the order of 1 million microseconds. How does that look statistically (we are still familiar with the routines from earlier tutorials)?<\/p>\n<div class=\"sourceCode\" id=\"cb17\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb17-1\"><a href=\"#cb17-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">basicstats.awk<\/span> <\/span>\n<span id=\"cb17-2\"><a href=\"#cb17-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">Num<\/span> of values:        10000<\/span>\n<span id=\"cb17-3\"><a href=\"#cb17-3\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">Average<\/span>:      2531653<\/span>\n<span id=\"cb17-4\"><a href=\"#cb17-4\" aria-hidden=\"true\"><\/a>       <span class=\"ex\">Median<\/span>:      1080252<\/span>\n<span id=\"cb17-5\"><a href=\"#cb17-5\" aria-hidden=\"true\"><\/a>          <span class=\"ex\">Min<\/span>:          688<\/span>\n<span id=\"cb17-6\"><a href=\"#cb17-6\" aria-hidden=\"true\"><\/a>          <span class=\"ex\">Max<\/span>:     72941899<\/span>\n<span id=\"cb17-7\"><a href=\"#cb17-7\" aria-hidden=\"true\"><\/a>        <span class=\"ex\">Range<\/span>:     72941211<\/span>\n<span id=\"cb17-8\"><a href=\"#cb17-8\" aria-hidden=\"true\"><\/a><span class=\"ex\">Std<\/span> deviation:      5794915<\/span><\/code><\/pre><\/div>\n<p>This is apparently a slow application and there are also a lot of outliers towards the top.<\/p>\n<p>We have 10,000 individual data points in the log file. Let\u2019s map them. Because the values are so far apart we choose a logarithmic scale for the y-axis. The graph should be based on lines. Because we are working with 10,000 data points, it may take a moment to draw it:<\/p>\n<div class=\"sourceCode\" id=\"cb18\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb18-1\"><a href=\"#cb18-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> tutorial-8-example-access.log  <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span>  <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> --lines --logscale<\/span>\n<span id=\"cb18-2\"><a href=\"#cb18-2\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb18-3\"><a href=\"#cb18-3\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb18-4\"><a href=\"#cb18-4\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+----------------------+-----------*-----------+----------*-----------+-----------------------+----------------------+<\/span><\/span>\n<span id=\"cb18-5\"><a href=\"#cb18-5\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>                      +         *** ***** *  *+         ***          +   ***                 +         Col 1 ****** +<\/span>\n<span id=\"cb18-6\"><a href=\"#cb18-6\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>                                *** ***** *  *         ****              ***                                        +<\/span>\n<span id=\"cb18-7\"><a href=\"#cb18-7\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">1e+07<\/span> ++               *            *  *** ***** *  *     *   ****            *****     *                                 ++<\/span>\n<span id=\"cb18-8\"><a href=\"#cb18-8\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+*<\/span>   *    **   * *** ** **   **  *** ***** * **     *   *****          ******   * *   *  * *     *        **   * *   +<\/span>\n<span id=\"cb18-9\"><a href=\"#cb18-9\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">**********************************************************************************************************************<\/span><\/span>\n<span id=\"cb18-10\"><a href=\"#cb18-10\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">1e+06<\/span> **********************************************************************************************************************<\/span>\n<span id=\"cb18-11\"><a href=\"#cb18-11\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">*************************************<\/span> **************** ************************** **** ******************************+<\/span>\n<span id=\"cb18-12\"><a href=\"#cb18-12\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">***<\/span> *   *  ***    **** * ** *  * ***  **** **** * **   * ***  ****  * *** ******  ****   ***** ** * *  * ****     * *+<\/span>\n<span id=\"cb18-13\"><a href=\"#cb18-13\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">100000<\/span> *** *   *  ***    **** * ** *  * ***  **** **** * **   * ***  ****  * *** ******  ****   ***** ** * *  * ****     * *+<\/span>\n<span id=\"cb18-14\"><a href=\"#cb18-14\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">***<\/span> *   *  ***    **** * ** *  * ***  **** **** * **   * ***  ****  * *** ******  ****   ***** ** * *  * ****     * *+<\/span>\n<span id=\"cb18-15\"><a href=\"#cb18-15\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">***<\/span> *   *  ***    **** * ** *  * ***  **** **** * **   * ***  ****  * *** ******  ****   ***** ** * *  * ****     * *+<\/span>\n<span id=\"cb18-16\"><a href=\"#cb18-16\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">10000<\/span> *** *   *  ***    **** * ** *  * ***  **** **** * **   * ***  ****  * *** ******  ****   ***** ** * *  * ****     * *+<\/span>\n<span id=\"cb18-17\"><a href=\"#cb18-17\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+**<\/span> *   *  ***    **** * ** *  * ***  **** **** * **   * ***  ****  * *** ******  ****   ***** ** * *  * ****     * *+<\/span>\n<span id=\"cb18-18\"><a href=\"#cb18-18\" aria-hidden=\"true\"><\/a>         <span class=\"kw\">|<\/span><span class=\"ex\">**<\/span> *   *  **     * ** * ** *  * **   **** **** *  *   * ***  ****  * **  ** ***  ****   *** * **      *  ***     *  <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb18-19\"><a href=\"#cb18-19\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>   *       *            *  *            *   **                *    *     *        *     ***   *                     +<\/span>\n<span id=\"cb18-20\"><a href=\"#cb18-20\" aria-hidden=\"true\"><\/a>    <span class=\"ex\">1000<\/span> ++  *                                        *                                                                      ++<\/span>\n<span id=\"cb18-21\"><a href=\"#cb18-21\" aria-hidden=\"true\"><\/a>         <span class=\"kw\">|<\/span>                                                                                                                    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb18-22\"><a href=\"#cb18-22\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>                                                                                                                    +<\/span>\n<span id=\"cb18-23\"><a href=\"#cb18-23\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">100<\/span> ++                                                                                                                  ++<\/span>\n<span id=\"cb18-24\"><a href=\"#cb18-24\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>                                                                                                                    +<\/span>\n<span id=\"cb18-25\"><a href=\"#cb18-25\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>                                                                                                                    +<\/span>\n<span id=\"cb18-26\"><a href=\"#cb18-26\" aria-hidden=\"true\"><\/a>      <span class=\"ex\">10<\/span> ++                                                                                                                  ++<\/span>\n<span id=\"cb18-27\"><a href=\"#cb18-27\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>                                                                                                                    +<\/span>\n<span id=\"cb18-28\"><a href=\"#cb18-28\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">+<\/span>                      +                       +                      +                       +                      +<\/span>\n<span id=\"cb18-29\"><a href=\"#cb18-29\" aria-hidden=\"true\"><\/a>       <span class=\"ex\">1<\/span> ++---------------------+-----------------------+----------------------+-----------------------+---------------------++<\/span>\n<span id=\"cb18-30\"><a href=\"#cb18-30\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">0<\/span>                     2000                    4000                   6000                    8000                  10000<\/span><\/code><\/pre><\/div>\n<p>We used the command above to replace the blocks with lines and used a logarithmic scale, because the outliers were optically too dominant. The graph is however not really satisfactory. The reason is the excessive number of data points. Our terminal has only 80, 120 or, in extreme cases, 200 columns. This is of course too few for a set with 10,000 points, which is why <code>gnuplot<\/code> itself transfers the graph in relatively few data series. Outliers are centered and smoothed out. Then comes the familiar problem with the badly labeled x-axis.<\/p>\n<p>What we are lacking is a method called <code>binning<\/code> in statistics. The term <code>binning<\/code> means summarizing data series into a group. A typical example is a statistic that states that of 20-29 year-olds 45% blah blah and of 30-39 year-olds only 28% blah blah. For 40-40 year-olds\u2026 The bins here are the 10-year age groups. The width of the bin can be freely chosen and the content of the bin is then a compilation of the values. In our case, we subdivide the durations of requests into individual bins and for each bin count how many requests there were in this group or this bin.<\/p>\n<p>There is a tool available for performing this <code>binning<\/code> process: <a href=\"https:\/\/github.com\/Apache-Labor\/labor\/blob\/master\/bin\/do-binning.rb\">do-binning.rb<\/a>.<\/p>\n<div class=\"sourceCode\" id=\"cb19\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb19-1\"><a href=\"#cb19-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">do-binning.rb<\/span> --label<\/span>\n<span id=\"cb19-2\"><a href=\"#cb19-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">688.0-3647748.6<\/span> 9221<\/span>\n<span id=\"cb19-3\"><a href=\"#cb19-3\" aria-hidden=\"true\"><\/a><span class=\"ex\">3647748.6-7294809.1<\/span>     180<\/span>\n<span id=\"cb19-4\"><a href=\"#cb19-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">7294809.1-10941869.6<\/span>    106<\/span>\n<span id=\"cb19-5\"><a href=\"#cb19-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">10941869.6-14588930.2<\/span>   57<\/span>\n<span id=\"cb19-6\"><a href=\"#cb19-6\" aria-hidden=\"true\"><\/a><span class=\"ex\">14588930.2-18235990.8<\/span>   65<\/span>\n<span id=\"cb19-7\"><a href=\"#cb19-7\" aria-hidden=\"true\"><\/a><span class=\"ex\">18235990.8-21883051.3<\/span>   51<\/span>\n<span id=\"cb19-8\"><a href=\"#cb19-8\" aria-hidden=\"true\"><\/a><span class=\"ex\">21883051.3-25530111.8<\/span>   47<\/span>\n<span id=\"cb19-9\"><a href=\"#cb19-9\" aria-hidden=\"true\"><\/a><span class=\"ex\">25530111.8-29177172.4<\/span>   32<\/span>\n<span id=\"cb19-10\"><a href=\"#cb19-10\" aria-hidden=\"true\"><\/a><span class=\"ex\">29177172.4-32824233.0<\/span>   175<\/span>\n<span id=\"cb19-11\"><a href=\"#cb19-11\" aria-hidden=\"true\"><\/a><span class=\"ex\">32824233.0-36471293.5<\/span>   20<\/span>\n<span id=\"cb19-12\"><a href=\"#cb19-12\" aria-hidden=\"true\"><\/a><span class=\"ex\">36471293.5-40118354.1<\/span>   22<\/span>\n<span id=\"cb19-13\"><a href=\"#cb19-13\" aria-hidden=\"true\"><\/a><span class=\"ex\">40118354.1-43765414.6<\/span>   10<\/span>\n<span id=\"cb19-14\"><a href=\"#cb19-14\" aria-hidden=\"true\"><\/a><span class=\"ex\">43765414.6-47412475.2<\/span>   5<\/span>\n<span id=\"cb19-15\"><a href=\"#cb19-15\" aria-hidden=\"true\"><\/a><span class=\"ex\">47412475.2-51059535.7<\/span>   2<\/span>\n<span id=\"cb19-16\"><a href=\"#cb19-16\" aria-hidden=\"true\"><\/a><span class=\"ex\">51059535.7-54706596.3<\/span>   1<\/span>\n<span id=\"cb19-17\"><a href=\"#cb19-17\" aria-hidden=\"true\"><\/a><span class=\"ex\">54706596.3-58353656.8<\/span>   1<\/span>\n<span id=\"cb19-18\"><a href=\"#cb19-18\" aria-hidden=\"true\"><\/a><span class=\"ex\">58353656.8-62000717.4<\/span>   2<\/span>\n<span id=\"cb19-19\"><a href=\"#cb19-19\" aria-hidden=\"true\"><\/a><span class=\"ex\">62000717.4-65647777.9<\/span>   2<\/span>\n<span id=\"cb19-20\"><a href=\"#cb19-20\" aria-hidden=\"true\"><\/a><span class=\"ex\">65647777.9-69294838.5<\/span>   0<\/span>\n<span id=\"cb19-21\"><a href=\"#cb19-21\" aria-hidden=\"true\"><\/a><span class=\"ex\">69294838.5-72941899.0<\/span>   0<\/span>\n<span id=\"cb19-22\"><a href=\"#cb19-22\" aria-hidden=\"true\"><\/a><span class=\"ex\">72941899.0-infinity<\/span>     1<\/span><\/code><\/pre><\/div>\n<p>In the first column we see the width of the bin, the lower and upper end, and next to it in the second column the number of requests in this bin. The bins were defined by the script itself and that\u2019s were the problem with this result lies. Everything is relatively random. Let\u2019s try it with cleanly defined bins and cut off at 2.5 seconds; everything else is an outlier anyway:<\/p>\n<div class=\"sourceCode\" id=\"cb20\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb20-1\"><a href=\"#cb20-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">do-binning.rb<\/span> --label -n 25 --min 0 --max 2500000.0<\/span>\n<span id=\"cb20-2\"><a href=\"#cb20-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">0.0-100000.0<\/span>    150<\/span>\n<span id=\"cb20-3\"><a href=\"#cb20-3\" aria-hidden=\"true\"><\/a><span class=\"ex\">100000.0-200000.0<\/span>       0<\/span>\n<span id=\"cb20-4\"><a href=\"#cb20-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">200000.0-300000.0<\/span>       0<\/span>\n<span id=\"cb20-5\"><a href=\"#cb20-5\" aria-hidden=\"true\"><\/a><span class=\"ex\">300000.0-400000.0<\/span>       0<\/span>\n<span id=\"cb20-6\"><a href=\"#cb20-6\" aria-hidden=\"true\"><\/a><span class=\"ex\">400000.0-500000.0<\/span>       14<\/span>\n<span id=\"cb20-7\"><a href=\"#cb20-7\" aria-hidden=\"true\"><\/a><span class=\"ex\">500000.0-600000.0<\/span>       54<\/span>\n<span id=\"cb20-8\"><a href=\"#cb20-8\" aria-hidden=\"true\"><\/a><span class=\"ex\">600000.0-700000.0<\/span>       188<\/span>\n<span id=\"cb20-9\"><a href=\"#cb20-9\" aria-hidden=\"true\"><\/a><span class=\"ex\">700000.0-800000.0<\/span>       367<\/span>\n<span id=\"cb20-10\"><a href=\"#cb20-10\" aria-hidden=\"true\"><\/a><span class=\"ex\">800000.0-900000.0<\/span>       1182<\/span>\n<span id=\"cb20-11\"><a href=\"#cb20-11\" aria-hidden=\"true\"><\/a><span class=\"ex\">900000.0-1000000.0<\/span>      1862<\/span>\n<span id=\"cb20-12\"><a href=\"#cb20-12\" aria-hidden=\"true\"><\/a><span class=\"ex\">1000000.0-1100000.0<\/span>     1423<\/span>\n<span id=\"cb20-13\"><a href=\"#cb20-13\" aria-hidden=\"true\"><\/a><span class=\"ex\">1100000.0-1200000.0<\/span>     1024<\/span>\n<span id=\"cb20-14\"><a href=\"#cb20-14\" aria-hidden=\"true\"><\/a><span class=\"ex\">1200000.0-1300000.0<\/span>     706<\/span>\n<span id=\"cb20-15\"><a href=\"#cb20-15\" aria-hidden=\"true\"><\/a><span class=\"ex\">1300000.0-1400000.0<\/span>     525<\/span>\n<span id=\"cb20-16\"><a href=\"#cb20-16\" aria-hidden=\"true\"><\/a><span class=\"ex\">1400000.0-1500000.0<\/span>     371<\/span>\n<span id=\"cb20-17\"><a href=\"#cb20-17\" aria-hidden=\"true\"><\/a><span class=\"ex\">1500000.0-1600000.0<\/span>     306<\/span>\n<span id=\"cb20-18\"><a href=\"#cb20-18\" aria-hidden=\"true\"><\/a><span class=\"ex\">1600000.0-1700000.0<\/span>     238<\/span>\n<span id=\"cb20-19\"><a href=\"#cb20-19\" aria-hidden=\"true\"><\/a><span class=\"ex\">1700000.0-1800000.0<\/span>     168<\/span>\n<span id=\"cb20-20\"><a href=\"#cb20-20\" aria-hidden=\"true\"><\/a><span class=\"ex\">1800000.0-1900000.0<\/span>     136<\/span>\n<span id=\"cb20-21\"><a href=\"#cb20-21\" aria-hidden=\"true\"><\/a><span class=\"ex\">1900000.0-2000000.0<\/span>     82<\/span>\n<span id=\"cb20-22\"><a href=\"#cb20-22\" aria-hidden=\"true\"><\/a><span class=\"ex\">2000000.0-2100000.0<\/span>     72<\/span>\n<span id=\"cb20-23\"><a href=\"#cb20-23\" aria-hidden=\"true\"><\/a><span class=\"ex\">2100000.0-2200000.0<\/span>     68<\/span>\n<span id=\"cb20-24\"><a href=\"#cb20-24\" aria-hidden=\"true\"><\/a><span class=\"ex\">2200000.0-2300000.0<\/span>     54<\/span>\n<span id=\"cb20-25\"><a href=\"#cb20-25\" aria-hidden=\"true\"><\/a><span class=\"ex\">2300000.0-2400000.0<\/span>     40<\/span>\n<span id=\"cb20-26\"><a href=\"#cb20-26\" aria-hidden=\"true\"><\/a><span class=\"ex\">2400000.0-2500000.0<\/span>     39<\/span><\/code><\/pre><\/div>\n<p>This looks a lot better. We feed this result into the graph script (and clarify right off that we don\u2019t want to have each value labeled); we saw how this works above.<\/p>\n<div class=\"sourceCode\" id=\"cb21\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb21-1\"><a href=\"#cb21-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">do-binning.rb<\/span> --label -n 25 --min 0 --max 2500000.0 <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb21-2\"><a href=\"#cb21-2\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> --xaxisticsmodulo 5\/3<\/span>\n<span id=\"cb21-3\"><a href=\"#cb21-3\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb21-4\"><a href=\"#cb21-4\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb21-5\"><a href=\"#cb21-5\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">2000<\/span> +++----+---+----+----+---+----+---+----+---+----+----+---+----+---+----+----+---+----+---+----+---+----+----+---+----+++<\/span>\n<span id=\"cb21-6\"><a href=\"#cb21-6\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span> <span class=\"ex\">+<\/span>    +   +    +    +   +    +   +    +   +    +    +   +    +   +    +    +   +    +   +    +   +    +  Col 1 ****** <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-7\"><a href=\"#cb21-7\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1800<\/span> ++                                       ******                                                                       ++<\/span>\n<span id=\"cb21-8\"><a href=\"#cb21-8\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                        <span class=\"ex\">*<\/span>    *                                                                        <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-9\"><a href=\"#cb21-9\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                        <span class=\"ex\">*<\/span>    *                                                                        <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-10\"><a href=\"#cb21-10\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1600<\/span> ++                                       *    *                                                                       ++<\/span>\n<span id=\"cb21-11\"><a href=\"#cb21-11\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                        <span class=\"ex\">*<\/span>    *                                                                        <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-12\"><a href=\"#cb21-12\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1400<\/span> ++                                       *    *****                                                                   ++<\/span>\n<span id=\"cb21-13\"><a href=\"#cb21-13\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                        <span class=\"ex\">*<\/span>    *   *                                                                    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-14\"><a href=\"#cb21-14\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1200<\/span> ++                                   *****    *   *                                                                   ++<\/span>\n<span id=\"cb21-15\"><a href=\"#cb21-15\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                    <span class=\"ex\">*<\/span>   *    *   *                                                                    <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-16\"><a href=\"#cb21-16\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1000<\/span> ++                                   *   *    *   ******                                                              ++<\/span>\n<span id=\"cb21-17\"><a href=\"#cb21-17\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                    <span class=\"ex\">*<\/span>   *    *   *    *                                                               <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-18\"><a href=\"#cb21-18\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                    <span class=\"ex\">*<\/span>   *    *   *    *                                                               <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-19\"><a href=\"#cb21-19\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">800<\/span> ++                                   *   *    *   *    *                                                              ++<\/span>\n<span id=\"cb21-20\"><a href=\"#cb21-20\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                    <span class=\"ex\">*<\/span>   *    *   *    ******                                                          <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-21\"><a href=\"#cb21-21\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">600<\/span> ++                                   *   *    *   *    *    *                                                         ++<\/span>\n<span id=\"cb21-22\"><a href=\"#cb21-22\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                    <span class=\"ex\">*<\/span>   *    *   *    *    *****                                                      <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-23\"><a href=\"#cb21-23\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">400<\/span> ++                                   *   *    *   *    *    *   *                                                     ++<\/span>\n<span id=\"cb21-24\"><a href=\"#cb21-24\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                               <span class=\"ex\">******<\/span>   *    *   *    *    *   **********                                             <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-25\"><a href=\"#cb21-25\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                               <span class=\"ex\">*<\/span>    *   *    *   *    *    *   *    *   ******                                        <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-26\"><a href=\"#cb21-26\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">200<\/span> ******                     ******    *   *    *   *    *    *   *    *   *    **********                              ++<\/span>\n<span id=\"cb21-27\"><a href=\"#cb21-27\" aria-hidden=\"true\"><\/a>       <span class=\"ex\">*<\/span> +  * +   +    +    + *****  + * +  * + * +  * + *  + * +  * + * +  * + *  + * + *  + *******************  +   +    + <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb21-28\"><a href=\"#cb21-28\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">0<\/span> ******-+---+----+-*************************************************************************************************--+++<\/span>\n<span id=\"cb21-29\"><a href=\"#cb21-29\" aria-hidden=\"true\"><\/a>        <span class=\"ex\">0.0<\/span>                 500000.0               1000000.0              1500000.0              2000000.0              2500000.0<\/span>\n<span id=\"cb21-30\"><a href=\"#cb21-30\" aria-hidden=\"true\"><\/a>         <span class=\"ex\">-<\/span>                      -                      -                      -                      -                      -<\/span>\n<span id=\"cb21-31\"><a href=\"#cb21-31\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">100000.0<\/span>               600000.0               1100000.0              1600000.0              2100000.0              2500000.0<\/span><\/code><\/pre><\/div>\n<p>This works and gives us a good view of the distribution of the durations of the different requests. We apparently have a peak at approximately one second and then comes a leveling out afterwards. What may be of interest how the small cluster of very fast requests on the left looks like. Let\u2019s do something new: Can we have GET and POST requests placed side-by-side and do we see a difference?<\/p>\n<div class=\"sourceCode\" id=\"cb22\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb22-1\"><a href=\"#cb22-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"fu\">grep<\/span> GET <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">do-binning.rb<\/span> --label -n 25 <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb22-2\"><a href=\"#cb22-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">--min<\/span> 0 --max 2500000.0 <span class=\"op\">&gt;<\/span> \/tmp\/tmp.get<\/span>\n<span id=\"cb22-3\"><a href=\"#cb22-3\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"fu\">cat<\/span> tutorial-8-example-access.log <span class=\"kw\">|<\/span> <span class=\"fu\">grep<\/span> POST <span class=\"kw\">|<\/span> <span class=\"ex\">alduration<\/span> <span class=\"kw\">|<\/span> <span class=\"ex\">do-binning.rb<\/span> --label -n 25 <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb22-4\"><a href=\"#cb22-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">--min<\/span> 0 --max 2500000.0 <span class=\"op\">&gt;<\/span> \/tmp\/tmp.post<\/span>\n<span id=\"cb22-5\"><a href=\"#cb22-5\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"ex\">paste<\/span>  \/tmp\/tmp.get \/tmp\/tmp.post <span class=\"kw\">|<\/span> <span class=\"fu\">awk<\/span> <span class=\"st\">&#39;{ print $1 &quot;\\t&quot;  $2 &quot; &quot; $4 }&#39;<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb22-6\"><a href=\"#cb22-6\" aria-hidden=\"true\"><\/a><span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> -l -2 -c <span class=\"st\">&quot;GET;POST&quot;<\/span> -x 5\/3 -w 130<\/span>\n<span id=\"cb22-7\"><a href=\"#cb22-7\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb22-8\"><a href=\"#cb22-8\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb22-9\"><a href=\"#cb22-9\" aria-hidden=\"true\"><\/a><\/span>\n<span id=\"cb22-10\"><a href=\"#cb22-10\" aria-hidden=\"true\"><\/a>       <span class=\"ex\">+---+----+---+---+----+---+---+----+---+---+----+---+---+----+---+----+---+---+----+---+---+----+---+---+----+--++<\/span> 160<\/span>\n<span id=\"cb22-11\"><a href=\"#cb22-11\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>   <span class=\"ex\">+<\/span>    +   +   +    +   +   +    +   +   +    +   +   +    +   +    +   +   +    +   +   +    +   + GET ****** +<\/span>\n<span id=\"cb22-12\"><a href=\"#cb22-12\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1800<\/span> ++                                         *    #                                                    POST ######++<\/span>\n<span id=\"cb22-13\"><a href=\"#cb22-13\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                         <span class=\"ex\">*<\/span> *  # #                                                              ++ 140<\/span>\n<span id=\"cb22-14\"><a href=\"#cb22-14\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1600<\/span> ++                                        *  * #  #                                                             ++<\/span>\n<span id=\"cb22-15\"><a href=\"#cb22-15\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                        <span class=\"ex\">*<\/span>    *    #                                                             <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb22-16\"><a href=\"#cb22-16\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1400<\/span> ++                                       *   #*     #                                                           ++ 120<\/span>\n<span id=\"cb22-17\"><a href=\"#cb22-17\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                       <span class=\"ex\">*<\/span>   #  *     #                                                           <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb22-18\"><a href=\"#cb22-18\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                       <span class=\"ex\">*<\/span>   #   *    #                                                           <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb22-19\"><a href=\"#cb22-19\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1200<\/span> ++                                     *   #     *    #                                                         ++ 100<\/span>\n<span id=\"cb22-20\"><a href=\"#cb22-20\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                      <span class=\"ex\">*<\/span>   #      *   #                                                          <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb22-21\"><a href=\"#cb22-21\" aria-hidden=\"true\"><\/a>  <span class=\"ex\">1000<\/span> ++                                    *   #        *   #                                                        ++<\/span>\n<span id=\"cb22-22\"><a href=\"#cb22-22\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                     <span class=\"ex\">*<\/span>   #         ** #                                                        ++ 80<\/span>\n<span id=\"cb22-23\"><a href=\"#cb22-23\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                    <span class=\"ex\">*<\/span>    #           **#                                                        <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb22-24\"><a href=\"#cb22-24\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">800<\/span> ++                                   *   #               #                                                      ++ 60<\/span>\n<span id=\"cb22-25\"><a href=\"#cb22-25\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                    <span class=\"ex\">*<\/span>   #              ****                                                     <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb22-26\"><a href=\"#cb22-26\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">600<\/span> ++                                  *    #                 #*                                                   ++<\/span>\n<span id=\"cb22-27\"><a href=\"#cb22-27\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                   <span class=\"ex\">*<\/span>   #                   #***                                                ++ 40<\/span>\n<span id=\"cb22-28\"><a href=\"#cb22-28\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">400<\/span> ++                                 *    #                    ###*                                               ++<\/span>\n<span id=\"cb22-29\"><a href=\"#cb22-29\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                                 <span class=\"ex\">**<\/span>    #                        *****  ######                                   <span class=\"kw\">|<\/span><\/span>\n<span id=\"cb22-30\"><a href=\"#cb22-30\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>                               <span class=\"ex\">**<\/span>     #                              ****    ####                              ++ 20<\/span>\n<span id=\"cb22-31\"><a href=\"#cb22-31\" aria-hidden=\"true\"><\/a>   <span class=\"ex\">200<\/span> ++  ****                    ****  ######                                  *************                         ++<\/span>\n<span id=\"cb22-32\"><a href=\"#cb22-32\" aria-hidden=\"true\"><\/a>       <span class=\"kw\">|<\/span>   <span class=\"ex\">+<\/span>   *+   +   +    + ****  + ## +   +   +    +   +   +    +   +    +   +   +    ####*****************+    +   +<\/span>\n<span id=\"cb22-33\"><a href=\"#cb22-33\" aria-hidden=\"true\"><\/a>     <span class=\"ex\">0<\/span> ++--#####***************########---+---+---+----+---+---+----+---+----+---+---+----+---+---+----+---+---********** 0<\/span>\n<span id=\"cb22-34\"><a href=\"#cb22-34\" aria-hidden=\"true\"><\/a>          <span class=\"ex\">0.0<\/span>                500000.0              1000000.0             1500000.0            2000000.0             2500000.0<\/span>\n<span id=\"cb22-35\"><a href=\"#cb22-35\" aria-hidden=\"true\"><\/a>           <span class=\"ex\">-<\/span>                     -                     -                     -                    -                     -<\/span>\n<span id=\"cb22-36\"><a href=\"#cb22-36\" aria-hidden=\"true\"><\/a>       <span class=\"ex\">100000.0<\/span>              600000.0              1100000.0             1600000.0            2100000.0             2500000.0<\/span><\/code><\/pre><\/div>\n<p>We are now working with two separate data files, which we separate via the <code>paste<\/code> Unix command. Afterwards we use <code>awk<\/code> and tab to get the labels into the data and to remove the label repeated in the third column of data. The display of two values no longer works in blocking mode, which is why we are again relying on lines. The two lines are drawn over each over on differing scales. This enables a good comparison. Less surprisingly, POST requests take a bit longer. What is surprising is that they last so little longer that the GET requests.<\/p>\n<h3 id=\"step-6-goodie-output-at-different-widths-and-as-a-png\">Step 6 (Goodie): Output at different widths and as a PNG<\/h3>\n<p><code>arbigraph<\/code> adapts to the width of the terminal for output. If it should be narrower, this can be controlled via the <code>--width<\/code> option. Similarly, the height can be adjusted via <code>--height<\/code>. Export as a PNG image is also included in the script. Export is still rather rudimentary, but the resulting images may be good enough to use in a report.<\/p>\n<div class=\"sourceCode\" id=\"cb23\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb23-1\"><a href=\"#cb23-1\" aria-hidden=\"true\"><\/a>$<span class=\"op\">&gt;<\/span> <span class=\"ex\">paste<\/span>  \/tmp\/tmp.get \/tmp\/tmp.post <span class=\"kw\">|<\/span> <span class=\"fu\">awk<\/span> <span class=\"st\">&#39;{ print  $2 &quot; &quot; $4 }&#39;<\/span>  <span class=\"kw\">|<\/span> <span class=\"ex\">arbigraph<\/span> -l -2 -c <span class=\"st\">&quot;GET;POST&quot;<\/span> <span class=\"kw\">\\<\/span><\/span>\n<span id=\"cb23-2\"><a href=\"#cb23-2\" aria-hidden=\"true\"><\/a><span class=\"ex\">-t<\/span> <span class=\"st\">&quot;Duration of Requests:\\n GET vs. POST&quot;<\/span> --output \/tmp\/duration-get-vs-post.png<\/span>\n<span id=\"cb23-3\"><a href=\"#cb23-3\" aria-hidden=\"true\"><\/a><span class=\"ex\">...<\/span><\/span>\n<span id=\"cb23-4\"><a href=\"#cb23-4\" aria-hidden=\"true\"><\/a><span class=\"ex\">Plot<\/span> written to file \/tmp\/duration-get-vs-post.png.<\/span><\/code><\/pre><\/div>\n<figure>\n<img decoding=\"async\" src=\"https:\/\/www.netnea.com\/files\/duration-get-vs-post.png\" alt=\"\" \/><figcaption>Graph: Gnuplot with PNG Terminal<\/figcaption>\n<\/figure>\n<h3 id=\"references\">References<\/h3>\n<ul>\n<li><a href=\"http:\/\/www.gnuplot.info\">gnuplot<\/a><\/li>\n<li><a href=\"https:\/\/raw.githubusercontent.com\/Apache-Labor\/labor\/master\/bin\/arbigraph\">arbigraph<\/a><\/li>\n<li><a href=\"https:\/\/raw.githubusercontent.com\/Apache-Labor\/labor\/master\/bin\/do-binning.rb\">do-binning.rb<\/a><\/li>\n<\/ul>\n<h3 id=\"license-copying-further-use\">License \/ Copying \/ Further use<\/h3>\n<p><a rel=\"license\" href=\"http:\/\/creativecommons.org\/licenses\/by-nc-sa\/4.0\/\"><img decoding=\"async\" alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https:\/\/i.creativecommons.org\/l\/by-nc-sa\/4.0\/80x15.png\" \/><\/a><br \/>This work is licensed under a <a rel=\"license\" href=\"http:\/\/creativecommons.org\/licenses\/by-nc-sa\/4.0\/\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License<\/a>.<\/p>\n<h5 id=\"changelog\">Changelog<\/h5>\n<ul>\n<li>2018-04-13: Update title format (markdown); rewordings (Simon Studer)<\/li>\n<li>2017-12-17: Fixed several links<\/li>\n<li>2016-10-10: Fixing small issues<\/li>\n<li>2016-07-15: Apache 2.4.20 -&gt; 2.4.23<\/li>\n<li>2016-07-15: Apache 2.4.20 -&gt; 2.4.23<\/li>\n<li>2016-04-18: Fixing small issues<\/li>\n<li>2016-03-10: Translated to English<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Visualizing Apache and ModSecurity Log Files What are we doing? We are interpreting the log files visually. Why are we doing this? In the preceding tutorials we have customized the Apache log format and performed a variety of statistical analyses. But we have yet to graphically display the numbers obtained. The visualization of data does [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-954","page","type-page","status-publish","czr-hentry"],"_links":{"self":[{"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/pages\/954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/comments?post=954"}],"version-history":[{"count":3,"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/pages\/954\/revisions"}],"predecessor-version":[{"id":2066,"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/pages\/954\/revisions\/2066"}],"wp:attachment":[{"href":"https:\/\/www.netnea.com\/cms\/wp-json\/wp\/v2\/media?parent=954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}