Commit Graph

289 Commits

Author SHA1 Message Date
Philip Kuryloski 3eac3cf8a8 Remove unused load statements from bazel files 2021-07-12 12:10:26 +02:00
Philip Kuryloski 30f9a95b9f Add dialyze for remaning tier-1 plugins 2021-06-01 10:19:10 +02:00
Philip Kuryloski 98e71c45d8 Perform xref checks on many tier-1 plugins 2021-05-21 12:03:22 +02:00
Philip Kuryloski c13c2af614 Bazel file refactoring 2021-05-11 12:03:27 +02:00
Michael Klishin d518475f6e
Remove a leftover comment 2021-04-19 11:57:53 +03:00
Michael Klishin a4b86645a4
Merge pull request #2984 from rabbitmq/rabbitmq-server-2983
x.509 certificate auth mechanism: support (some) SANS of type otherName
2021-04-19 02:38:37 +03:00
Michael Klishin 21a6b1ba05
x.509 certificate auth mechanism: support (some) SANS of type otherName
Note that the type by definition contains arbitrary values. According
to the OTP types, they are triplets that represent effectively
a key/value pair. So we assume the pair is a string that needs a bit
massaging, namely stripping the UTF encoding prefix OTP AnotherName
decoder leaves in.

Kudos to @Thibi2000 for providing an example value.

Closes #2983.
2021-04-19 02:33:26 +03:00
Michael Klishin 49a3694427
Update README.md 2021-04-19 01:03:57 +03:00
Philip Kuryloski 072a1c0462 Refactor and dedupe .bazel file content 2021-04-16 10:22:44 +02:00
Philip Kuryloski 3ecb291d75 Add rabbitmq_consistent_hash_exchange to bazel
also fixup erlc_opts for some other plugins
2021-04-08 17:24:14 +02:00
Philip Kuryloski 2f17113154 Add deps/rabbitmq_auth_mechanism_ssl to bazel build 2021-04-06 14:30:14 +02:00
Michael Klishin db420ef933
Update rabbitmq_auth_mechanism_ssl docs 2021-03-23 18:54:22 +03:00
Philip Kuryloski a63f169fcb Remove duplicate rabbitmq-components.mk and erlang.mk files
Also adjust the references in rabbitmq-components.mk to account for
post monorepo locations
2021-03-22 15:40:19 +01:00
kjnilsson 52f745dcde Update rabbitmq-components.mk
use v1.x branch of ra
2021-03-18 15:14:40 +00:00
Loïc Hoguin d5e3bdd623
Add ADDITIONAL_PLUGINS variable
This allows including additional applications or third party
plugins when creating a release, running the broker locally,
or just building from the top-level Makefile.

To include Looking Glass in a release, for example:

$ make package-generic-unix ADDITIONAL_PLUGINS="looking_glass"

A Docker image can then be built using this release and will
contain Looking Glass:

$ make docker-image

Beware macOS users! Applications such as Looking Glass include
NIFs. NIFs must be compiled in the right environment. If you
are building a Docker image then make sure to build the NIF
on Linux! In the two steps above, this corresponds to Step 1.

To run the broker with Looking Glass available:

$ make run-broker ADDITIONAL_PLUGINS="looking_glass"

This commit also moves Looking Glass dependency information
into rabbitmq-components.mk so it is available at all times.
2021-03-12 12:29:28 +01:00
Jean-Sébastien Pédron cdcf602749
Switch from Lager to the new Erlang Logger API for logging
The configuration remains the same for the end-user. The only exception
is the log root directory: it is now set through the `log_root`
application env. variable in `rabbit`. People using the Cuttlefish-based
configuration file are not affected by this exception.

The main change is how the logging facility is configured. It now
happens in `rabbit_prelaunch_logging`. The `rabbit_lager` module is
removed.

The supported outputs remain the same: the console, text files, the
`amq.rabbitmq.log` exchange and syslog.

