andrey-shamis/logbook

LogBook


README

LogBook is a tool which allows easy store logs and then show them on the web. For upload can be used curl with post log file.

Settings

Apache config

Need to change

sudo vi /etc/php/7.2/apache2/php.ini

Optional sudo vi /etc/php/7.2/cli/php.ini

  • post_max_size = 200M
  • upload_max_filesize = 100M
  • max_upload_file_size
  • max_execution_time = 4096
  • max_input_time = 160
  • memory_limit = 4096M
sudo a2enmod rewrite
sudo systemctl restart apache2

Add this to your /etc/apache/sites-avaliable/site.name.conf

<Directory /var/www/logbook/public >
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                Allow from All
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ index.php [QSA,L]
        </IfModule>
        </Directory>

MySQL

A larger buffer pool requires less disk I/O to access the same table data more than once. On a dedicated database server, you might set the buffer pool size to 80% of the machine's physical memory size. Be aware of the following potential issues when configuring buffer pool size, and be prepared to scale back the size of the buffer pool if necessary.

innodb_buffer_pool_size     = 16G

#This sets the size of the InnoDB’s redo log files which, in MySQL world, are often called simply transaction logs. 
#And right until MySQL 5.6.8 the default value of innodb_log_file_size=5M was the single biggest InnoDB 
#performance killer. Starting with MySQL 5.6.8, the default was raised to 48M which, for many intensive systems, 
#is still way too low.
#As a rule of thumb you should set this to accommodate ~1-2h worth of writes and if you’re in a hurry, 
#having this set to 1-2G will give you pretty good performance with pretty much any workload.
innodb_log_file_size = 1G

# For MyISAM tables
tmpdir                      = /var/mysqltmp

# For MyISAM tables
mkdir /var/mysqltmp
id -u mysql
id -g mysql

Edit /etc/fstab

tmpfs           /var/mysqltmp                   tmpfs rw,gid=125,uid=117,size=16G,nr_inodes=10k,mode=0700 0 0

Set timezone

sudo dpkg-reconfigure tzdata

LDAP (optional)

Requirements

PHP>=7.2

  • sudo apt install php7.2-ldap php7.2-zip php7.2-xml php7.2-mbstring php7.2-sqlite3

Template

Release

Releases and pre-releases can be found here https://github.com/AndreyShamis/lbook/releases

Code review

For code review used https://review.gerrithub.io Used jenkins server

Continuous Integration

Build Status

Author

Andrey Shamis lolnik@gmail.com @AndreyShamis

PSR-12

https://github.com/php-fig/fig-standards/blob/master/proposed/extended-coding-style-guide.md

<?php

declare(strict_types=1);

namespace Vendor\Package;

use Vendor\Package\{ClassA as A, ClassB, ClassC as C};
use Vendor\Package\SomeNamespace\ClassD as D;

use function Vendor\Package\{functionA, functionB, functionC};
use const Vendor\Package\{ConstantA, ConstantB, ConstantC};

class Foo extends Bar implements FooInterface
{
    public function sampleFunction(int $a, int $b = null): array
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }

    final public static function bar()
    {
        // method body
    }
}

Internal How To

Install and enable APCu

sudo apt install php7.2-dev
pecl install apcu

The edit /etc/php/7.2/apache2/php.ini add extension=apcu.so

Change permissions

sudo chown -R www-data:www-data /var/www/lbook* ; sudo chmod -R g=u /var/www/lbook*

Change MySql Password on new machine

Source of manual

$ sudo mysql_secure_installation
$ sudo service mysql stop

$ sudo mkdir -p /var/run/mysqld
$ sudo chown mysql:mysql /var/run/mysqld

$ sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

$ mysql -u root

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> USE mysql; 
Database changed
mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASS") WHERE User='root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 1

mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> quit                                                                                                                                                                                    


$ sudo pkill mysqld                                                                                                                                                        

$ sudo service mysql start

Upload file

curl --noproxy "127.0.0.1" --max-time 120 --form SETUP_NAME=DELL-KUBUNTU --form 'UPTIME_START=1.73 2.68' --form 'UPTIME_END=3.73 4.68' --form NIC=TEST --form DUTIP=172.17.0.1 --form PlatformName=Platf --form k_ver= --form Kernel=4.4 --form testCaseName=sa --form testSetName=sa --form build=Build --form testCount=2  --form file=@results-03-network_WiFi_Perf.ht40/debug/autoserv.DEBUG --form setup='SUPER SETUP3' --form token=144224564212603434  http://127.0.0.1:8080/upload/new_cli

