Skip to content

Commit

Permalink
Merge pull request #93 from idealista/develop
Browse files Browse the repository at this point in the history
v2.2.1 to master
  • Loading branch information
José Noguera authored Sep 13, 2018
2 parents cde0675 + c5def65 commit 24ea1ec
Show file tree
Hide file tree
Showing 12 changed files with 52 additions and 31 deletions.
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@ This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a ch

## [Unreleased](https://github.com/idealista/prom2teams/tree/develop)

## [2.2.0](https://github.com/idealista/prom2teams/tree/2.2.0)
[Full Changelog](https://github.com/idealista/prom2teams/compare/2.1.2...2.2.0)
## [2.2.1](https://github.com/idealista/prom2teams/tree/2.2.1)
[Full Changelog](https://github.com/idealista/prom2teams/compare/2.1.2...2.2.1)
## Added
- *[#80](https://github.com/idealista/prom2teams/pull/79) Add the possibility of group alarms by alertname* @manuhortet
- *[#84](https://github.com/idealista/prom2teams/issues/84) View received message when debugging* @jnogol
- *Update Flask version to v1.0.2* @manuhortet @jnogol

## Changed
- *[#92](https://github.com/idealista/prom2teams/pull/92) Docker image now install from sources* @jnogol

## [2.1.2](https://github.com/idealista/prom2teams/tree/2.1.2)
[Full Changelog](https://github.com/idealista/prom2teams/compare/2.1.1...2.1.2)
### Fixed
Expand Down
31 changes: 31 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
FROM python:3.5-slim-stretch

LABEL maintainer="[email protected]"

EXPOSE 8089

RUN apt-get update && apt-get install -y build-essential

ADD LICENSE /opt/prom2teams/LICENSE
ADD MANIFEST.in /opt/prom2teams/MANIFEST.in
ADD README.md /opt/prom2teams/README.md
ADD requirements.txt /opt/prom2teams/requirements.txt
ADD setup.py /opt/prom2teams/setup.py

ADD ./bin /opt/prom2teams/bin
ADD ./prom2teams /opt/prom2teams/prom2teams

ADD ./docker/config.ini /opt/prom2teams/config.ini
ADD ./docker/replace_config.py /opt/prom2teams/replace_config.py
ADD ./docker/prom2teams_start.sh /opt/prom2teams/prom2teams_start.sh

WORKDIR /opt/prom2teams
RUN python setup.py install

ENV PROM2TEAMS_PORT="8089"
ENV PROM2TEAMS_HOST="0.0.0.0"
ENV PROM2TEAMS_LOGLEVEL="INFO"
ENV PROM2TEAMS_CONNECTOR=""
ENV PROM2TEAMS_GROUP_ALERTS_BY=""

ENTRYPOINT ["bash", "/opt/prom2teams/prom2teams_start.sh"]
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,12 @@ Every new Prom2teams release, a new Docker image is built in our [Dockerhub](htt
There are two things you need to bear in mind when creating a Prom2teams container:

- The connector URL must be passed as the environment variable `PROM2TEAMS_CONNECTOR`
- In case you want to group alerts, you need to pass the field as the environment variable `PROM2TEAMS_GROUP_ALERTS_BY`
- You need to map container's Prom2teams port to one on your host.

So a sample Docker run command would be:
```bash
$ docker run -it -d -e PROM2TEAMS_CONNECTOR="CONNECTOR_URL" -p 8089:8089 idealista/prom2teams:VERSION
$ docker run -it -d -e PROM2TEAMS_GROUP_ALERTS_BY=FIELD_YOU_WANT_TO_GROUP_BY -e PROM2TEAMS_CONNECTOR="CONNECTOR_URL" -p 8089:8089 idealista/prom2teams:VERSION
```

### Production
Expand Down
3 changes: 3 additions & 0 deletions dockerhub/config.ini → docker/config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ Port: prom2teamsport

[Microsoft Teams]
Connector: prom2teamsconnector

[Group Alerts]
Field: prom2teamsgroupalertsby
File renamed without changes.
1 change: 1 addition & 0 deletions dockerhub/replace_config.py → docker/replace_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
filedata = filedata.replace("prom2teamsport", os.environ.get("PROM2TEAMS_PORT"))
filedata = filedata.replace("prom2teamshost", os.environ.get("PROM2TEAMS_HOST"))
filedata = filedata.replace("prom2teamsconnector", os.environ.get("PROM2TEAMS_CONNECTOR"))
filedata = filedata.replace("prom2teamsgroupalertsby", os.environ.get("PROM2TEAMS_GROUP_ALERTS_BY"))

with open('/opt/prom2teams/config.ini', 'w') as file:
file.write(filedata)
18 changes: 0 additions & 18 deletions dockerhub/Dockerfile

This file was deleted.

8 changes: 4 additions & 4 deletions prom2teams/app/versions/v2/namespace.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ class AlertReceiver(Resource):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.schema = MessageSchema()
if 'TEMPLATE_PATH' in app.config:
self.sender = AlarmSender(app.config['TEMPLATE_PATH'], app.config['GROUP_ALERTS'])
if app.config['TEMPLATE_PATH']:
self.sender = AlarmSender(app.config['TEMPLATE_PATH'], app.config['GROUP_ALERTS_BY'])
else:
self.sender = AlarmSender(group_alerts=app.config['GROUP_ALERTS'])
self.sender = AlarmSender(group_alerts_by=app.config['GROUP_ALERTS_BY'])

@api_v2.expect(message)
def post(self, connector):
alerts = self.schema.load(request.get_json()).data
self.sender.send_alarms(alerts, app.config['MICROSOFT_TEAMS'])
self.sender.send_alarms(alerts, app.config['MICROSOFT_TEAMS'][connector])
return 'OK', 201
4 changes: 2 additions & 2 deletions prom2teams/prometheus/message_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ class LabelSchema(Schema):
instance = fields.Str(default='unknown', missing='unknown')
job = fields.Str()
mountpoint = fields.Str()
severity = fields.Str(default=None, missing=None)
severity = fields.Str(default='unknown', missing='unknown')


class AnnotationSchema(Schema):
description = fields.Str(default=None, missing=None)
description = fields.Str(default='unknown', missing='unknown')
summary = fields.Str(default='unknown', missing='unknown')


Expand Down
2 changes: 1 addition & 1 deletion prom2teams/teams/alarm_mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def map_and_group(alerts, group_alerts_by):
def teams_visualization(feature):
feature.sort()
# Teams won't print just one new line
return ',\n\n\n'.join(feature)
return ',\n\n\n'.join(feature) if feature else 'unknown'


def group_alerts(alerts, group_alerts_by):
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@


setup(name='prom2teams',
version='2.2.0',
version='2.2.1',
description='Project that redirects Prometheus Alert Manager '
'notifications to Microsoft Teams',
long_description=readme,
Expand All @@ -38,7 +38,7 @@
data_files=[
('/usr/local/etc/prom2teams', ['bin/wsgi.py'])
],
url='http://github.com/idealista/prom2teams',
url='https://github.com/idealista/prom2teams',
author='Idealista, S.A.U',
author_email='[email protected]',
license=license,
Expand Down
2 changes: 1 addition & 1 deletion tests/test_json_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def test_json_without_optional_field(self):
json_received = json.load(json_data)
alerts = MessageSchema().load(json_received).data
alarm = map_prom_alerts_to_teams_alarms(alerts)[0]
self.assertNotIn('unknown', str(alarm))
self.assertIn("'description': 'unknown'", str(alarm))

def test_json_without_instance_field(self):
with open(self.TEST_CONFIG_FILES_PATH + 'without_instance_field.json') as json_data:
Expand Down

0 comments on commit 24ea1ec

Please sign in to comment.