The message text format slightly changed: the timestamp is more precise
(now to the microsecond) and the level can be abbreviated to always be
4-character long to align all messages and improve readability. Here is
an example:

    2021-03-03 10:22:30.377392+01:00 [dbug] <0.229.0> == Prelaunch DONE ==
    2021-03-03 10:22:30.377860+01:00 [info] <0.229.0>
    2021-03-03 10:22:30.377860+01:00 [info] <0.229.0>  Starting RabbitMQ 3.8.10+115.g071f3fb on Erlang 23.2.5
    2021-03-03 10:22:30.377860+01:00 [info] <0.229.0>  Licensed under the MPL 2.0. Website: https://rabbitmq.com

The example above also shows that multiline messages are supported and
each line is prepended with the same prefix (the timestamp, the level
and the Erlang process PID).

JSON is also supported as a message format and now for any outputs.
Indeed, it is possible to use it with e.g. syslog or the exchange. Here
is an example of a JSON-formatted message sent to syslog:

    Mar  3 11:23:06 localhost rabbitmq-server[27908] <0.229.0> - {"time":"2021-03-03T11:23:06.998466+01:00","level":"notice","msg":"Logging: configured log handlers are now ACTIVE","meta":{"domain":"rabbitmq.prelaunch","file":"src/rabbit_prelaunch_logging.erl","gl":"<0.228.0>","line":311,"mfa":["rabbit_prelaunch_logging","configure_logger",1],"pid":"<0.229.0>"}}

For quick testing, the values accepted by the `$RABBITMQ_LOGS`
environment variables were extended:
  * `-` still means stdout
  * `-stderr` means stderr
  * `syslog:` means syslog on localhost
  * `exchange:` means logging to `amq.rabbitmq.log`

`$RABBITMQ_LOG` was also extended. It now accepts a `+json` modifier (in
addition to the existing `+color` one). With that modifier, messages are
formatted as JSON intead of plain text.

The `rabbitmqctl rotate_logs` command is deprecated. The reason is
Logger does not expose a function to force log rotation. However, it
will detect when a file was rotated by an external tool.

From a developer point of view, the old `rabbit_log*` API remains
supported, though it is now deprecated. It is implemented as regular
modules: there is no `parse_transform` involved anymore.

