High-performance log search engine.

Overview

NOTE: This project is under development, please do not depend on it yet as things may break.

MinSQL

MinSQL is a log search engine designed with simplicity in mind to the extent that no SDK is needed to interact with it, most programming languages and tools have some form of http request capability (ie: curl) and that's all you need to interact with MinSQL.

To build

docker build . -t minio/minsql
docker run --rm minio/minsql --help

OR

make
./minsql --help

Running the project

An instance of MinIO is needed as the storage engine for MinSQL. To keep things easier we have a docker-compose example for MinIO and MinSQL.

To run the project you need to provide the access details for a Meta Bucket to store the shared configuration between multiple MinSQL instances, the location and access to it should be configured via environment variables when starting MinSQL .

Binary:
export MINSQL_METABUCKET_NAME=minsql-meta
export MINSQL_METABUCKET_ENDPOINT=http://localhost:9000
export MINSQL_METABUCKET_ACCESS_KEY=minio
export MINSQL_METABUCKET_SECRET_KEY=minio123
export MINSQL_ROOT_ACCESS_KEY=minsqlaccesskeyx
export MINSQL_ROOT_SECRET_KEY=minsqlsecretkeypleasechangexxxx
./minsql

Then go to http://127.0.0.1:9999/ui/ and login with the provided MINSQL_ROOT_ACCESS_KEY and MINSQL_ROOT_SECRET_KEY.

Docker

Create the compose file

cat > docker-compose.yml <<EOF
version: '2'

services:
 minio-engine:
  image: minio/minio
  volumes:
   - data:/data
  environment:
   MINIO_ACCESS_KEY: minio
   MINIO_SECRET_KEY: minio123
  command: server /data
 mc:
  image: minio/mc
  depends_on:
   - minio
  entrypoint: >
    /bin/sh -c "
    echo /usr/bin/mc config host a http://minio-engine:9000 minio minio123;
    /usr/bin/mc mb a/minsql-meta;
    "
 minsql:
  image: minio/minsql
  depends_on:
   - minio
   - mc
  ports:
   - "9999:9999"
  environment:
   MINSQL_METABUCKET_NAME: minsql-meta
   MINSQL_METABUCKET_ENDPOINT: http://minio-engine:9000
   MINSQL_ACCESS_KEY: minio
   MINSQL_SECRET_KEY: minio123
   MINSQL_ROOT_ACCESS_KEY: minsqlaccesskeyx
   MINSQL_ROOT_SECRET_KEY: minsqlsecretkeypleasechangexxxx

volumes:
  data:
EOF
docker-compose up

Environment variables

Environment Description
MINSQL_METABUCKET_NAME Name of the meta bucket
MINSQL_METABUCKET_ENDPOINT Name of the endpoint, ex: http://localhost:9000
MINSQL_METABUCKET_ACCESS_KEY Meta Bucket Access key
MINSQL_METABUCKET_SECRET_KEY Meta Bucket Secret key
MINSQL_PKCS12_CERT Optional: location to a pkcs12 certificate.
MINSQL_PKCS12_PASSWORD Optional: password to unlock the certificate.
MINSQL_ROOT_ACCESS_KEY Optional: 16 digit access key to bootstrap minsql
MINSQL_ROOT_SECRET_KEY Optional: 32 digit secret key to bootstrap minsql

Configuring

To start storing logs you need to setup a DataStore, Log, Token and a Authorization on MinSQL, this can be done using the admin REST APIs.

To get our sample code going we are going to:

  1. minioplay datastore
  2. mylog log
  3. a token
  4. authorize the token to our log

Add a sample datastore

Our sample datastore will be pointing to play, a demo instance of MinIO.

curl -X POST \
  http://127.0.0.1:9999/api/datastores \
  -H 'Content-Type: application/json' \
  -d '{
  "bucket" : "play-minsql",
  "endpoint" : "https://play.minio.io:9000",
  "prefix" : "",
  "name" : "minioplay",
  "access_key" : "Q3AM3UQ867SPQQA43P2F",
  "secret_key" : "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
}'

