<p dir="ltr">I haven't done any actual benchmarks for the resource usage, however as an admin I would rather not have numerous processes for a single data channel that needs to be parsed and split.</p>
<p dir="ltr">My apologies for sort of hijacking this thread with a cPanel integration. It's just so widely used, that I'm sure others here have had the need or thought at some point and figured I would share my findings. As cPanel servers are known to house hundreds of domains, per domain varnishncsa simply isn't an option, which is why I chose to piggyback on splitlogs as it's already a supported option of theirs.<br>
</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Nov 13, 2016 17:44, "Guillaume Quintard" <<a href="mailto:guillaume@varnish-software.com">guillaume@varnish-software.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Is the resources argument that compelling? I find it cleaner to have one ncsa per domain, plus the ncsas will read from memory, which is super fast.</p>
<p dir="ltr">Sure you can then split logs afterwards using awk or whatever, but that's adding an extra layer and serializing a process that doesn't need to be.</p>
<p dir="ltr">But I'm not an admin, so I may be off.</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Nov 13, 2016 16:27, "Andrei" <<a href="mailto:lagged@gmail.com" target="_blank">lagged@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>By not using splitlogs or an intermediary script, you will be forced to run multiple instances of varnishncsa, which isn't optimal if you host multiple domains. The more traffic/domains you have, the more resources you will consume on parsing the same data across multiple channels. Yes, varnishncsa supports VSL, however I think your approach is a bit off (no offense). As in, you need to shift the log writing process away from varnishncsa. By doing so, you only have one instance of varnishncsa using resources to gather the data, which is then fed to a parser that handles the per domain log splits and writes. That's where 'splitlogs' came into play.</div><div><br></div><div>As your question does raise some interest in the cPanel community (myself and Miguel González on this list for example), I threw together a quick Perl script that will in short, pipe and parse data between varnishncsa and the splitlogs binary for cache hits. This lets splitlogs handle the queued log writes which are later parsed for cPanel bandwidth usage and graphs, webalizer, awstats, logaholic, etc - <a href="https://github.com/AndreiG6/vscp" target="_blank">https://github.com/AndreiG6/<wbr>vscp</a></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 13, 2016 at 12:18 PM, Admin Beckspaced <span dir="ltr"><<a href="mailto:admin@beckspaced.com" target="_blank">admin@beckspaced.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Same Hello here ;)<br>
<br>
did have a more in depth look in the manual and figured out that varnishncsa does support VSL query.<br>
so someone could filter on the Request Header and Host<br>
<br>
varnishncsa -q "ReqHeader ~ '^Host: .*<a href="http://example.com" rel="noreferrer" target="_blank">example.com</a>'"<br>
<br>
which would produce a log for a specific domain only<br>
<br>
it then would need multiple varnishncsa instances for logging per domain, which I found here:<br>
<br>
<a href="https://kevops.com/2015/11/varnish-logging-per-host-with-init-script/" rel="noreferrer" target="_blank">https://kevops.com/2015/11/var<wbr>nish-logging-per-host-with-ini<wbr>t-script/</a><br>
<br>
I use varnish version 5 and then there would be no need for splitlog and the logs would be created directly.<br>
<br>
please correct me if I'm wrong?<br>
<br>
thanks for your time & help<br>
Becki<br>
<br>
<br>
Am 12.11.2016 um 17:05 schrieb Andrei:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello again,<br>
<br>
My apologies for not explaining my thoughts better earlier then. Afaik,<br>
varnishncsa does not have a native method to split output based on<br>
different parameters. The method I was thinking of was based on piping<br>
varnishncsa output through splitlogs (or similar) for the log processing<br>
and writeouts. Since replying earlier, I've got this working on a cPanel<br>
server with piped logging enabled for Apache using the following two for<br>
example (X-Port is a custom header set in vcl_recv related to SSL<br>
offloading, but you can use a static value or similar custom header):<br>
<br>
varnishncsa -F "%{HOST}i:%{X-Port}i %h %l %u %t \"%m %U%q %H\" %s %b<br>
\"%{Referer}i\" \"%{User-agent}i\""|sed -e<br>
's#^www\.##g'|/usr/local/cpane<wbr>l/bin/splitlogs --main=`hostname`<br>
--mainout=/usr/local/apache/lo<wbr>gs/access_log<br>
varnishncsa -F "%{HOST}i %{%s}t %b ."|sed -e<br>
's#^www\.##g'|/usr/local/cpane<wbr>l/bin/splitlogs --main=`hostname`<br>
--suffix=-bytes_log<br>
<br>
The above pipes the requests to the splitlogs binary which queues then<br>
writes to separate logs per domain, that are later processed by the<br>
cPanel log stats apps. Either way, I believe you need an intermediary<br>
script to queue and write the log entries per domain. While looking into<br>
this process, I ran across this little tidbit which you may find of use<br>
<a href="https://gist.github.com/garlandkr/4954272" rel="noreferrer" target="_blank">https://gist.github.com/garlan<wbr>dkr/4954272</a> for logstash style output.<br>
<br>
<br>
</blockquote><div class="m_2625610779775901870m_-2897532803232239161HOEnZb"><div class="m_2625610779775901870m_-2897532803232239161h5">
<br>
<br>
______________________________<wbr>_________________<br>
varnish-misc mailing list<br>
<a href="mailto:varnish-misc@varnish-cache.org" target="_blank">varnish-misc@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/<wbr>lists/mailman/listinfo/varnish<wbr>-misc</a><br>
</div></div></blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
varnish-misc mailing list<br>
<a href="mailto:varnish-misc@varnish-cache.org" target="_blank">varnish-misc@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/<wbr>lists/mailman/listinfo/varnish<wbr>-misc</a><br></blockquote></div></div>
</blockquote></div></div>