In the code, it is recommended to use the new Logger macros. For
instance, `?LOG_INFO(Format, Args)`. If possible, messages should be
augmented with some metadata. For instance (note the map after the
message):

    ?LOG_NOTICE("Logging: switching to configured handler(s); following "
                "messages may not be visible in this log output",
                #{domain => ?RMQLOG_DOMAIN_PRELAUNCH}),

Domains in Erlang Logger parlance are the way to categorize messages.
Some predefined domains, matching previous categories, are currently
defined in `rabbit_common/include/logging.hrl` or headers in the
relevant plugins for plugin-specific categories.

At this point, very few messages have been converted from the old
`rabbit_log*` API to the new macros. It can be done gradually when
working on a particular module or logging.

The Erlang builtin console/file handler, `logger_std_h`, has been forked
because it lacks date-based file rotation. The configuration of
date-based rotation is identical to Lager. Once the dust has settled for
this feature, the goal is to submit it upstream for inclusion in Erlang.
The forked module is calld `rabbit_logger_std_h` and is based
`logger_std_h` in Erlang 23.0.
2021-03-11 15:17:36 +01:00
dcorbacho 61f7b2a723 Update to ranch 2.0 2021-03-08 23:11:05 +01:00
Michael Klishin b6c4831e75
Bump Lager to 3.9.1 2021-03-04 04:36:39 +03:00
Loïc Hoguin 66ac1bf5e9
Bump observer_cli to 1.6.1
More responsive when the system is overloaded with file calls.
2021-03-01 21:55:27 +03:00
Michael Klishin 8fe3df9343
Upgrade Lager to 3.9.0 for OTP 24 compatibility
`lager_util:expand_path/1` use changes are
due to erlang-lager/lager#540
2021-02-26 00:52:15 +03:00
Michael Klishin f73e851f9c
Bump observer_cli to 1.6.0 2021-02-24 12:53:55 +03:00
Michael Klishin a5098b28a7
Bump Lager to 3.8.2 for OTP 24 compatibility 2021-02-24 12:53:30 +03:00
Arnaud Cogoluègnes b921ac11a8
Merge pull request #2712 from rabbitmq/rabbitmq-stream-prometheus
Add stream prometheus plugin
2021-01-27 16:46:37 +01:00
Michael Klishin 52479099ec
Bump (c) year 2021-01-22 09:00:14 +03:00
Arnaud Cogoluègnes bf72683eb2
Add stream prometheus plugin 2021-01-11 16:49:56 +01:00
Arnaud Cogoluègnes 23d7e8114c
Introduce stream management plugin 2020-11-19 14:48:25 +01:00
Jean-Sébastien Pédron 47686ee1f0
Remove unused .github directories
They were valid until the switch to the "monorepository" when everything
was merged into a single Git repository.
2020-11-17 13:33:16 +01:00
Arnaud Cogoluègnes 928f25f2ca Update rabbitmq-components.mk 2020-11-03 14:27:35 +01:00
Michael Klishin d6700e2baa Coerce extracted username to a binary, more logging
Closes #12 together with rabbitmq/rabbitmq-server#2487.
2020-10-30 01:24:04 +03:00
Michael Klishin 113fbd41b7 Improved wording
a drive-by change.
2020-10-27 19:53:39 +03:00
Michael Klishin 6b8929820d Update rabbitmq-components.mk 2020-10-21 12:55:31 +03:00
Luke Bakken 5d7c7a2f7a Update rabbitmq-components.mk 2020-08-04 08:41:46 -07:00
Jean-Sébastien Pédron 5d09a1c0d3 Update rabbitmq-components.mk 2020-07-30 12:06:51 +02:00
Luke Bakken d842b7fb3a Update rabbitmq-components.mk 2020-07-29 10:02:02 -07:00
dcorbacho ff275fd4a3 Update erlang.mk 2020-07-21 14:31:55 +01:00
Jean-Sébastien Pédron a61112123f Update rabbitmq-components.mk 2020-07-21 12:07:56 +02:00
Michael Klishin 755072b551 Update rabbitmq-components.mk 2020-07-21 03:42:45 +03:00
dcorbacho d108a30d4b Revert drop of Exhibit B on MPL 2.0 2020-07-20 16:57:32 +01:00
dcorbacho 2d513442c7 Update LICENSE 2020-07-20 10:41:52 +01:00
Michael Klishin 2c8cbd5f80 Update MPL2 license file, drop Exhibit B
and add a VMware copyright notice.

We did not mean to make this code Incompatible with Secondary Licenses
as defined in [1].

1. https://www.mozilla.org/en-US/MPL/2.0/FAQ/
2020-07-17 14:53:05 +03:00
Michael Klishin 829e61b56e Use new style configuration format in examples 2020-07-12 16:52:06 +03:00
dcorbacho c407ad765f Switch to Mozilla Public License 2.0 (MPL 2.0) 2020-07-10 20:30:48 +01:00
Jean-Sébastien Pédron 60128d4b30 Update erlang.mk 2020-06-23 17:13:27 +02:00
Michael Klishin d8f9201443 Update rabbitmq-components.mk 2020-06-10 19:51:14 +03:00
Jean-Sébastien Pédron 1638904b4a Update copyright (year 2020) 2020-03-10 16:06:09 +01:00
Gerhard Lazu 032ec04420 Update rabbitmq-components.mk 2020-03-06 09:19:13 +00:00
Gerhard Lazu 5c92f61ddc Update erlang.mk 2020-03-06 09:17:21 +00:00
Jean-Sébastien Pédron 4ee73d7425 Travis CI: Update config from rabbitmq-common 2020-03-04 14:24:27 +01:00
Jean-Sébastien Pédron 8a38911abe Travis CI: Update config from rabbitmq-common 2020-03-04 11:17:13 +01:00
Jean-Sébastien Pédron 1142f23dd9 Travis CI: Update config from rabbitmq-common 2020-03-03 14:53:37 +01:00