Compare commits

...
27 Commits
Author SHA1 Message Date
Dave Marion 577688aa54 Update release notes and other documentation for 0.0.5 release 2017-08-11 08:27:52 -04:00
Dave Marion 1f0fe4198d closes #140 - updated quick start documentation to include deploying timely-app into grafana plugins directory 2017-04-14 09:39:46 -04:00
Dave Marion 385b142f71 Merge branch 'slate' of https://github.com/NationalSecurityAgency/timely into slate 2017-04-14 09:33:43 -04:00
Dave Marion 9065dcdce2 re #141 - update documentation for collectd build profile 2017-04-14 09:33:12 -04:00
Ivan Bella 3877695949 fixed #137 moved column comment down to avoid messing up numbering 2017-03-13 09:13:36 -04:00
Dave Marion d4e504b31c Updated release notes 2017-02-02 11:02:52 -05:00
Dave Marion 32ae6ee399 Updated release notes for 0.0.4 release 2017-01-23 10:46:34 -05:00
Dave Marion 9688514a0f Documentation updates for the 0.0.4 release. 2017-01-23 10:04:15 -05:00
Dave Marion 9aa089a585 Merge tag 'v1.4' into slate-0.0.4 2017-01-19 13:37:35 -05:00
Robert Lord 8d75089525 Cut version 1.4.0 2016-11-24 11:26:10 -06:00
Robert Lord 7857d862b3 Update pull requset template 2016-11-24 11:26:10 -06:00
Robert Lord e8e2e5e144 Fix incorrect documentation in deploy.sh 2016-11-24 11:26:10 -06:00
Robert Lord 33515061b7 Add back in middleman flags to Vagrant with new flag syntax 2016-11-24 11:26:10 -06:00
Luke Hoersten 7d2ab1be7e Exec middleman server fails with invalid flags --force-polling and -l. Removed the flags to remedy. 2016-11-24 11:26:10 -06:00
Robert Lord 521969b9ee Update language list link and count in README 2016-11-24 11:26:10 -06:00
Robert Lord 62fb143490 Fix build, update middleman 2016-11-24 11:26:10 -06:00
Robert Lord 08cf3dc5c2 Fix bug where -margin wasn't properly respected even if search was off 2016-11-24 11:26:10 -06:00
Robert Lord 6831223f50 Update ruby version requirements in Travis and README 2016-11-24 11:26:10 -06:00
Robert Lord 20ed753723 Fix another bug where disabling language tabs didn't properly hide HTML 2016-11-24 11:26:10 -06:00
kissrain a8e3737200 fix -margin 2016-11-24 11:26:10 -06:00
Michael Schramm d1c3989a8d make scss variables changeable
all variables should only provide a default