Add a Sample log

We are going to add a log mylog that stores it's contents on the minioplay datastore.

curl -X POST \
  http://127.0.0.1:9999/api/logs \
  -H 'Content-Type: application/json' \
  -d '{
  "name" : "mylog",
  "datastores" : [
    "minioplay",
  ],
  "commit_window" : "5s"
}'

Create a sample token

We are going to generate a token with a hardcoded token abcdefghijklmnopabcdefghijklmnopabcdefghijklmnop

curl -X POST \
  http://127.0.0.1:9999/api/tokens \
  -H 'Content-Type: application/json' \
  -d '{
  "access_key" : "abcdefghijklmnop",
  "secret_key" : "abcdefghijklmnopabcdefghijklmnop",
  "description" : "test",
  "is_admin" : true,
  "enabled" : false
}'

Authorize token to log

Finally, we are going to authorize our new token to access mylog

curl -X POST \
  http://127.0.0.1:9999/api/auth/abcdefghijklmnop \
  -H 'Content-Type: application/json' \
  -d '{
  "log_name" : "mylog",
  "api" : ["search","store"]
}'

Storing logs

For a log mylog defined on the configuration we can store logs on MinSQL by performing a PUT to your MinSQL instance

curl -X PUT \
  http://127.0.0.1:9999/mylog/store \
  -H 'MINSQL-TOKEN: TOKEN1' \
  -d '10.8.0.1 - - [16/May/2019:23:02:56 +0000] "GET / HTTP/1.1" 400 256 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"'

You can send multiple log lines separated by new line

Querying logs

To get data out of MinSQL you can use SQL. Note that MinSQL is a data layer and not a computation layer, therefore certain SQL statements that need computations (SUM, MAX, GROUP BY, JOIN, etc...) are not supported.

All the query statements must be sent via POST to your MinSQL instance.

SELECT

To select all the logs for a particular log you can perform a simple SELECT statement

SELECT * FROM mylog

And send that to MinSQL via POST

curl -X POST \
  http://127.0.0.1:9999/search \
  -H 'MINSQL-TOKEN: TOKEN1' \
  -d 'SELECT * FROM mylog'

This will return you all the raw log lines stored for that log.

