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,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 |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | 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,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 | } |
General Comments 0
You need to be logged in to leave comments.
Login now