====== Fluentd ======
It is a service to manage system logs. It takes logs from software (MySQL, Apache, the system...) and unify their format and send them to the required place.
Also called td-agent.
Before install: http://docs.fluentd.org/articles/before-install
By default, td-agent is configured to take logs from HTTP and route them to stdout (''/var/log/td-agent/td-agent.log''). You can post sample log records using the curl command: ''$ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test''
$ /etc/init.d/td-agent start
$ /etc/init.d/td-agent stop
$ /etc/init.d/td-agent restart
$ /etc/init.d/td-agent status
Reload the configuration: ''sudo /etc/init.d/td-agent reload''
Configuration is in ''/etc/td-agent/td-agent.conf''
Directives into the config:
* **source** directives determine the input sources.
* **match** directives determine the output destinations.
* **filter** directives determine the event processing pipelines.
* **system** directives set system wide configuration.
* **@include** directives include other files.
Each source directive must include a type parameter. The type parameter specifies which input plugin to use.
The source submits events into the Fluentd’s routing engine. An event consists of three entities: tag, time and record. The tag is a string separated by ‘.’s (e.g. myapp.access), and is used as the directions for Fluentd’s internal routing engine.
The “match” directive looks for events with _match_ing tags and tells Fluentd what to do.
==== Plugins ====
Install plugins: ''$ /usr/sbin/td-agent-gem install fluent-plugin-xx''
* For replication use the out_copy plugin.
=== Fluentd-ui ===
* https://github.com/fluent/fluentd-ui
* Install: $ /usr/sbin/td-agent-gem install -V fluentd-ui
* Start: ''/opt/td-agent/embedded/bin/fluentd-ui start''
==== Python ====
Libraries:
* [[https://pypi.python.org/pypi/fluent-logger/|fluent-logger]]
* [[https://pypi.python.org/pypi/pyfluent|pyfluent]]
=== Fluentd-logger ===
from fluent import sender, event
sender.setup('debug.test', host='127.0.0.1', port=24224)
event.Event('json', {"json":"message from python"})
=== pyfluent ===
import logging
from pyfluent.logging import SafeFluentHandler
handler = SafeFluentHandler('localhost', 24224, 'pyfluent')
handler.setLevel(logging.INFO)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info('hello pyfluent!')
import logging
import logging.config
logger = logging.getLogger(__name__)
logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': False, # this fixes the problem
'handlers': {
'fluentd': {
'level': 'DEBUG',
'class': 'pyfluent.logging.SafeFluentHandler',
'tag': 'test.prueba',
},
},
'loggers': {
'': {
'handlers': ['fluentd'],
'level': 'INFO'
}
}
})
logger.info('It works!')