##// END OF EJS Templates
documentation: all the documentation for AE
ergo -
Show More
@@ -0,0 +1,172 b''
1 # Makefile for Sphinx documentation
2 #
3
4 # You can set these variables from the command line.
5 SPHINXOPTS = -W
6 SPHINXBUILD = ../result/bin/sphinx-build
7 PAPER =
8 BUILDDIR = _build
9
10 # Internal variables.
11 PAPEROPT_a4 = -D latex_paper_size=a4
12 PAPEROPT_letter = -D latex_paper_size=letter
13 ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
14 # the i18n builder cannot share the environment and doctrees with the others
15 I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
16
17 .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
18
19 help:
20 @echo "Please use \`make <target>' where <target> is one of"
21 @echo " html to make standalone HTML files"
22 @echo " dirhtml to make HTML files named index.html in directories"
23 @echo " singlehtml to make a single large HTML file"
24 @echo " pickle to make pickle files"
25 @echo " json to make JSON files"
26 @echo " htmlhelp to make HTML files and a HTML help project"
27 @echo " qthelp to make HTML files and a qthelp project"
28 @echo " devhelp to make HTML files and a Devhelp project"
29 @echo " epub to make an epub"
30 @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
31 @echo " latexpdf to make LaTeX files and run them through pdflatex"
32 @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
33 @echo " text to make text files"
34 @echo " man to make manual pages"
35 @echo " texinfo to make Texinfo files"
36 @echo " info to make Texinfo files and run them through makeinfo"
37 @echo " gettext to make PO message catalogs"
38 @echo " changes to make an overview of all changed/added/deprecated items"
39 @echo " xml to make Docutils-native XML files"
40 @echo " pseudoxml to make pseudoxml-XML files for display purposes"
41 @echo " linkcheck to check all external links for integrity"
42 @echo " doctest to run all doctests embedded in the documentation (if enabled)"
43
44 clean:
45 rm -rf $(BUILDDIR)
46
47 html:
48 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
49 @echo
50 @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
51
52 dirhtml:
53 $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
54 @echo
55 @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
56
57 singlehtml:
58 $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
59 @echo
60 @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
61
62 pickle:
63 $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
64 @echo
65 @echo "Build finished; now you can process the pickle files."
66
67 json:
68 $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
69 @echo
70 @echo "Build finished; now you can process the JSON files."
71
72 htmlhelp:
73 $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
74 @echo
75 @echo "Build finished; now you can run HTML Help Workshop with the" \
76 ".hhp project file in $(BUILDDIR)/htmlhelp."
77
78 qthelp:
79 $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
80 @echo
81 @echo "Build finished; now you can run "qcollectiongenerator" with the" \
82 ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
83 @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/RhodeCodeInstaller.qhcp"
84 @echo "To view the help file:"
85 @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/RhodeCodeInstaller.qhc"
86
87 devhelp:
88 $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
89 @echo
90 @echo "Build finished."
91 @echo "To view the help file:"
92 @echo "# mkdir -p $$HOME/.local/share/devhelp/RhodeCodeInstaller"
93 @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/RhodeCodeInstaller"
94 @echo "# devhelp"
95
96 epub:
97 $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
98 @echo
99 @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
100
101 latex:
102 $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
103 @echo
104 @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
105 @echo "Run \`make' in that directory to run these through (pdf)latex" \
106 "(use \`make latexpdf' here to do that automatically)."
107
108 latexpdf:
109 $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
110 @echo "Running LaTeX files through pdflatex..."
111 $(MAKE) -C $(BUILDDIR)/latex all-pdf
112 @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
113
114 latexpdfja:
115 $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
116 @echo "Running LaTeX files through platex and dvipdfmx..."
117 $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
118 @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
119
120 text:
121 $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
122 @echo
123 @echo "Build finished. The text files are in $(BUILDDIR)/text."
124
125 man:
126 $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
127 @echo
128 @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
129
130 texinfo:
131 $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
132 @echo
133 @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
134 @echo "Run \`make' in that directory to run these through makeinfo" \
135 "(use \`make info' here to do that automatically)."
136
137 info:
138 $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
139 @echo "Running Texinfo files through makeinfo..."
140 make -C $(BUILDDIR)/texinfo info
141 @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
142
143 gettext:
144 $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
145 @echo
146 @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
147
148 changes:
149 $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
150 @echo
151 @echo "The overview file is in $(BUILDDIR)/changes."
152
153 linkcheck:
154 $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
155 @echo
156 @echo "Link check complete; look for any errors in the above output " \
157 "or in $(BUILDDIR)/linkcheck/output.txt."
158
159 doctest:
160 $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
161 @echo "Testing of doctests in the sources finished, look at the " \
162 "results in $(BUILDDIR)/doctest/output.txt."
163
164 xml:
165 $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
166 @echo
167 @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
168
169 pseudoxml:
170 $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
171 @echo
172 @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
@@ -0,0 +1,19 b''
1 {% extends "!layout.html" %}
2 {% set css_files = css_files + ['_static/add.css'] %}
3 {% set css_files = css_files + ['https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css'] %}
4
5 {% block footer %}
6 {{ super() }}
7
8 <script>
9 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
10 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
11 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
12 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
13
14 ga('create', 'UA-55639800-3', 'auto');
15 ga('send', 'pageview');
16
17 </script>
18
19 {% endblock %}
@@ -0,0 +1,9 b''
1 Configuration Setup
2 ===================
3
4 .. toctree::
5 :maxdepth: 1
6
7 connect-enterprise
8 alert-channels
9 auth-tokens
@@ -0,0 +1,108 b''
1 .. _rae-cli:
2
3 |RAE| CLI Guide
4 ===============
5
6 appenlight-cleanup
7 ------------------
8
9 .. py:function:: appenlight_cleanup [-c, --config <PATH>] [-t, --types <choices>]
10 [-r, --resource <resource-id>] [-n, --namespace <resource-id>]
11
12 Clean up the |RAE| database records.
13
14 :argument -c --config: Location of the :file:`appenlight.ini` file.
15 :argument -t --types: (Optional) Specify the records you want to cleanup in
16 the database from the following options. The default value is ``logs``.
17
18 :argument -r --resource: Specify which application's records you with to
19 clean up. The *<resource-id>* refers to your application ID number,
20 which you can get from the |RAE| interface.
21
22 :argument -n --namespace: (Optional) Specify which namespace records you
23 wish to clean up. You can check the available namespace records in
24 your logs.
25
26
27 .. code-block:: bash
28
29 # Clean up logs on resource ID 18
30 $ ~/python/bin/appenlight_cleanup -c ~/appenlight/production.ini -t logs -r 18
31
32 appenlight-initializedb
33 -----------------------
34
35 .. py:function:: appenlight-initializedb <ini-file-name>
36
37 Initialize |RAE| database.
38
39 :argument -c --config: Location of the :file:`appenlight.ini` file.
40 :argument --username: (Optional) Specify the username of the
41 new administrator account.
42 :argument --password: Specify the password of the administrator account.
43 :argument --email: Specify the email of the administrator account.
44 :argument --auth-token: Specify the auth token for the administrator.
45
46 .. code-block:: bash
47
48 # Create a new dev.ini file and database
49 $ ~/python/bin/appenlight-initializedb -c dev.ini
50
51 appenlight-migratedb
52 --------------------
53
54 .. py:function:: appenlight_migratedb <ini-file-name>
55
56 Migrate the database associated with the specified :file:`.ini` file.
57
58 .. code-block:: bash
59
60 # Migrate the specified DB
61 $ ~/python/bin/appenlight-initializedb -c ~/appenlight/production.ini
62
63 appenlight-reindex-elastic-search
64 ---------------------------------
65
66 .. py:function:: appenlight_reindex-elastic-search [-c, --config <PATH>] [-t, --types <choices>]
67
68 :argument -c --config: Location of the :file:`appenlight.ini` file.
69 :argument -t --types: (Optional) Specify the records you want to reindex in
70 the database from the following options. The default value is to
71 reindex all records.
72
73 - ``reports``
74 - ``logs``
75 - ``metrics``
76 - ``slow_calls``
77 - ``template``
78 - **other types inherited from plugins**
79
80 .. code-block:: bash
81
82 # Reindex reports
83 $ ~/python/bin/appenlight_reindex_elasticsearch -c ~/appenlight/production.ini -t reports
84
85 # Reindex everything
86 $ ~/python/bin/appenlight_reindex_elasticsearch -c ~/appenlight/production.ini
87
88 appenlight-uptime-monitor
89 -------------------------
90
91 .. py:function:: appenlight-uptime-monitor [-c, --config <PATH>] [-s, --sync-url <URL>]
92 [-u, --update-url <URL>] [-l, --location <ping-id>] [-k, --api-key <api-key>]
93
94 |RAE| Uptime Monitor.
95
96 :argument -c --config: Location of the :file:`appenlight.ini` file.
97 :argument -s --sync-url: Specify the source URL for monitoring. The
98 default url is ``http://127.0.0.1:6543/api/uptime_app_list``.
99 :argument -u --update-url: Specify the destination URL for the uptime
100 data. The default value is ``http://127.0.0.1:6543/api/uptime``.
101 :argument -l --location: Integer identifier for location of ping service.
102 The default location is ``1``.
103 :argument -k --api-key: The administrator user auth TOKEN.
104
105 .. code-block:: bash
106
107 # Run uptime monitoring script
108 $ ~/python/bin/appenlight-uptime-monitor -c uptime_config.ini
@@ -0,0 +1,52 b''
1 Alert Channels
2 ==============
3
4 You can configure |RAE| to send alerts to multiple channels.
5
6 Email Channel
7 -------------
8
9 To configure an email alert channel and the rules criteria, use the following
10 steps:
11
12 1. Select :menuselection:`Settings --> Add Email Channel`
13 2. Add your email address.
14 3. On the :guilabel:`Alert channels` page, configure the notification rules
15 based on the following criteria.
16
17 .. hlist::
18
19 - Application
20 - HTTP Status
21 - Request Duration
22 - Priority
23 - Domain
24 - URL Path
25 - Error
26 - Tag
27 - Group
28
29 .. image:: ../images/set-alerts.png
30
31 Additional Channels
32 -------------------
33
34 You can configure further channels using the following steps:
35
36 1. Select :menuselection:`Settings --> List Applications`
37 2. Click :guilabel:`Integrations` beside the application for which you wish to
38 configure alerts.
39
40 The following integrations are available, and you can read more in the
41 :ref:`integrations` section:
42
43 .. hlist::
44
45 - Bitbucket
46 - Campfire
47 - Flowdock
48 - github
49 - Hipchat
50 - Jira
51 - Slack
52 - webhooks
@@ -0,0 +1,48 b''
1 Application Monitoring
2 ======================
3
4 You can connect multiple applications to |RAE| for monitoring. To do this,
5 use the information in this section.
6
7 Adding an Application
8 ---------------------
9
10 1. Select :menuselection:`Settings --> Create Application`.
11 2. Set the :guilabel:`Application name` and :guilabel:`Application URL`.
12 3. Click :guilabel:`Create Application`.
13
14 .. note::
15
16 You will need to configure your application to communicate with |RAE|.
17 See the instructions for your particular framework in the
18 `Appenlight Developer Docs`_.
19
20 Transfer Application Ownership
21 ------------------------------
22
23 1. Select :menuselection:`Admin --> List Applications --> Settings`
24 2. In the :guilabel:`Transfer Ownership` section, enter the following
25 details:
26
27 - The current owner's password
28 - The new owner's username
29
30 3. Click :guilabel:`Transfer Ownership of application`
31
32 Adding Users and User Groups
33 ----------------------------
34
35 Access to each application is granted on a :guilabel:`User Group` or
36 :guilabel:`User` basis, see the :ref:`user-perms` section for more details.
37
38 Removing an Application
39 -----------------------
40
41 To remove an application from |RAE|, us the following steps.
42
43 1. Select :menuselection:`Admin --> List Applications`
44 2. Click :guilabel:`Settings` beside the application you want to delete.
45 3. Click :guilabel:`Delete my application`
46
47
48 .. _Appenlight Developer Docs: https://appenlight.rhodecode.com/page/api/main
@@ -0,0 +1,16 b''
1 Authentication Tokens
2 =====================
3
4 These tokens are used to authenticate users when accessing information using
5 the API.
6
7 Creating Tokens
8 ---------------
9
10 To create Authentication Tokens, go to the
11 :menuselection:`Settings --> Auth Tokens` page.
12
13 .. note::
14
15 The API is currently in BETA, so there is no real need to use
16 Authentication Tokens yet.
@@ -0,0 +1,100 b''
1 .. _connect-enterprise:
2
3 How To Use |AE| to Monitor |RCE|
4 ================================
5
6 .. raw:: html
7
8 From the landing page, the <i class="fa fa-cog "></i> icon takes you to
9 the settings page.<br><br>
10
11 1. From the interface, create an application for |AE| to monitor:
12 :menuselection:`Settings --> Create Application`
13 2. Add in your |RCE| instance details.
14 3. Take note of the Public and Private API keys on the application page. You
15 will need to add the private key to your |RCE| configuration file.
16
17 |RCE| Side Of The Setup
18 -----------------------
19
20 Once you have your |AE| account details, configure the |RCE|
21 :file:`home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file with the
22 following details to set up the connection between the two systems.
23
24 .. tip::
25
26 The section below should already be present in your configuration file if
27 running a recent version of |RCE|.
28
29 * Enable the |AE| connection by setting ``appenlight = true``.
30 * Set your |AE| URL using the ``appenlight.server_url = URL`` option.
31 * Set your |AE| |authtoken| using the ``appenlight.api_key = TOKEN`` option.
32
33 .. code-block:: ini
34 :emphasize-lines: 10,12,13
35
36 ###################################
37 ## ERROR AND LOG HANDLING SYSTEM ##
38 ###################################
39
40 ## Appenlight is tailored to work with RhodeCode, see
41 ## http://appenlight.com for details how to obtain an account
42 ## you must install python package `appenlight_client` to make it work
43
44 ## appenlight enabled
45 appenlight = false
46
47 appenlight.server_url = https://api.appenlight.com
48 appenlight.api_key = YOUR_PRIVATE_API_KEY
49
50 ## TWEAK AMOUNT OF INFO SENT HERE
51
52 ## enables 404 error logging (default False)
53 appenlight.report_404 = false
54
55 ## time in seconds after request is considered being slow (default 1)
56 appenlight.slow_request_time = 1
57
58 ## record slow requests in application
59 ## (needs to be enabled for slow datastore recording and time tracking)
60 appenlight.slow_requests = true
61
62 ## enable hooking to application loggers
63 appenlight.logging = true
64
65 ## minimum log level for log capture
66 appenlight.logging.level = WARNING
67
68 ## send logs only from erroneous/slow requests
69 ## (saves API quota for intensive logging)
70 appenlight.logging_on_error = false
71
72 ## list of additonal keywords that should be grabbed from environ object
73 ## can be string with comma separated list of words in lowercase
74 ## (by default client will always send following info:
75 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
76 ## start with HTTP* this list be extended with additional keywords here
77 appenlight.environ_keys_whitelist = ""
78
79 ## list of keywords that should be blanked from request object
80 ## can be string with comma separated list of words in lowercase
81 ## (by default client will always blank keys that contain following words
82 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
83 ## this list be extended with additional keywords set here
84 appenlight.request_keys_blacklist = ""
85
86 ## list of namespaces that should be ignores when gathering log entries
87 ## can be string with comma separated list of namespaces
88 ## (by default the client ignores own entries: appenlight_client.client)
89 appenlight.log_namespace_blacklist = ""
90
91 Verifying The Setup
92 -------------------
93
94 Once |RCE| and |AE| are working together you will see the monitoring begin on
95 your |AE| dashboard when you start carrying out actions in |RCE|.
96
97 .. image:: ../images/ae-verify.png
98
99 .. _sign up for an account: https://appenlight.rhodecode.com/
100 .. _here: https://appenlight.rhodecode.com/page/api/main
@@ -0,0 +1,64 b''
1 .. _feature-overview:
2
3 Feature Overview
4 ================
5
6 Error Reporting
7 ---------------
8
9 - Reports are grouped based on parameters such as *server*, *exception*, or
10 *view name*.
11 - Every report contains the stacktrace that generated it, and you can inspect
12 local frame variables from each stacktrace.
13 - It is possible to attach custom context data to reports.
14 - Separate occurrences of an error within a group can be inspected.
15 - Exception trends can be spotted by using the graphing features and
16 visualising the data.
17 - You can see application logs that happen during a specific request.
18 - You can identify slow calls and get a layered breakdown of request executions.
19 - You can access all request parameters in exception reports.
20 - Full-text search reports are available based on filters.
21 - You can set prioritization rules for your reports.
22 - You can set report alerts to notify someone immediately if a particular
23 problem occurs.
24
25
26 Performance Monitoring
27 ----------------------
28
29 - Automatic application performance monitoring once your system is connected
30 to |RAE|.
31 - Slow request are monitored with individual query details, and slow call
32 details can be viewed from the interface.
33 - You can view your application performance metrics and response time
34 statistics using filters to breakdown the data.
35 - You can get insights into different layers of your application including: SQL
36 queries, time traces, noSql data stores, cache layers, remote connection
37 times, and others.
38 - You can get a breakdown of the most accessed view in your application, and
39 their average response times.
40 - You can connect multiple servers to the system and filter data base on the
41 hostname.
42 - You can trace the performance of your own functions.
43 - You can use full-text search to get reports based on server, priority,
44 occurrences, average duration, url path, namespace and others.
45 - You can set prioritization rules for your reports.
46
47 In-app Logging
48 --------------
49
50 - You can view external and in-app logs separately.
51 - Once connected your application will start streaming logs that you can then
52 use to generate reports.
53 - You can filter logs based on server, severity, log contents or
54 namespace.
55 - You can see logs that are being generated by specific requests.
56
57 Collaboration Features
58 ----------------------
59
60 - You can add many users to your |RAE| instance.
61 - You can set read/write permissions to team members on a
62 per-connected-application basis.
63 - You can assign reports to team members for review.
64 - You can leave comments on reports.
@@ -0,0 +1,4 b''
1 |RAE| Architecture
2 ==================
3
4 Fill in later
@@ -0,0 +1,56 b''
1 .. _user-perms:
2
3 User Administration
4 ===================
5
6 .. raw:: html
7
8 From the landing page, them <i class="fa fa-wrench "></i> icon takes you
9 to the admin panel. User management is carried out using the following:
10 <br><br>
11
12 - User Groups
13 - Users
14
15 .. image:: ../images/user-mgmt.png
16
17 Create A User Group
18 -------------------
19
20 1. Select :menuselection:`Admin --> Create Group`
21 2. Set the :guilabel:`Group Name` and :guilabel:`Description`
22 3. Click :guilabel:`Add Group`
23
24 Add/Remove Users From Group
25 ---------------------------
26
27 1. Select :menuselection:`Admin --> Groups --> Settings`
28 2. From the :guilabel:`User List` pane, add or remove users.
29
30 Create/Edit A User
31 ------------------
32
33 1. Select :menuselection:`Admin --> Create User`
34 2. Set the following user details:
35
36 - :guilabel:`Username`
37 - :guilabel:`Password`
38 - :guilabel:`Email Address`
39
40 3. Click :guilabel:`Add Group`
41
42 Setting Permissions
43 -------------------
44
45 Permissions are set for User Groups and Users on a per application basis. To
46 set their permissions to each one, use the following steps:
47
48 1. Select :menuselection:`Admin --> List Applications`
49 2. Click the :guilabel:`Settings` button beside the application of your choice.
50 3. From the :guilabel:`Permissions` panel, give the User Group or User access
51 to the application, and set their level of access from the following options:
52
53 - :guilabel:`View`
54 - :guilabel:`Update Reports`
55
56 4. Click :guilabel:`Give permission`
@@ -0,0 +1,33 b''
1 # Try and keep this list alphabetical
2 # ui is for user interface elements and messages
3 # button - that's obvious
4
5 rst_epilog = '''
6 .. |AE| replace:: Appenlight
7 .. |RAE| replace:: RhodeCode Appenlight
8 .. |authtoken| replace:: Authentication Token
9 .. |authtokens| replace:: **Auth Tokens**
10 .. |git| replace:: Git
11 .. |hg| replace:: Mercurial
12 .. |svn| replace:: Subversion
13 .. |LDAP| replace:: LDAP / Active Directory
14 .. |os| replace:: operating system
15 .. |OS| replace:: Operating System
16 .. |PY| replace:: Python
17 .. |pr| replace:: pull request
18 .. |prs| replace:: pull requests
19 .. |psf| replace:: Python Software Foundation
20 .. |repo| replace:: repository
21 .. |repos| replace:: repositories
22 .. |RCI| replace:: RhodeCode Control
23 .. |RCC| replace:: RhodeCode Control
24 .. |RCV| replace:: RhodeCode Enterprise
25 .. |RCM| replace:: RhodeCode Enterprise
26 .. |RCE| replace:: RhodeCode Enterprise
27 .. |RCX| replace:: RhodeCode Extensions
28 .. |RCT| replace:: RhodeCode Tools
29 .. |RCEBOLD| replace:: **RhodeCode Enterprise**
30 .. |RCEITALICS| replace:: `RhodeCode Enterprise`
31 .. |RC| replace:: RhodeCode
32 .. |RNS| replace:: Release Notes
33 '''
@@ -0,0 +1,307 b''
1 # -*- coding: utf-8 -*-
2 #
3 # RhodeCode Enterprise documentation build configuration file, created by
4 # sphinx-quickstart on Tue Nov 4 11:48:37 2014.
5 #
6 # This file is execfile()d with the current directory set to its
7 # containing dir.
8 #
9 # Note that not all possible configuration values are present in this
10 # autogenerated file.
11 #
12 # All configuration values have a default; values that are commented out
13 # serve to show the default.
14
15 import sys
16 import os
17 import datetime
18 import sphinx_rtd_theme
19
20 # If extensions (or modules to document with autodoc) are in another directory,
21 # add these directories to sys.path here. If the directory is relative to the
22 # documentation root, use os.path.abspath to make it absolute, like shown here.
23 sys.path.insert(0, os.path.abspath('.'))
24 import common
25
26 # -- General configuration ------------------------------------------------
27
28 # If your documentation needs a minimal Sphinx version, state it here.
29 #needs_sphinx = '1.0'
30
31 # Add any Sphinx extension module names here, as strings. They can be
32 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
33 # ones.
34 extensions = [
35 'sphinx.ext.intersphinx',
36 'sphinx.ext.todo',
37 'sphinx.ext.pngmath'
38 ]
39
40 intersphinx_mapping = {
41 'enterprise': ('https://docs.rhodecode.com/RhodeCode-Enterprise/', None),
42 'control': ('https://docs.rhodecode.com/RhodeCode-Control/', None),
43 }
44
45 if tags.has('dev'):
46 intersphinx_mapping.update({
47 'enterprise': ('https://ci.rhodecode.com/documentation/Momentum/', None),
48 'control': ('https://ci.rhodecode.com/documentation/Control/', None),
49 })
50
51
52 # Add any paths that contain templates here, relative to this directory.
53 templates_path = ['_templates']
54
55 # The suffix of source filenames.
56 source_suffix = '.rst'
57
58 # The encoding of source files.
59 #source_encoding = 'utf-8-sig'
60
61 # The master toctree document.
62 master_doc = 'index'
63
64 # The version info for the project you're documenting, acts as replacement for
65 # |version| and |release|, also used in various other places throughout the
66 # built documents.
67
68 # TODO: johbo: Move into common package for documentation utilities
69 def _get_version():
70 with open('../VERSION') as f:
71 return f.read().strip()
72
73 # The full version, including alpha/beta/rc tags.
74 release = _get_version()
75 # The short X.Y version.
76 version = '.'.join(release.split('.', 2)[:2]) # First two parts of release
77
78 # General information about the project.
79 project = u'RhodeCode Appenlight %s ' % _get_version()
80 copyright = u'2014-{now.year}, RhodeCode GmbH'.format(
81 now=datetime.datetime.today())
82
83
84 # The language for content autogenerated by Sphinx. Refer to documentation
85 # for a list of supported languages.
86 #language = None
87
88 rst_epilog = common.rst_epilog + """
89 .. |async| replace:: asynchronous
90 """
91
92 # There are two options for replacing |today|: either, you set today to some
93 # non-false value, then it is used:
94 #today = ''
95 # Else, today_fmt is used as the format for a strftime call.
96 #today_fmt = '%B %d, %Y'
97
98 # List of patterns, relative to source directory, that match files and
99 # directories to ignore when looking for source files.
100 exclude_patterns = [
101 # Special directories
102 '_build',
103 'result',
104
105 # Other RST files
106 'install/install.rst',
107 'admin/system-architecture.rst',
108 'logs/logs.rst',
109
110 ]
111
112
113 # The reST default role (used for this markup: `text`) to use for all
114 # documents.
115 #default_role = None
116
117 # If true, '()' will be appended to :func: etc. cross-reference text.
118 #add_function_parentheses = True
119
120 # If true, the current module name will be prepended to all description
121 # unit titles (such as .. function::).
122 #add_module_names = True
123
124 # If true, sectionauthor and moduleauthor directives will be shown in the
125 # output. They are ignored by default.
126 #show_authors = False
127
128 # The name of the Pygments (syntax highlighting) style to use.
129 pygments_style = 'sphinx'
130
131 # A list of ignored prefixes for module index sorting.
132 #modindex_common_prefix = []
133
134 # If true, keep warnings as "system message" paragraphs in the built documents.
135 keep_warnings = tags.has("dev")
136
137
138 # -- Options for HTML output ----------------------------------------------
139
140 # The theme to use for HTML and HTML Help pages. See the documentation for
141 # a list of builtin themes.
142 #html_theme = 'rctheme'
143 html_theme = 'sphinx_rtd_theme'
144
145 # Theme options are theme-specific and customize the look and feel of a theme
146 # further. For a list of options available for each theme, see the
147 # documentation.
148 #html_theme_options = {}
149 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
150
151 # Add any paths that contain custom themes here, relative to this directory.
152 #html_theme_path = []
153
154 # The name for this set of Sphinx documents. If None, it defaults to
155 # "<project> v<release> documentation".
156 #html_title = None
157
158 # A shorter title for the navigation bar. Default is the same as html_title.
159 #html_short_title = None
160
161 # The name of an image file (relative to this directory) to place at the top
162 # of the sidebar.
163 #html_logo = None
164 html_sidebars = {
165 '**': ['globaltoc.html'],
166 }
167
168 # The name of an image file (within the static path) to use as favicon of the
169 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
170 # pixels large.
171 html_favicon = 'images/favicon.ico'
172
173 # Add any paths that contain custom static files (such as style sheets) here,
174 # relative to this directory. They are copied after the builtin static files,
175 # so a file named "default.css" will overwrite the builtin "default.css".
176 html_static_path = ['static/css/add.css']
177
178 # Add any extra paths that contain custom files (such as robots.txt or
179 # .htaccess) here, relative to this directory. These files are copied
180 # directly to the root of the documentation.
181 #html_extra_path = []
182
183 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
184 # using the given strftime format.
185 #html_last_updated_fmt = '%b %d, %Y'
186
187 # If true, SmartyPants will be used to convert quotes and dashes to
188 # typographically correct entities.
189 #html_use_smartypants = True
190
191 # Custom sidebar templates, maps document names to template names.
192 #html_sidebars = {}
193
194 # Additional templates that should be rendered to pages, maps page names to
195 # template names.
196 #html_additional_pages = {}
197
198 # If false, no module index is generated.
199 #html_domain_indices = True
200
201 # If false, no index is generated.
202 #html_use_index = True
203
204 # If true, the index is split into individual pages for each letter.
205 #html_split_index = False
206
207 # If true, links to the reST sources are added to the pages.
208 #html_show_sourcelink = True
209
210 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
211 #html_show_sphinx = True
212
213 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
214 #html_show_copyright = True
215
216 # If true, an OpenSearch description file will be output, and all pages will
217 # contain a <link> tag referring to it. The value of this option must be the
218 # base URL from which the finished HTML is served.
219 #html_use_opensearch = ''
220
221 # This is the file name suffix for HTML files (e.g. ".xhtml").
222 #html_file_suffix = None
223
224 # Output file base name for HTML help builder.
225 htmlhelp_basename = 'rhodecode-appenlight'
226
227
228 # -- Options for LaTeX output ---------------------------------------------
229
230 latex_elements = {
231 # The paper size ('letterpaper' or 'a4paper').
232 #'papersize': 'letterpaper',
233
234 # The font size ('10pt', '11pt' or '12pt').
235 #'pointsize': '10pt',
236
237 # Additional stuff for the LaTeX preamble.
238 #'preamble': '',
239 }
240
241 # Grouping the document tree into LaTeX files. List of tuples
242 # (source start file, target name, title,
243 # author, documentclass [howto, manual, or own class]).
244 latex_documents = [
245 ('index', 'RhodeCodeAppenlight.tex', u'RhodeCode Appenlight',
246 u'RhodeCode GmbH', 'manual'),
247 ]
248
249 # The name of an image file (relative to this directory) to place at the top of
250 # the title page.
251 #latex_logo = None
252
253 # For "manual" documents, if this is true, then toplevel headings are parts,
254 # not chapters.
255 #latex_use_parts = False
256
257 # If true, show page references after internal links.
258 #latex_show_pagerefs = False
259
260 # If true, show URL addresses after external links.
261 #latex_show_urls = False
262
263 # Documents to append as an appendix to all manuals.
264 #latex_appendices = []
265
266 # If false, no module index is generated.
267 #latex_domain_indices = True
268
269
270 # -- Options for manual page output ---------------------------------------
271
272 # One entry per manual page. List of tuples
273 # (source start file, name, description, authors, manual section).
274 man_pages = [
275 ('rhodecode-enterprise', 'rhodecodeenterprise', u'RhodeCode Enterprise',
276 [u'RhodeCode GmbH'], 1)
277 ]
278
279 # If true, show URL addresses after external links.
280 #man_show_urls = False
281
282
283 # -- Options for Texinfo output -------------------------------------------
284
285 # Grouping the document tree into Texinfo files. List of tuples
286 # (source start file, target name, title, author,
287 # dir menu entry, description, category)
288 texinfo_documents = [
289 ('rhodecode-enterprise', 'RhodeCodeEnterprise', u'RhodeCode Enterprise',
290 u'Brian Butler', 'RhodeCodeEnterprise', 'One line description of project.',
291 'Miscellaneous'),
292 ]
293
294 # Documents to append as an appendix to all manuals.
295 #texinfo_appendices = []
296
297 # If false, no module index is generated.
298 #texinfo_domain_indices = True
299
300 # How to display URL addresses: 'footnote', 'no', or 'inline'.
301 #texinfo_show_urls = 'footnote'
302
303 # If true, do not generate a @detailmenu in the "Top" node's menu.
304 #texinfo_no_detailmenu = False
305
306 # We want to see todo notes in case of a pre-release build of the documentation
307 todo_include_todos = True
@@ -0,0 +1,37 b''
1 Creating Custom Dashboards
2 ==========================
3
4 .. important::
5
6 To generate custom dashboards you need to use the |RAE|
7 `Logging API`_ to export the data you want to chart. See the example
8 scripts for doing this in the :ref:`log-script-eg` section.
9
10 To create a custom dashboard, use the following steps.
11
12 1. From the |RAE| home page, select
13 :menuselection:`Charts --> Custom Dashboards --> Create Dashboard`
14 2. Add a name in the :guilabel:`Dashboard title` files and save the chart.
15 Then you can click on the :guilabel:`Configure Chart` button to
16 start creating it.
17 3. Configure the following basic chart settings:
18
19 - The :guilabel:`Application` from which the data is being monitored.
20 - Select the :guilabel:`Chart Type`.
21 - Choose between a :guilabel:`Timeseries histogram` or a :guilabel:`Terms`
22 based chart.
23 - Select the :guilabel:`Aggregation type` from the drop down menu
24
25 4. From here on, it depends on what data is being used. In the following
26 example, this is being calculated:
27
28 - the sum of sales in which the quantity of items sold was over 50
29 - for *product_name 37*
30 - over the last 7 days
31
32 .. image:: ../images/custom-dashboard.png
33 :alt: Custom Dashboard Setup
34
35 .. _Logging API: https://appenlight.rhodecode.com/page/api/0.5/logs
36
37
@@ -0,0 +1,25 b''
1 .. _log-script-eg:
2
3 Logging API Script Examples
4 ===========================
5
6 To export data from your application to use with the custom dashboard feature,
7 use the following examples to create your export scripts. Once exported to
8 |RAE|, the data will be available to begin creating custom charts.
9
10 .. tip::
11
12 To keep your charts up to date, you could run your export script as a cron
13 job.
14
15 Example Script 1
16 ----------------
17
18 .. literalinclude:: test_data_for_analytics_sales.py
19 :language: python
20
21 Example Script 2
22 ----------------
23
24 .. literalinclude:: test_data_for_analytics_tickets.py
25 :language: python
@@ -0,0 +1,11 b''
1 Dashboards
2 ==========
3
4 .. toctree::
5 :maxdepth: 1
6
7 overview
8 creating-dashboards
9 export-scripts
10
11
@@ -0,0 +1,9 b''
1 Dashboard Overview
2 ==================
3
4 |RAE| comes with a default dashboard and will populate the fields based on
5 the data it gathers from the connected applications.
6
7 .. image:: ../images/default-dashboard.png
8 :alt: Appenlight Default Dashboard
9
@@ -0,0 +1,41 b''
1 import requests
2 import json
3 import random
4
5 from datetime import datetime, timedelta
6
7 endpoint = 'https://api.appenlight.com/api/logs?protocol_version=0.5'
8 endpoint = 'http://127.0.0.1:6543/api/logs?protocol_version=0.5'
9
10
11 logs = []
12
13 date = datetime.utcnow()
14 for x in xrange(0, 500):
15 price = random.randint(1, 10)
16 quantity = random.randint(1, 15)
17 date = date - timedelta(hours=random.randint(1, 8))
18 logs.append(
19 {"log_level": "INFO",
20 "message": "shop operation",
21 "timestamp": "",
22 "date": (date - timedelta(days=x)).strftime('%Y-%m-%dT%H:%M:%S.0'),
23 "namespace": "rc.shop.dummy_data",
24 "server": "dummy.server.com",
25 # "primary_key": x,
26 "permanent": True,
27 "tags": [["action", 'buy'],
28 ["product", 'product_name %s' % price],
29 ["price", price],
30 ["quantity", quantity],
31 ["total_payment", price * quantity],
32 ]
33 }
34 )
35
36 resp = requests.post(endpoint, data=json.dumps(logs), headers={
37 "Content-Type": "application/json",
38 "X-appenlight-api-key": "Your.API.Key"
39 })
40
41 print resp.status_code, resp.text
@@ -0,0 +1,42 b''
1 import requests
2 import json
3 import random
4
5 from datetime import datetime, timedelta
6
7 endpoint = 'https://api.appenlight.com/api/logs?protocol_version=0.5'
8 endpoint = 'http://127.0.0.1:6543/api/logs?protocol_version=0.5'
9
10
11 logs = []
12
13 date = datetime.utcnow()
14 for x in xrange(0, 500):
15 price = random.randint(1, 10)
16 quantity = random.randint(1, 15)
17 date = date - timedelta(hours=random.randint(1, 8))
18 logs.append(
19 {"log_level": "INFO",
20 "message": "support ticket",
21 "timestamp": "",
22 "date": (date - timedelta(days=x)).strftime('%Y-%m-%dT%H:%M:%S.0'),
23 "namespace": "rc.support_tickets",
24 "server": "dummy2.server.com",
25 "permanent": True,
26 # "primary_key": x,
27 "tags": [
28 ["product", 'product_name %s' % price],
29 ["status",
30 random.choice(['open', 'closed', 'pending', 'invalid'])],
31 ['owner',
32 random.choice(['brian', 'lisa', 'martin', 'karen', 'sarah'])]
33 ]
34 }
35 )
36
37 resp = requests.post(endpoint, data=json.dumps(logs), headers={
38 "Content-Type": "application/json",
39 "X-appenlight-api-key": "Your.API.Key"
40 })
41
42 print resp.status_code, resp.text
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -0,0 +1,43 b''
1 |RAE|
2 =====
3
4 |RAE| is an application performance monitoring system that can be hooked up
5 to your Web Apps. It can be used to monitor you applications in two ways.
6
7 - Hosted on `appenlight.rhodecode.com`_
8 - Self installed and managed, see the :ref:`install-ova` section.
9
10 The following list gives a brief overview of the features available, and for a
11 more detailed explanation of what each of these mean see the
12 :ref:`feature-overview` section.
13
14 .. hlist::
15
16 - Error Reporting
17 - Performance Monitoring
18 - Exception handling
19 - Report generation
20 - Customised dashboard creation
21 - Alert channels
22
23 .. toctree::
24 :maxdepth: 1
25 :caption: Admin Documentation
26
27 admin/overview
28 install/install-rae
29 admin/admin
30 admin/user-admin
31 admin/application-monitoring
32 integrations/integrations
33 admin/ae-cli
34
35 .. toctree::
36 :maxdepth: 1
37 :caption: User Documentation
38
39 reports/reports
40 logs/logs-overview
41 graphs/graphs
42
43 .. _appenlight.rhodecode.com: https://appenlight.rhodecode.com
@@ -0,0 +1,49 b''
1 .. _install-ova:
2
3 Installation Using An OVA
4 =========================
5
6 |RAE| is currently only available as an OVA(Open Virtualization Archive) for
7 installation on virtual machines. To obtain this file, contact
8 support@rhodecode.com.
9
10 The OVA is packaged using VMWare 8.0, so it would be better to use the same
11 version. You can use a different VMWare version but you will need to use
12 their copatibility option,
13 :menuselection:`virtual machine --> settings --> copatibility`
14
15 Installation Steps
16 ------------------
17
18 To install |RAE| using an OVA and VMWare, use the following steps.
19
20 1. Contact |RC| to get the latest OVA file.
21 2. Create a VMWare virtual machine using the OVA.
22 3. Sign into the VM with the *User/Password* combination provided.
23
24 - The OVA is an Ubuntu based VM and |RAE| will be automatically running.
25 - |RAE| will be served on https://rhodecode-appenlight.local.
26
27 4. To view your instance of |RAE| you will need to make changes
28 to your local machine's hosts file to resolve the IP Address of the VM.
29
30 From the VM, use the ``ifconfig`` command to display the local network
31 settings and note the IP Address.
32
33 .. code-block:: bash
34
35 # Display your network details.
36 $ ifconfig -a
37
38 5. On your local machine, update the hosts file to resolve the IP Address
39 when you access the |RAE| URL: https://rhodecode-appenlight.local
40
41 Where `192.0.2.0` is changed to your VMs IP Address.
42
43 .. code-block:: bash
44
45 # Appenlight VM IP Address
46 192.0.2.0 rhodecode-appenlight.local
47
48 Once running you can connect |RAE| and |RCE|. See the
49 :ref:`connect-enterprise` section.
@@ -0,0 +1,16 b''
1 .. _installation:
2
3 Installing |RAE|
4 ================
5
6 |RAE| is currently available in the following format for local installation.
7 To obtain this file, contact support@rhodecode.com.
8
9 * OVA (Open Virtualization Archive) for installation on virtual machines.
10
11 If you want |RAE| packaged in another format, please send us an email.
12
13 .. toctree::
14 :maxdepth: 2
15
16 install-rae
@@ -0,0 +1,34 b''
1 .. _integrations:
2
3 Integrations Overview
4 =====================
5
6 Each application that you connect to |RAE| can have its alerts and reports
7 fed to one of the supported 3rd party applications. You can set notification
8 rules so that only the reports and events that you deem relevant trigger an
9 action. To integrate with any of these, use the following steps:
10
11 1. From the |RAE| interface, click through to the
12 :menuselection:`Settings --> List applications --> Integrations` page for
13 your chosen application.
14 2. Enter the required integration details. You will usually get these details
15 from your 3rd party application admin account.
16 3. If necessary, on your 3rd party application account, enable the |RAE|
17 integration using whatever requirements are needed on their end.
18
19 Supported Integrations
20 ----------------------
21
22 |RAE| currently supports integrations with the following applications:
23
24 .. hlist::
25
26 - Bitbucket
27 - Campfire
28 - Flowdock
29 - Github
30 - HipChat
31 - Jira
32 - Slack
33 - Other Webhooks
34
@@ -0,0 +1,38 b''
1 Log Monitoring Overview
2 =======================
3
4 |RAE| monitors the logs generated by your application and feeds these into a
5 log stream. You can view this log stream by clicking on the log icon on the
6 main landing page.
7
8 Filtering The Log Feed
9 ----------------------
10
11 .. raw:: html
12
13 From the landing page, the <i class="fa fa-list-alt "></i> icon takes you to
14 the logs page. To filter the log feed, use the following steps.
15
16 1. Go to the logs page by clicking on the icon.
17 2. In the search parameters field, enter a filtering parameter, or multiple
18 filtering parameters.
19 3. |RAE| will automatically update the logs listing to return only those logs
20 that match your criteria.
21
22 This is a list of the available filtering parameters:
23
24 .. hlist::
25 :columns: 4
26
27 * *Application*
28 * *End Date*
29 * *Level*
30 * *Request ID*
31 * *Message*
32 * *Namespace*
33 * *Start Date*
34 * *Tag*
35
36 .. image:: ../images/ae-logs.png
37
38
@@ -0,0 +1,9 b''
1 Log Monitoring
2 ==============
3
4 .. toctree::
5 :maxdepth: 1
6
7 overview
8
9
@@ -0,0 +1,48 b''
1 Error Reports Overview
2 ======================
3
4 |RAE| monitors your application and generates a list of reports based on
5 operations or views that generate errors. You can view this
6 report list by clicking the error report icon on the main landing page.
7
8 Filtering Error Reports
9 -----------------------
10
11 .. raw:: html
12
13 From the landing page, the <i class="fa fa-exclamation-triangle"></i> icon
14 takes you to the reports page. To filter the reports feed, use the
15 following steps.
16
17 1. Go to the reports page by clicking on the icon.
18 2. In the search parameters field, enter a filtering parameter, or multiple
19 filtering parameters.
20 3. |RAE| will automatically update the reports listing to return only those
21 that match your criteria.
22
23 This is a list of the available filtering parameters:
24
25 .. hlist::
26 :columns: 4
27
28 * *Application*
29 * *Domain*
30 * *Error*
31 * *End Date*
32 * *HTTP Status*
33 * *Minimum Occurrences*
34 * *Priority*
35 * *Request ID*
36 * *Status*
37 * *Start Date*
38 * *Tag*
39 * *View Name*
40
41 Viewing Reports
42 ---------------
43
44 To open a report, click on the report error message on the reports list page.
45 This will open the full details. From this page you can manage the report,
46 for more information, see the :ref:`manage-reports` page.
47
48 .. image:: ../images/ae-reports.png
@@ -0,0 +1,25 b''
1 .. _manage-reports:
2
3 Managing Reports
4 ================
5
6 Both slow reports and error reports can be managed in the same manner.
7
8 Assigning reports
9 -----------------
10
11 To assign a report to a team member, from the report page use the following
12 steps:
13
14 1. Click the :menuselection:`Assign report to user` button.
15 2. Select the team member from the drop down list.
16 3. Click :menuselection:`OK`.
17
18 The user will get an email notification, and a notification in their |RAE|
19 inbox.
20
21 Sharing Reports
22 ---------------
23
24 Reports can be made public if you need to share them outside your organisation.
25 To share a report, select the :menuselection:`Make Public` button.
@@ -0,0 +1,11 b''
1 Performance Reports
2 ===================
3
4 .. toctree::
5 :maxdepth: 1
6
7 error-reports
8 slow-reports
9 managing-reports
10
11
@@ -0,0 +1,48 b''
1 Slow Reports Overview
2 =====================
3
4 |RAE| monitors your application and generates a list of reports based on
5 operations or views that perform slowly. You can view this report list by
6 clicking the icon on the main landing page.
7
8 Filtering Slow Reports
9 ----------------------
10
11 .. raw:: html
12
13 From the landing page, the <i class="fa fa-clock-o"></i> icon takes you to
14 the reports page. To filter the reports feed, use the following steps.
15
16 1. Go to the reports page by clicking on the icon.
17 2. In the search parameters field, enter a filtering parameter, or multiple
18 filtering parameters.
19 3. |RAE| will automatically update the reports listing to return only those
20 that match your criteria.
21
22 This is a list of the available filtering parameters:
23
24 .. hlist::
25 :columns: 4
26
27 * *Application*
28 * *Domain*
29 * *End Date*
30 * *Minimum Occurrences*
31 * *Minimum Duration*
32 * *Priority*
33 * *Request ID*
34 * *Status*
35 * *Start Date*
36 * *Tag*
37 * *URL Path*
38 * *View Name*
39
40 Viewing Reports
41 ---------------
42
43 To open a report, click on the report error message on the reports list page.
44 This will open the full details. From this page you can manage the report,
45 for more information, see the :ref:`manage-reports` page.
46
47 .. image:: ../images/ae-reports.png
48
@@ -0,0 +1,13 b''
1 .menuselection, .guilabel {
2 font-size: .90em;
3 font-family: "proximanovaregular", "Proxima Nova Regular", "Proxima Nova", sans-serif;
4 font-style: oblique;
5 }
6
7 .version{
8 display: none;
9 }
10
11 .pre{
12 color:#000
13 }
@@ -0,0 +1,82 b''
1 PROJECTS = Appenlight-docs
2
3 BLOG = blog
4 MKDOCS = ../result/bin/mkdocs
5
6 help:
7 @echo ""
8 @echo "Please use \`make <target>' where <target> is one of"
9 @echo " all build all projects"
10 @echo " bootstrap build tools needed to build projects"
11 @echo " ci-docs Trigger by CI server to build the documentation."
12 @echo " ci-docs-publish Trigger by CI server to publish the"
13 @echo " documentation. Requires CI_TARGET to be set."
14 @echo " bootstrap build tools needed to build projects"
15 @echo " <project> build one project. list of projects you can find below"
16 @echo ""
17 @echo "Current projects:"
18 @for project in $(PROJECTS); do echo " - $$project"; done
19 @echo ""
20
21 all: bootstrap
22 for item in $(PROJECTS); do \
23 cd $$item && $(MAKE) html && cd ..; \
24 mkdir -p www/$$item; \
25 cp -R $$item/_build/html/* www/$$item/; \
26 done
27
28 blog: bootstrap
29 for item in $(BLOG) ; do \
30 echo $$item ; \
31 echo "Building blog" ; \
32 nix-build && cd blog && ../result/bin/mkdocs build --clean && cd .. ; \
33 echo "blog build" ; \
34 echo "it's in the blog/site folder. Moving to www folder" ; \
35 mkdir -p www/$$item; \
36 cp -R $$item/site/* www/$$item; \
37 done
38
39 clean:
40 rm -rf result www
41 rm -f common.pyc
42 for item in $(PROJECTS); do \
43 cd $$item && $(MAKE) clean && cd ..; \
44 done
45
46 bootstrap:
47 nix-build default.nix -o result
48
49 $(PROJECTS): bootstrap
50 cd $@ && $(MAKE) html
51
52
53 # CI Integration targets
54
55 ci-docs: all
56
57
58 ci-docs-publish:
59 $(if $(value CI_TARGET),, $(error CI_TARGET has to be defined))
60
61 @echo "Cleaning up $(CI_TARGET)"
62 for item in $(PROJECTS); do \
63 item_dir=$(CI_TARGET)/$$item; \
64 if [ -d $$item_dir ]; then \
65 echo "Removing $$item"; \
66 rm -fr $$item_dir; \
67 fi; \
68 done
69
70 @echo "Publishing built documentation"
71 for item in $(PROJECTS); do \
72 item_dir=$(CI_TARGET)/$$item; \
73 echo "Publishing $$item to $$item_dir"; \
74 cp -R www/$$item $$item_dir; \
75 done
76
77 # @echo "Publishing the blog internally"
78 # for item in $(BLOG); do \
79 # item_dir=$(CI_TARGET)/$$item; \
80 # echo "Publishing $$item to $$item_dir"; \
81 # cp -R www/$$item $$item_dir; \
82 # done
@@ -0,0 +1,48 b''
1
2 One place to keep all RhodeCode documentation projects.
3
4 Code is **automatically** picked up by our CI server and all documentation will
5 be built and published on:
6
7 https://docs.rhodecode.com/RhodeCode-Appenlight
8
9
10 Quickstart
11 ==========
12
13 Get the code via::
14
15 hg clone https://code.rhodecode.com/appenlight-docs
16 cd appenlight-docs
17
18 Build all::
19
20 make all
21
22 Build a project (eg. Internal-docs)::
23
24 make Internal-docs
25
26 or::
27
28 make help
29
30 to find which make options are available.
31
32
33
34 FAQ
35 ===
36
37 1. In which format I have to write?
38
39 Learn how to use Sphinx and get comfortable with RestructuredText.
40
41 http://sphinx-doc.org/contents.html
42
43 2. My changes are not visible?
44
45 Wait 5min to be sure CI server had enough time to pickup your changes.
46
47 If still not showing, make sure you've added your file to Sphinx's
48 ``toctree``
@@ -0,0 +1,1 b''
1 1.0.0 No newline at end of file
@@ -0,0 +1,134 b''
1 { system ? builtins.currentSystem
2 }:
3
4 let
5
6 pkgs = import <nixpkgs> { inherit system; };
7
8 inherit (pkgs) fetchurl fetchgit;
9
10 buildPythonPackage = pkgs.python27Packages.buildPythonPackage;
11 python = pkgs.python27Packages.python;
12
13 Jinja2 = buildPythonPackage rec {
14 name = "Jinja2-2.7.3";
15 src = fetchurl {
16 url = "http://pypi.python.org/packages/source/J/Jinja2/${name}.tar.gz";
17 md5 = "b9dffd2f3b43d673802fe857c8445b1a";
18 };
19 propagatedBuildInputs = [ MarkupSafe ];
20 };
21
22 MarkupSafe = buildPythonPackage rec {
23 name = "MarkupSafe-0.23";
24 src = fetchurl {
25 url = "https://pypi.python.org/packages/source/M/MarkupSafe/${name}.tar.gz";
26 md5 = "f5ab3deee4c37cd6a922fb81e730da6e";
27 };
28 };
29
30 Pygments = buildPythonPackage rec {
31 name = "Pygments-2.0.2";
32 src = fetchurl {
33 url = "https://pypi.python.org/packages/source/P/Pygments/${name}.tar.gz";
34 md5 = "238587a1370d62405edabd0794b3ec4a";
35 };
36 };
37
38 alabaster = buildPythonPackage rec {
39 name = "alabaster-0.7.3";
40 src = fetchurl {
41 url = "https://pypi.python.org/packages/source/a/alabaster/${name}.tar.gz";
42 md5 = "67428d1383fd833f1282fed5deba0898";
43 };
44 };
45
46 six = buildPythonPackage rec {
47 name = "six-1.9.0";
48 src = fetchurl {
49 url = "https://pypi.python.org/packages/source/s/six/${name}.tar.gz";
50 md5 = "476881ef4012262dfc8adc645ee786c4";
51 };
52 };
53
54 snowballstemmer = buildPythonPackage rec {
55 name = "snowballstemmer-1.2.0";
56 src = fetchurl {
57 url = "https://pypi.python.org/packages/source/s/snowballstemmer/${name}.tar.gz";
58 md5 = "51f2ef829db8129dd0f2354f0b209970";
59 };
60 };
61
62 pytz = buildPythonPackage rec {
63 name = "pytz-2015.2";
64 src = fetchurl {
65 url = "https://pypi.python.org/packages/source/p/pytz/${name}.tar.gz";
66 md5 = "08440d994cfbbf13d3343362cc3173f7";
67 };
68 };
69
70 babel = buildPythonPackage rec {
71 name = "Babel-1.3";
72 src = fetchurl {
73 url = "https://pypi.python.org/packages/source/B/Babel/${name}.tar.gz";
74 md5 = "5264ceb02717843cbc9ffce8e6e06bdb";
75 };
76 propagatedBuildInputs = [
77 pytz
78 ];
79 };
80
81 Sphinx = buildPythonPackage (rec {
82 name = "Sphinx-1.3.1";
83 src = fetchurl {
84 url = "http://pypi.python.org/packages/source/S/Sphinx/${name}.tar.gz";
85 md5 = "8786a194acf9673464c5455b11fd4332";
86 };
87 propagatedBuildInputs = [
88 docutils
89 Jinja2
90 Pygments
91 alabaster
92 six
93 snowballstemmer
94 pytz
95 babel
96
97 # TODO: johbo: Had to include it here so that can be imported
98 sphinx_rtd_theme
99 ];
100 });
101
102 docutils = buildPythonPackage rec {
103 name = "docutils-0.12";
104 src = fetchurl {
105 url = "https://pypi.python.org/packages/source/d/docutils/${name}.tar.gz";
106 md5 = "4622263b62c5c771c03502afa3157768";
107 };
108 };
109
110 sphinx_rtd_theme = buildPythonPackage rec {
111 name = "sphinx_rtd_theme-0.1.9";
112 src = fetchurl {
113 url = "https://pypi.python.org/packages/source/s/sphinx_rtd_theme/${name}.tar.gz";
114 md5 = "86a25c8d47147c872e42dc84cc66f97b";
115 };
116
117 # johbo: Sphinx needs this package and this package needs sphinx, ignore
118 # the requirements file to solve this cycle.
119 postPatch = ''
120 rm requirements.txt
121 touch requirements.txt
122 '';
123
124 # TODO: johbo: Tests would require sphinx and this creates recursion issues
125 doCheck = false;
126 };
127
128 in python.buildEnv.override {
129 inherit python;
130 extraLibs = [
131 Sphinx
132 sphinx_rtd_theme
133 ];
134 }
@@ -155,3 +155,6 b' packer/packer'
155
155
156 syntax: regexp
156 syntax: regexp
157 install_appenlight_production.yaml
157 install_appenlight_production.yaml
158 ^docs/result$
159 ^docs/Appenlight-docs/_build$
160 ^docs/www$
General Comments 0
You need to be logged in to leave comments. Login now