this would allow us to include the screen.scss and simply set the variables we want to change before that.
2016-11-24 11:26:10 -06:00
Robert Lord 5712ebe2ae Upgrade sprockets 2016-11-24 11:26:10 -06:00
Robert Lord e47cbe5e3b Update middleman-syntax 2016-11-24 11:26:10 -06:00
Robert Lord f5b3a205b2 Remove unused gem middleman-gh-pages 2016-11-24 11:26:10 -06:00
Robert Lord a2b61191c7 Add some company links to readme 2016-11-24 11:26:10 -06:00
Robert Lord adfd4080bd Add Ruby 2.2.0 to Travis testing matrix 2016-11-24 11:26:10 -06:00
alliedsteel 483f5f8f1a Word missing on Readme.md (#592) 2016-09-15 11:19:59 -05:00
20 changed files with 217 additions and 194 deletions

No files matched your search

+4 -4
View File
@@ -1,5 +1,5 @@
Make sure you've checked off all these things before submitting:
!!!!! STOP AND READ !!!!!
- [ ] This pull request isn't for a company's fork, it's intended for the upstream Slate shared by everybody.
- [ ] This pull request is submitted to the `dev` branch.
- [ ] If it makes frontend changes, this pull request has been tested in the latest version of Firefox, Chrome, IE, and Safari.
If the dropdown above says "base fork: lord/master", you are submitting your change to ALL USERS OF SLATE, not just your company. This is probably not what you want. Click "base fork" to change it to the right place.
If you're actually trying to submit a change to upstream Slate, please submit to our dev branch, PRs sent to the master branch are generally rejected.
+2 -2
View File
@@ -3,8 +3,8 @@ sudo: false
language: ruby
rvm:
- 2.0.0
- 2.1.0
- 2.2.5
- 2.3.1
cache: bundler
script: bundle exec middleman build
+13
View File
@@ -1,5 +1,18 @@
# Changelog
## Version 1.4.0
*November 24, 2016*
- Upgrade Middleman and Rouge gems, should hopefully solve a number of bugs
- Update some links in README
- Fix broken Vagrant startup script
- Fix some problems with deploy.sh help message
- Fix bug with language tabs not hiding properly if no error
- Add `!default` to SASS variables
- Fix bug with logo margin
- Bump tested Ruby versions in .travis.yml
## Version 1.3.3
*June 11, 2016*
+4 -5
View File
@@ -1,10 +1,9 @@
source 'https://rubygems.org'
# Middleman
gem 'middleman', '~>4.0.0'
gem 'middleman-gh-pages', '~> 0.0.3'
gem 'middleman-syntax', '~> 2.1.0'
gem 'middleman', '~>4.1.0'
gem 'middleman-syntax', '~> 3.0.0'
gem 'middleman-autoprefixer', '~> 2.7.0'
gem "middleman-sprockets", "~> 4.0.0.rc"
gem 'rouge', '~> 1.10.1'
gem "middleman-sprockets", "~> 4.0.0"
gem 'rouge', '~> 2.0.5'
gem 'redcarpet', '~> 3.3.2'
+59 -71
View File
@@ -1,134 +1,122 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (4.2.5.1)
activesupport (4.2.7.1)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.4.0)
autoprefixer-rails (6.3.1)
autoprefixer-rails (6.4.1)
execjs
json
backports (3.6.7)
capybara (2.5.0)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
backports (3.6.8)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.10.0)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
concurrent-ruby (0.9.2)
contracts (0.12.0)
concurrent-ruby (1.0.2)
contracts (0.13.0)
dotenv (2.1.1)
erubis (2.7.0)
execjs (2.6.0)
fastimage (1.8.1)
addressable (~> 2.3, >= 2.3.5)
ffi (1.9.10)
execjs (2.7.0)
fast_blank (1.0.0)
fastimage (2.0.0)
addressable (~> 2)
ffi (1.9.14)
haml (4.0.7)
tilt
hamster (2.0.0)
concurrent-ruby (~> 0.8)
hashie (3.4.3)
hamster (3.0.0)
concurrent-ruby (~> 1.0)
hashie (3.4.4)
i18n (0.7.0)
json (1.8.3)
kramdown (1.9.0)
listen (3.0.5)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
middleman (4.0.0)
kramdown (1.12.0)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
memoist (0.15.0)
middleman (4.1.10)
coffee-script (~> 2.2)
compass-import-once (= 1.0.5)
haml (>= 4.0.5)
kramdown (~> 1.2)
middleman-cli (= 4.0.0)
middleman-core (= 4.0.0)
middleman-cli (= 4.1.10)
middleman-core (= 4.1.10)
sass (>= 3.4.0, < 4.0)
middleman-autoprefixer (2.7.0)
autoprefixer-rails (>= 6.3.1, < 7.0.0)
middleman-core (>= 3.3.3)
middleman-cli (4.0.0)
middleman-cli (4.1.10)
thor (>= 0.17.0, < 2.0)
middleman-core (4.0.0)
middleman-core (4.1.10)
activesupport (~> 4.2)
addressable (~> 2.4.0)
addressable (~> 2.3)
backports (~> 3.6)
bundler (~> 1.1)
capybara (~> 2.5.0)
contracts (~> 0.12.0)
contracts (~> 0.13.0)
dotenv
erubis
execjs (~> 2.0)
fastimage (~> 1.8)
hamster (~> 2.0)
fast_blank
fastimage (~> 2.0)
hamster (~> 3.0)
hashie (~> 3.4)
i18n (~> 0.7.0)
listen (~> 3.0)
listen (~> 3.0.0)
memoist (~> 0.14)
padrino-helpers (~> 0.13.0)
parallel
rack (>= 1.4.5, < 2.0)
sass (>= 3.4)
servolux
tilt (~> 1.4.1)
uglifier (~> 2.6)
middleman-gh-pages (0.0.3)
rake (> 0.9.3)
middleman-sprockets (4.0.0.rc.1)
middleman-core (>= 4.0.0.rc.1)
sprockets (~> 3.0)
middleman-syntax (2.1.0)
uglifier (~> 3.0)
middleman-sprockets (4.0.0)
middleman-core (~> 4.0)
sprockets (>= 3.0)
middleman-syntax (3.0.0)
middleman-core (>= 3.2)
rouge (~> 1.0)
mime-types (3.0)
mime-types-data (~> 3.2015)
mime-types-data (3.2015.1120)
mini_portile2 (2.0.0)
minitest (5.8.4)
nokogiri (1.6.7.2)
mini_portile2 (~> 2.0.0.rc2)
padrino-helpers (0.13.1)
rouge (~> 2.0)
minitest (5.9.0)
padrino-helpers (0.13.3.1)
i18n (~> 0.6, >= 0.6.7)
padrino-support (= 0.13.1)
tilt (~> 1.4.1)
padrino-support (0.13.1)
padrino-support (= 0.13.3.1)
tilt (>= 1.4.1, < 3)
padrino-support (0.13.3.1)
activesupport (>= 3.1)
parallel (1.9.0)
rack (1.6.4)
rack-test (0.6.3)
rack (>= 1.0)
rake (10.4.2)
rb-fsevent (0.9.7)
rb-inotify (0.9.5)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
redcarpet (3.3.4)
rouge (1.10.1)
sass (3.4.21)
sprockets (3.4.1)
rouge (2.0.5)
sass (3.4.22)
servolux (0.12.0)
sprockets (3.7.0)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
thor (0.19.1)
thread_safe (0.3.5)
tilt (1.4.1)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (2.7.2)
execjs (>= 0.3.0)
json (>= 1.8.0)
xpath (2.0.0)
nokogiri (~> 1.3)
uglifier (3.0.2)
execjs (>= 0.3.0, < 3)
PLATFORMS
ruby
DEPENDENCIES
middleman (~> 4.0.0)
middleman (~> 4.1.0)
middleman-autoprefixer (~> 2.7.0)
middleman-gh-pages (~> 0.0.3)
middleman-sprockets (~> 4.0.0.rc)
middleman-syntax (~> 2.1.0)
middleman-sprockets (~> 4.0.0)
middleman-syntax (~> 3.0.0)
redcarpet (~> 3.3.2)
rouge (~> 1.10.1)
rouge (~> 2.0.5)
BUNDLED WITH
1.10.6
1.12.5
+9 -5
View File
@@ -21,7 +21,7 @@ Features
* **Write code samples in multiple languages** — If your API has bindings in multiple programming languages, you can easily put in tabs to switch between them. In your document, you'll distinguish different languages by specifying the language name at the top of each code block, just like with Github Flavored Markdown.
* **Out-of-the-box syntax highlighting** for [almost 100 languages](http://rouge.jneen.net/), no configuration required.
* **Out-of-the-box syntax highlighting** for [over 100 languages](https://github.com/jneen/rouge/wiki/List-of-supported-languages-and-lexers), no configuration required.
* **Automatic, smoothly scrolling table of contents** on the far left of the page. As you scroll, it displays your current position in the document. It's fast, too. We're using Slate at TripIt to build documentation for our new API, where our table of contents has over 180 entries. We've made sure that the performance remains excellent, even for larger documents.
@@ -37,7 +37,7 @@ Getting Started with Slate
You're going to need:
- **Linux or OS X** — Windows may work, but is unsupported.
- **Ruby, version 2.0 or newer**
- **Ruby, version 2.2.5 or newer**
- **Bundler** — If Ruby is already installed, but the `bundle` command doesn't work, just run `gem install bundler` in a terminal.
### Getting Set Up
@@ -58,7 +58,7 @@ vagrant up
You can now see the docs at http://localhost:4567. Whoa! That was fast!
Now that Slate is all set up your machine, you'll probably want to learn more about [editing Slate markdown](https://github.com/lord/slate/wiki/Markdown-Syntax), or [how to publish your docs](https://github.com/lord/slate/wiki/Deploying-Slate).
Now that Slate is all set up on your machine, you'll probably want to learn more about [editing Slate markdown](https://github.com/lord/slate/wiki/Markdown-Syntax), or [how to publish your docs](https://github.com/lord/slate/wiki/Deploying-Slate).
If you'd prefer to use Docker, instructions are available [in the wiki](https://github.com/lord/slate/wiki/Docker).
@@ -66,9 +66,13 @@ Companies Using Slate
---------------------------------
* [NASA](https://api.nasa.gov)
* [IBM Cloudant](https://docs.cloudant.com/api.html)
* [Travis-CI](https://docs.travis-ci.com/api/)
* [IBM](https://docs.cloudant.com/api.html)
* [Sony](http://developers.cimediacloud.com)
* [Mozilla](http://mozilla.github.io/localForage/)
* [Best Buy](https://bestbuyapis.github.io/api-documentation/)
* [Travis-CI](https://docs.travis-ci.com/api/)
* [Greenhouse](https://developers.greenhouse.io/harvest.html)
* [Woocommerce](http://woothemes.github.io/woocommerce-rest-api-docs/)
* [Appium](http://appium.io/slate/en/master)
* [Dwolla](https://docs.dwolla.com/)
* [Clearbit](https://clearbit.com/docs)
Vendored
+1 -1
View File
@@ -34,6 +34,6 @@ Vagrant.configure(2) do |config|
echo "Starting up middleman at http://localhost:4567"
echo "If it does not come up, check the ~/middleman.log file for any error messages"
cd /vagrant
bundle exec middleman server --force-polling -l 1 &> ~/middleman.log &
bundle exec middleman server --watcher-force-polling --watcher_latency=1 &> ~/middleman.log &
SHELL
end
+2
View File
@@ -18,6 +18,8 @@ set :fonts_dir, 'fonts'
# Activate the syntax highlighter
activate :syntax
activate :sprockets
activate :autoprefixer do |config|
config.browsers = ['last 2 version', 'Firefox ESR']
config.cascade = false
+8 -27
View File
@@ -15,20 +15,7 @@ Options:
deploy branch.
-n, --no-hash Don't append the source commit's hash to the deploy
commit's message.
-c, --config-file PATH Override default & environment variables' values
with those in set in the file at 'PATH'. Must be the
first option specified.
Variables:
GIT_DEPLOY_DIR Folder path containing the files to deploy.
GIT_DEPLOY_BRANCH Commit deployable files to this branch.
GIT_DEPLOY_REPO Push the deploy branch to this repository.
These variables have default values defined in the script. The defaults can be
overridden by environment variables. Any environment variables are overridden
by values set in a '.env' file (if it exists), and in turn by those set in a
file specified by the '--config-file' option."
"
bundle exec middleman build --clean
@@ -38,12 +25,6 @@ parse_args() {
source .env
fi
# Set args from file specified on the command-line.
if [[ $1 = "-c" || $1 = "--config-file" ]]; then
source "$2"
shift 2
fi
# Parse arg flags
# If something is exposed as an environment variable, set/overwrite it
# here. Otherwise, set/overwrite the internal variable instead.
@@ -98,24 +79,24 @@ main() {
commit_title=`git log -n 1 --format="%s" HEAD`
commit_hash=` git log -n 1 --format="%H" HEAD`
#default commit message uses last title if a custom one is not supplied
if [[ -z $commit_message ]]; then
commit_message="publish: $commit_title"
fi
#append hash to commit message unless no hash flag was found
if [ $append_hash = true ]; then
commit_message="$commit_message"$'\n\n'"generated from commit $commit_hash"
fi
previous_branch=`git rev-parse --abbrev-ref HEAD`
if [ ! -d "$deploy_directory" ]; then
echo "Deploy directory '$deploy_directory' does not exist. Aborting." >&2
return 1
fi
# must use short form of flag in ls for compatibility with OS X and BSD
if [[ -z `ls -A "$deploy_directory" 2> /dev/null` && -z $allow_empty ]]; then
echo "Deploy directory '$deploy_directory' is empty. Aborting. If you're sure you want to deploy an empty tree, use the --allow-empty / -e flag." >&2
@@ -124,7 +105,7 @@ main() {
if git ls-remote --exit-code $repo "refs/heads/$deploy_branch" ; then
# deploy_branch exists in $repo; make sure we have the latest version
disable_expanded_output
git fetch --force $repo $deploy_branch:$deploy_branch
enable_expanded_output
@@ -207,7 +188,7 @@ restore_head() {
else
git symbolic-ref HEAD refs/heads/$previous_branch
fi
git reset --mixed
}
@@ -219,4 +200,4 @@ sanitize() {
"$@" 2> >(filter 1>&2) | filter
}
[[ $1 = --source-only ]] || main "$@"
[[ $1 = --source-only ]] || main "$@"
+4
View File
@@ -22,3 +22,7 @@ Add | | | | X
Remove | | | | X
Close | | | | X
# Timely Client
Java Timely client library was started in 0.0.4, it is not complete, but what is done does work. The client library includes classes for communicating over all the protocols (UDP, TCP, HTTPS, WSS).
+2 -1
View File
@@ -2,13 +2,14 @@
## Building Timely
Timely requires a Java 8 and uses Maven for compiling source, running tests, and packaging distributions. Below is a set of useful Maven lifecyles that we use:
Timely requires a Java 8 and uses Maven for compiling source, running tests, and packaging distributions. To build the CollectD plugins, activate the `collectd` profile. Below are a set of useful Maven lifecyles that we use:
Command | Description
--------|------------
mvn compile | Compiles and formats the source
mvn test | Runs unit tests
mvn package | Runs findbugs and creates a distribution
mvn package -Pcollectd | Runs findbugs and creates a distribution, includes the collectd plugins
mvn verify | Runs integration tests
mvn verify site | Creates the site
+13 -12
View File
@@ -1,18 +1,19 @@
# Standalone Quick Start
1. Install latest version of Grafana (3.0.4 at time of writing)
2. Create a grafana configuration file (e.g: `conf/settings.ini`)
1. Build Timely
1. set `JAVA_HOME` to point to a JDK 8 installation
2. run `mvn clean package` from the top level directory in the source tree
2. Install latest version of Grafana that works with Timely (4.4.3)
3. Create a grafana configuration file (e.g: `conf/settings.ini`)
1. `protocol = https`
2. `http_addr = localhost`
3. `cert_file= <path to PEM encoded certificate file>`
4. `key_file= <path to PEM encoded un-encrypted private key file>`
3. Start Grafana (`./bin/grafana-server -c conf/settings.ini`)
4. Untar the timely-app distribution tarball located in grafana/target in the grafana plugins directory (default: /var/lib/grafana/plugins)
5. Start Grafana (`./bin/grafana-server -c conf/settings.ini`)
1. Visit `https://localhost:3000` to verify Grafana is working
4. Build Timely
1. set `JAVA_HOME` to point to a JDK 8 installation
2. cd into the server directory and run `mvn clean package`
5. Untar Timely server distribution (found in `target/timely-server-(VERSION)-SNAPSHOT-dist.tar.gz`)
6. Modify `timely-standalone.yml`:
6. Untar Timely server distribution (found in `target/timely-server-(VERSION)-SNAPSHOT-dist.tar.gz`)
7. Modify `timely-standalone.yml`:
1. Use generated server side SSL certificates
1. `timely.security.ssl.use-generated-keypair=true`
2. or, use your own SSL certificates - see [SSL] (#ssl-setup) Setup
@@ -28,11 +29,11 @@
1. `grafana.http.address=https://localhost:3000/login`
5. Set Anonymous access for Timely
1. `timely.security.allow-anonymous-access=<true or false>`
7. Start the Timely standalone server
8. Start the Timely standalone server
1. `cd bin; ./timely-standalone.sh`
8. Insert test data
9. Insert test data
1. `cd bin; ./insert-test-data.sh`
9. Add the Timely datasource to Grafana
10. Add the Timely datasource to Grafana
1. Login to Grafana, go to 'DataSources'
2. Click 'Add data source'
3. Enter the following information:
@@ -44,7 +45,7 @@
6. Basic Auths: check
7. Click `Browser Cert Check` and accept the certificate
8. Click `Save & Test`.
10. Import Standalone Test dashboard into Grafana.
11. Import Standalone Test dashboard into Grafana.
## Notes on Security Options
+29
View File
@@ -1,5 +1,34 @@
# Release Notes
## 0.0.5
### FEATURES
- Made changes and tested with Grafana 4.4.3 (alerting not supported yet)
- Updated provided dashboards
### NOTES
- Build modified to *not* build collectd modules by default, use the `collectd` maven profile at build time
## 0.0.4
### FEATURES
- Added a Timely client library that contains Java code for interacting with the Timely API. Not all operations are finished.
- Added an analytics module for writing Apache Flink jobs
- Exposed Subscription Scanner configuration settings in the Timely configuration
### PERFORMANCE
- AgeOff performance is greatly improved with a new iterator
- Added netty-transport-native-epoll as an optional runtime dependency
### NOTES
- Timely has not been tested with Grafana 4.x
- The aggregation function (not the downsample aggregration function) in Grafana did not work prior to this release, it now works.
## 0.0.3
### FEATURES
+1 -1
View File
@@ -2,7 +2,7 @@
## Securing the Transport
Timely only exposes two operations over a non-secure transport, one to the version of the server and the other to insert data. All other operations are protected by either HTTPS or WSS protocols. The server [configuration] (#configuration) allows the user to change many of the security settings such as: CORS origins, specific SSL/TLS ciphers, duration of the HTTP session cookie, and more.
Timely only exposes two operations over a non-secure transport, one to get the version of the server and the other to insert data. All other operations are protected by either HTTPS or WSS protocols. The server [configuration] (#configuration) allows the user to change many of the security settings such as: CORS origins, specific SSL/TLS ciphers, duration of the HTTP session cookie, and more.
### HTTP Strict Transport Security
+9 -9
View File
@@ -12,18 +12,14 @@ The standalone server will not save your metric data across restarts.
To deploy Timely with a running Accumulo instance you will need to modify the `conf/timely.yml` file appropriately. Then copy the `lib/timely-client.jar`, `lib/timely-server.jar`, `lib/commons-lang3-*.jar`, `lib/commons-collections4-*.jar`, and `lib/guava-*.jar` files to your Accumulo tablet servers. Finally, launch Timely using the `bin/timely-server.sh` script. Because Timely uses a newer version of Guava, you will need to configure a classloader for the Timely context, set it to use post-delegation, and then configure your tables to use the Timely context classloader. This can be done in the shell or in the accumulo-site.xml file.
> In accumulo-site.xml: <br>
&lt;name&gt;general.vfs.conext.classpath.timely.delegation=post&lt;/name&gt;<br>
&lt;value&gt;some location&lt;/value&gt;
> In accumulo shell: <br>
`general.vfs.conext.classpath.timely=<some location>`<br>
`general.vfs.context.classpath.timely=<some location>`<br>
`general.vfs.context.classpath.timely.delegation=post`
## SSL Setup
To user Timely, both Timely and Grafana will need to use SSL certificates. Grafana requires a PEM encoded certificate file and an un-encrypted PEM private key file. Timely requires a PEM encoded certificate file and a PKCS#8 encoded private key file. Timely supports private keys with and without a password, just comment out the `timely.security.ssl.key-password` property if there is no password for your private key.
To user Timely, both Timely and Grafana will need to use SSL certificates. Grafana requires a PEM encoded certificate file and an un-encrypted PEM private key file. Timely requires a PEM encoded certificate file and a PKCS#8 encoded private key file. Timely supports private keys with and without a password, just comment out the `timely.security.ssl.key-password` property if there is no password for your private key. In a successful setup, you should only need to add the Timely Certificate Authority to your web browser.
### Creating your own SSL keys and certificates
@@ -37,7 +33,7 @@ Create a private key
Create a certificate request using the private key
`openssl req -x509 -new -key CA.key -sha256 -nodes -days 365 -out CA.pem`
`openssl req -x509 -new -key CA.key -sha256 -subj '/C=US/ST=Confusion/L=Here/O=Timely/OU=CA/CN=localhost/emailAddress=noreply@localhost/subjectAltName=DNS.1=127.0.0.1' -nodes -days 365 -out CA.pem`
#### Create your SSL material for Grafana
@@ -47,7 +43,7 @@ Create the private key for the Grafana server
Generate a certificate signing request (CSR) with our Grafana private key
`openssl req -new -key grafana.key -sha256 -nodes -out grafana.csr`
`openssl req -new -key grafana.key -sha256 -subj '/C=US/ST=Confusion/L=Here/O=Grafana/OU=Server/CN=localhost/emailAddress=noreply@localhost/subjectAltName=DNS.1=127.0.0.1' -nodes -out grafana.csr`
Use the CSR and the CA to create a certificate for the server (a reply to the CSR)
@@ -80,7 +76,7 @@ timely:
```
The default configuration file type for Timely is a YAML. The configuration is read internally using Spring Boot, and therefore supports all of the configuration styles supported by Spring Boot. See [here](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config) and [here](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-yaml) for more details. In YAML, a property such as timely.accumulo.instance-name=MyInstanceName (which can also be timely.accumulo.instanceName) would look like the example on the right.
The `NUM_SERVER_THREADS` variable in the `timely-server.sh` script controls how many threads are used in the Netty event group for TCP and HTTP operations. The TCP and HTTP groups use a different event group, so if you set the value to 8, then you will have 8 threads for TCP operations and 8 threads for HTTP operations. The properties file in the `conf` directory supports the following properties:
The `NUM_SERVER_THREADS` variable in the `timely-server.sh` script controls how many threads are used in the Netty event group for UPD, TCP, HTTP, and WebSocket operations. The different protocols each use a Netty event group, so if you set the value to 8, then you will have 4 thread groups of 8 threads each. The properties file in the `conf` directory supports the following properties:
> Note: Each thread in the Timely server that is used for processing TCP put operations has its own BatchWriter. Each BatchWriter honors the `timely.accumulo.write.latency` and `timely.accumulo.write.threads` configuration property, but the buffer size for each BatchWriter is `timely.accumulo.write.buffer-size` divided by the number of threads. For example, if you have 8 threads processing put operations and the following settings, then you will have 8 BatchWriters each using 2 threads with a 30s latency and a maximum buffer size of 128M: timely.accumulo.write.latency=30s, timely.accumulo.write.threads=2 timely.accumulo.write.buffer-size=1G
@@ -130,6 +126,10 @@ timely.websocket.ip | The IP address where the Timely server is listening for we
timely.websocket.port | The port that will be used for processing web socket requests |
timely.websocket.timeout | Number of seconds with no client ping response before closing subscription | 60
timely.websocket.subscription-lag | Number of seconds that subscriptions should lag to account for latency | 120
timely.websocket.scanner-batch-size | Accumulo Scanner batch size | 5000
timely.websocket.flush-interval-seconds | Time in seconds that Timely will send a batch of subscription responses to the client | 30
timely.websocket.scanner-read-ahead | Accumulo Scanner Readahead threshold | 1
timely.websocket.subscription-batch-size | Maximum number of metric responses in a batch sent back to the client | 1000
timely.meta-cache.expiration-minutes | Number of minutes after which unaccessed meta information will be purged from the meta cache | 60
timely.meta-cache.initial-capacity | Initial capacity of the meta cache | 2000
timely.meta-cache.max-capacity | Maximum capacity of the meta cache | 10000
+14 -11
View File
@@ -7,26 +7,27 @@ The subscription API allows the user to subscribe to metrics data using WebSocke
```json
{
"metric" : "sys.cpu.user",
"timestamp":1469028728091,
"value":1.0,
"timestamp": 1469028728091,
"value": 1.0,
"tags":
[
{
"key":"rack",
"value":"r1"
"key": "rack",
"value": "r1"
},{
"key":"tag3",
"value":"value3"
"key": "tag3",
"value": "value3"
},{
"key":"tag4",
"value":"value4"
"key": "tag4",
"value": "value4"
}
],
"subscriptionId":"<unique id>"
"subscriptionId": "<unique id>",
"complete": false
}
```
The Metric response contains the metric name, tag set, value for the metric, and the timestamp.
The Metric response contains the metric name, tag set, value for the metric, and the timestamp. Unlike the timeseries api, the subscription responses will include the `viz` tag if it exists on the data.
## Create Operation
@@ -49,17 +50,19 @@ Initialize this WebSocket connection for subscription requests. This method does
"metric" : "sys.cpu.user",
"tags" : null,
"startTime" : null,
"endTime" : null,
"delayTime" : 1000
}
```
Subscribe to metrics that match the metric name and optional tag set. Only one subscription per `metric` is supported. The Timely server will return [Metric] (#metric-response) responses over the WebSocket channel that match the `metric` and `tags` in the request. The Timely server will return metrics that are older than the `startTime`, which can be zero to return all currently stored data. When all data has been returned, the Timely server will wait `delayTime` ms before looking for new data. The Timely server maintains a pointer to the last metric returned, so it will not return data that is newly inserted but older than the last returned metric. Use the `timely.websocket.subscription-lag` server configuration property to determine how close to current time the subscriptions will be. This will depend on your deployment. For example, if the `timely.accumulo.write.latency` configuration property is 30s, then you may want to set the lag to greater than 30s to ensure that all data has arrived.
Subscribe to metrics that match the metric name and optional tag set. Only one subscription per `metric` is supported. The Timely server will return [Metric] (#metric-response) responses over the WebSocket channel that match the `metric` and `tags` in the request. The Timely server will return metrics that are older than the `startTime`, which can be zero to return all currently stored data. When all data has been returned, the Timely server will either send a completed message, or wait `delayTime` ms before looking for new data, depending on the value of endTime. If endTime has been specified, then the Timely server will send a final message with `complete` set to true. Otherwise, the Timely server maintains a pointer to the last metric returned, so it will not return data that is newly inserted but older than the last returned metric. Use the `timely.websocket.subscription-lag` server configuration property to determine how close to current time the subscriptions will be. This will depend on your deployment. For example, if the `timely.accumulo.write.latency` configuration property is 30s, then you may want to set the lag to greater than 30s to ensure that all data has arrived.
Attribute | Type | Description
----------|------|------------
metric | string | metric name
tags | map | (Optional) Map of K,V strings to use in the query.
startTime | long | (Optional, default 0) Return metrics after this time (in ms)
endTime | long | (Optional, default 0) If specified, stop returning data at this time (in ms)
delayTime | long | Wait time to look for the arrival of new data.
## Remove Operation
+2 -2
View File
@@ -44,6 +44,6 @@ Getting started with Timely requires that you:
2. Install and configure the Timely [app] (#deployment) within Grafana
> Timely should accept data from TCollector with no changes. A [plugin] (#plugins-for-collectd) exists for sending data from CollectD.
3. Send metrics to Timely using [CollectD] (http://collectd.org/), OpenTSDBs [TCollector] (https://github.com/OpenTSDB/tcollector), etc.
> Timely should accept data from TCollector with no changes. A [plugin] (#plugins-for-collectd) exists for sending data from CollectD.
+2 -2
View File
@@ -43,7 +43,7 @@ under the License.
</a>
<div class="tocify-wrapper">
<%= image_tag "logo.png" %>
<% if language_tabs %>
<% if language_tabs.any? %>
<div class="lang-selector">
<% language_tabs.each do |lang| %>
<% if lang.is_a? Hash %>
@@ -79,7 +79,7 @@ under the License.
<% end %>
</div>
<div class="dark-box">
<% if language_tabs %>
<% if language_tabs.any? %>
<div class="lang-selector">
<% language_tabs.each do |lang| %>
<% if lang.is_a? Hash %>
+38 -40
View File
@@ -23,48 +23,46 @@ under the License.
// BACKGROUND COLORS
////////////////////
$nav-bg: #393939;
$examples-bg: #393939;
$code-bg: #292929;
$code-annotation-bg: #1c1c1c;
$nav-subitem-bg: #262626;
$nav-active-bg: #2467af;
$lang-select-border: #000;
$lang-select-bg: #222;
$lang-select-active-bg: $examples-bg; // feel free to change this to blue or something
$lang-select-pressed-bg: #111; // color of language tab bg when mouse is pressed
$main-bg: #eaf2f6;
$aside-notice-bg: #8fbcd4;
$aside-warning-bg: #c97a7e;
$aside-success-bg: #6ac174;
$search-notice-bg: #c97a7e;
$nav-bg: #393939 !default;
$examples-bg: #393939 !default;
$code-bg: #292929 !default;
$code-annotation-bg: #1c1c1c !default;
$nav-subitem-bg: #262626 !default;
$nav-active-bg: #2467af !default;
$lang-select-border: #000 !default;
$lang-select-bg: #222 !default;
$lang-select-active-bg: $examples-bg !default; // feel free to change this to blue or something
$lang-select-pressed-bg: #111 !default; // color of language tab bg when mouse is pressed
$main-bg: #eaf2f6 !default;
$aside-notice-bg: #8fbcd4 !default;
$aside-warning-bg: #c97a7e !default;
$aside-success-bg: #6ac174 !default;
$search-notice-bg: #c97a7e !default;
// TEXT COLORS
////////////////////
$main-text: #111; // main content text color
//$main-text: #333; // main content text color
$nav-text: #fff;
$nav-active-text: #fff;
$lang-select-text: #fff; // color of unselected language tab text
$lang-select-active-text: #fff; // color of selected language tab text
$lang-select-pressed-text: #fff; // color of language tab text when mouse is pressed
$main-text: #111 !default; // main content text color
$nav-text: #fff !default;
$nav-active-text: #fff !default;
$lang-select-text: #fff !default; // color of unselected language tab text
$lang-select-active-text: #fff !default; // color of selected language tab text
$lang-select-pressed-text: #fff !default; // color of language tab text when mouse is pressed
// SIZES
////////////////////
$nav-width: 230px; // width of the navbar
$examples-width: 35%; // portion of the screen taken up by code examples
//$examples-width: 50%; // portion of the screen taken up by code examples
$logo-margin: 20px; // margin between nav items and logo, ignored if search is active
$main-padding: 28px; // padding to left and right of content & examples
$nav-padding: 15px; // padding to left and right of navbar
$nav-v-padding: 10px; // padding used vertically around search boxes and results
$nav-indent: 10px; // extra padding for ToC subitems
$code-annotation-padding: 13px; // padding inside code annotations
$h1-margin-bottom: 21px; // padding under the largest header tags
$tablet-width: 930px; // min width before reverting to tablet size
$phone-width: $tablet-width - $nav-width; // min width before reverting to mobile size
$nav-width: 230px !default; // width of the navbar
$examples-width: 35% !default; // portion of the screen taken up by code examples
$logo-margin: 20px !default; // margin between nav items and logo, ignored if search is active
$main-padding: 28px !default; // padding to left and right of content & examples
$nav-padding: 15px !default; // padding to left and right of navbar
$nav-v-padding: 10px !default; // padding used vertically around search boxes and results
$nav-indent: 10px !default; // extra padding for ToC subitems
$code-annotation-padding: 13px !default; // padding inside code annotations
$h1-margin-bottom: 21px !default; // padding under the largest header tags
$tablet-width: 930px !default; // min width before reverting to tablet size
$phone-width: $tablet-width - $nav-width !default; // min width before reverting to mobile size
// FONTS
@@ -88,12 +86,12 @@ $phone-width: $tablet-width - $nav-width; // min width before reverting to mobil
// OTHER
////////////////////
$nav-active-shadow: #000;
$nav-footer-border-color: #666;
$nav-embossed-border-top: #000;
$nav-embossed-border-bottom: #939393;
$main-embossed-text-shadow: 0px 1px 0px #fff;
$search-box-border-color: #666;
$nav-active-shadow: #000 !default;
$nav-footer-border-color: #666 !default;
$nav-embossed-border-top: #000 !default;
$nav-embossed-border-bottom: #939393 !default;
$main-embossed-text-shadow: 0px 1px 0px #fff !default;
$search-box-border-color: #666 !default;
////////////////////////////////////////////////////////////////////////////////
+1 -1
View File
@@ -110,7 +110,7 @@ html, body {
}
}
img+.tocify {
img+.tocify, .lang-selector+.tocify {
margin-top: $logo-margin;
}