monasca-log-api/monasca_log_api
Koji Nakazono 25c87eb872 Remove kafka key building
Log stash can handle the log events stateless.
It means that it's not necessary to specify the kafka key
when sending log events.
This patch removes the kafka key building process.

Change-Id: I2344985e567d899e95b0ac3df2d2677da1037dca
Closes-Bug: 1589376
2016-06-14 21:04:55 +09:00
..
api Use same abstract class for v2 and v3 2016-03-17 08:21:44 +01:00
healthcheck Versions endpoint is working 2016-03-11 08:22:28 +00:00
middleware Updating requirements.txt 2016-02-10 08:11:36 +01:00
reference Remove kafka key building 2016-06-14 21:04:55 +09:00
tests Remove kafka key building 2016-06-14 21:04:55 +09:00
.gitignore monasca-log-api python 2015-10-08 10:38:12 +02:00
README.md Update specification 2016-04-18 13:26:41 +02:00
__init__.py monasca-log-api python 2015-10-08 10:38:12 +02:00
server.py Mark /v2.0/log/single as deprecated 2016-03-24 10:58:23 +00:00
uri_map.py Mark /v2.0/log/single as deprecated 2016-03-24 10:58:23 +00:00

README.md

Monasca-log-api Python

Installation

To install the python api implementation, git clone the source and run the following command:

    sudo python setup.py install

Configuration

If it installs successfully, you will need to make changes to the following two files to reflect your system settings, especially where kafka server is located::

    /etc/monasca/log-api-config.conf
    /etc/monasca/log-api-config.ini

Once the configurations are modified to match your environment, you can start up the server using either Gunicorn or Apache.

Start the Server -- for Gunicorn

The server can be run in the foreground, or as daemons:

Running the server in foreground mode with Gunicorn:

    gunicorn -k eventlet --worker-connections=2000 --backlog=1000
             --paste /etc/monasca/log-api.ini

Running the server as daemons with Gunicorn:

    gunicorn -k eventlet --worker-connections=2000 --backlog=1000
             --paste /etc/monasca/log-api.ini -D

Start the Server -- for Apache

To start the server using Apache: create a modwsgi file, create a modwsgi config file, and enable the wsgi module in Apache.

The modwsgi conf file may look something like this, and the site will need to be enabled:

    Listen myhost:8082
    Listen 127.0.0.1:8082

    <VirtualHost *:8082>
        WSGIDaemonProcess log-api processes=4 threads=4 socket-timeout=120 user=log group=log python-path=/usr/local/lib/python2.7/site-packages
        WSGIProcessGroup log-api
        WSGIApplicationGroup log-api
        WSGIScriptAlias / /var/www/log/log-api.wsgi

        ErrorLog /var/log/log-api/wsgi.log
        LogLevel info
        CustomLog /var/log/log-api/wsgi-access.log combined

        <Directory /usr/local/lib/python2.7/site-packages/monasca_log_api>
          Options Indexes FollowSymLinks MultiViews
          Require all granted
          AllowOverride None
          Order allow,deny
          allow from all
          LimitRequestBody 102400
        </Directory>

        SetEnv no-gzip 1

    </VirtualHost>

The wsgi file may look something like this:

    from monasca_log_api.server import get_wsgi_app

    application = get_wsgi_app(config_base_path='/etc/monasca')

Testing

Commandline run

To check the server from the commandline:

    python server.py

PEP8 guidelines

To check if the code follows python coding style, run the following command from the root directory of this project:

    tox -e pep8

Unit Tests

To run all the unit test cases, run the following command from the root directory of this project:

    tox -e py27   (or -e py26, -e py33)

Coverage

To generate coverage results, run the following command from the root directory of this project:

    tox -e cover

Building

To build an installable package, run the following command from the root directory of this project:

  python setup.py sdist

Documentation

To generate documentation, run the following command from the root directory of this project:

make html

That will create documentation under build folder relative to root of the project.

# Copyright 2016 FUJITSU LIMITED
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.