Disable file upload

# in .env
DISABLE_TEST_UPLOAD=true

session storage In mysql

CREATE TABLE `lbk_customer_session` (
    `guid` VARBINARY(128) NOT NULL PRIMARY KEY,
    `sess_data` BLOB NOT NULL,
    `sess_lifetime` INTEGER UNSIGNED NOT NULL,
    `sess_time` INTEGER UNSIGNED NOT NULL,
    INDEX `sessions_sess_lifetime_idx` (`sess_lifetime`)
) COLLATE utf8mb4_bin, ENGINE = InnoDB;

crontab

Run crontab -e Add next lines:

*/10 * * * *    wget --no-proxy -O- http://logbook.com/bot/delete_cycles >> /tmp/bot_cycle_delete.log
*/2  * * * *    wget --no-proxy -O- http://logbook.com/bot/find_cycles_for_delete >> /tmp/bot_find_cycles_for_delete.>
*/3  * * * *    wget --no-proxy -O- http://logbook.com/bot/cycle_event_delete >> /tmp/bot_cycle_event_delete.log
*/40 * * * *    wget --no-proxy -O- http://logbook.com/bot/setups/clean > /dev/null
*/3 * * * *     wget --no-proxy -O- http://logbook.com/bot/setups/count_cycles > /dev/null
*/13 * * * *    wget --no-proxy -O- http://logbook.com/reports/auto/create > /dev/null
*/1 * * * *     wget --no-proxy -O- http://logbook.com/api/send_emails > /dev/null
* */6 * * *     wget --no-proxy -O- http://logbook.com//failure/maintain > /dev/null
*/3 * * * *     sleep 15; wget --no-proxy -O- http://logbook.com/api/cycle/auto/cycle_close   > /dev/null 2>&1
*/2  * * * *    sleep 15; wget --no-proxy -O- http://logbook.com/bot/cycle_event_delete >> /tmp/bot_cycle_event_delet>
* */12 * * *    sleep 15; wget --no-proxy -O- http://logbook.com/build/clean_not_used   > /dev/null 2>&1
* */6 * * *     sleep 15; wget --no-proxy -O- http://logbook.com/bot/setups/clean  >> /tmp/logbook.setup.clean_not_us>
3 */12 * * *    sleep 15; wget --no-proxy -O- http://logbook.com/suites/calculate/3  > /dev/null 2>&1
2 */6 * * *     sleep 15; wget --no-proxy -O- http://logbook.com/suites/calculate/2  > /dev/null 2>&1
1 */2 * * *     sleep 15; wget --no-proxy -O- http://logbook.com/suites/calculate/1  > /dev/null 2>&1
* */20 * * *    sleep 15; wget --no-proxy -O- http://logbook.com/suites/close_unclosed/5  > /dev/null 2>&1
4 */3 * * *     sleep 15; wget --no-proxy -O- http://logbook.com/suites/close_unclosed/3  > /dev/null 2>&1

API

Use API to search cycles

curl --header "Content-Type: application/json" --request POST --data '{"cycle_name":"pass", "fromDate": "03/12/2013"}'  http://logbook.com/cycle/searchjson
curl --header "Content-Type: application/json" --request POST --data '{"cycle_name":"pass", "fromDate": "03/12/2013", "limit": "2000", "setups": [1958, 1957] }'  http://logbook.com/cycle/searchjson

Available parameter

cycle_name fromDate toDate limit setups

Multi Export

http://logbook.com/cycle/multiexport?cycles=624144;625572;625541

Export Single test metadata

http://logbook.com/test/export/105443579

Search setups

curl --header "Content-Type: application/json" --request POST --data '{"setup_name":"app"}' http://logbook.com/setup/searchjson

Tweak your Swap Settings

https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

cat /proc/sys/vm/swappiness

The swappiness parameter configures how often your system swaps data out of RAM to the swap space. This is a value between 0 and 100 that represents a percentage.

With values close to zero, the kernel will not swap data to the disk unless absolutely necessary. Remember, interactions with the swap file are “expensive” in that they take a lot longer than interactions with RAM and they can cause a significant reduction in performance. Telling the system not to rely on the swap much will generally make your system faster.

Values that are closer to 100 will try to put more data into swap in an effort to keep more RAM space free. Depending on your applications’ memory profile or what you are using your server for, this might be better in some cases.