Monitoring Squid Proxy traffic using ELK Stack (Elasticsearch/Logstash/Kibana)

This article will explain how to send Squid log access queries to elasticsearch, then we will use Kibana to build a cool & clean dashboard.

Run squid

     - You can follow our instructions to install and run squid from our                                    repository in Github

    Make sure you do the following:

         -      Your running os is Ubuntu

         -      Run Squid 5

         -      Add  self-signed certificate to client browser

  • Reconfigure squid :

       -  Run this command to add new line to configuration file:

       docker exec -d {container_name} sh -c 'echo "access_log tcp://<Logstash-server>:1025" >>            /etc/squid/squid.conf'

      Replace <Logstash-server> with the ip of Logstash host in this case it is  

   For example in squid5:

   docker exec -d squid5_proxy sh -c 'echo "access_log tcp://" >> /etc/squid/squid.conf"


    -  Reconfigure squid with new configuration with this command:

             docker exec -d {container_name} } sh -c 'squid -k reconfigure'

      for example in squid5:

        docker exec -d squid5_proxy sh -c 'squid -k reconfigure'

     The particularity is we forward access logs to a TCP server located at

      logstach on port 1025.

Setup ELK Stack


  • Ubuntu Server with 20.04 LTS

  • JDK

  • 2 CPU and 4 GB RAM

  • Open Ports 9200, 5601, 5044

  Install JDK on Ubuntu

    Run this command:

      sudo apt-get install openjdk-11-jdk wget apt-transport-https curl gnupg2 -y


  1-   Download elasticsearch

          -   open new terminal

         - run these commands:  


                                tar -xzf elasticsearch-8.4.2-linux-x86_64.tar.gz

     cd elasticsearch-8.4.2/


2-   Configure elasticsearch

Inside config directory edit elasticsearch.yml file with this configuration:

     -    Go to Network section and uncommnet and replace your   localhost
       -      Add the below line in Discovery section also
                  discovery.type: single-node
-    Modify this setting with false or add it if not exists
        # Enable security features   

3-   Run elasticsearch 

-      Run this command to run elasticsearch inside elasticsearch directory


Note: keep the current terminal open while elasticsearch are running 

  -      Enter below command in new terminal to check elasticsearch is running by            sending HTTP request:

      curl -X GET "localhost:9200"
           "name" : "mahmoud-virtual-machine",
           "cluster_name" : "elasticsearch", 
          "cluster_uuid" : "Ezvb_-4ITeGz-g_SW9sHqQ",
          "version" : {
          "number" : "8.4.1",
          "build_flavor" : "default",
          "build_type" : "tar",
          "build_hash" : "2bd229c8e56650b42e40992322a76e7914258f0c",
          "build_date" : "2022-08-26T12:11:43.232597118Z",
          "build_snapshot" : false,
          " lucene_version" : "9.3.0",
          "minimum_wire_compatibility_version" : "7.17.0",
          "minimum_index_compatibility_version" : "7.0.0"
          "tagline" : "You Know, for Search"


1-   Download Kibana

             -   open new terminal

            - run these commands:  

       curl -O
      tar -xzf kibana-8.4.2-linux-x86_64.tar.gz
      cd kibana-8.4.2/


2-   Configure Kkibana

Inside config directory edit kibana.yml file with this configuration

              Uncomment the below lines
                   server.port: 5601

3-   Run Kibana

-      Run this command to start kibana:


     Note: keep the current terminal open while kibana are running 

 -      Enter this URL http://localhost:5601 in your web browser to open kibana              interface.


1-   Download logstash

             -   open new terminal

            - run these commands:

          curl -O
          tar -xzf logstash-8.4.2-linux-x86_64.tar.gz
          cd logstash-8.4.2/

2-    Configure Logstash With squid Logs

  Download this logstash.conf  => 

you can edit elasticsearch host and index name, but you can keep the default values as is.

3-   Run Logstash

·         Run this command to start  Logstash

       sudo bin/logstash -f <logstash.conf path>

 Replace <logstash.conf path> with the absolute path to logstash.conf

Note: keep the current terminal open while logstash are running 

Create kibana dashboard

  •   Open kibana on your web browser    example: localhost:5601

  • create a data view of logs index 

                    -  Open the main menu, then click Stack Management > Data Views.
                   -  Click Create data view.
                   -  Start typing in the name field - the name in logstash.conf file- , and  kibana looks                                    for the names of indices, data streams, and aliases that   match your input.
  •   In left bar under Analytics click to dashboard then create dashboard.

  •   Select squid index that you created then create any visualization     dashboard that you need

More information about create kibana dashboards: Create your first dashboard

Example : create Pie chart of http methods

  •   On left bar under available field select http_method.keyword (drag it and     drop in the center)

  •   From Visualization type select Pie

    Result view 


You can customize the dashboard as you need with many Visualization types like bar, table, line …etc

in News
How to configure Squid Proxy with ICAP