67.164.164.165 - - [24/Jul/2017:00:16:46 +0000] "GET /info.php HTTP/1.1" 200 24564 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
67.164.164.165 - - [24/Jul/2017:00:16:48 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "http://104.236.9.232/info.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
24.26.204.22 - - [24/Jul/2017:00:17:16 +0000] "GET /info.php HTTP/1.1" 200 24579 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
45.23.126.92 - - [24/Jul/2017:00:16:18 +0000] "GET /info.php HTTP/1.1" 200 24589 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"

Select parts of the data

We can get only parts of the data by using any of the supported MinSQL entities, which start with a $ sign.

Positional

We can select from the data by its position, for example to get the first column and the fourth we can use $1 and $4

SELECT $1, $4 FROM mylog;

To which MinSQL will reply

67.164.164.165 [24/Jul/2017:00:16:46
67.164.164.165 [24/Jul/2017:00:16:48
24.26.204.22 [24/Jul/2017:00:17:16
45.23.126.92 [24/Jul/2017:00:16:18

You can see that the data was selected as is, however the selected date column is not clean enough, MinSQL provides other entities to deal with this.

By Type

MinSQL provides a nice list of entities that make the extraction of data chunks from your raw data easy thanks to our powerful Schema on Read approach. For example we can select any ip in our data by using the entity $ip and any date using $date.

SELECT $ip, $date FROM mylog

To which MinSQL will reply

67.164.164.165 24/Jul/2017
67.164.164.165 24/Jul/2017
24.26.204.22 24/Jul/2017
45.23.126.92 24/Jul/2017

If your data contains more than one ip address you can access the subsequent ip's using positional entities.

SELECT $ip, $ip2, $ip3, $date FROM mylog

Please note that if no positional number is specified on an entity, it will default to the first position, in this case $ip == $ip1

Filtering

Using the powerful select engine of MinSQL you can also filter the data so only the relevant information that you need to extract from your logs is returned.

For example, to filter out a single ip from your logs you could select by $ip

SELECT * FROM mylog WHERE $ip = '67.164.164.165'

To which MinSQL will reply only with the matched lines

67.164.164.165 - - [24/Jul/2017:00:16:46 +0000] "GET /info.php HTTP/1.1" 200 24564 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
67.164.164.165 - - [24/Jul/2017:00:16:48 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "http://104.236.9.232/info.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"

By value

You can select log lines that contain a value by using the LIKE operator or NOT NULL for any entity.

SELECT * FROM mylog WHERE $line LIKE 'Intel' AND $email IS NOT NULL

This query would return all the log lines conaining the word Intel that also contain an email address.

Entities

A list of supported entities by MinSQL :

  • $line: Represents the whole log line
  • $ip: Selects any format of ipv4
  • $date: Any format of date containing date, month and year.
  • $email: Any [email protected]
  • $quoted: any text that is within single quotes (') or double quotes (")
  • $url: any url starting with http
  • $phone: any valid 10 digit phone.
  • $user_agent: A quoted user agent found in the logs
    • $user_agent.name: Browser name
    • $user_agent.category: type of machine (pc, mac)
    • $user_agent.os: Operative System name
    • $user_agent.os_version: Operative System version
    • $user_agent.browser_type: Type of browser
    • $user_agent.version: version of browser
    • $user_agent.vendor: browser vendor
Comments
  • search query returns malformed response sometimes

    search query returns malformed response sometimes

    kanagaraj@kanagaraj-X260:~$ curl -X POST http://localhost:9999/search --data 'select t.city from temperature1 t where t.degree > 12'
    {"city":"Delhi"}
    {"city":"Chennai"}
    kanagaraj@kanagaraj-X260:~$ curl -X POST http://localhost:9999/search --data 'select t.city from temperature1 t where t.degree > 12'
    {"city":"Delhi"}
    {"city":"Chennai"}
    kanagaraj@kanagaraj-X260:~$ curl -X POST http://localhost:9999/search --data 'select t.city from temperature1 t where t.degree > 12'
    {"city":"Delhi"}
    {"city":"Chennai"}
    kanagaraj@kanagaraj-X260:~$ curl -X POST http://localhost:9999/search --data 'select t.city from temperature1 t where t.degree > 12'
    {"city":"Delhi"}
    {"city":"Chennai"}
    kanagaraj@kanagaraj-X260:~$ curl -X POST http://localhost:9999/search --data 'select t.city from temperature1 t where t.degree > 12'
    {"city":"Delhi"}
    {"city":"Chennai"}
    kanagaraj@kanagaraj-X260:~$ curl -X POST http://localhost:9999/search --data 'select t.city from temperature1 t where t.degree > 12'
    {"city":"Delhi"}
    HTTP/1.1 200 OK
    Date: Wed, 20 Mar 2019 05:32:14 GMT
    Content-Type: text/plain; charset=utf-8
    Transfer-Encoding: chunked
    
    11
    {"city":"Delhi"}
    
    city":"Delhi"}
    

    First 5 requests get proper response, 6th request gets a malformed response.

    The dataset contains 3 records.

    kanagaraj@kanagaraj-X260:~$ curl -X POST http://localhost:9999/search --data 'select * from temperature1'
    {"degree":20,"city":"Chennai"}
    {"degree":25,"city":"Delhi"}
    {"degree":10,"city":"Bangalore"}
    
    opened by kanagarajkm 4
  • Support new entities

    Support new entities

    Adds support for $phone and $user_agent along with entity properties for $user_agent:

    • $user_agent.name
    • $user_agent.category
    • $user_agent.os
    • $user_agent.os_version
    • $user_agent.browser_type
    • $user_agent.version
    • $user_agent.vendor
    enhancement 
    opened by dvaldivia 2
  • Validate tokens in headers

    Validate tokens in headers

    This introduces a validation of the tokens present in headers against the specification of the config.toml file.

    This PR depends on https://github.com/minio/minsql/pull/49

    opened by dvaldivia 2
  • build on darwin failing

    build on darwin failing

    make build
    Building minsql binary to './minsql'
    # github.com/rjeczalik/notify
    ../../../../pkg/mod/github.com/rjeczalik/[email protected]/watcher_fsevents.go:49:11: undefined: stream
    
    opened by ghost 2
  • Authentication improvement for MinSQL

    Authentication improvement for MinSQL

    Currently authentication relies on a fixed token.

    This is not secure, because logins are looked up in a map and verified. This leaks timing information. We need to use a username/password style, so that the username is looked up in a map and the password is verified up using constant time comparison.

    enhancement 
    opened by donatello 1
  • Move Config shared state to a Arc<RwLock<Config>>

    Move Config shared state to a Arc>

    This rework is needed as we will have an owner of the Config going forward that needs to be able to lock and update the configuration, this also gives the flexibility of not having to mark the Config object with a 'lifetime

    enhancement 
    opened by dvaldivia 1
  • Bump standard-version from 6.0.1 to 8.0.1 in /webui

    Bump standard-version from 6.0.1 to 8.0.1 in /webui

    Bumps standard-version from 6.0.1 to 8.0.1.

    Release notes

    Sourced from standard-version's releases.

    standard-version v8.0.1

    Bug Fixes

    • deps: update dependency conventional-changelog to v3.1.21 (#586) (fd456c9)
    • deps: update dependency conventional-changelog-conventionalcommits to v4.3.0 (#587) (b3b5eed)
    • deps: update dependency conventional-recommended-bump to v6.0.9 (#588) (d4d2ac2)
    • deps: update dependency git-semver-tags to v4 (#589) (a0f0e81)
    • Vulnerability Report GHSL-2020-11101 (9d978ac)

    standard-version v8.0.0

    ⚠ BREAKING CHANGES

    • composer.json and composer.lock will no longer be read from or bumped by default. If you need to obtain a version or write a version to these files, please use bumpFiles and/or packageFiles options accordingly.

    Bug Fixes

    • composer.json and composer.lock have been removed from default package and bump files. (c934f3a), closes #495 #394
    • deps: update dependency conventional-changelog to v3.1.18 (#510) (e6aeb77)
    • deps: update dependency yargs to v15.1.0 (#518) (8f36f9e)
    • deps: update dependency yargs to v15.3.1 (#559) (d98cd46)
    Changelog

    Sourced from standard-version's changelog.

    8.0.1 (2020-07-12)

    Bug Fixes

    • deps: update dependency conventional-changelog to v3.1.21 (#586) (fd456c9)
    • deps: update dependency conventional-changelog-conventionalcommits to v4.3.0 (#587) (b3b5eed)
    • deps: update dependency conventional-recommended-bump to v6.0.9 (#588) (d4d2ac2)
    • deps: update dependency git-semver-tags to v4 (#589) (a0f0e81)
    • Vulnerability Report GHSL-2020-11101 (9d978ac)

    8.0.0 (2020-05-06)

    ⚠ BREAKING CHANGES

    • composer.json and composer.lock will no longer be read from or bumped by default. If you need to obtain a version or write a version to these files, please use bumpFiles and/or packageFiles options accordingly.

    Bug Fixes

    • composer.json and composer.lock have been removed from default package and bump files. (c934f3a), closes #495 #394
    • deps: update dependency conventional-changelog to v3.1.18 (#510) (e6aeb77)
    • deps: update dependency yargs to v15.1.0 (#518) (8f36f9e)
    • deps: update dependency yargs to v15.3.1 (#559) (d98cd46)

    7.1.0 (2019-12-08)

    Features

    • Adds support for header (--header) configuration based on the spec. (#364) (ba80a0c)
    • custom 'bumpFiles' and 'packageFiles' support (#372) (564d948)

    Bug Fixes

    • deps: update dependency conventional-changelog to v3.1.15 (#479) (492e721)
    • deps: update dependency conventional-changelog-conventionalcommits to v4.2.3 (#496) (bc606f8)
    • deps: update dependency conventional-recommended-bump to v6.0.5 (#480) (1e1e215)
    • deps: update dependency yargs to v15 (#484) (35b90c3)
    • use require.resolve for the default preset (#465) (d557372)
    • deps: update dependency detect-newline to v3.1.0 (#482) (04ab36a)
    • deps: update dependency figures to v3.1.0 (#468) (63300a9)
    • deps: update dependency git-semver-tags to v3.0.1 (#485) (9cc188c)
    • deps: update dependency yargs to v14.2.1 (#483) (dc1fa61)
    • deps: update dependency yargs to v14.2.2 (#488) (ecf26b6)

    7.0.1 (2019-11-07)

    Commits
    • 57e4e25 chore: release 8.0.1 (#611)
    • 58105e1 chore: Adds basic issue templates (#613)
    • 9d978ac fix: Vulnerability Report GHSL-2020-11101
    • 267d78d chore: stop pinning deps (#615)
    • da84ec4 test(windows): skip mock-git tests for Windows (#616)
    • 871201f Merge pull request from GHSA-7xcx-6wjh-7xp2
    • a0f0e81 fix(deps): update dependency git-semver-tags to v4 (#589)
    • fd456c9 fix(deps): update dependency conventional-changelog to v3.1.21 (#586)
    • b3b5eed fix(deps): update dependency conventional-changelog-conventionalcommits to v4...
    • d4d2ac2 fix(deps): update dependency conventional-recommended-bump to v6.0.9 (#588)
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by oss-bot, a new releaser for standard-version since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump websocket-extensions from 0.1.3 to 0.1.4 in /webui

    Bump websocket-extensions from 0.1.3 to 0.1.4 in /webui

    Bumps websocket-extensions from 0.1.3 to 0.1.4.

    Changelog

    Sourced from websocket-extensions's changelog.

    0.1.4 / 2020-06-02

    • Remove a ReDoS vulnerability in the header parser (CVE-2020-7662, reported by Robert McLaughlin)
    • Change license from MIT to Apache 2.0
    Commits
    • 8efd0cd Bump version to 0.1.4
    • 3dad4ad Remove ReDoS vulnerability in the Sec-WebSocket-Extensions header parser
    • 4a76c75 Add Node versions 13 and 14 on Travis
    • 44a677a Formatting change: {...} should have spaces inside the braces
    • f6c50ab Let npm reformat package.json
    • 2d211f3 Change markdown formatting of docs.
    • 0b62083 Update Travis target versions.
    • 729a465 Switch license to Apache 2.0.
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump https-proxy-agent from 2.2.1 to 2.2.4 in /webui

    Bump https-proxy-agent from 2.2.1 to 2.2.4 in /webui

    Bumps https-proxy-agent from 2.2.1 to 2.2.4.

    Release notes

    Sourced from https-proxy-agent's releases.

    2.2.4

    Patches

    • Add .editorconfig file: a0d4a20458498fc31e5721471bd2b655e992d44b
    • Add .eslintrc.js file: eecea74a1db1c943eaa4f667a561fd47c33da897
    • Use a net.Socket instead of a plain EventEmitter for replaying proxy errors: #83
    • Remove unused stream module: 9fdcd47bd813e9979ee57920c69e2ee2e0683cd4

    Credits

    Huge thanks to @lpinca for helping!

    2.2.3

    Patches

    • Update README with actual secureProxy behavior: #65
    • Update proxy to v1.0.0: d0e3c18079119057b05582cb72d4fda21dfc2546
    • Remove unreachable code: 46aad0988b471f042856436cf3192b0e09e36fe6
    • Test on Node.js 10 and 12: 3535951e482ea52af4888938f59649ed92e81b2b
    • Fix compatibility with Node.js >= 10.0.0: #73
    • Use an EventEmitter to replay failed proxy connect HTTP requests: #77

    Credits

    Huge thanks to @stoically, @lpinca, and @zkochan for helping!

    2.2.2

    Patches

    • Remove package-lock.json: c881009b9873707f5c4a0e9c277dde588e1139c7
    • Ignore test directory, History.md and .travis.yml when creating npm package. Fixes #42: #45
    • Update agent-base to v4.2: #50
    • Add TypeScript type definitions: #66
    • Feat(typescript): Allow input to be options or string: #68
    • Update agent-base to v4.3: #69

    Credits

    Huge thanks to @marco-c, @tareqhs, @ianhowe76, and @BYK for helping!

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump acorn from 6.1.1 to 6.4.1 in /webui

    Bump acorn from 6.1.1 to 6.4.1 in /webui

    Bumps acorn from 6.1.1 to 6.4.1.

    Commits
    • 9a2e9b6 Mark version 6.4.1
    • 90a9548 More rigorously check surrogate pairs in regexp validator
    • df0cf1a Mark version 6.4.0
    • 5303412 Also export Parser via Parser.acorn
    • efe273e give token types and etc to plugins
    • ac6decb Mark version 6.3.0
    • 7e9817d Allow sourceType: module even with ecmaVersion < 6
    • e2b8cc0 Fix broken parsing of new expressions when allowReserved=="never"
    • 1555c52 Update acorn.d.ts
    • 77c20fa Mark version 6.2.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump lodash.template from 4.4.0 to 4.5.0 in /webui

    Bump lodash.template from 4.4.0 to 4.5.0 in /webui

    Bumps lodash.template from 4.4.0 to 4.5.0.

    Commits
    • ab73503 Bump to v4.5.0.
    • a4f7d4c Rebuild lodash and docs.
    • cca5ac6 Fix npm-test by removing the call to test-docs.
    • 9f7f9fc Adjust heading order. [ci skip]
    • 6e2fb92 Remove unused baseArity.
    • 4f702e2 Specify utf8 encoding.
    • b188f90 Add fp tests for iteratee shorthands.
    • 7b93dc9 Ensure clone methods clone expando properties of boolean, number, & string ob...
    • 664d66a Make string tests more consistent.
    • d9dc0e6 Add _.invertBy tests.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Docker build issues

    Docker build issues

    After cloninig this repository and doing:

    docker build . -t minio/minsql

    I'm getting:

    Browserslist: caniuse-lite is outdated. Please run next command npm update
    Killed
    npm ERR! code ELIFECYCLE
    npm ERR! errno 137
    npm ERR! [email protected] build:prod: ng build --prod -- --deploy-url /ui/ --base-href /ui
    npm ERR! Exit status 137
    npm ERR! 
    npm ERR! Failed at the [email protected] build:prod script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /root/.npm/_logs/2020-01-31T21_36_22_507Z-debug.log
    

    Any hint?

    opened by MyWay 1
  • minsql rest api returns

    minsql rest api returns "unauthorized"

    Following along with the minsql repo documentation and the examples, I fail to create a datastore after setting minsql up with a metabucket.

    The below command points to some playground bucket, but the response is "401: Unauthorized"

    curl -X POST \
      http://127.0.0.1:9999/api/datastores \
      -H 'Content-Type: application/json' \
      -d '{
      "bucket" : "play-minsql",
      "endpoint" : "https://play.minio.io:9000",
      "prefix" : "",
      "name" : "minioplay",
      "access_key" : "Q3AM3UQ867SPQQA43P2F",
      "secret_key" : "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
    }'
    

    Trying to point the request to my local minio instance like below yields the same unauthorized response:

    curl -X POST \
      http://127.0.0.1:9999/api/v1/datastores \
      -H 'Content-Type: application/json' \
      -d '{
      "bucket" : "minsql-meta",
      "endpoint" : "https://localhost:9000",
      "prefix" : "",
      "name" : "miniotest",
      "access_key" : "minio",
      "secret_key" : "minio123"
    }'
    

    My guess was that I needed to get a token first (in contrary to the order in which the numbered list of the guide is proposing), so I tried to POST to /api/tokens/ as below, but still only get unauthorized response. Tried replacing "abcde..." with "minio" and "minio123" from the docs, but no difference.

    curl -X POST \
      http://127.0.0.1:9999/api/tokens \
      -H 'Content-Type: application/json' \
      -d '{
      "access_key" : "abcdefghijklmnop",
      "secret_key" : "abcdefghijklmnopabcdefghijklmnop",
      "description" : "test",
      "is_admin" : true,
      "enabled" : false
    }'
    
    bug 
    opened by altosys 0
  • mc binary doesn't create bucket in docker-compose example

    mc binary doesn't create bucket in docker-compose example

    Following the documentation on the minsql github repo page, the example doesn't work. The mc container is supposed to create a minsql-meta bucket, and the output from the conainer is that it succeeds, but no bucket is actually created.

    As per the docker-compose.yml below the bucket minio/minsql-meta should be created. After the mc container has run no bucket can be found in the local data directory or seen in the web ui.

    ` version: '2'

    services:

    minio: image: minio/minio volumes:

    • ./data:/data environment: MINIO_ACCESS_KEY: minio MINIO_SECRET_KEY: minio123 command: server /data ports:
    • 9000:9000

    mc: image: minio/mc depends_on:

    • minio entrypoint: > /bin/sh -c " echo /usr/bin/mc config host add minio http://minio:9000 minio minio123; /usr/bin/mc mb minio/minsql-meta;"

    minsql: image: minio/minsql depends_on:

    • minio
    • mc ports:
    • "9999:9999" environment: MINSQL_METABUCKET_NAME: minsql-meta MINSQL_METABUCKET_ENDPOINT: http://minio:9000 MINSQL_ACCESS_KEY: minio MINSQL_SECRET_KEY: minio123

    volumes: data: `

    opened by altosys 1
  • Migrate to async/await syntax

    Migrate to async/await syntax

    The new async/await syntax is coming and tokio and hyper already adopted that syntax in their master branches, so we should prepare to adopt it as well.

    enhancement help wanted 
    opened by dvaldivia 0
Owner
High Performance, Kubernetes Native Object Storage
Build high performance data infrastructure for machine learning, analytics and application data workloads with MinIO
High Performance, Kubernetes Native Object Storage
A simple and lightweight fuzzy search engine that works in memory, searching for similar strings (a pun here).

simsearch A simple and lightweight fuzzy search engine that works in memory, searching for similar strings (a pun here). Documentation Usage Add the f

Andy Lok 116 Dec 10, 2022
Lightning Fast, Ultra Relevant, and Typo-Tolerant Search Engine

MeiliSearch Website | Roadmap | Blog | LinkedIn | Twitter | Documentation | FAQ ⚡ Lightning Fast, Ultra Relevant, and Typo-Tolerant Search Engine ?? M

MeiliSearch 31.6k Dec 31, 2022
Perlin: An Efficient and Ergonomic Document Search-Engine

Table of Contents 1. Perlin Perlin Perlin is a free and open-source document search engine library build on top of perlin-core. Since the first releas

CurrySoftware GmbH 70 Dec 9, 2022
Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust

Tantivy is a full text search engine library written in Rust. It is closer to Apache Lucene than to Elasticsearch or Apache Solr in the sense it is no

tantivy 7.4k Dec 28, 2022
AI-powered search engine for Rust

txtai: AI-powered search engine for Rust txtai executes machine-learning workflows to transform data and build AI-powered text indices to perform simi

NeuML 69 Jan 2, 2023
A full-text search engine in rust

Toshi A Full-Text Search Engine in Rust Please note that this is far from production ready, also Toshi is still under active development, I'm just slo

Toshi Search 3.8k Jan 7, 2023
🔍TinySearch is a lightweight, fast, full-text search engine. It is designed for static websites.

tinysearch TinySearch is a lightweight, fast, full-text search engine. It is designed for static websites. TinySearch is written in Rust, and then com

null 2.2k Dec 31, 2022
⚡ Insanely fast, 🌟 Feature-rich searching. lnx is the adaptable deployment of the tantivy search engine you never knew you wanted. Standing on the shoulders of giants.

✨ Feature Rich | ⚡ Insanely Fast An ultra-fast, adaptable deployment of the tantivy search engine via REST. ?? Standing On The Shoulders of Giants lnx

lnx 679 Jan 1, 2023
⚡ Insanely fast, 🌟 Feature-rich searching. lnx is the adaptable deployment of the tantivy search engine you never knew you wanted. Standing on the shoulders of giants.

✨ Feature Rich | ⚡ Insanely Fast An ultra-fast, adaptable deployment of the tantivy search engine via REST. ?? Standing On The Shoulders of Giants lnx

lnx 0 Apr 25, 2022
Cross-platform, cross-browser, cross-search-engine duckduckgo-like bangs

localbang Cross-platform, cross-browser, cross-search-engine duckduckgo-like bangs What are "bangs"?? Bangs are a way to define where to search inside

Jakob Kruse 7 Nov 23, 2022
A Rust API search engine

Roogle Roogle is a Rust API search engine, which allows you to search functions by names and type signatures. Progress Available Queries Function quer

Roogle 342 Dec 26, 2022
Tantivy is a full text search engine library written in Rust.

Tantivy is a full text search engine library written in Rust. It is closer to Apache Lucene than to Elasticsearch or Apache Solr in the sense it is no

Quickwit OSS 7.4k Dec 30, 2022
Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust

Tantivy is a full-text search engine library written in Rust. It is closer to Apache Lucene than to Elasticsearch or Apache Solr in the sense it is no

Quickwit OSS 7.5k Jan 9, 2023
Configurable quick search engine shortcuts for your terminal and browser.

Quicksearch Configurable quick search engine shortcuts for your terminal and browser. Installation Run cargo install quicksearch to install Configurat

Rahul Pai 2 Oct 14, 2022
Python bindings for Milli, the embeddable Rust-based search engine powering Meilisearch

milli-py Python bindings for Milli, the embeddable Rust-based search engine powering Meilisearch. Due to limitations around Rust lifecycles, methods a

Alexandro Sanchez 92 Feb 21, 2023
A full-text search and indexing server written in Rust.

Bayard Bayard is a full-text search and indexing server written in Rust built on top of Tantivy that implements Raft Consensus Algorithm and gRPC. Ach

Bayard Search 1.8k Dec 26, 2022
🔎 Impossibly fast web search, made for static sites.

Stork Impossibly fast web search, made for static sites. Stork is two things. First, it's an indexer: it indexes your loosely-structured content and c

James Little 2.5k Dec 27, 2022
🦔 Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM.

?? Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM.

Valerian Saliou 17.4k Jan 2, 2023
Rapidly Search and Hunt through Windows Event Logs

Rapidly Search and Hunt through Windows Event Logs Chainsaw provides a powerful ‘first-response’ capability to quickly identify threats within Windows

F-Secure Countercept 1.8k Dec 31, 2022